目录
分页查询
语法:select * from 表名 limit start,count
limit 是分页查询关键字,
start表示开始索引,默认是0
count表示查询条数
公式:已知每页显示m条数据,求第n也显示的数据:select * from students limit (n-1)*m,m;
eg:查询前3行男生信息:select * from students where sex='男' limit 0,3;或者
select * from students where sex='男' limit 3;
聚合函数
定义:聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算数据
注意:聚合函数不会对空值进行统计
常用的聚合函数有:求指定列的总行数count(col),最大值max(col),最小值min(col),求和sum(col),求平均值avg(col)。
指定列的总行数count(col):
eg:求身高的一个总行数:select count(height) from students;
返回总行数,包含null值记录:select count(*) from students;ents;
求最大值:
eg:查询女生编号最大值:select max(id) from students where sex='女';
求和:
eg: 查询男生的总身高:select sum(height) from students;
求平均值:
eg: avg(height) from students; 由于聚合函数不包括null值,平均值有误
select avg(ifnull(height,0)) from students; 包含身高是null的
ifnull函数:表示判断指定字段的值是否为null,如果为空使用自己提供的值
分组查询
分组查询就是将 查询结果 按照 指定字段 进行分组,字段中数据 相等 的分为一组
语法格式如下:
group by 列名 [having 条件表达式] [with rollup]
列名:是指按照指定字段的值进行分组
having条件表达式:用来过滤分组后的数据
with rollup :在所有记录的最后加上一条记录,显示select查询时聚合函数的统计和计算结 果
group by和 单字段分组 和 多字段分组使用
与使用:根据sex字段进行分组
eg:select sex from students group by sex;
与多字段分组使用:多字段分组:根据name 和 sex进行分组
eg:select name,sex from students group by name,sex;
注意:与多字段分组时,如果按什么字段去查询,只能使用指字段去分组,否则会报错
group by 和group_concat()使用:
group_concat(字段名):统计每个分组指定字段的信息集合,每个信息之间使用逗号进行 分割
eg:根据name 和 sex进行分组:
select sex,group_concat(name) from stu1 group by sex;
group by 和聚合函数使用
eg:统计不同性别的平均年龄,
select sex,avg(ifnull(height,0)) from students group by sex;
统计不同性别的人的个数:
select sex,count(*) from stu1 group by sex;
group by 和 having 使用
eg:根据sex字段进行分组,统计分组条数大于2的人数
select sex,count(*) from stu1 group by sex having count(*)>2;
group by 和 with rollup 的使用
eg1:根据sex字段进行分组,汇总总人数
select sex,count(*) from stu1 group by sex with rollup;
eg2:根据sex字段进行分组,汇总所有人年龄
select sex,count(age) from stu1 group by sex with rollup;
连接查询
主要包括:内连接、左连接、右连接和自连接
内连接:查询两个表中符合条件的共有记录
语法格式:select 字段 from 表1 inner join 表2 on表1.字段 = 表2.字段
inner join: 就是内连接查询关键字
on 就是连接查询学生表与班级表
eg:select * from stu1 inner join classes on stu1.c_id =classes.id;
update 修改表数据的
insert 添加表数据的
alter add 添加字段(表结构)的
左连接:以左表为主根据条件查询右表数据,如果根据条件查询右表数据不存在使用null值 填充
select 字段 from 表1 left join 表2 on 表1.字段=表2.字段
eg: select * from students as s left join classes as c on s.c_id = c.id;
右连接:以右表为主根据条件查询右表数据,如果根据条件查询左表数据不存在使用null值 填充
select 字段 from 表1 left join 表2 on 表1.字段=表2.字段
eg: select * from students as s right join classes as c on s.c_id = c.id;
怎么往 MySQL里面导入数据
1.先创建表,创建表里 面的数据 必须跟 导入数据里面的一些内容相同。才能导入。
2.复制原表的位置,然后source 路径 \ tb_areas.sql; 导入成功
自连接:左表和右表是同一个表,根据连接 查询条件 查询两个表中的数据(就是自己跟自己进行查询)
eg: select c.id ,c.title,c.pid,p.title from tb_areas c inner join tb_areas p on c.pid=p.id where p.title='山西省';
注释: c.id ,c.title,c.pid 别名为c的拿三个数据 就是c别名的pid 等不等于p别名的id,然后p.title 里面查山西省
第一个青春是上帝给的;第二个的青春是靠自己努力的
一起加油