关键字:select
【注意】!!! 去除查询重复记录不要用group by 使用distinct
-- 查询语句
select 字段 from 表名 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数
-- 查询多个字段 select 字段1,字段2... from 表名
select id,name from mysql_test.test_user_new;
-- 设置别名 使用【as 别名】 或者直接在后面省略as
select id as id1,name name1 from mysql_test.test_user_new;
-- 查询【去除重复记录】 distinct
select distinct id from mysql_test.test_user_new;
-- 条件查询 select 字段列表 from 表名 where 条件列表
-- 比较运算符 >, <, >=, <=, <>, !=, between and, in(...), like, is null
select id,name from mysql_test.test_user_new where id > 1


· like 模糊匹配, 下划线代表单个字符 【当然下划线可以有多个】;百分号代表 匹配任意个字符;
-- like 百分号匹配任意多个字符 下面的含义【'小'的前面与后面有任意个字符的】
select id,name from mysql_test.test_user_new where name like '%小%'
-- like 下划线匹配一个字符 下面的含义【'小'开头的后面只有两个字符的】
select id,name from mysql_test.test_user_new where name like '小__'
· between … and … 范围之内查询
-- between and 查询
-- 【between 最小值 and 最大值】
select id,name from mysql_test.test_user_new where id between 1 and 10;
聚合查询的含义时查询时使用聚合函数进行查询:将一列数据作为一个整体进行纵向计算;
常见的聚合函数:
· count() 统计数量
· max() 最大值
· min() 最小值
· avg() 平均值
· sum() 求和
【注意】使用聚合函数时,null 不参数所有的聚合函数运算;
【举例】使用count(id) 时,当id字段为null时不被统计;
-- 聚合函数直接作用于字段
-- 求最大值 max()
select max(age) from mysql_test.test_user_new;
-- 求平均值 avg()
select avg(age) from mysql_test.test_user_new;
-- 求和 sum()
select sum(age) from mysql_test.test_user_new;
-- 分组查询 select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]
-- 分组查询 经常配合聚合函数使用
-- 分组之后只能查询分组的字段与聚合函数,其他字段查询没有意义
select age,count(1) from mysql_test.test_user_new group by age;
/*
*【注意】where 与 having之间的区别:
* 时机不同: where是在分组之前进行过滤的,不符合条件不参与分组;having 是分组之后进行结果过滤的;
* 判断条件不同: 【where 不能对聚合函数进行判断】,【having 可以对聚合函数判断】也就是聚合函数不能够出现在where里面,可以出现在having里面
*/
-- 【错误】聚合函数出现在where 里面
select id from mysql_test.test_user_new where id = max(id);
-- 【正确】聚合函数出现在having 里面
select id,count(1) from mysql_test.test_user_new group by id having id = count(1);
· 排序方式:
· ASC : 升序;
· DESC : 降序
· 可以根据多个字段进行排序
· 如果是多字段排序,只有第一个字段的值是相同的时候,才会根据第二个字段进行排序;
-- DQL 排序查询 select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
select * from mysql_test.test_user_new order by id desc,age asc;
【注意】
起始索引从 0 开始,起始索引 = (查询页码 -1 ) * 每页显示记录数;
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL里面是limit;
如果查询的是第一页的数据,起始索引可以省略,直接简写为 limit 10;
-- 分页查询 select 字段列表 from 表名 limit 起始索引,查询记录数;
select * from mysql_test.test_user_new limit 0,4;
【注意】
select … from … where … group by … having … order by … limit 的顺序是编写顺序 不等于 执行顺序;
执行顺序:
(1) from … 找表
(2) where … 判断表的条件
(3) group by … 分组的列表
(4) having … 分组后的条件列表
(5) select … 查询字段列表
(6) order by … 排序字段列表
(7) limit … 分页参数