MySQL笔记2
数据查询
–select 指定查询的列
–from 指定查询的表
–查询部分列
select id,name from test;
–查询所有列
- select * from test;
- 使用列名:select id, name, emaiil from test;
生产环境下,优先使用列名查询,*的方式效率低,可读性差
–对列中的数据进行运算
加减乘除一致,但%是占位符,不是模运算符
–列的别名
select id,name,salary*12 as ‘年薪’ from test;
–查询结果去重用distinct
select distinct manager_id from test;
排序查询
语法:select 列名 from 表名 order by 排序列【排序规则】
ASC:升序 desc:降序
–依据单列进行排序
select id,salary from test order by salary DESC;
–依据多列排序: 薪资相同时,按编号升序排列
select id,name,salary from test oeder by salary desc,id ASC;
条件查询
语法:select 列名 from 表名 WHERE 条件;WHERE是布尔表达式
–与JAVA不同,两值相等是=
–逻辑判断:and,or,not
–不等值判断:常规,不等于:!=,<>
–区间判断(between and)且是闭区间,前小值后大值
–查询NULL值(is null, is not null)
select id,name
from test
where manager_id is null;
–枚举查询 (in (值1,值2,值3))
select…
from…
where department_id in(70,80,90);
–模糊查询
语法:like_(单个任意字符) eg: 列名 Like ‘里_’
%(任意长度的字符) eg: 列名 Like ‘里%’
–分支结构查询
语法:
case
when 条件1 then 结果1
when 条件2 then 结果2
when 条件3 then 结果3
else 结果
end
时间查询
语法:select 时间函数([参数列表])
| 时间函数 |描述 |
|sysdate()|当前系统时间|
| curdate() |当前日期 |
| week(date) |获取指定日期为一年的第几周 |
|curtime()|获取当前时间|
| datadiff(data1,data2) |获取相隔的天数 |
adddata(data,n)|计算data加上n天后的日期
字符串查询
–多个字符串拼接
select concat(‘my’,‘dog’,‘play’);
–将str中指定pos位置开始len长度的内容替换为newstr
select insert(str,pos,len,newstr);
–大小写转换
lower(str)
upper(str)
–将str字符串指定num位置开始截取len个内容
substring(str,num,len)
与JAVA不同,mysql下标从1开始
聚合函数
对列做操作
sum()所有行中单列结果总和
avg()
max()
min()
count() 求总行数
聚合函数会自动忽略null值,不进行统计
分组查询
语法:select 列名 from 表名 where 条件 group by 分组依据(列)
分组依据必须在where之后生效
–查询各部门总人数:
按照部门编号进行分组(分组依据是department_id)
再针对各部门的人数进行统计(count)
select department_id, count(id)
from test
group by department_id;
–查询各个部门,各个岗位的总人数
select department_id,job_id, count(id)
from test
group by department_id,job_id;
分组查询中,select显示的列只能是分组依据列或者聚合函数列,不能出现其他列
–分组过滤查询
select 列名 from 表名 where 条件 group by 分组列 having 过滤规则
–统计68,78,98部门的最高工资
确定分组依据(department_id)
对分组后的数据,过滤出部门编号为68,78,98信息
max()函数处理
select department_id,max(salary)
from test
group by department_id
having department_id in (68,78,98);
限定查询(用于分页)
语法:select 列名 from 表名 limit 起始行, 查询行数;
查询行时,下标是从0开始