-- 第三章 多表查询
-- 从多个表中获取数据
--------------------------------------------
-- oracle的多表连接写法:将连接条件写在where子句中
-- sql99标准写法
-----------------------------------------------------
-- oracle的多表连接写法:将连接条件写在where子句中
select * from emp;
select * from dept;
-- 笛卡尔积 多表连接没有连接的条件
select * from emp,dept; -- 60 条数据 15*4=60
1、查询员工姓名、员工编号、工作 、部门编号、工作地点、部门名称
-- 注意:
-- ①连接条件中的列名相同时,使用表名.列名规定列
-- ②select字句中不明确的列使用表名.列名规定列(歧义列名)
-- ③在WHERE子句中书写连接条件
-- ④N个表相连时,至少需要N-1个连接条件
-- 等值连接
select ename,empno,job,dept.deptno,loc,dname from emp,dept where emp.deptno=dept.deptno
-- 使用AND运算符增加其它查询条件
2、查询工作在20号部门的员工姓名、员工编号、工作 、部门编号、工作地点、部门名称
select ename,empno,job,emp.deptno,loc,dname from emp,dept where emp.deptno=dept.deptno and emp.deptno=20;
-- 歧义列名
在用到多个表时可以使用表名作前缀来限定列;
通过使用表前缀可以提高性能;
通过使用列的别名可以区分来自不同表但是名字相同的列
select ename,empno,job,emp.deptno,loc,dname from emp,dept
where emp.deptno=dept.deptno and emp.deptno=20; -- 效率较低
<
多表连接
最新推荐文章于 2024-07-26 09:40:31 发布