1.多表查询
1.1内连接:使用比较运算符对各个表中的数据进行比较,并列出各个表中与条件相匹配的数据行(使用 inner join或者join)
1.等值连接:使用=连接比较列,其结果集中列出所有被连接的数据表的字段(包括重复列)
例子:select S.*,C.* from 表1 S inner join 表2 C on S.sno = C.sno
2.自然连接:在等值连接的基础上去掉重复列
3.非等值连接:使用除了 =之外的其他运算来连接比较列
1.2.外连接:(和内连接不同,内连接要取消所有和被连接表不符合比较关系的所有数据,但是外连接是要返回from子句中的表或者视图的所有数据)
1.完全连接 FULL OUTER JOIN
返回两个表中所有匹配和不匹配的行,不匹配的部分为NULL
2.左外连接 LEFT OUTER JOIN
3.右外连接 RIGHT OUTER JOIN
左外连接和右外连接是正好相反的:举个栗子
select C.班级编号,C.班级名,D.系别编号,D.系别名称 from 班级信息 C LEFT JOIN 系别信息 D on C.所属系别=D.系别编号
1.3 交叉连接:
返回两个表中所有行的可能性,可以使用where子句也可以不使用 where子句
1.4 自连接
需要给表起两个别名
1.5联合查询
可上下拼接两个查询结果union :保证每个联合查询中具有相同数量的表达式,并且每个查询表达式具有相同的数据类型
1.6交查询
INTERSECT用于连接两个select语句的查询结果的交集
1.7差查询
EXCEPT用于返回两个或者两个以上的SELECT语句的差集
2.子查询
根据子查询返回的行数不同,可以将其分为 IN关键字子查询,EXISTS关键字子查询,多行子查询,单值子查询,嵌套子查询
2.1IN关键字子查询
将原表中的列值和返回的查询子结果的值进行比较,匹配则最终结果中包含该结果
2.2.Exists关键字子查询
Exists后的子查询不返回任何值,只返回TRUE或者false,如果为true,则将该条数据放入最终结果集中
2.3.单值子查询
返回单值得子查询就是单值子查询
2.4.比较运算符
select 列表 from 表 where expression operator [ANY(some)|ALL] (subquery)
具体的ANY 和ALL与比较运算符结合的关系-->
=ANY<==>IN <>ALL<==>NOT IN
<ANY<==>< MAX <ALL<==> <MIN
<=ANY<==><=MAX <=ALL<==><=MIN
>ANY<==>MAX >ALL<==>>MIN
>=ANY<==>>=MAX >=ALL<==>>=MIN
使用 any和all时,必须使用 比较运算符
例子:select 学号,姓名 from 学生信息 where 出生日期 > any (select 出生日期 from 学生信息 where 所属班级=‘20050502’)
2.5.嵌套子查询
将一个查询块嵌套在另一个查询块的where或者having子句中的查询称为嵌套查询