第三章、单表查询
学习目标
3.1、简单查询
- select语句
select [distinct] * | 字段1,字段2,字段3,…… from 表名 [where 条件表达式1] [group by 字段名 [having 条件表达式]] [order by 字段名 [asc | desc]] [limit [offset] 记录数]
字段1,字段2是表中指定查询的字段;
星号‘*’
是通配符表示查询所有字段;
distinct
表示剔除查询字段中重复的字段;
group by
字段名表示查询结果以该字段分组显示
having
关键字用于对分组后的结果进行过滤,可以在group by后使用,且条件表达式中可以使用sql语句中的别名(表示前面的结果是已知的才可以使用其别名)
where
关键字不可以在group by后使用,且条件表达式中不可以使用sql语句中的别名(因为前面的查询结果是未知的)
Order by
字段按该字段,asc升序排序,desc降序排序(默认是升序排序)
limit
分页函数,后可跟来两个参数,offset
是指偏移量,可以理解为是显示哪一页的数据(也可以理解为撇去的页数及数据)
eg1:select * from stu limit 2
==select * from stu limit 0,2
,显示所有数据的前两条
eg2:select * from stu limit 2,2
,撇去前两条数据显示第3和4两条数据
- 查询所有字段
select * from 表名;
- 可查询所有和指定字段
select 字段1,字段2,字段3,…… from 表名;
3.2、按条件查询
带有where查询的子句有八种:
- 带关系运算符的查询
- 带IN关键字的查询
- 带BETWEEN AND关键字的查询
- 控制查询
- 带DISTINCT关键字的查询
- 带LIKE关键字的查询
注意:LIKE语法格式中的
'匹配字符串'
指定用来匹配的字符串,其值可以是一个普通字符串也可以包含百分号(%)和下划线(_)的通配字符串。
百分号好下划线统称为通配符
;
百分号(%)
:可以匹配任意长度的字符串;
下划线_
:下划线通配符职匹配单个字符,如果需匹配多个字符,需使用多个下划线通配符。
- 带AND关键字的多条件查询
- 带OR关键字的多条件查询
小贴士:
OR和AND一起使用的情况下,AND的优先级更高,先运算AND两边表达式,然后再运算OR两边表达式。
3.3、高级查询
-
聚合函数
-
对查询结果排序
-
分组查询
分组查询三种情况
注意:如果使用了group by 进行分组,那么前面sql中查询的字段,除了使用聚合函数的字段,其他字段要么放在group by后面,要么也是用聚合函数,要么就去掉该查询字段,否则违背group by规范。
- 使用LIMIT限制查询结果的数量
- 函数(列表)
- MySQL中提供了丰富的函数,通过这些函数可以简化用户对数据的操作。
- MySQL中的函数包括数学函数、字符串函数、日期和时间函数、加密函数等等。
3.4、为表和字段取别名
- 为表取别名
- 为字段取别名