数据库学习第五篇(对基本表数据的查询3)
2013-11-04 23:33
381 查看
八、连接查询
前面的查询都只是涉及一个表,如果我们要查询的数据在多个表上进行,我们就要涉及到连接查询。
a)等值连接
比如我门要查询读者的所有信息即包括借阅信息和其本身信息
select 读者.*,借阅.*
from 读者,借阅
where 读者.借书证号=借阅.借书证号;
b) 非等值连接(即所谓的连接符不为'=')
c) 自身连接(即自身与自身连接)
例如我们有一张表,表上有选修的学科以及先选修课,现在我们要知道间接先选修课,那么我们就要将其尽心自身连接
select first.cno,second.cpno
from course first,course second //相当于将一个表命名为first 和 second 两个不同的名字
where first.cpno=second.cno;
d) 外连接
例如查询所有借阅信息,包括罚款信息
select *
from 借阅 left outer join 罚款分类 on (借阅.罚款分类号=罚款分类.罚款分类号);
有时候我们希望消去重复属性
select *
from 借阅 left outer join 罚款分类 using (罚款分类号);
e) 复合条件连接 即有多重限制
例如:我们要查询即借阅过a书也借阅过b书的人
九、嵌入查询
a) 普通的嵌入查询即一个父查询包含一个子查询
b)带有IN 谓词的子查询
例如:查询与王菲同性别的读者
select *
from 读者
where 读者.性别 in
(
select 性别
from 读者
where 姓名='王菲'
);
c) 带有比较运算符的子查询
d)带有any 或者 all 的子查询
(< | > | >= | <= | =)any ( 大于 | 小于 | 大于等于 | 小于等于 | 等于)其中的任意值
(< | > | >= | <= | =)all (大于 | 小于 | 大于等于 | 小于等于 | 等于)其中的所有值
e)带有exists 的子查询
带有exists的子查询不返回任何数据,只是产生逻辑判断'true' 或者 'false';
前面的查询都只是涉及一个表,如果我们要查询的数据在多个表上进行,我们就要涉及到连接查询。
a)等值连接
比如我门要查询读者的所有信息即包括借阅信息和其本身信息
select 读者.*,借阅.*
from 读者,借阅
where 读者.借书证号=借阅.借书证号;
b) 非等值连接(即所谓的连接符不为'=')
c) 自身连接(即自身与自身连接)
例如我们有一张表,表上有选修的学科以及先选修课,现在我们要知道间接先选修课,那么我们就要将其尽心自身连接
select first.cno,second.cpno
from course first,course second //相当于将一个表命名为first 和 second 两个不同的名字
where first.cpno=second.cno;
d) 外连接
例如查询所有借阅信息,包括罚款信息
select *
from 借阅 left outer join 罚款分类 on (借阅.罚款分类号=罚款分类.罚款分类号);
有时候我们希望消去重复属性
select *
from 借阅 left outer join 罚款分类 using (罚款分类号);
e) 复合条件连接 即有多重限制
例如:我们要查询即借阅过a书也借阅过b书的人
九、嵌入查询
a) 普通的嵌入查询即一个父查询包含一个子查询
b)带有IN 谓词的子查询
例如:查询与王菲同性别的读者
select *
from 读者
where 读者.性别 in
(
select 性别
from 读者
where 姓名='王菲'
);
c) 带有比较运算符的子查询
d)带有any 或者 all 的子查询
(< | > | >= | <= | =)any ( 大于 | 小于 | 大于等于 | 小于等于 | 等于)其中的任意值
(< | > | >= | <= | =)all (大于 | 小于 | 大于等于 | 小于等于 | 等于)其中的所有值
e)带有exists 的子查询
带有exists的子查询不返回任何数据,只是产生逻辑判断'true' 或者 'false';
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle 10g R2不能使用EM的问题
- PreparedStatement中in子句的处理
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- 数据库自动备份脚本
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ORACLE LATERAL-SQL-INJECTION 个人见解
- Oracle Connect to Idle Instance解决方法
- oracle sys_connect_by_path 函数 结果集连接
- Oracle捕获问题SQL解决CPU过渡消耗
- oracle dba 应该熟悉的命令
- Oracle11.2 命令行手工最简创建数据库的过程
- Oracle 数据库自动存储管理-安装配置
- 基于oracle中锁的深入理解
- Oracle 数据库 临时数据的处理方法