mysql数据库之查询

目录

查询关键字

查询关键字之having过滤

# 区别   where用在分组之前的筛选   havng用在分组之后的筛选 把where叫做筛选,havng叫做过滤是为了方便区分  # 统计每个部门年龄在28岁以上的员工的平均薪资并且保留平均薪资大于10000的部门 # 1.先获取每个部门年龄在28岁以上的员工的平均薪资   先筛选出28岁以上的员工数据,然后再对数据进行分组   select position,avg(salary) from pythonschool where age>28 group by position; # 2.在过滤出平均薪资大于9000的数据   针对分组之后的数据第二次筛选,需要使用having过滤出平均薪资大于9000的部门   select position,avg(salary) from pythonschool    	where age>28      group by position     having avg(salary) > 9000     ; # 聚合函数起别名,方便在其他地方作为条件使用   select position,avg(salary) as avg_salary from pythonschool    	where age>28      group by position     having avg_salary > 9000     ; 

查询关键字之distinct去重

# 去重的前提,数据必须完全相等并且不能带有主键 select distinct department_director,group_concat('编号',id,'姓名',name) from pythonschool group by department_director; 

查询关键字之order by排序

# 按照年龄高低排序 select * from pythonschool order by age;  # 默认是升序 select * from pythonschool order by age asc;  # 升序关键字asc可以省略  select * from pythonschool order by age desc;  # 降序 # 先按照年龄降序排序,如年龄相同,再按照薪资降序排序 	select * from pythonschool order by age desc,salary desc; # 统计各岗位年龄在25岁以上的员工平均工资,并保留平均工资大于7000的岗位并按照从小到大的顺序排序 select position,avg(salary) as avg_salary from pythonschool  where age > 25  group by position having avg_salary > 7000 order by avg_salary asc; 

查询关键字之limit分页

# 分页即限制展示条数 # 限制只展示八条数据 	select * from pythonschool limit 8; # 分页 	select * from pythonschool limit 8,16; # 查询工资最高的三人的详细信息 	select * from pythonschool order by salary desc limit 3; 

查询关键字之regexp正则

select * from pythonschool where name regexp '^(D|T).*(c|m)$'; 

多表查询思路

可视化软件navicat

多表查询练习题