聚合函数
sum() 求和
avg() 求平均值
max() 求最大值
min() 求最小值
count() 统计记录条数
格式:select 函数名(字段) from 表名
三种删除操作
delete:删除表中的数据(删除的时候如果不加条件,会删除表中的全部数据)但是不会截断表
delete from 表名
drop:删除整个库或者说是删除整张表
drop table 表名
drop database 库名
truncate;删除表中的数据,会截断表
truncate from 表名
分组
group by 字段
分组的条件
根据性别分组
根据班级编号分组
完整的查询格式
select ... from ... where ... order by ... limit ... group by ... having ...
查询进阶三个部分
连接查询
子查询
联合查询
hellodb库简介
1:students表
学 生 id
学生姓名
年龄
性别
班级编号
老师编号
2:classes表3:teachers表4:courses表5:scores表
6:coc表:班级编号以及班级开始的课编号
7:toc表:老师的编号以及对应的所教授的课程的编号
链接查询
将两张或者多张表联合起来进行查询,这就是链接查询【join】,链接查询有两种,分别是交叉链接和自然链接
交叉链接
表中每一行,分别和其他表的每一行,组成一个新的行
新表的行数是两个表的行数相乘,列数是两个表的列数相加
自然链接【内链接、等值链接】
将多个表中,符合条件行进行链接
得到交叉连接的结果
select * from 表1,表2
得到自然连接的结果
select * from 表1,表2 where 表1.字段 = 表2.字段;
字段别名
给字段取一个新的名字
显示结果中,字段名会直接用新的名字显示出来
格式:
select 字段名 as 新名字 from 表名...
表别名
select 字段 from 表名 as 新名
注意:如果用了新的名字,那么必须使用,否则报错
案例:
在进行联合查询的时候,为表定义别名
为students表取别名叫做s 为classes表取别名叫做c
select name, c.classid from students as s,classes as c where s.classid=c.classid;
使用自然链接存在问题:会导致数据缺失
解决方法:用左外链接、右外链接
左表:前面的右表:后面的
解决数据丢失的问题,需要使用外链接,外链接分为三种:
左外链接右外链接
全外链接:mysql是不支持这种方式的。
概念:
左表:前面的表是左表右表:后面的表是右表
例子:
select * from students,classes ;’
# students表是左表
# classes表是右表
左外链接
显示结果以左表为准
左表中的数据会全部出现
右边中的数据,有就显示,没有的显示为null 格式
select 字段名 from 左表 left join 右表 on 条件
右外链接
显示结果以右表为准
右表中的数据会全部出现
左边中的数据,有就显示,没有的显示为空
select 字段名 from 左表 right join 右表 on 条件
子查询
在查询语句中,使用另外一个语句的查询结果