0
点赞
收藏
分享

微信扫一扫

sql92和SQL99的区别SQL标准简介:


SQL92和SQL99都是用来表示多表的联合查询使用的,两者在开发中,具体使用哪一种都是可以的,但是在书写和阅读的过程中,具体表现在以下:

1、笛卡尔积中的区别

①SQL92中的笛卡尔积:select * from emp,dept

②SQL99中的笛卡尔积:select * from emp cross join dept

2、等值连接方面的区别

①SQL92表示:select * from emp,dept where emp.deptno=dept.deptno

②SQL99表示:select * from emp innner join dept on emp.deptno=dept.deptno

3、不等值连接方面

①SQL92表示:select * from emp ,salgrade where emp.sal<=salgrade.hisal and emp.sal>=salgrade.losal

②SQL99表示:select * from emp inner join dept on emp.deptno=dept.deptno where sal>2000

4、左外连接

①SQL表示:select * from emp ,dept where emp.deptno=dept.depetno(+)  【现在数据库不支持】

②SQL99表示:select * from emp left outer join dept on emp.deptno=dept.deptno

5、右外连接

①SQL92实现:select * from emp ,depet where emp.deptno(+)  = dept.deptno;【现在数据库不支持】

②SQL99实现:select * from emp  righ outer join dept on emp.deptno=dept.deptno

6、全完连接

①SQL92实现:select * from emp,dept where epm.deptno(+) = dept.dpetno(+)【现在数据库不支持】

②SQL99实现:select * from emp full outer join dept on emp.deptno=dept.deptno;

7、自连接

①SQL92实现:select e1.*,e2.ename from emp e1,emp e2 where e1.deptno=e2.deptno

②SQL99实现:select e1.*,e2.ename from emp e1 inner join emp e2 on e1.deptno=e2.deptno

8、在三表连接查询中

①SQL92实现:

  1. ​select e.*,d.dname,c.cname ​
  2. ​from emp e,dept d,city c​
  3. ​where (e.deptno=d.deptno and d.loc=c.cid and sal>2000) or (e.deptno=d.deptno and d.loc=c.cid and comm is not null) ​
  4. ​order by e.sal ​

②SQL99实现:

  1. ​select * from emp e ​
  2. ​inner join dept d ​
  3. ​on e.deptno = d.deptno ​
  4. ​inner join city c ​
  5. ​on d.loc =c.cid​
  6. ​where e.sal>2000 or e.comm is not null​
  7. ​order by e.sal​

此外,SQL99中在内连接中还可以使用关键字:using

select * from emp inner join dept using(deptno)

 


举报

相关推荐

0 条评论