1. 数据库去重
- distinct
- 去除重复的字段
命令格式:select distinct 字段名 from 表名
2. 分组
group by
例:按照班级分组并且统计各个班级有多少人
select count (*),classid from students group by classid
2.2 分组后加条件
having
命令格式:select 字段 from 表名 group by 字段 having 条件
3. 查询进阶
3.1链接查询
将两张或多张表联合起来进行查询,这种查询叫链接查询
- 交叉查询
- 表中每一行分别和其他表中的每一行组成一个新的行
- 新表中的行数是两个表的行数相乘,列数是两张表的列数相加
但是需要注意的是:会存在大量无用数据
命令格式:
select * from 表名,表名 #得出来的结果叫笛卡尔积表
- 自然链接
- 将多个表中符合条件的链接
- 在交叉链接的基础上,通过家条件可以得到自然链接
我们需要的是自然链接的结果
例: (如下图)
3.2 字段和表别名
格式
select 字段名 as 新名字 from 表名 ...
select 字段名 from 表名 as 新名字...
注意:表如果有了新名字,那么必须使用,否则会报错
3.3 使用自然链接存在的问题
- 会导致数据缺失
- 解决方法:用左外链接、右外链接
- 左表:前面的
- 右表:后面的
3.3.1 左外链接:
- 显示结果以左表为准
- 左表中的数据会全部出现,右表中的数据有就显示,没有就显示为空
格式
select * from 左表 left join 右表 on 左表.字段=右表.字段
3.3.2 右外链接
- 显示结果以左表为准
- 右表中的数据会全部出现,左表中的数据有就显示,没有就显示为空
格式
select * from 左表 right join 右表 on 左表.字段=右表.字段
例:使用右链接查询两个表中的数据(如下图)
4. 子查询
在查询中使用另外一个语句的查询结果
例:(如下图)