select e.ename,e.deptno,d.deptno,d.dname
from emp e,dept d
where e.deptno=d.deptno;
如果多个列具有相同的名称,但自然连接的数据类型又不匹配,则可以使用using子句来指定,使用一个等值的列。
当有多个列匹配时,用using子句匹配唯一的列
natural join 和using子句互斥
使用USING子句检索
表连接语法
SELECT table1.col , table2.col
FROM table1 JOIN table2
ON (table1.col = table2.col)
SELECT table1.col , table2.col
FROM table1 , table2
WHERE table1.col = table2.c
select * from emp;
select * from dept;
select emp.ename,emp.deptno,dept.deptno,dept.dname from emp,dept
where emp.deptno = dept.deptno;
表⾥有从属关系需求:查询员工的姓名以及其经理的姓员⼯的经理号 = 经理的员工
select * from emp;
select ename,mgr from emp;
select empno,ename from emp;
select e.empno,e.ename,e.mgr,m.empno,m.ename
from emp e,emp m
where e.mgr=m.empno;
select e.ename,d.dname,s.grade
from emp e join dept d on ( e.deptno=d.deptno )
join salgrade s on (e.sal between s.losal and s.hisal) ;
select e.ename,d.dname,s.grade
from emp e,dept d,salgrade s
where (e.sal between s.losal and s.hisal)
and (e.deptno=d.deptno);
可以使用外连接来查出在⼀个表中,不匹配连接条件的行
外连接的符号是 (+)
例子
SELECT table1.col, table2.col
FROM table1 , table2
WHERE table1.col(+) = table2.col ;
SELECT table1.col, table2.col
FROM table1 , table2
WHERE table1.col= table2.col(+);
full outer join dept d on (e.deptno=d.deptno);
笛卡尔积产生条件
使用CROSS JOIN子句使连接的表产省生交叉集
交叉集也被称为在两个表之间的笛卡尔积