第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