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.idspa

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;select

 

3.--内链接 显示查询出来条件对应的
select u.name,d.deptname  from usert u join dept d on u.deptid=d.deptid;im

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;img

 

5.--自链接
--简单地说就是本身和本身进行链接,链接的条件就是本表的主键。一般认为在数据库中存在父子关系
--时,应该设计成两张表。但若是父子都是同一实体,就能够简化设计成一张表。好比,查看员工及直接
--上级的名字: (上级也是员工,上级的数据也是员工数据,也应该存储在员工表中。)
--当成两张表查便可(mgr 字段为上级id)
select yg.name,sj.name from usert sj,usert yg where yg.mgr=sj.idco

6.--交叉链接
--适合每一个员工对全部部门评价
select u.name,d.deptname,null  from usert u cross join dept djoin

通常也写成

select u.name,d.deptname,null from usert u,dept d

 

--内链接和where相同

  inner join

  --左向外链接,返回左边表全部符合条件的

  left join

  --右向外链接,返回右边表全部符合条件的

  right join

  --完整外部链接,左向外链接和右向外链接的合集

  full join

  --交叉链接,也称笛卡儿积。返回左表中的每一行与右表中全部行的组合

  cross join

相关文章
相关标签/搜索