【MySQL】近2万字,138张图解,我终于把mysql总结完整了,建议收藏( 八 )


去重使用非常广泛的场景之一就是 去重 , 去重可以使用 distinct 关键字来实现
为了演示效果 , 我们先向数据库中插入批量数据 , 插入完成后的表结构如下
下面我们使用 distinct 来对 age 去重来看一下效果
你会发现只有两个不同的值 , 其他和 25 重复的值被过滤掉了 , 所以我们使用 distinct 来进行去重
条件查询我们之前的所有例子都是查询全部的记录 , 如果我们只想查询指定的记录呢?这里就会用到 where条件查询语句 , 条件查询可以对指定的字段进行查询 , 比如我们想查询所有年龄为 24 的记录 , 如下
select * from job where age = 24;

where 条件语句后面会跟一个判断的运算符 = , 除了 = 号比较外 , 还可以使用 「>、<、>=、<=、!=」 等比较运算符;例如
select * from job where age >= 24;

就会从 job 表中查询出 age 年龄大于或等于 24 的记录
除此之外 , 在 where 条件查询中还可以有多个并列的查询条件 , 比如我们可以查询年龄大于等于 24 , 并且薪资大雨 8000 的记录
select * from job where age >= 24 and salary > 8000;

多个条件之间还可以使用 or、and 等逻辑运算符进行多条件联合查询 , 运算符会在以后章节中详细讲解 。
排序我们会经常有这样的需求 , 按照某个字段进行排序 , 这就用到了数据库的排序功能 , 使用关键字 order by 来实现 , 语法如下
SELECT * FROM tablename [WHERE CONDITION
[ORDER BY field1 [DESC|ASC
,field2 [DESC|ASC
, ……fieldn [DESC|ASC



其中 DESC 和 ASC 就是顺序排序的关键字 , DESC 会按照字段进行降序排列 , ASC 会按照字段进行升序排列 , 默认会使用升序排列 , 也就是说 , 你不写 order by 具体的排序的话 , 默认会使用升序排列 。 order by 后面可以跟多个排序字段 , 并且每个排序字段可以有不同的排序顺序 。
为了演示功能 , 我们先把表中的 salary 工资列进行修改 , 修改完成后的表记录如下
下面我们按照工资进行排序 , SQL 语句如下
select * from job order by salary desc;

语句执行完成后的结果如下
这是对一个字段进行排序的结果 , 也可以对多个字段进行排序 , 但是需要注意一点

?
根据 order by 后面声名的顺序进行排序 , 如果有三个排序字段 A、B、C 的话 , 如果 A 字段排序字段的值一样 , 则会根据第二个字段进行排序 , 以此类推 。
如果只有一个排序字段 , 那么这些字段相同的记录将会无序排列 。
?
限制对于排序后的字段 , 或者不排序的字段 , 如果只希望显示一部分的话 , 就会使用 LIMIT 关键字来实现 , 比如我们只想取前三条记录
select * from job limit 3;

或者我们对排序后的字段取前三条记录
select * from job order by salary limit 3;

上面这种 limit 是从表记录的第 0 条开始取 , 如果从指定记录开始取 , 比如从第二条开始取 , 取三条记录 , SQL 如下
select * from job order by salary desc limit 23;

limit 一般经常和 order by 语法一起实现分页查询 。
?
注意:limit 是 MySQL 扩展 SQL92 之后的语法 , 在其他数据库比如 Oracle 上就不通用 , 我犯过一个白痴的行为就是在 Oracle 中使用 limit 查询语句 。。。
?
聚合下面我们来看一下对记录进行汇总的操作 , 这类操作主要有