基础的 SQL 命令主要用于对数据库进行查询、新增、修改、删除等操作,可分为以下几类:

一、数据查询(SELECT)

用于从表中获取数据,是最常用的命令。
基本语法

SELECT 列名1, 列名2... FROM 表名 WHERE 条件;
  • 示例:查询students表中所有 18 岁以上的学生姓名和年龄
    SELECT name, age FROM students WHERE age > 18;
    
  • 常用扩展:DISTINCT(去重)、ORDER BY(排序)、LIMIT(限制结果数量)等。

我来扩写这个 SQL 查询,加入 DISTINCT、ORDER BY 和 LIMIT 等常用扩展功能:

-- 查询18岁以上不重复的学生姓名和年龄,按年龄降序排列,年龄相同的按姓名升序排列,只返回前20条记录
SELECT DISTINCT name, age 
FROM students 
WHERE age > 18 
ORDER BY age DESC, name ASC 
LIMIT 20;

这个扩展查询包含以下功能:

  1. DISTINCT - 确保返回的结果中没有重复的行

  2. WHERE age > 18 - 筛选条件,只返回18岁以上的学生

  3. ORDER BY age DESC, name ASC - 先按年龄降序排列,年龄相同的再按姓名升序排列

  4. LIMIT 20 - 只返回前20条记录

如果需要更复杂的查询,还可以考虑:

  • 添加 GROUP BY 进行分组

  • 使用 HAVING 对分组结果进行筛选

  • 使用 JOIN 连接其他表

  • 添加 OFFSET 实现分页功能

我将扩展这个 SQL 查询,加入 GROUP BYHAVINGJOIN 和 OFFSET 分页功能,同时保持之前的 DISTINCTORDER BY 和 LIMIT 条件:

假设场景:

  • students 表存储学生信息(idnameageclass_id

  • classes 表存储班级信息(idclass_nameteacher_id

  • exam_scores 表存储考试成绩(student_idscore

查询目标:

"查询18岁以上、平均分≥60分的学生姓名、年龄和班级名称,按年龄降序排列,并实现分页(每页10条记录)"

完整 SQL:

SELECT s.name,s.age,c.class_name,AVG(e.score) AS avg_score
FROM students s
LEFT JOIN classes c ON s.class_id = c.id
LEFT JOIN exam_scores e ON s.id = e.student_id
WHERE s.age > 18
GROUP BY s.id, s.name, s.age, c.class_name
HAVING AVG(e.score) >= 60
ORDER BY s.age DESC,s.name ASC
LIMIT 10 OFFSET 0;  -- 第一页(0-10条记录)

关键功能说明:

  1. JOIN(连接表):

    • 连接 students 和 classes 获取班级名称

    • 连接 students 和 exam_scores 计算平均分

  2. GROUP BY(分组):

    • 按学生ID、姓名、年龄和班级名称分组

    • 确保聚合函数(如 AVG)正确计算每个学生的平均分

  3. HAVING(筛选分组):

    • 筛选出平均分≥60的学生(WHERE 不能用于聚合条件)

  4. DISTINCT(去重):

    • 由于 GROUP BY 已经确保唯一性,这里可以省略 DISTINCT

  5. ORDER BY(排序):

    • 优先按年龄降序(DESC),其次按姓名升序(ASC

  6. LIMIT + OFFSET(分页):

    • LIMIT 10 每页10条

    • OFFSET 0 从第1条开始(第2页改为 OFFSET 10

进阶扩展:

  • 如果需要计算总页数,可结合 COUNT(*) OVER() 窗口函数:

    SELECT s.name,s.age,c.class_name,AVG(e.score) AS avg_score,COUNT(*) OVER() AS total_count
    FROM ...

二、数据插入(INSERT)

用于向表中新增记录。
基本语法

INSERT INTO 表名 (列名1, 列名2...) VALUES (值1, 值2...);
  • 示例:向students表插入一条新记录
    INSERT INTO students (name, age, gender) VALUES ('张三', 20, '男');
    

三、数据更新(UPDATE)

用于修改表中已有记录。
基本语法

  • 示例:将students表中id=1的学生年龄改为 21
    UPDATE students SET age=21 WHERE id=1;
    

    注意:若省略WHERE,会修改表中所有记录,需谨慎使用。

四、数据删除(DELETE)

用于删除表中的记录。
基本语法

  • 示例:删除students表中age < 18的记录
    DELETE FROM students WHERE age < 18;
    

    注意:若省略WHERE,会删除表中所有记录(表结构保留)。

五、表结构操作

1. 创建表(CREATE TABLE)

sql

CREATE TABLE 表名 (列名1 数据类型 约束,列名2 数据类型 约束...
);
  • 示例:创建students
    CREATE TABLE students (id INT PRIMARY KEY, -- 主键(唯一标识)name VARCHAR(50) NOT NULL, -- 非空age INT
    );
    
2. 删除表(DROP TABLE)
DROP TABLE 表名; -- 彻底删除表(包括结构和数据)
3. 修改表结构(ALTER TABLE)
  • 新增列:ALTER TABLE 表名 ADD 列名 数据类型;
  • 删除列:ALTER TABLE 表名 DROP COLUMN 列名;

六、其他常用命令

  • DESCRIBE 表名;(或DESC 表名;):查看表结构。
  • USE 数据库名;:切换到指定数据库。
  • SHOW DATABASES;:查看所有数据库。
  • SHOW TABLES;:查看当前数据库中的所有表。

这些命令覆盖了 SQL 的核心操作,掌握后可完成大部分基础数据库交互。

左链接,右链接的区别

右链接:最大的条数取决于右边

左链接:最大的条数取决于左边

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92242.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92242.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92242.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode-3488距离最小相等元素查询

依旧二分&#xff0c;链接如下3488. 距离最小相等元素查询 看题目是个循环数组&#xff0c;记得当时做过一道什么题也是循环数组&#xff0c;就想着直接数组复制一下&#xff0c;然后跟上一道题一样&#xff0c;用hashmap来存储value的值以及value对应下标的vector。 和灵神的…

C++中的关联容器

文章目录使用关联容器定义关联容器关键字类型的要求pair类型用作返回类型关联容器上的操作关联容器的迭代器关联容器和算法添加元素删除元素map的下标操作访问元素无序容器对关键字的要求关联容器支持高效的关键字查找和访问。两个主要的关联容器的类型是map和set。其中map中的…

【Git】git提交代码报错Git: husky > pre-commit

git提交代码报错原因 这个问题是因为当你在终端输入git commit -m “XXX”,提交代码的时候,pre-commit(客户端)钩子&#xff0c;它会在Git键入提交信息前运行做代码风格检查。如果代码不符合相应规则&#xff0c;则报错&#xff0c;而它的检测规则就是根据.git/hooks/pre-commi…

Unity开发者快速认识Unreal 的C++(六)GameMode之PlayerController

继承关系&#xff1a;Aactor&#xff0c;INavAgentInterface <--- AController<--- PlayerController &#xff0c;PlayerController也是一个Actor,继承了Actor的一些通用的属性和工具函数下图是PlayerController初始化组件的一个子阶段从图中可以得到的信息是&#xf…

Vue 3 服务端渲染(SSR)与客户端渲染(CSR)的区别及解决方案

1. SSR与CSR的区别1.1. SSR的原理服务端渲染&#xff08;SSR&#xff09;是在服务器端将 Vue 组件渲染为 HTML 字符串&#xff0c;并将其发送给客户端。这种方式与客户端渲染&#xff08;CSR&#xff09;不同&#xff0c;后者是在浏览器中执行 JavaScript 来生成 HTML。在 SSR …

Matlab快速回顾

一1.数值 显示 格式format style 设置eg: pi format longE;or2.清除指令clc 清除命令行窗口clear 清除工作区cls3.搜索路径设置path(path,E:\ads\)oraddpath4.M文件用户把要实现的命令写在一个以.m为扩展的文件中&#xff0c;然后由matlab系统进行解读&#xff0c;最后运行结果…

开源低代码+AI引擎:百特搭企业级开发平台的演进

在数字化转型进入深水区的今天&#xff0c;企业应用开发面临前所未有的复杂挑战&#xff1a;既要快速响应业务需求&#xff0c;又要确保系统灵活可控&#xff1b;既要降低技术门槛&#xff0c;又要保障核心安全。传统开发模式与单一形态的低代码工具已难以满足多层次需求。融合…

学习 Android(十五)NDK进阶及性能优化

学习 Android&#xff08;十五&#xff09;NDK进阶及性能优化 对 NDK 相关知识有了初步的了解之后&#xff0c;我们可以更加深入的去学习 NDK 相关知识&#xff0c;接下来&#xff0c;我们将按照以下步骤进行深入学习&#xff1a; 深入理解JNI调用过程和性能消耗常见 JNI 坑&am…

QT5.12.8 QTabWidget 透明样式QSS

/* 设置QTabWidget本身 :不加也行*/ QTabWidget#aaa_tabwdt {background: transparent;border: none; /* 移除边框可能有助于透明效果 */ }/* 标签页内的容器部件 :必须加&#xff0c;标签也才会透明 */ QTabWidget#aaa_tabwdt QWidget, QTabWidget#aaa_tabwdt QFrame {backgro…

【FAQ】Script导出SharePoint 目录文件列表并统计大小

一、只导出文件列表的方法 1) 保存脚本&#xff08;建议名&#xff1a;D:\tmp\Export-SharePoint-FileList.ps1&#xff09; <# 导出 SharePoint 指定文件夹&#xff08;含子文件夹&#xff09;的文件列表到 CSV&#xff08;不统计大小&#xff09; 前提&#xff1a;已安…

《Thinking in Java》读书笔记---控制执行流程

就像有感知的生物一样&#xff0c;程序必须在执行过程中控制它的世界&#xff0c;并做出选择。在Java中&#xff0c;你要使用执行控制语句来作出选择。一、流程控制基础概念1.1 流程控制的重要性流程控制结构决定了程序执行的顺序和逻辑分支&#xff0c;是编程语言中最基础也是…

极验 G-star 人才特训营:为业务安全领域培养下一代新兴力量

本文导读 极验为什么要启动 G-star 实习生培养计划&#xff1f;50多位来自多所高校的同学&#xff0c;在极验经历了一场怎样的“非典型”实习&#xff1f;技术大咖亲授&#xff0c;先培训再实战&#xff0c;极验打造的是怎样的人才体系&#xff1f;同学有话说&#xff1a;培养计…

攻防世界-web-csaw-mfw

一.题目分析这边提示使用了Git&#xff0c;试着访问.git看是否存在.git泄露浏览了一下&#xff0c;很多都是乱码&#xff0c;想着用githack将git库克隆下看一下二.操作python2 GitHack.py http://url/.git访问了一下flag.php&#xff0c;没啥发现&#xff0c;在看一下index.php…

202506 电子学会青少年等级考试机器人四级实际操作真题

更多内容和历年真题请查看网站&#xff1a;【试卷中心 -----> 电子学会 ----> 机器人技术 ----> 四级】 网站链接 青少年软件编程历年真题模拟题实时更新 2025年6月 青少年等级考试机器人实操真题四级 实际操作 主题&#xff1a;感应节能灯&#xff08;四级&am…

DLT645电表数据 保存到MySQL数据库项目案例

目录 1 案例说明 2 VFBOX网关工作原理 3 准备工作 4 配置VFBOX网关采集DLT645电表数据 5 网关写数据到MYSQL数据库 6 安装MYSQL数据库 7 其他说明 8 案例总结 1 案例说明 设置网关采集DLT645电表数据数据把采集的数据保存到MySQL数据库。 2 VFBOX网关工作原理 VFBOX网关…

Redux与React - 异步状态操作(React快速上手4)

异步操作样板代码1. 创建store的写法保持不变&#xff0c;配置好同步修改状态的方法 2. 单独封装一个函数&#xff0c;在函数内部return一个新函数&#xff0c;在新函数中 2.1 封装异步请求获取数据 2.2 调用同步actionCreater传入异步数据生成一个action对象&#xff0c;并使用…

win10桌面右键没有新建word

win10右键新建word不见解决方法1、点击开始&#xff0c;找到运行命令行&#xff0c;输入regedit&#xff0c;打开注册表。2、在左侧找到HKEY_CLASSES_ROOT目录&#xff0c;并展开。3.找到.docx 双击&#xff08;默认&#xff09;一项&#xff0c;将其改为 Word.Document.12。关…

Docker国内可用镜像(2025.08.06测试)

Docker渡渡鸟镜像可用&#xff08;测试时间2025.08.06&#xff09;https://docker.aityp.com/使用渡渡鸟镜像pull ollama latest 例子&#xff1a;docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama:0.10.1毫秒镜像和轩辕镜像也可用&#xff0c;但…

决策树的实际案例

决策树作为一种直观、易解释的机器学习算法&#xff0c;在金融、医疗、电商、风控等多个领域都有广泛的实际应用。以下将讲解1个典型案例&#xff1a;贷款违约预测。对于贷款违约预测&#xff0c;即在贷款人员在贷款之前对其进行预测&#xff0c;通过他的众多特征情况判别是否可…

bool 类型转换运算符重载

以下是一个极简且聚焦核心知识点的示例代码&#xff0c;用最直观的方式演示 bool 类型转换运算符重载的触发逻辑、使用场景和避坑点&#xff0c;帮你快速掌握&#xff1a;cpp运行#include <iostream> using namespace std;// 核心类&#xff1a;演示 bool 转换运算符 cla…