day39
Posted lg04551
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day39相关的知识,希望对你有一定的参考价值。
1、单表查询
单表查询的语法
select distinct 字段1,字段2 from 表名
where 条件
group by ffield
having 筛选
order by field
limit限制条数
关键字的执行优先级
form
where
group by
having
distinct
order by
limit
1.找到表:from
2.拿着where指定的约束条件,去文件/表中取出一条条记录
3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
4.将分组的结果进行having过滤
5.执行select
6.去重
7.将结果按条件排序:order by
8.限制结果的显示条数
简单查询
select * from emp
去重
select distinct post form emp
通过四则运算
select name,salary*12 from emp
定义显示格式
as
concat()用于连接字符串
select concat(‘姓名:‘,name,‘年薪:‘,salary*12) as annual_salary from emp
concat_ws()第一个参数为分隔串
select concat(‘:‘,name,salary*12) as annual_salary from emp
case
select( case when name=‘egon‘ then name when name=‘aa‘ then concat(name,‘bb‘) else concat(name,‘cc‘) end )as aa
from emp
where 约束条件
1、比较运算符:>,<,>=,<=,<>,!=
2、between 80 and 100值
3、in(80,90)值是80或90
4、like %表示任意多字符,_表示一个字符
5、逻辑运算符:在多个条件可以用逻辑运行符 and or not,如果是null 用is
group by
1、分组发生在where 之后,基于where 之后的记录而进行
2、分组指的是:将所有记录按某个相同字段进行归类
可以按照任意字段分组,但分组完毕后,比如group by post 只能查看post字段,如果想查看得用聚合函数
GROUP BY关键字和GROUP_CONCAT()函数一起使用
SELECT post,GROUP_CONCAT(name) FROM employee GROUP BY post
聚合函数
count,max,min,avg,sum
Having过滤
having 发生在group by之后,因为having可以使用分组的字段,无法直接取到其它字段,可以使用聚合函数
select post,group_concat(name) from emp group by post having avg(salary) > 10000;
order by
order by 默认升序, asc 升序,desc 降序
限制查询记录
limit
限制显示的条数
使用正则表达式查看所有员工中名字是jin开头,n或者g结果的员工信息
select * from employee where name regexp ‘^jin.*[gn]$‘;
以上是关于day39的主要内容,如果未能解决你的问题,请参考以下文章