SQL 基础语法复习

SQL 基础语法复习

1. 查询 SELECT

查询所有列:

sql 复制代码
SELECT *
FROM 表名;

查询指定列:

sql 复制代码
SELECT 列1, 列2
FROM 表名;

带条件查询:

sql 复制代码
SELECT 列1, 列2
FROM 表名
WHERE 条件;

去重查询:

sql 复制代码
SELECT DISTINCT 列名
FROM 表名;

2. 条件 WHERE

比较条件:

sql 复制代码
WHERE 列名 = 值
WHERE 列名 <> 值
WHERE 列名 > 值
WHERE 列名 >= 值
WHERE 列名 < 值
WHERE 列名 <= 值

多个条件:

sql 复制代码
WHERE 条件1 AND 条件2
WHERE 条件1 OR 条件2

范围查询:

sql 复制代码
WHERE 列名 BETWEEN 值1 AND 值2;

集合查询:

sql 复制代码
WHERE 列名 IN (值1, 值2, 值3);

模糊查询:

sql 复制代码
WHERE 列名 LIKE '%关键字%';

空值查询:

sql 复制代码
WHERE 列名 IS NULL;
WHERE 列名 IS NOT NULL;

3. 增 INSERT

插入一整行:

sql 复制代码
INSERT INTO 表名
VALUES (值1, 值2, 值3);

指定字段插入:

sql 复制代码
INSERT INTO 表名(列1, 列2, 列3)
VALUES (值1, 值2, 值3);

把查询结果插入表:

sql 复制代码
INSERT INTO 表名(列1, 列2)
SELECT 列1, 列2
FROM 另一个表
WHERE 条件;

4. 删 DELETE

删除指定记录:

sql 复制代码
DELETE FROM 表名
WHERE 条件;

删除所有记录:

sql 复制代码
DELETE FROM 表名;

清空表:

sql 复制代码
TRUNCATE TABLE 表名;

区别:

text 复制代码
DELETE 可以带 WHERE,能删部分数据。
TRUNCATE 不能带 WHERE,一次清空整张表。

5. 改 UPDATE

修改指定记录:

sql 复制代码
UPDATE 表名
SET 列名 = 新值
WHERE 条件;

一次修改多个字段:

sql 复制代码
UPDATE 表名
SET 列1 = 新值1,
    列2 = 新值2
WHERE 条件;

注意:

text 复制代码
UPDATE 和 DELETE 不写 WHERE,会影响整张表。

6. 排序 ORDER BY

升序:

sql 复制代码
SELECT *
FROM 表名
ORDER BY 列名 ASC;

降序:

sql 复制代码
SELECT *
FROM 表名
ORDER BY 列名 DESC;

多个字段排序:

sql 复制代码
SELECT *
FROM 表名
ORDER BY 列1 ASC, 列2 DESC;

说明:

text 复制代码
ASC:升序,默认可以不写
DESC:降序

7. 聚合函数

统计个数:

sql 复制代码
SELECT COUNT(*)
FROM 表名;

求和:

sql 复制代码
SELECT SUM(列名)
FROM 表名;

平均值:

sql 复制代码
SELECT AVG(列名)
FROM 表名;

最大值:

sql 复制代码
SELECT MAX(列名)
FROM 表名;

最小值:

sql 复制代码
SELECT MIN(列名)
FROM 表名;

常用聚合函数:

text 复制代码
COUNT:统计数量
SUM:求总和
AVG:求平均值
MAX:求最大值
MIN:求最小值

8. 分组 GROUP BY

按某列分组统计:

sql 复制代码
SELECT 分组列, 聚合函数(列)
FROM 表名
GROUP BY 分组列;

例子:

sql 复制代码
SELECT XSBH, SUM(JE) AS 销售总金额
FROM XSCP
GROUP BY XSBH;

多列分组:

sql 复制代码
SELECT 列1, 列2, COUNT(*)
FROM 表名
GROUP BY 列1, 列2;

规则:

text 复制代码
SELECT 中的普通字段,必须出现在 GROUP BY 中。
没有出现在 GROUP BY 中的字段,必须放进聚合函数。

9. 分组后筛选 HAVING

sql 复制代码
SELECT 分组列, 聚合函数(列)
FROM 表名
GROUP BY 分组列
HAVING 聚合条件;

例子:

sql 复制代码
SELECT XSBH, SUM(JE) AS 销售总金额
FROM XSCP
GROUP BY XSBH
HAVING SUM(JE) >= 10000;

区别:

text 复制代码
WHERE:分组前筛选普通记录
HAVING:分组后筛选统计结果

10. 分组 + 排序

sql 复制代码
SELECT 分组列, 聚合函数(列) AS 别名
FROM 表名
GROUP BY 分组列
ORDER BY 聚合函数(列) DESC;

例子:

sql 复制代码
SELECT XSBH, SUM(JE) AS 销售总金额
FROM XSCP
GROUP BY XSBH
ORDER BY SUM(JE) DESC;

也可以用别名排序:

sql 复制代码
SELECT XSBH, SUM(JE) AS 销售总金额
FROM XSCP
GROUP BY XSBH
ORDER BY 销售总金额 DESC;

11. 连接查询

旧式写法:

sql 复制代码
SELECT 表1.列, 表2.列
FROM 表1, 表2
WHERE 表1.关联列 = 表2.关联列;

标准写法:

sql 复制代码
SELECT 表1.列, 表2.列
FROM 表1
JOIN 表2 ON 表1.关联列 = 表2.关联列;

三表连接:

sql 复制代码
SELECT *
FROM 表1
JOIN 表2 ON 表1.关联列 = 表2.关联列
JOIN 表3 ON 表2.关联列 = 表3.关联列;

12. 子查询

作为条件:

sql 复制代码
SELECT *
FROM 表名
WHERE 列名 IN (
    SELECT 列名
    FROM 另一个表
);

比较平均值:

sql 复制代码
SELECT *
FROM SC sc1
WHERE Grade >= (
    SELECT AVG(Grade)
    FROM SC sc2
    WHERE sc2.Sno = sc1.Sno
);

EXISTS:

sql 复制代码
SELECT *
FROM 表1
WHERE EXISTS (
    SELECT *
    FROM 表2
    WHERE 表2.关联列 = 表1.关联列
);

NOT EXISTS:

sql 复制代码
SELECT *
FROM 表1
WHERE NOT EXISTS (
    SELECT *
    FROM 表2
    WHERE 表2.关联列 = 表1.关联列
);

13. 集合查询

并集:

sql 复制代码
SELECT 列名 FROM 表1
UNION
SELECT 列名 FROM 表2;

交集:

sql 复制代码
SELECT 列名 FROM 表1
INTERSECT
SELECT 列名 FROM 表2;

差集:

sql 复制代码
SELECT 列名 FROM 表1
EXCEPT
SELECT 列名 FROM 表2;

说明:

text 复制代码
UNION:合并并去重
INTERSECT:取共同部分
EXCEPT:前者有、后者没有

14. 常用完整顺序

sql 复制代码
SELECT 列名, 聚合函数(列)
FROM 表名
WHERE 普通条件
GROUP BY 分组列
HAVING 聚合条件
ORDER BY 排序列 ASC/DESC;

执行理解:

text 复制代码
FROM:从哪张表来
WHERE:先筛选记录
GROUP BY:再分组
HAVING:筛选分组后的结果
SELECT:显示结果
ORDER BY:最后排序

15. 记忆口诀

text 复制代码
查:SELECT FROM WHERE
增:INSERT INTO VALUES
删:DELETE FROM WHERE
改:UPDATE SET WHERE
分组:GROUP BY
组后筛选:HAVING
排序:ORDER BY
相关推荐
煎饼皮皮侠1 小时前
【设计】设计一个web版的数据库管理平台后端(之五) --借鉴mybatis
数据库·mybatis
东风破_7 小时前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
九皇叔叔8 小时前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
橙子家9 小时前
OSS 文件上传的几个风险点和解决方案
数据库
2601_9620664910 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext11 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
数字新视界13 小时前
DCIM管理系统的技术架构与部署模式详解
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统
何以解忧,唯有..13 小时前
Pydantic 介绍与使用:Python 数据校验的现代方案
数据库·python·microsoft
这个DBA有点耶14 小时前
数据库容灾进入“秒级时代”:同城双活架构原理、关键技术选型与落地实践
数据库·架构·dba
2601_9620748114 小时前
大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL
大数据·数据库·mysql