create table emp(idint primary key auto_increment,
name varchar(20)not null,
sex enum('male','female')not null default 'male',#大部分是男的
age int(3) unsigned not null default 28,
hire_date date not null,
post varchar(50),
post_comment varchar(100),
salary double(15,2),
office int,#一个部门一个屋子
depart_id int);#插入记录#三个部门:教学,销售,运营
insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values
('tom','male',78,'20150302','teacher',1000000.31,401,1),('kevin','male',81,'20130305','teacher',8300,401,1),('tony','male',73,'20140701','teacher',3500,401,1),('owen','male',28,'20121101','teacher',2100,401,1),('jack','female',18,'20110211','teacher',9000,401,1),('jenny','male',18,'19000301','teacher',30000,401,1),('sank','male',48,'20101111','teacher',10000,401,1),('哈哈','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门('呵呵','female',38,'20101101','sale',2000.35,402,2),('西西','female',18,'20110312','sale',1000.37,402,2),('乐乐','female',18,'20160513','sale',3000.29,402,2),('拉拉','female',28,'20170127','sale',4000.33,402,2),('僧龙','male',28,'20160311','operation',10000.13,403,3),#以下是运营部门('程咬金','male',18,'19970312','operation',20000,403,3),('程咬银','female',18,'20130311','operation',19000,403,3),('程咬铜','male',18,'20150411','operation',18000,403,3),('程咬铁','female',18,'20140512','operation',17000,403,3);
# 1.查询id大于等于3小于等于6的数据
select id,name from emp where id>=3andid<=6;
select *from emp where id between 3and6;# 2.查询薪资是20000或者18000或者17000的数据
select *from emp where salary =20000or salary =18000or salary =17000;
select *from emp where salary in(20000,18000,17000);# 简写"""
模糊查询
关键字
like
关键符号
%:匹配任意个数的任意字符
_:匹配单个个数的任意字符
show variables like '%mode%';
""" elasticsearch
# 3.查询姓名中带有字母o的员工姓名和薪资
select name,salary from emp where name like '%o%';# 4.查询姓名由四个字符组成的员工姓名和薪资
select name,salary from emp where name like '____';
select name,salary from emp where char_length(name)=4;# 5.查询id小于3或者大于6的数据
select *from emp where idnot between 3and6;# 6.查询薪资不在20000,18000,17000范围的数据notin 不走索引
select *from emp where salary notin(20000,18000,17000);# 7.查询岗位描述为空的员工名与岗位名 针对null不能用等号,只能用is
select name,post from emp where post_comment = NULL;# 查询为空!
select name,post from emp where post_comment is NULL;
select name,post from emp where post_comment isnot NULL;
查询关键字之group by分组
分组
将单个单个的个体按照指定的条件分成一个个整体
"""
分组之后默认只能直接获取到分组的依据
其他字段无法再直接获取(可以间接获取)
"""# 严格模式setglobal sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH,only_full_group_by'# 1.每个部门的最高薪资
select post,max(salary)from emp group by post;# 2.每个部门的最低薪资
select post,min(salary)from emp group by post;# 3.每个部门的平均薪资
select post,avg(salary)from emp group by post;# 4.每个部门的人数
select post,count(id)from emp group by post;# 5.每个部门的月工资总和
select post,sum(salary)from emp group by post;"""
可以给字段起别名(as还可以给表起别名)
select post as '部门',sum(salary) as '总和' from emp group by post;
"""# 查询分组之后的部门名称和每个部门下所有的员工姓名"""
group_concat() 获取分组以外的字段数据 并且支持拼接操作
select post,group_concat(name) from emp group by post;
select post,group_concat(name,':',salary) from emp group by post;
concat() 未分组之前使用的拼接功能
select concat(name,':',sex) from emp;
concat_ws()
select concat_ws(':',name,sex,salary,age) from emp;
"""
聚合函数
分组之后频繁需要使用的
max 最大值
min 最小值
sum 求和
count 计数
avg 平均值
今日内容详细约束条件 unsigned zerofill not null unique primary key auto_increment default foreign key (外键 重要)约束条件之外键(重要) 一对一 一对多 多对多查询语句 select from where group by order by distinct limit having约束条件 1. unsigned 设置无符号 2. zerofill 零