2024/4/25大约 2 分钟
SELECT 选择
Select 命令主要用于限制返回结果
返回所有字段
SELECT * FROM 表名;返回指定字段
SELECT 字段1,字段2 FROM 表名;结果去重
SELECT DISTINCT 字段 FROM 表名;ORDER 排序
SELECT * FROM 表名 ORDER BY 字段名 [ASC|DESC];LIMIT 限制返回数量
SELECT * FROM 表名 LIMIT 开始,数量;若只有数量则默认从第 0 行开始
SELECT * FROM 表名 LIMIT 7;表示第 0-6 行数据
// mysql
SELECT * FROM 表名 LIMIT 10, 6;
// postgresql
SELECT * FROM 表名 LIMIT 6 OFFSET 10;表示第 10 - 15 行数据
WHERE 条件
我们使用 Where 进行数据筛选
| 运算符 | 描述 | 
|---|---|
| = | 等于 | 
| <> | 不等于 | 
| > | 大于 | 
| < | 小于 | 
| >= | 大于等于 | 
| <= | 小于等于 | 
| BETWEEN | 在某个范围内 | 
| LIKE | 符合模式定义的数据 | 
| IN | 指定多个可能值 | 
// 姓名等于 Jack
SELECT * FROM users WHERE name = "Jack";
// 年龄大于 12
SELECT * FROM users WHERE age > 12;
// 年龄在 12 - 18 之间
SELECT * FROM users WHERE age BETWEEN 12 AND 18;
// 姓名以 J 开头
SELECT * FROM users WHERE name LIKE "J%";
// 年龄为 12, 15 或 18
SELECT * FROM users WHERE age IN (12,15,18);相关信息
LIKE 支持两个通配符,% 表示任意个字符串, _ 表示任意单个字符
// 名字以 J 开头,如 Jack, Jacky, Jim
SELECT * FROM users WHERE name LIKE "J%";
// 单个字符, 如 JA, Jc
SELECT * FROM users WHERE name LIKE "J_";AND, OR, NOT
// 年龄为 12 或 18
SELECT * FROM users WHERE age = 12 OR age = 18;
// 姓名为 Jack 且年龄为 12
SELECT * FROM users WHERE name = "Jack" AND age = 12;
// 年龄不为 12
SELECT * FROM users WHERE not age = 12;GROUP BY 分组
GROUP BY 通常和聚合函数 (COUNT, AVG ...) 等搭配使用,使用 HAVING 做额外查询
// 查询对应年龄用户的数量, 且数量需大于 10
SELECT age, COUNT(age) FROM users GROUP BY age HAVING COUNT(age) > 10;EXISTS 存在
EXISTS 主要用于查询是否满足子查询返回的数据
SELECT age FROM users WHERE EXISTS (SELECT age FROM users WHERE age > 2 );常见的聚合函数
| 函数 | 功能描述 | 备注 | 
|---|---|---|
| count() | 统计条数 | 只统计非空行, 使用 count(*)或count(1)统计所有行包括空行 | 
| sum() | 求和 | 只统计非空行,True 按 1 处理,False 按 0 处理 | 
| max() | 最大值 | 时间字段表示查询最近的日期 | 
| min() | 最小值 | 时间字段表示查询最远的日期 | 
| avg() | 平均值 | 只统计非空行 |