在创建关系型数据表时,根据数据库范式的要求,为了降低数据的冗余,提供数据维护的灵活性
将数据分成多个表进行存储,实际工作当中,需要多个表的信息,需要将多个表合并显示
 

 

  1. 1 --内连接
  2. 2 select e.empno as 员工编号, e.ename as 员工名称, d.dname as 部门
  3. 3 from emp e inner join dept d on e.deptno=d.deptno;
  4. 4
  5. 5 --左外连接
  6. 6 insert into emp(empno,ename,job) values(9527,'EAST','SALESMAN');
  7. 7
  8. 8 select e.empno,e.ename,e.job,d.deptno,d.dname from emp e left join dept d
  9. 9 on e.deptno=d.deptno;
  10. 10 --右外连接
  11. 11 select e.empno,e.ename,e.job,d.deptno,d.dname from emp e right join dept d
  12. 12 on e.deptno=d.deptno;
  13. 13
  14. 14 --完全连接
  15. 15 select e.empno,e.ename,e.job,d.deptno,d.dname from emp e full join dept d
  16. 16 on e.deptno=d.deptno;
  17. 17
  18. 18 --自然连接(共有的属性,会去除重复列)
  19. 19 select empno,ename,job,dname from emp natural join dept where sal>2000;
  20. 20
  21. 21 事务如果不提交,会一直写入以下表空间;
  22. 22 redo(记录日志表空间) undo(记录日志备份表空间)
  23. 23 提交: commit 回滚: rollback
  24. 24
  25. 25 --右外连接过滤
  26. 26 select * from emp e right join dept d on e.deptno=d.deptno
  27. 27 where e.deptno is null;
  28. 28 --左外连接过滤
  29. 29 select * from emp e left join dept d on e.deptno=d.deptno
  30. 30 where d.deptno is null;
  31. 31 --全外连接过滤
  32. 32 select * from emp e full join dept d on e.deptno=d.deptno
  33. 33 where d.deptno is null or e.deptno is null;
  34. 34
  35. 35
  36. 36 /*自连接(self join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。
  37. 37 在emp中的每一个员工都有自己的mgr(经理),并且每一个经理自身也是公司的员工,自身也有自己的经理。*/
  38. 38 select em2.enname 管理者,em1.enname 下属员工 from emp em1 left join emp em2 on em1.mgr=em2.empno order by em1.mgr;
  39. 39
  40. 40 /*交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数*/
  41. 41 select count(*) from dept cross join emp;

 

版权声明:本文为Remedy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.cnblogs.com/Remedy/p/8093906.html