Oracle Database 11g应用与开发教程 教学课件 ppt 作者 978-7-302-31490-5 第8章 SQL语言查询

上传人:E**** 文档编号:89350114 上传时间:2019-05-23 格式:PPT 页数:78 大小:871.50KB
返回 下载 相关 举报
Oracle Database 11g应用与开发教程 教学课件 ppt 作者 978-7-302-31490-5 第8章 SQL语言查询_第1页
第1页 / 共78页
Oracle Database 11g应用与开发教程 教学课件 ppt 作者 978-7-302-31490-5 第8章 SQL语言查询_第2页
第2页 / 共78页
Oracle Database 11g应用与开发教程 教学课件 ppt 作者 978-7-302-31490-5 第8章 SQL语言查询_第3页
第3页 / 共78页
Oracle Database 11g应用与开发教程 教学课件 ppt 作者 978-7-302-31490-5 第8章 SQL语言查询_第4页
第4页 / 共78页
Oracle Database 11g应用与开发教程 教学课件 ppt 作者 978-7-302-31490-5 第8章 SQL语言查询_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《Oracle Database 11g应用与开发教程 教学课件 ppt 作者 978-7-302-31490-5 第8章 SQL语言查询》由会员分享,可在线阅读,更多相关《Oracle Database 11g应用与开发教程 教学课件 ppt 作者 978-7-302-31490-5 第8章 SQL语言查询(78页珍藏版)》请在金锄头文库上搜索。

1、第1页,授课教师:姚瑶 职务:讲师,Oracle 11g数据库应用教程,第2页,第8章 SQL语言查询,对数据库的查询是在数据库创建后的常用操作,通过它可以在数据库中得到用户需要的各种信息。本章将重点介绍数据查询操作。 本章的学习目标: 掌握查询的基本语法 掌握简单查询的方法 掌握内连接、外连接、交叉连接等连接查询的基本方法 掌握子查询的实现方法和应用 掌握联合查询及其应用,第3页,8.1 SQL语言概述,SQL是Structure Query Language(结构化查询语言)的缩写,它是目前关系数据库系统中通用的标准语言。主要用于完成以下3个任务:(1)创建数据库和表;(2)查询数据;(3

2、)控制数据库的安全。前面已经学习了如何利用用户界面方式建立数据库和表,在实践中我们体会到这种方式的方便快捷。本章我们将学习使用SQL的基本语法,当熟悉了这种语言后,我们会发现,SQL语句对数据库的操作更加简便灵活,而且在一些特定环境下(如在程序中使用SQL语句或编写存储过程时),对数据库的操作必须要使用SQL语言。 SQL最早在20世纪70年代由Boyce和Chamberlin提出,并首先在IBM公司的数据库管理系统System R上实现,随后又在IBM的DB2上实现,并获得了巨大的成功。后来美国标准化组织和国际标准化组织先后将SQL作为关系数据库系统的标准语言,从此,SQL得到了发展机会到目

3、前为止,包括Oracle、Sysbase、Informix等在内的几乎所有大型数据库系统都支持SQL. SQL在字面上虽然称为结构化查询语言,实际上它还包括数据操纵、数据定义、事务控制、安全控制等一系列命令。SQL操作的基本对象是表,也就是关系。它可以对表中的数据进行查询、增加、删除、修改等常规操作,还可以维护表中数据的一致性、完整性和安全性,能够满足从单机到分布式系统的各种应用需求。,第4页,SQL包括一系列命令,可以满足对数据的各种访问。按照通用的分类标准,SQL命令分为以下几种类型: 查询命令 包括SELECT命令 DML(Data Manipulation Language 数据操纵语

4、言)命令 包括INSERT、DELETE、UPDATE命令 DDL(Data Definition Language 数据定义语言)命令 包括CREATE、DROP、ALTER、RENAME、TRUNCATE命令 DCL(Data Control Language 数据控制语言)命令 包括GRANT、REVOK命令 事务控制命令 包括COMMIT、ROLLBACK、SAVEPOINT命令 命令和相关的参数一起构成了SQL语句。下面将对这些命令分别进行详细的介绍。其中查询命令是SQL的核心,通过SQL的查询可以从表或视图中迅速、方便地检索数据。,第5页,8.2 简单查询,数据库存在的意义在于将数

5、据组织在一起,以方便查询。“查询”的含义就是用来描述从数据库中获取数据和操纵数据的过程。查询语言用来对已经存在于数据库的数据按照特定的组合、条件表达式或者一定次序进行检索。其基本格式是由SELECT子句、FROM子句和WHERE子句组成的SQL查询语句: SELECT FROM WHERE 也就是说,SELECT指定了要查看的列(字段),FROM指定这些数据的来源(表或视图),WHERE则指定了要查询哪些记录。,第6页,8.2.1 SELECT语句的基本语法格式,完整的SELECT语句语法较复杂,但是其基本的语法格式可归纳如下: SELECT select_list FROM table_li

6、st WHERE search_conditions GROUP BY group_by_expression HAVING search_conditions ORDER BY order_expression ASC|DESC 其中,带有方括号的子句是可选择的,大写的单词表示SQL的关键字,而小写的单词或者单词组合表示表或视图名称或者给定条件,语法中的各选项说明:,第7页, SELECT select_list 描述结果集的列,它是一个逗号分隔的表达式列表。每个表达式通常是从中获取数据的源表或视图的列的引用,但也可能是其他表达式,例如常量或函数。在选择列表中使用“*”表达式指定返回源表中的

7、所有列。 FROM table_list 包含从中检索到结果集数据来创建的表的列表,也就是结果集数据来源于哪些表或视图,FROM子句还可包含连接的定义。 WHERE search_conditions 其中的WHERE子句是一个筛选,它定义了源表中的行要满足SELECT语句的要求所必须达到的条件。只有符合条件的行才向结果集提供数据,不符合条件的行中的数据不会被使用。,第8页, GROUP BY group_by_expression 其中的GROUP BY子句根据group_by_expression列中的值将结果集分成组。 HAVING search_conditions 其中的HAVING

8、子句是应用于结果集的附加筛选。逻辑上讲,HAVING子句从中间结果集对行进行筛选,这些中间结果集是用SELECT语句中FROM、WHERE或GROUP BY子句创建的。HAVING子句通常与GROUP BY子句一起使用,尽管HAVING子句前面不必有GROUP BY子句。 ORDER BY order_expression ASC|DESC 其中的ORDER BY子句定义结果集中的行排列的顺序。order_expression指定组成排序列表的结果集的列。ASC和DESC关键字用于指定行是按升序还是按降序排列。,第9页,本章我们选取高校选课管理系统数据库作为示例数据库,高校选课管理系统数据库有

9、3张数据表:学生信息表Students、课程表Courses和选课表SC。它们的结构分别如表7-3、表7-2和表7-5所示。下面的几节内容将根据数据查询的应用,从更简单到复杂,逐步介绍SELECT语句的使用方法。,8.2.2 选择表中的若干列,选择表中的全部列或不分列这就是关系代数中表的投影运算。这种运算可以通过SELECT子句给出的的字段列表来实现。字段列表中的列可以是表中的列,也可以是表达式列。所谓表达式列就是多个列运算后产生的列或者是利用函数计算后所得的列。,第10页,1. 输出表中的所有列 将表中的所有字段都输出,可以有两种方法:一种是将所有的字段名在SELECT关键字后列出来;另一种

10、是在SELECT语句后使用一个“*”。 【例8-1】查询“Teacher”表中全体学生的记录。代码如下,执行效果如图8-1所示: SQLSELECT * FROM Teacher;,图8-1 查询“Teacher”表的全部字段,第11页,1. 输出表中部分列 如果用户指定输出部分列,可以将要显示的字段名在SELECT关键字后依次列出来,列名与列名之间用英文逗号隔开,字段的顺序可以根据需要来指定。,【例8-2】查询全体教师的教师编号、姓名和职称信息。代码如下,执行效果如图8-2所示: SQLSELECT Teacher_ID, Tname, Profess FROM Teacher;,图8-2

11、查询全体教师的编号、姓名和职称,第12页,从上图的输出结果中可以看到,只有“Teacher_ID”“Tname”和“Profess”三个字段。图8-2中的代码COLUMN TEACHER_ID FORMAT A13中的COLUMN命令用于格式化列标题和列数据的显示格式。 e:8-2.sql表示调用8-2.sql文件中代码。,1. 计算列并为输出结果中的列指定别名 有时候,输出结果中的列不是表中现成的列,而是表中的一个或多个列计算出来的,这时候,这个计算列需要指定一个列名,同时将该表达式将显示在字段列表中。使用格式如下: SELECT 表达式 AS 列别名 FROM 数据源 【例8-3】查询“T

12、eacher”表中全体教师的姓名及年龄。代码如下: SQLSELECT Tname, TO_CHAR(SYSDATE,YYYY)-TO_CHAR(Tbirth,YYYY) AS age 2 FROM Teacher;,第13页,上述语句中,“TO_CHAR(SYSDATE,YYYY)-TO_CHAR(Tbirth,YYYY)”是表达式,含义是取得系统当前日期中的年份减去“出生日期”字段中的年份,就是教师的当前年龄。TO_CHAR函数可以按指定格式将日期数据转换为字符串。“age”是表达式别名。上述代码的执行效果如图8-3所示。,图8-3 带有别名的查询,第14页,8.2.3 选择表中的若干行,

13、选择表中的若干记录这就是关系代数中表的选择运算。这种运算可以通过增加一些谓词(例如WHERE字句)等来实现。 1. 消除取值重复的行 两个本来并不相同的记录,当投影到指定的某些列上后,可能变成相同的行。如果要去掉结果集中的重复的行,可以在字段列表前面加上DISTINCT关键字。,【例8-4】查询授课教师的编号。代码如下: SQL SPOOL 8-4.TXT SQL SELECT Teacher_ID FROM TC; SQL SPOOL OFF;,第15页,上述代码的执行效果如下所示,授课的教师编号有重复,共有33行记录。其中SPOOL 8-4.txt把输出结果保存到指定文件中。SPOOL O

14、FF表示当执行完该语句之后,才把查询结果真正写入到指定的文件中。由于查询结果记录较多,此处选取其中一部分。,TEACHER_ID - 10459001 10459002 10459003 10459004 10459005 10459001 10459007 10459007 10459008 10459008,第16页,如下所示下面的代码就去掉了重复的教师编号,仅有行记录,执行结果如图8-4所示。 SQLSELECT DISTINCT Teacher_ID FROM TC;,图8-4去掉重复教师编号的查询,第17页,2. 查询满足条件的元组 如果只希望得到表中满足特定条件的一些记录,用户可以

15、在查询语言中使用WHERE字句。使用WHERE字句的条件如表8-1所示。,(1)比较大小:比较运算符是比较两个表达式大小的运算符,各运算符的含义是=(等于)、(大于)、=(大于或等于)、(不等于)、! (不大于)。逻辑运算符NOT可以与比较运算符同用,对条件求非。,第18页,【例8-5】查询“SC”表中成绩小于60分的记录。代码如下,执行的结果如图8-5所示。 SQL SELECT * FROM SC WHERE Grade60;,图8-5 查询成绩小于60分的记录,(2)确定范围:范围运算符BETWEENAND和NOT BETWEENAND可以查找属性值在(或不在)指定的范围内的记录。其中,BETWEEN后是范围的下限(即低值),AND后是范围的上限(即高值)。语法格式如下: 列表达式 NOT BETWEEN 起始值 AND 终止值,第19

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号