连接查询和集合查询
来源:互联网 发布:电信宽带测速软件 编辑:程序博客网 时间:2024/05/22 05:25
在对数据库查询过程中,有些时候一张表中的数据不能满足我们的需求,这时候就需要把多张表连接起来,如下面的两张表所示,一张表涵盖了学生的信息,一张表表示学院的信息,如果我想知道某个学生是哪个学院的话,那么就需要把这两张表连接起来。
StuID
deptID
stuName
Age
sex
11090241032
001
王小虎
22
男
11090241032
002
张三
23
男
11090241033
003
王五
22
女
deptID
deptName
001
管理学院
002
教育学院
004
文学院
内连接查询
等值连接
是将指定的连接条件通过使用等号运算符(=)连接起来,并返回符合连接条件的记录
语法格式:
Select表名1.字段,表名2.字段...
From表名1,表名2 where表名1.字段1=表名2.字段
注意:在执行连接查询时,如果要查询的字段同时存在的两张表中,并且如果这两张表中的字段名相同的话,需要在select语句中加上该表名作为前缀
示例
select stuName,deptname from T_student ,t_dept where t_student.deptid=t_dept.deptid
(通过系别号字段来等值查询符合条件的记录)
(使用表别名的方式不仅可以简化连接查询的操作,而且还可以提高查询的性能)
非等值连接
是指除使用等号外其他运算符的操作
示例:
(查询年龄大于15的学生的学院)
ON子句建立相等连接
用法与where相同
语法规则:
Select表名1.字段,表名2.字段
From表名1 join表名2
On表名1.字段=表名2.字段
示例:
select stuName,deptname from T_student a join t_dept b on a.deptid=b.deptid where a.age>15
注意:虽然ON子句也可以用AND关键字指定其他查询条件,但是在使用ON子句建立相等连接时,其他的限制条件都写到WHERE子句中
自连接查询
连接查询中,还可以与自己本身表进行查询,这种方式叫做自连接
语法规则
Select A.字段,A.字段
From表名1 A,表名2 B
Where A.字段=B.字段
注意:由于是对同一张表查询,所以要为表指定不同的名称
(如查询年龄最大的学生的姓名和年龄)
外连接查询
左外连接
不仅显示满足连接条件的记录,而且还包括左侧表中不满足条件的记录。
语法规则:
Select表名1.字段,表名2.字段
From表名1 left join表名2
On表名1.字段=表名2.字段2
示例:
select r.stuName,r.age,c.deptName from T_student r left join t_dept con r.deptid=c.deptid
(因为第一张表中查询的字段在第二张表中未找到,所以置空值)
右外连接
与左外连接相似
语法规则:
Select表名1.字段,表名2.字段
From表名1 right join表名2
On表名1.字段=表名2.字段2
全外连接
不仅显示左侧表中满足连接条件的记录,而且还会显示右侧表中不满足查询条件的记录,可以认为是左外连接和右外连接的合集
语法规则:
Select表名1.字段,表名2.字段
From表名1 full join表名2
On表名1.字段=表名2.字段2
结果如下:
select r.stuName,r.age,c.deptName from T_student r FULL join t_dept con r.deptid=c.deptid
集合查询
并操作
使用关键字UNION,并操作返回的结果是包含了查询出来的所有不同的行
语法规则:
Select语法1
UNION
Select语法2
示例:
select r.stuName,r.age,c.deptName from T_student r LEFT join t_dept con r.deptid=c.deptidUNIONselect r.stuName,r.age,c.deptName from T_student r RIGHT join t_dept con r.deptid=c.deptid
(相当于全外连接查询)
注意:在进行并操作时,两个SELECT语句张红要查询的列对应的属性的个数和数据类型必须是相同的。
交操作
使用关键字是INTERSECT,交操作返回的结果集中包含了结果的公工行,交操作中不会出现重复行
语法规则:
Select语法1
INTERSECT
Select语法2
示例:
结果如下:
select r.stuName,r.age,c.deptName from T_student r LEFT join t_dept con r.deptid=c.deptidinsertctselect r.stuName,r.age,c.deptName from T_student r RIGHT join t_dept con r.deptid=c.deptid
差操作
执行差操作的关键字是EXCEPT,顾名思义,就是查询第一个表中的数据排除第二个表中数据的结果
语法规则:
Select语法1
EXCEPT
Select语法2
示例:
select r.stuName,r.age,c.deptName from T_student r FULL join t_dept con r.deptid=c.deptidEXCEPTselect r.stuName,r.age,c.deptName from T_student r RIGHT join t_dept con r.deptid=c.deptid
结果如下:
小结:
在连接查询中,经常使用到外连接和内连接,所以我们应该掌握这些连接的语法,以方便我们以后的使用。
- 连接查询和集合查询
- 数据库 - 连接查询、嵌套查询、集合查询
- 连接查询和分组查询
- 连接查询和分组查询
- 子查询和连接
- oracle子查询和集合查询
- SQL Sql连接查询和联合查询
- pl/sql 子查询和连接查询
- sql关联查询和连接查询
- Sql连接查询和联合查询
- Sql连接查询和联合查询
- Sql连接查询和联合查询
- Sql连接查询和联合查询
- oracle中表连接查询 和 分页查询
- 连接查询和子查询(部分)
- 数据库的简单查询和连接查询
- 数据库之联合查询和连接查询
- 第十一章 连接查询和分组查询
- 检查和收集 Linux 硬件信息的 7 个命令
- 单元测试利器 JUnit 4
- autorelease的对象的释放时机
- Android ART运行时无缝替换Dalvik虚拟机的过程分析
- 直线拟合、二次曲线拟合、折线拟合和KNN近邻(附代码)
- 连接查询和集合查询
- sdo_Geom包的函数
- windows本地安装.net3.5
- 函数返回对象的有效区
- zend framework DB封装类
- web架构设计经验分享
- 新浪微博的信息流问题
- LeetCode 017 4Sum
- UTF-8文件头BOM的处理方法