查询和联系(重点)---单表
1.基本查询
代码:
# 查询某个字段的名称 select name,entrydate from tb_emp; # 查询所有 select * from tb_emp; #查询并且取别名,as可省 select name as '姓名',entrydate as '入职日期' from tb_emp; #查询员工职位,且去重 select distinct job from tb_emp;
2.条件查询
代码:
# 查询 姓名 为 常遇春 的员工 select * from tb_emp where name = '常遇春'; # 查询id小于等于5 的员工信息 select * from tb_emp where id <=5; #查询 没有分配职位的员工 select * from tb_emp where job is null ; # 查询有职位的员工 select * from tb_emp where job is not null ; #查询 密码不等于123456 的员工 select * from tb_emp where password !='123456'; # 查询入职日期在‘2000-01-01’(包含)到‘2010-01-01’(包含) 之间的员工信息 select * from tb_emp # 还可以用 where entrydate >= '2000-01-01' and entrydate <= '2010-01-01'; where entrydate between '2000-01-01' and '2010-01-01'; # 查询入职日期在‘2000-01-01’(包含)到‘2010-01-01’(包含) 之间的且性别为女的员工信息 select * from tb_emp where entrydate between '2000-01-01' and '2010-01-01' and gender = 2; # 查询 职位是2(讲师),3(学工主任),4(教研主管)的信息 select * from tb_emp # 也可以用这种方法 where job =3 or job = 2 or job =4; where job in (2,3,4); # 查询姓名为两个字的员工,匹配要用到Like select * from tb_emp where name like '__'; # 查询姓张的员工 select * from tb_emp where name like '张%'
3.分组查询之聚合函数
代码
# 统计员工数量 # a:字段的方式 select count(name) as '员工人数' from tb_emp; # b:常量的形式 count(0) 的形式,数字为多少不要紧 select count(1) as '员工人数' from tb_emp; # c:*的方式,推荐使用这种方式 select count(*) as '员工人数' from tb_emp; # 查询最早入职的员工 select min(entrydate) from tb_emp; # 查询最迟入职的员工 select max(entrydate) from tb_emp; #统计id的平均值 select avg(id) from tb_emp; #统计id的和 select sum(id) from tb_emp;
4.分组查询
代码:
#根据性别进行分组,统计男性和女性的数量 --count(*) # 查询什么count(*)之前就只能写什么,不能乱写,否则报错 select gender,count(*) from tb_emp group by gender; # 先查询入职时间在‘2015-01-01’(包含)以前的员工,并对结果根据职位进行分组,获取员工数量大于等于2的职位。 select job,count(*) from tb_emp where entrydate <= '2015-01-01' group by job having count(*)>2
5.排序查询(默认升序)
代码:
# 根据入职时间,进行升序排序 select * from tb_emp order by entrydate; # 根据入职时间,进行降序排序 select * from tb_emp order by entrydate desc; # 根据 入职时间进行排序,如果相同,根据 工作岗位 进行排序 select * from tb_emp # 当第一个字段相同的时候,第二个才会生效 order by entrydate ,job;
6.分页查询
# 从 起始索引为0 开始查询员工数据,每页展示5条记录,其实应该是展示: 某个索引开始 一下展示几个数据(索引从0 开始) # 起始索引 = (页码 -1 )*每页展示几页 select * from tb_emp limit 0,5; # 查询 第一页 员工数据,每页展示5条数据 select * from tb_emp limit 0,5; # 查询 第二页 员工数据,每页展示5条数据 select * from tb_emp limit 5,5; # 查询 第三页 员工数据,每页展示5条数据 select * from tb_emp limit 10,5;
7.案例
代码:
# 案例1 ︰按需求完成员工管理的条件分页查询–根据输入条件,查询第一页数据,每页展示10条记录 # 输入条件: # 姓名:张 # 性别:男 # 入职时间:2000-01-01 2015-12-31 select * from tb_emp where gender = 1 and name like '张%' and entrydate between '2000-01-01' and '2015-12-31' order by entrydate desc limit 0,10; # 案例2 ︰根据需求,完成员工性别信息的统计 --count(*) # if(条件表达式,true取值,false取值),可以通过这个方式去改列表属性值 select if(gender=1,'男性员工','女性员工') as '性别',count(*) from tb_emp group by gender; #案例3 :根据需求,完成员工职位信息的统计 # case 表达式(when 值1 then 结果1 when 值2 结果2 ...else ...end select (case job when 1 then'班主任' when 2 then'讲师' when 3 then'学工主管' when 4 then'教研主管' else '未分配职位' end)as '职位', count(*) from tb_emp group by job;
查询和联系(重点)---多表
1.添加外键,两种方法(也可以直接对表进行操作) 物理外键用的很少
注意点:名称可以不一样,但是类型必须相同
案例:多对多
案例:多对多
这种方法可以展示外键关联图像信息
这种方式可以设置金钱类型