SQL中的连接方式

sql语句中的连接方式
两张表 部门表(dept)和员工表(usert)中所有的数据
在这里插入图片描述
在这里插入图片描述
1.–左连接 usert(员工表) dept(部门表)
–显示员工信息时,有的员工可能还没有分配到某个具体的部门(新进员工),其所属部门一项就没有数据,但是员工仍然需要显示,即员工表数据需要全部显示
select u.name,d.deptname from usert u left join dept d on u.deptid=d.deptid order by u.id在这里插入图片描述
2.–右连接
–新部门还没有员工,显示时也需要把部门显示出来
select u.name,d.deptname from usert u right join dept d on u.deptid=d.deptid order by u.id;在这里插入图片描述
2.1.–其实右连接和把表换位置后的左连接是一样的
select u.name,d.deptname from dept d left join usert u on u.deptid=d.deptid order by u.id;在这里插入图片描述
3.–内连接 显示查询出来条件对应的
select u.name,d.deptname from usert u join dept d on u.deptid=d.deptid;在这里插入图片描述
3.1 但是一般写成这样的

select u.name,d.deptname from usert u,dept d where u.deptid=d.deptid;在这里插入图片描述
4.–全外连接
–可能有时候需要把整个公司的员工和部门信息做一个总览,可以对员工表和部门表
select u.name,d.deptname from usert u full join dept d on u.deptid=d.deptid;在这里插入图片描述
5.–自连接
–简单地说就是自己和自己进行连接,连接的条件就是本表的主键。通常认为在数据库中存在父子关系
–时,应该设计成两张表。但如果父子都是同一实体,就可以简化设计成一张表。比如,查看员工及直接
–上级的名字: (上级也是员工,上级的数据也是员工数据,也应该存储在员工表中。)
–当成两张表查即可(mgr 字段为上级id)
select yg.name,sj.name from usert sj,usert yg where yg.mgr=sj.id

6.–交叉连接
–适合每个员工对所有部门评价
select u.name,d.deptname,null from usert u cross join dept d

一般也写成

select u.name,d.deptname,null from usert u,dept d在这里插入图片描述
–内连接和where相同

inner join

–左向外连接,返回左边表所有符合条件的

left join

–右向外连接,返回右边表所有符合条件的

right join

–完整外部连接,左向外连接和右向外连接的合集

full join

–交叉连接,也称笛卡儿积。返回左表中的每一行与右表中所有行的组合

cross join

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值