118:
笛卡儿连接:当多张表在一起查询时,没有给定正确的连接条件,结果是第一张表的所有行和第二张表的
所有行进行矩阵相乘,得到n*m 行的结果集。
SQL> select ename,dname from emp cross join dept;
等值连接:在连接中给定一个相等的连接条件。
select ename,dname from emp,dept where emp.deptno=dept.deptno;
表的别名的使用方法如下:
1.便于书写
2.将同名的表区分
3.一旦定义了别名,表的本名就无效
4.只在该语句内有效
5.定义方式为表名后紧跟别名,用空各间隔。
select ename,dname from emp e,dept d where e.deptno=d.deptno;
SQL99 的书写方式,效率是相同的,SQL99 是国标
select ename,dname from emp e join dept d on(e.deptno=d.deptno);
不等连接:
外键连接:将一张表有,而另一张表没有的行也显示出来。
select ename,dname,emp.deptno from emp,dept where emp.deptno=dept.deptno;
select ename,dname,dept.deptno from emp,dept where emp.deptno(+)=dept.deptno;//+号的意思为将没有员工的部门,用NULL 来匹配
+号不能同时放在等号的两边,只能出现在一边
自连接:表的一列和同一个表的另一列作为连接的条件。
select w.ename "下级",m.ename "上级" from emp w,emp m where w.mgr=m.empno(+);//(+)为了将没有上级的人也显示。
select w.ename "下级",m.ename "上级" from emp w,emp m where w.mgr=m.empno(+) and w.deptno=30;//要想在结果总过滤去一些内容请求用and运算