# 简单查询
# 查询语句核心语法
SELECT [DISTINCT] *|{字段名1, 字段名2, 字段名3,……} | |
FROM 表名 | |
[WHERE 条件表达式1] | |
[GROUP BY 字段名 [HAVING 条件表达式2]] | |
[ORDER BY 字段名 [ASC|DESC]] | |
[LIMIT [OFFSET] 记录数] |
- “字段 1,字段 2…” 表示从表中查询的指定字段
- 星号 (“*”) 通配符表示表中所有字段,两者为互斥关系,任选其一
- “DISTINCT” 是可选参数,用于剔除查询结果中重复的数据
- from 表示从指定的表中查询数据
- “WHERE” 是可选参数,用于指定查询条件
- “GROUP BY” 是可选参数,用于将查询结果按照指定字段进行分组,“HAVING” 也是可选参数,用于对分组后的结果进行过滤。
- “ORDER BY” 是可选参数,用于将查询结果按照指定字段进行排序。排序方式由参数 ASC 或 DESC 控制,其中 ASC 表示按升序进行排列,DESC 表示按降序进行排列。如果不指定参数,默认为升序排列
- “LIMIT” 是可选参数,用于限制查询结果的数量。LIMIT 后面可以跟 2 个参数,第一个参数 “OFFSET” 表示偏移量,如果偏移量为 0 则从查询结果的第一条记录开始… 以此类推。如果不指定 OFFSET,其默认值为 0。第二个参数 “记录数” 表示返回查询记录的条数。
# 例子
查询 student 表中的所有字段
查询 student 表中 name 字段和 gender 字段的数据 (查询指定属性)
PS: 指定查询对象 需要用 where 来限制 相关的条件表达式如下
例如:
查询 name 为 “wusong” 的姓名和 性别
# 带 IN 关键字的查询
SELECT *|字段名1,字段名2,…… | |
FROM 表名 | |
WHERE 字段名 [NOT] IN (元素1,元素2,……) |
例如:
查询 student 表中 id 值为 1、2、3 的 id、成绩 、姓名、性别
# 带 BETWEEN AND 关键字的查询
判断某个字段的值是否在指定的范围之内
SELECT *|{字段名1,字段名2,……} | |
FROM 表名 | |
WHERE 字段名 [NOT] BETWEEN 值1 AND 值2 |
例如:
查询 student 表中 id 值在 2 和 5 之间的学生 id 和姓名
# 空值查询
判断某些列是否有 NULL 值
SELECT *|字段名1,字段名2,…… | |
FROM 表名 | |
WHERE 字段名IS [NOT] NULL |
例:
查询 student 表中 gender 为空值的 id、姓名、成绩、性别
![alt](https://img2020.cnblogs.com/blog/1584580/
# 带 DISTINCT 关键字的查询
用于去除重复记录
SELECT DISTINCT 字段名 FROM 表名; |
例:
查询 student 表中 gender 字段的值,查询记录不能重复
# DISTINCT 关键字作用于多个字段
SELECT DISTINCT 字段名1,字段名2,…… | |
FROM 表名; |
在上面的语法格式中,只有 DISTINCT 关键字后指定的多个字段值都相同,才会被认作是重复记录。
# 带 LIKE 关键字的查询
判断两个字符串是否相匹配
SELECT *|{字段名1,字段名2,……} | |
FROM 表名 | |
WHERE 字段名 [NOT] LIKE '匹配字符串'; |
例:
查找 student 表中 name 字段值包含字符 “y” 的学生 id 和姓名
# 下划线 (_) 通配符
下划线通配符只匹配单个字符,如果要匹配多个字符, 需要使用多个下划线通配符。
PS: 汉字占两个
使用百分号和下划线通配符进行查询操作
百分号和下划线是通配符,它们在通配字符串中有特殊含义,
因此,如果要匹配字符串中的百分号和下划线,就需要在通配字符串中使用右斜线 (“\”) 对百分号和下划线进行转义,
例如: “%” 匹配百分号字面值,“_” 匹配下划线字面值。
名字中含有 % 的
# 带 AND 关键字的多条件查询
连接两个或者多个查询条件
SELECT *|{字段名1,字段名2,……} | |
FROM 表名 | |
WHERE 条件表达式1 […… AND 条件表达式n]; |
例:
查找 id >5 的女生
# 带 OR 关键字的多条件查询
记录满足任意一个条件即被查出
SELECT *|{字段名1,字段名2,……} | |
FROM 表名 | |
WHERE 条件表达式1 OR […… OR 条件表达式n]; |
例:
查询 student 表中 id 字段值小于 3 或者 gender 字段值为 “女” 的 id、姓名、性别
PS: OR 和 AND 关键字一起使用的情况
AND 的优先级高于 OR,因此当两者在一起使用时,应该先运算 AND 两边的条件表达式,再运算 OR 两边的条件表达式。
# 使用 LIMIT 限制查询结果的数量
SELECT 字段名1,字段名2,…… | |
FROM 表名 | |
LIMIT [OFFSET,] 记录数 |
**LIMIT:** 后面可以跟 2 个参数,“OFFSET”:为可选值,表示偏移量,如果偏移量为 0 则从查询结果的第一条记录开始… 以此类推,如果不指定其默认值为 0。
**“记录数”:** 表示返回查询记录的条数。
例:
查询 student 表中 grade 字段值从第 5 位到第 8 位的学生。
# 高级查询
# COUNT () 函数
用来统计记录的条数
SELECT COUNT(*) FROM 表名 |
# SUM () 函数
求和函数,用于求出表中某个字段所有值的总和
SELECT SUM(字段名) FROM 表名; |
# AVG () 函数
用于求出某个字段所有值的平均值
SELECT AVG(字段名) FROM student; |
# MAX () 函数
最大值的函数,用于求出某个字段的最大值
SELECT MAX(字段名) FROM student; |
# MIN () 函数
最小值的函数,用于求出某个字段的最小值
SELECT MIN(grade) FROM student; |
# ORDER BY 对查询结果进行排序
SELECT 字段名1,字段名2,…… | |
FROM 表名 | |
ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC]…… |
PS: NULL 会被认为最小,建议 and 上非空检测
# GROUP BY 对字段值进行分组查询
SELECT 字段名1,字段名2,…… | |
FROM 表名 | |
GROUP BY 字段名1,字段名2,……[HAVING 条件表达式]; |
学习不易,诸君共勉