9月25日我的学习心得与个人理解

多表查询

将多张表拼接起来之后做操作

select * from dep,emp;  将dep,empty两张表做笛卡尔积

涉及到多个表字段书写的时候应尽量加上该字段的表名

select * from emp,dep where dep.id=emp.dep_id and dep.name='技术'  查询部门为技术部的员工及部门信息

连表操作

inner join  内连接

left join     左连接

right join   右连接

union      全连接

1.inner join

内连接

只将两张表共有的部分数据拼接在一起,忽略两张表没有对应关系的数据

2.left join

左连接

以关键字left join左边的表为基准,展示左边表中所有数据,没有对应关系的数据会用NULL填充

3.right join

右连接

以关键字right join右边的表为基准,展示右边表中所有数据,没有对应关系的数据会用NULL填充

4.union

全连接

将左连接和右连接拼接到一起

子查询

将一张表的查询结果当做另外一条sql语句的查询条件,子查询解决问题的思路是分步解决

查询部门是技术和人力资源的员工信息

思路1

1.先查询部门是技术和人力资源的部门编号

2.拿着部门编号去员工表里面筛选

select *  from emp where emp.dep_id in(select dep.id from dep where dep.name in('技术','人力资源'));

思路2

先查每个部门最新入职的员工,再按部门对应联表查询

select t1.id,t1.name,t1.hire_data,t1.post,t2.*from day05.emp as t1

inner join

(select post,max(hire_data) as max_data from day05.emp group by post) as t2

on t1.post = t2.post

where t1.hire_data = t2.max_data;

exist

exist字键表示存在,当返回为Ture时,外层查询语句将进行查询,当返回为False时,外层查询结束

Navicat

用图形化界面的方式简单快捷的操作mysql

 

posted @ 2020-09-27 23:31  ACE2020  阅读(142)  评论(0)    收藏  举报