第6 讲 连接查询 使用连接查询时,必须在from 子句中指定两个或两个以上的表。连接查询又称多表查询。 使用连接查询时应该在列名前加表名作前缀。如果不同表之间列名不同,可以不加表名前缀,如果不同表存在同名列,则必须加前缀。 1、笛卡尔积 当连接条件无效或被忽略,以及第一个表中所有行和第二个表中所有行都发生连接时,所有的行的组合都出现,这种结果称为笛卡尔积。 (1)emp 表记录总数14 SQL> select count(*) from emp; COUNT(*) ---------- 14 (2)dept 表记录总数4 SQL> select count(*) from dept; COUNT(*) ---------- 4 (3)笛卡尔积emp×dept 记录总数14*4=56 SQL> select ename,dname from emp,dept; 2、等值连接 两张表中必须有相等的列值,一般作为Where 子句的条件,连接运算符为“=”,通常这样的条件包含一个主键和一个外键。 语法: select table1.column,table2.column from table1,table2 where table1.column1=table2.column2 使用相等连接执行主从查询。 例 1:查询雇员姓名、工资以及所在部门名称。(不包含相同列名) SQL> select ename,sal,dname from emp,dept where emp.deptno=dept.deptno; ENAME SAL DNAME ---------- --------- -------------- SMITH 800.00 RESEARCH ALLEN 1600.00 SALES WARD 1250.00 SALES JONES 2975.00 RESEARCH MARTIN 1250.00 SALES BLAKE 2850.00 SALES CLARK 2450.00 ACCOUNTING SCOTT 3000.00 RESEARCH KING 5000.00 ACCOUNTING TURNER 1500.00 SALES ADAMS 1100.00 RESEARCH JAMES 950.00 SALES FORD 3000.00 RESEARCH MILLER 1300.00 ACCOUNTING 例2 :查询雇员姓名、工资、所在部门名称和部门编号。(包含相同列名) SQL> select ename,sal,dname,dept.deptno from emp,dept where emp.deptno=dept.deptno; ENAME SAL DNAME DEPTNO ---------- --------- -------------- ------ SMITH 800.00 RESEARCH 20 ALLEN 1600.00 SALES 30 WARD 1250.00 SALES 30 JONES 2975.00 RESEARCH 20 MARTIN 1250.00 SALES 30 BLAKE 2850.00 SALES 30 CLARK 2450.00 ACCOUNTING 10 SCOTT 3000.00 RESEARCH 20 KING 5000.00 ACCOUNTING 10 TURNER 1500.00 SALES 30 ADAMS 1100.00 RESEARCH 20 JAMES 950.00 SALES 30...