sql92和SQL99的区别

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)

 

 

 

相关文章

SQL标准简介:  https://blog.csdn.net/lishuoboy/article/details/108423535

posted on 2020-09-05 19:24  小石头小祖宗  阅读(84)  评论(0)    收藏  举报  来源

导航