连接查询和子查询
SQL92的多表连接查询
一、本节要点
1.笛卡尔集
2.等值连接
3.非等值连接
4.外连接
5.自连接
说明。SQL 92是1992年提出的查询语法,向上兼容
二、语法,类型及连接类型区分
语法规则
SELECT table1.column, table2 .column
FROM
table1, table2
WHERE table1.column1 = table2 .column2;
特点
1.在WHERE子句中写入连接条件
2.当多个表中有重名列时,必须在列的名字前加上表名作为前缀
连接的类型:
等值连接- Equijoin
非等值连接- Non- equijoin
外连接- Outer join
1.左外连接
2.右外连接
自连接- Self join
三、笛卡尔集
select * from dept;//4条记录
select * from emp; ;/14条记录
select * from dept,emp; ;//4* 14=56条记录
总结
检索出的行的数目将是第一个表中的行数乘以第二 个表中的
行数
检索出的列的数目将是第-个表中的列数加上第二个表中的
列数
应该保证所有联结都有where子句,不然数据库返回比想要
的数据多得多的数据
四、等值查询
注意点
当被连接的多个表中存在同名字段时,须在该字段前加
上"表名"前缀可使用AND操作符增加查询条件;
使用表别名可以简化查询;
使用表名(表别名)前缀可提高查询效率;
五、非等值查询
要求:查询员工的工资等级
select empno,ename,job,sal,grade
from emp e,salgrade s
where e.sal<s.hisal and e sal>s.losal;
select empno,ename,job,sal,grade
from emp e,salgrade s
where e.sal<s.hisal and e.sal>s.losal and e.job='MANAGER';
六、外连接
使用外连接可以看到参与连接的某一方不满足连接条件的记
录,而不仅仅是满足连接条件的数据。
外连接运算符为(+)
外连接分为左外连接和右外连接两种
左外连接显示左边表的全部行
SELECT table.column, table column
FROM
table1, table2
WHERE table1.column = table2.column