1.合并结果集
select * from ab
union all
select * from cd;
条件:要求被合并的表中,列的类型和列数相同,不一定是相同的两个表,查询的结果相同也可合并
union :合并结果会去除重复行
unique:合并结果不会去除重复行
2.连接查询
1.内连接
select * from a,b;
查询结果为笛卡尔积。例如:{a,b},{1,2,3}={a1,a2,a3,b1,b2,b3};结果有冗余,我们只需要在后边加上限制条件即可。
自然连接:自动把重复值去掉
select * from a natural join b;
2.外连接
1.左外连接:以左边的表为主表,无论左表满足不满足条件,都打印出来。不满足条件的右表用NULL补位
select * from student left outer join sc
on student.sno=sc.sno
2.右外连接:以右边的表为主表,无论右表满足不满足条件,都打印出来。不满足条件的右表用NULL补位
select * from student right outer join sc
on student.sno=sc.sno
3.全外连接:无论左表和右表的条件满足不满足,全都显示出来,也就是查询结果左边和右边都可能出现NULL
select * from student full outer join sc
on student.sno=sc.sno
3.子查询
查询中有查询(查看select关键字的个数)
--查询每个学生超过其选修课程平均成绩的课程号
select sno, cno
from sc sc1
where grade >
(
select avg(grade)
from sc sc2
where sc1.sno=sc2.sno
)
表后面也可以添加子查询