目录
一、查询(retrieve)
1.1 查询数据的方式概述
二、全列查询
2.1 语法
2.2 操作演示
2.3 全列查询需要慎重使用
三、指定列查询
3.1 语法
3.2 操作演示
四、表达式查询
4.1 语法
4.2 操作演示
4.3 null 参与表达式计算
4.3 表达式查询存的缺陷
4.4 临时表中列的类型
五、查询结果指定别名(as)
5.1 语法
5.2 操作演示
六、去重查询(distinct)
6.1 语法
6.2 操作演示
七、排序查询(order by)
7.1 排序规则
7.2 语法
7.3 操作演示
八、条件查询(where)
8.1 语法
8.2 运算符简介
8.3 运算符 > >= < <=
8.4 运算符 = <=>
8.5 运算符 != <>
8.6 范围匹配 between A and B
8.7 选择匹配 in (option, ......)
8.8 判断空和非空 is null、is not null
8.9 模糊匹配运算符 like
8.10 运算符 与and、或or、非not
8.11 where 后的条件表达式中不能使用别名
8.12 条件查询中的 SQL 语句的执行顺序
九、分页查询(limit)
9.1 语法
9.2 分页查询的优点
9.3 操作演示
一、查询(retrieve)
1.1 查询数据的方式概述
查询方式 | 简单说明 |
全列查询 | 查询表中所有数据; |
指定列查询 | 查询表中指定列的数据; |
表达式查询 | 根据表达式查询相关列并运算,打印运算结果; |
查询结果指定别名(as) | 为查询结果中的列指定别名,打印的列名为该别名; |
去重查询(distinct) | 查询结果为去重后的结果; |
排序查询(order by) | 对查询的结果进行排序; |
条件查询(where) | 使用运算符,设置查询规则,根据查询规则查询数据; |
分页查询(limit) | 指定查询的数据的打印行数,类似分页的效果; |
上述查询方式,是 MySQL 中基础的查询方式。
查询方式并非每次只能使用一种,而是可以根据使用者的需求,将查询方式搭配组合,以查询到所需的数据。
所有的查询结果都是一张 “临时表” ,执行查询操作不会改变数据库中的原始数据。
现有表格 student ,表格所有数据如下:
二、全列查询
2.1 语法
语法: | select * from 表名; |
解释: | 根据指定的数据表,查询表中所有数据;(‘ * ’ 号为通配符) |
2.2 操作演示
2.3 全列查询需要慎重使用
数据量过大时,用全列查询的方式查询数据,可能导致硬盘或网络带宽开销过大,在查询操作完成之前,服务器无法正常响应其他的的客户端请求。
可能影响索引的使用。
除非数据量小,通常情况下不建议执行全列查询操作。
三、指定列查询
3.1 语法
语法: | select 列名...... from 表名; |
解释: | 指定数据表中的某一列或多列,查询指定列的所有数据。 |
一个数据表中常会有多列,指定列查询的方式减少了查询的数据量。但仍可能出现数据量过大的情况,因此指定列查询也需要慎重使用。
3.2 操作演示
四、表达式查询
4.1 语法
语法: | select 表达式...... from 表名; |
解释: | 指定数据表,根据表达式按列对数据表中的数据进行计算。 每个表达式为一列,将表达式结果打印。 |
4.2 操作演示
4.3 null 参与表达式计算
应注意,当 null 参与计算时,结果必然为 null 。
4.3 表达式查询存的缺陷
表达式将作为列名进行打印。可以从上图看到,如果表达式非常长,那么这一列的列名也将非常长,可读性差,不利于阅读和理解该列含义。下文使用的“查询结果指定别名”可以解决这个问题。
4.4 临时表中列的类型
所有的查询结果都是一个临时表。
临时表中的数据类型不再受限于原始表。
可以从上图看到,经过表达式计算后,数据格式已经不合法,但该查询操作仍可以执行。
五、查询结果指定别名(as)
5.1 语法
语法: | select 表达式 as 别名 from 表名; |
解释: | 指定数据表,根据表达式按列对数据表中的数据进行计算。 每个表达式为一列,以别名作为表达式的运算结果的列名,将表达式结果打印。 |
5.2 操作演示
六、去重查询(distinct)
6.1 语法
语法: | select distinct 列名...... from 表名; |
解释: | 指定数据表中的某一列或多列,除数据重复的行之外,打印查询结果。 |
如果指定多列进行去重查询,此时需要每一列的数据都重复,才会认为数据行是重复的。
6.2 操作演示
七、排序查询(order by)
7.1 排序规则
如果一个查询操作没有使用 order by 关键字,那么这个查询操作得到的结果集数据之间的相互顺序是不可预测的,不能被认为是有序的。 |
关键字 asc 表示升序,desc 表示降序。如果不指定升降序,则默认升序 asc 。(注意关键字升序 desc 和 关键字描述 desc 重复,使用时注意区分) |
null 数据会被认为是最小值。 |
字符串也可以比较大小,一般按照字典序进行排序。中文也是按照字典序进行排序,不是按照拼音首字母或笔画顺序,一般没有意义。 |
7.2 语法
语法: | select 列名...... from 表名 order by 列名 asc/desc; |
解释: | select 后的列名,是指需要打印的列名。 order by 后的列名,是指排序的依据,这里的列名并不一定需要被打印。 order by 后的列名,可以选择升序排列(使用 asc 或 不写),或选择降序(使用 desc )。 |
语法: | select 表达式 as 别名...... from 表名 order by 别名 asc/desc; |
解释: | 与其他查询一样,可以在 select 后指定一列或多列,可以替换为表达式,可以指定别名。 指定别名后,order by 可以根据别名的数据进行排序。 |
语法: | select 表达式 as 别名...... from 表名 order by 别名 asc/desc, 列名 asc/desc......; |
解释: | 优先级排序:order by 后的列名,是指排序的依据,可以指定多列作为排序的依据,列与列之间排序的优先级根据书写的先后顺序决定。 |
7.3 操作演示
八、条件查询(where)
8.1 语法
查询时,指定筛选条件,符合条件将被打印,不符合条件的不会打印。
语法: | select 列名...... from 表名 where 条件表达式; |
解释: | 根据指定条件表达式筛选数据,打印指定列中符合条件的数据。 |
语法: | select 表达式 as 别名...... from 表名 where 条件表达式; |
解释: | 与其他查询一样,可以在 select 后指定一列或多列,可以替换为表达式,可以指定别名 |
8.2 运算符简介
运算符列表 | |
> >= < <= | 大于、大于等于、小于、小于等于 |
= <=> | 等于 |
!= <> | 不等于 |
between A and B | 范围匹配 |
in (option, ......) | 选择匹配 |
is null、is not null | 判断空 |
like | 模糊匹配 |
and、or、not | 与、或、非 |
阅读指针 -> 《SQL中的比较运算符和逻辑运算符简介》
<MySQL> SQL中的比较运算符和逻辑运算符简介-CSDN博客文章浏览阅读6次。简述 SQL 语言中的运算符https://blog.csdn.net/zzy734437202/article/details/134282495
8.3 运算符 > >= < <=
8.4 运算符 = <=>
8.5 运算符 != <>
8.6 范围匹配 between A and B
8.7 选择匹配 in (option, ......)
8.8 判断空和非空 is null、is not null
8.9 模糊匹配运算符 like
8.10 运算符 与and、或or、非not
8.11 where 后的条件表达式中不能使用别名
select 表达式 as 别名 from 表名 where 别名 + 10; |
where 后的条件表达式中,不能使用别名。 上述语句指定了 “别名 + 10” 作为 where 后的条件表达式,执行该语句将报错,因为在 where 后的条件表达式中使用了别名。 |
where后不使用别名则可以正常打印:
8.12 条件查询中的 SQL 语句的执行顺序
根据指定的表,取出一行记录。 |
将该行记录代入条件表达式,判断是否满足条件。 |
如果条件满足,则将 select 后指定的列取出并打印;如果 select 后是表达式,则根据表达式计算后再进行打印。 |
九、分页查询(limit)
9.1 语法
语法: | select * from 表名 limit 数量; |
解释: | 指定数据表,limit 指定需要打印多少行。 |
语法: | select * from 表名 limit 数量 offset 行数; |
解释: | 指定数据表,limit 指定需要打印多少行,offset 指定从哪一行开始打印。 |
9.2 分页查询的优点
分页查询可以限制查询数据每次的打印数量和从哪个位置开始打印。
查询数据时,可能由于查询数据量过大,而导致服务器阻塞,一直在执行数据查询操作,而没有办法响应其他客户端请求。使用分页查询,就能很好的解决这个问题。
9.3 操作演示