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实现:
-
select e.*,d.dname,c.cname
-
from emp e,dept d,city c
-
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)
-
order by e.sal
②SQL99实现:
-
select * from emp e
-
inner join dept d
-
on e.deptno = d.deptno
-
inner join city c
-
on d.loc =c.cid
-
where e.sal>2000 or e.comm is not null
-
order by e.sal
此外,SQL99中在内连接中还可以使用关键字:using
select * from emp inner join dept using(deptno)
相关文章
SQL标准简介: https://blog.csdn.net/lishuoboy/article/details/108423535