SQL连表查询
开发工具与关键技术:Oracle sql*plus PLSQL Developer
作者:赖俏萍
撰写时间:2019年 3月28日
连接查询包含合并、内连接、外连接和满外连接,如果涉及多表查询,首先了解这些连接的特点很重要
只有真正了解它们之间的区别,才能正确使用
- 合并两个或多个(UNION)
Union操作符用于合并两个或多个select语句的结果集
Union预算符通过组合其他两个结果表(例如 table1 和 table2)并且消去表中任何重复行 而派生出一个结果表
当ALL随UNION一起使用时(UNION ALL),不消除重复行,两种情况下,派生表的每一行不是来自table1就是来自table2
注意:使用UNION时,两张表查询的结果有相同数量的列、列类型相似。
学生表信息(Students):
教师表信息(Teachers):
预置脚本:
INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(101,‘Tom’,20,‘BeiJing’,10)
INSERT INTO Students(ID,Name,Age,City,MajorID) VALUES(102,‘Lucy’,18,‘ShangHai’,11)
INSERT INTO Teachers(ID,Name) VALUES(101,‘Mrs Lee’)
INSERT INTO Teachers(ID,Name) VALUES(102,‘Lucy’)
1)基本UNION查询,查询学校教师、学生的总的信息表,包括ID和姓名
SELECT ID,Name FROM Students
UNION
SELECT ID,Name FROM Teachers
查询结果:
2)带条件的UNION查询,也可以查询同一张表,查询年龄为18,23岁的学生信息
SELECT ID,Name FROM Students WHERE Age=18
UNION
SELECT ID,Name FROM Students WHERE Age=23
当然,这可以使用IN或者OR很容易实现,这里只是点到,以后遇到复杂查询,相信你会用到。
3)查询教师学生全部姓名
因为UNION只会选择不同的值,如果学生中和教师中有重名的情况,这就需要UNION ALL
SELECT Name FROM Students
UNION ALL
SELECT Name FROM Teachers
查询结果: