【基础】表关系

表关系

  • 一对一
  • 一对多
  • 多对多

表链接

内连接

  • 自然连接:省略了where语句,自动进行等值匹配。
    select * from A natural join b;
    前提:两表中必须有相同的字段

  • 等值连接 :查询emp表,dept表中员工的编号、姓名、部门名称
    select * from emp e,dept d where e.deptno=d.deptno;

  • 不等值连接:查询工龄在3-5年之间的所有员工的姓名和部门编号,部门名称
    select staff_id,staff_name from staff, dept where staff_work between 3 and 5 and staff_id = dept_id;

  • 自然连接和等值连接的区别
    自然连接会把重复的字段去掉,而等值连接会全部显示)

自连接查询:自己去连接自己

  • 查询emp表每位雇员的上级主管.
    select w.ename,m.ename from emp w,emp m where w.mgr=m.empno;

  • 列出薪金比”SMITH”多的所有员工
    select ename from emp where sal>(select sal from emp where ename =‘SMITH’);

外连接查询:即在被连接的表中加入一个空行来与没有匹配行的数据进行匹配。

使用背景:有时可能会要求检索一些在被连接的表中没有匹配行的数据。

  • 左外连接(左表为主表,左表全部显示)没有(+)的代表主表

    • 查询员工表中的所有信息和所属部门名称(没有部门的员工也显示) - 员工表为主
      select * from emp e,dept d where e.deptno=d.deptno(+);

      select * from emp e left [outer] join dept d on(e.deptno=d.deptno);

  • 右外连接(右表为主,右表全部显示)
    select * from emp e,dept d where e.deptno(+)=d.deptno;

    select * from emp e right (outer) join dept d on(e.deptno=d.deptno);

  • 完全连接:两个表中的数据全部显示,匹配不上的部分均用null代替
    select * from emp e full join dept d on(e.deptno=d.deptno);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值