oracle数据库对象管理.ppt
《oracle数据库对象管理.ppt》由会员分享,可在线阅读,更多相关《oracle数据库对象管理.ppt(56页珍藏版)》请在三一办公上搜索。
1、第7章 数据库对象管理,SELECT语句的基本应用,SELECT语句的基本语法结构如下:SELECT DISTINCT 子句 INTO 子句 FROM 子句 WHERE 子句 GROUP BY 子句 HAVING 子句 ORDER BY 子句,第7章 数据库对象管理,SELECT 查询,单表查询多表连接查询,第7章 数据库对象管理,SELECT 查询单表查询,单表查询指的是在一个源表中查找所需的数据。因此,单表查询时,FROM子句中的 只需要给出一个源表表名。1.SELECT子句(1)选择表中若干列(2)选择表中所有列(3)使用表达式(4)设置列的别名(5)使用DISTINCT消除结果表中完全
2、重复的行,第7章 数据库对象管理,2.FROM子句,单表查询中,源表只有一个,因此,FROM子句FROM,SELECT 查询单表查询,3.WHERE子句,WHERE 查询体条件中没有多表连接条件,只有一个表的行筛选条件。中常用的运算符:比较运算符和逻辑运算符。比较运算符用于比较两个数值之间的大小是否相等。常用的比较运算符有:=(等于)、(大于)、=(大于等于)、(不等于)。,第7章 数据库对象管理,逻辑运算符主要有:范围比较运算符:BETWEEN AND,NOT BETWEEN AND集合比较运算符:IN,NOT IN字符匹配运算符:LIKE,NOT LIKE空值比较运算符:IS NULL,I
3、S NOT NULL条件连接运算符:AND,OR,NOT 下面举例说明,第7章 数据库对象管理,4.GROUP BY 子句 有时我们需要把FROM、WHERE子句产生的表按某种原则分成若干组,然后再对每个组进行统计。GROUP BY子句在WHERE子句后边。一般形式为:GROUP BY,n 其中是分组的依据。分组原则是的列值相同,就为同一组。当有多个时,则先按第一个列值分组,然后对每一组再按第二个列值进行分组,依此类推。,SELECT 查询单表查询,5.HAVING子句 HAVING子句指定GROUP BY生成的组表的选择条件。它的一般形式为:HAVING HAVING子句在GROUP BY子
4、句之后,并且必须与GROUP BY子句一起使用,第7章 数据库对象管理,6.ORDER BY子句 指定整个SELECT语句的输出结果中记录的排序依据。ORDER BY排序子句的格式为:ORDER BY ASC|DESC,n 其中指定排序的依据,ASC表示按列值升序方式排序,DESC表示按列值降序方式排序。如果没有指定排序方式,则默认的排序方式为升序排序。在ORDER BY子句中,可以指定多个用逗号分隔的列名。,SELECT 查询单表查询,第7章 数据库对象管理,多表查询指的是从多个源表中检索数据。因此,多表查询时,FROM子句中的要给出所有源表表名,各个表名之间要用逗号分隔。(1)多表查询的F
5、ROM子句格式 FROM 例如,若一个查询用到三个表,表名分别为Students、Enrollment,Courses。则FROM子句为:FROM Students,Enrollment,Courses,SELECT 查询多表连接查询,第7章 数据库对象管理,(2)多表查询中的SELECT子句不同的是:如果多个表中有相同的列名,则需要用:.来限定列是那个表的列。,SELECT 查询多表连接查询,(3)多表查询中的GROUP BY、HAVING、ORDER BY子句 与单表查询中的用法相同。不同的是:如果列名有重复,则要用.来限定列是那个表的列。,第7章 数据库对象管理,(4)多表查询中的WHE
6、RE子句与单表查询中的用法差别较大。多表查询中往往要有多表的连接条件,当然还有表的一个或多个行选择条件,两者用AND操作符组合。这里着重介绍多表的连接条件。按连接条件的不同,连接分为:内连接、外连接。外连接又分为左外连接、右外连接。,SELECT 查询多表连接查询,第7章 数据库对象管理,1.非相关子查询 非相关子查询,也称嵌套子查询,可以多层嵌套。这种子查询的执行不依赖于外查询。执行过程是,先执行子查询,子查询的结果并不显示出来,而是作为外查询的条件值,然后执行外查询。非相关子查询的特点:子查询只执行一次,其查询结果不依赖于外查询。而外查询的查询条件依赖于子查询的结果,因此,也可以说外查询的
7、查询结果依赖于子查询的结果。非相关子查询的结果可以是一行或多行。返回一行的非相关子查询通常用在比较运算符之后;返回多行的非相关子查询通常用在比较运算符与ANY、ALL组成的运算符、IN、NOT IN之后。,SELECT 查询子查询,第7章 数据库对象管理,(1)返回一行的非相关子查询【例】查询与Sue在同一个系学习的学生学号、姓名SELECT Sno,Sname FROM StudentsWHERE Sdept=(SELECT Sdept FROM Students WHERE Sname=Sue),第7章 数据库对象管理,(2)返回多行的非相关子查询如果子查询返回多个值,即一个集合,则外查询
8、条件中不能直接用比较运算符中的任意一个,因为某一行的一个列值不能与一个集合比较。必须在比较运算符之后加ANY或ALL关键字。使用格式为:列名比较符ANY|ALL子查询 ANY的含义为:将一个列值与子查询返回的一组值中的每一个比较。若在某次比较中结果为TRUE,则ANY测试返回TRUE,若每一次比较的结果均为FALSE,则ANY测试返回FALSE。ALL的含义为:将一个列值与子查询返回的一组值中的每一个比较。若每一次比较中结果均为TRUE,则ALL测试返回TRUE,只要有一次比较的结果为FALSE,则ALL测试返回FALSE。,第7章 数据库对象管理,【例】查询其他系中比计算机系所有学生年龄都小
9、的学生基本情况。SELECT*FROM StudentsWHERE SdeptComputer AND Sage ALL(SELECT Sage FROM Students WHERE Sdept=Computer),第7章 数据库对象管理,【例】查询其他系中比计算机系某一学生年龄小的学生的基本情况。SELECT*FROM StudentsWHERE SdeptComputer AND Sage ANY(SELECT Sage FROM Students WHERE Sdept=Computer),第7章 数据库对象管理,【例】查询成绩大于80分的学生的学号、姓名。SELECT Sno,Sna
10、me FROM StudentsWHERE Sno=ANY(SELECT Sno FROM Enrollment WHERE Grade 80),第7章 数据库对象管理,【例】查询选修了课程名为English的课程并且成绩大于80 分的学生学号、姓名。SELECT Sno,Sname FROM StudentsWHERE Sno IN(SELECT Sno FROM Enrollment WHERE Grade 80 AND Cno=(SELECT Cno FROM Courses WHERE Cname=English),第7章 数据库对象管理,2.相关子查询 相关子查询,即子查询的执行依赖
11、于外查询。相关子查询执行过程是先外查询,后内查询,然后又外查询,再内查询,如此反复,直到外查询处理完毕。使用EXSISTS 或NOT EXSISTS关键字来表达相关子查询。格式为:EXISTS EXISTS表示存在量词,用来测试子查询是否有结果,如果子查询的结果集中非空(至少有一行),则EXISTS条件为TRUE,否则为FALSE。由于EXISTS的子查询只测试子查询的结果集是否为空,因此,在子查询中指定列名是没有意义的。所以在有EXISTS的子查询中,其列名序列通常都用“*”表示。,SELECT 查询子查询,第7章 数据库对象管理,【例】查询选修了C2课程的学生的学号和姓名。SELECT S
12、no,Sname FROM StudentsWHERE EXISTS(SELECT*FROM EnrollmentWHERE Sno=Students.Sno AND Cno=C2),第7章 数据库对象管理,【例】查询没有选修C2课程的学生的学号、姓名。SELECT Sno,Sname FROM StudentsWHERE NOT EXISTS(SELECT*FROM EnrollmentWHERE Sno=Students.Sno AND Cno=C2),第7章 数据库对象管理,在标准SQL中,集合运算的关键字分别为UNION(并)、INTERSECT(交)、MINUS(或EXCEPT)(差
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 数据库 对象 管理
链接地址:https://www.31ppt.com/p-6513536.html