1 关联查询
从多张表中查询对应记录的信息,关联查询的重点在于这些表中的记录有对应关系(连接条件)
当两张表有同名字段时,select子句中必须明确指定的字段来自于哪张表。
SELECT ename,sal,deptno FROM emp;--员工表
SELECT deptno,dname,loc FROM dept;--部门表
--查看每个员工的名字以及他所在的部门名字?
SELECT emp.ename,dept.dname,dept.deptno FROM emp,dept WHERE emp.deptno=dept.deptno;
在关联查询中,表名也可以加别名,这样可以简化select语句的复杂度,简化语句:
SELECT e.ename,d.deptno,d.dname FROM emp e,dept d WHERE e.deptno=d.deptno;
2 笛卡尔积
关联查询要添加连接条件,否则会发生笛卡尔积。笛卡尔积通常是一个没有意义的结果集,它的记录统计数数结果是所有参与查询的表的记录数乘积,要避免出现,数据量大的时候很容易出现内存溢出现象。
SELECT e.ename,d.dname FROM emp e,dept d ;
emp表中ename有14条记录数,dept表中dname有4条记录数,因此此条查询语句会出现56条记录数。
N张表关联查询至少要有N-1个关联条件
--查看在new york工作的员工
SELECT e.ename,e.deptno,d.loc FROM emp e,dept d WHERE e.deptno = d.deptno AND d.loc=