版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章SQL语言,数据库系统原理与设计,第三章SQL语言,学习目标SQL(结构化查询语言)是关系数据库的标准语言,几乎所有的关系数据库管理系统都采用SQL语言。有两个主要的教学目标要求读者掌握数据库的基本操作。了解数据库管理系统的基本功能要求读者熟练掌握SQL查询语句,并使用SQL语句完成数据库的操作。第三章SQL语言,学习方法要求读者结合课堂所教的知识,加强计算机实践训练,并训练课堂所学的相关概念,以加深理解,达到学习目标。学习指南的要点:3.2、3.3、3.4、3.5、3.8和3.9困难:3.3、3.4和3.5,第3章SQL语言。本章介绍了SQL查询语句如何扩展关系代数运算。连接查询包括什
2、么?它们在哪里使用?相关子查询和不相关子查询的概念。使用分组聚合查询时的注意事项。如何理解存在量词及其在SQL查询中的重要地位。如何理解查询表的概念,以及查询表和子查询的异同?如何在SQL语句中实现完整性约束。实现完整性约束的方法是什么?如何在特定的物理文件上构建数据库对象(如基本表和索引)?在特定物理文件上构建数据库对象的目的是什么?创建视图的目的是什么?视图主要用于哪些操作?目录,嵌套子查询,SQL概述,简单查询,连接查询,聚合查询,集合操作,SQL查询的一般格式,SQL数据定义语言,SQL数据更新语言,视图,3.1 SQL概述,SQL语言由Boyce等人于1974年提出,并在IBM于19
3、75-1979年开发的System R数据库管理系统上实现,现已成为许多数据库供应商重新开发和扩展的SQL语句。标准的SQL命令包括查询、选择、插入、更新、更新、删除、创建创建对象、删除删除,这些命令可以用来完成几乎所有的数据库操作。3.1.1 SQL开发3.1.2 SQL特性3 . 1 . 3 SQL查询的基本概念,3.1.1 SQL开发,SQL-86:第一个SQL标准,由美国国家标准协会(ANSI)发布,1987年由国际标准化组织(ISO)采用。这个标准也被称为SQL-1 SQL-92。1992年,国际标准化组织和美国国家标准学会再次修订了标准86,这个标准也被称为标准99。1999年,这
4、个版本扩展了很多基于SQL-2的功能,包括递归、触发、面向对象技术等等。该标准也称为SQL-3 SQL-2003:该标准是最新的标准,也称为SQL-4,于2003年发布,在3.1.1 SQL中开发。SQL语言由四部分组成。数据定义语言定义了数据库的逻辑结构,包括数据库、基本表、视图和索引等。扩展的DDL还支持存储过程、函数、对象、触发器等的定义。DDL包括三种语言,即定义、修改和删除数据操作语言(DML)来检索和更新数据库中的数据,更新操作包括插入、删除和修改数据。数据控制语言(DCL)授权数据库对象,维护用户(包括创建、修改和删除),定义完整性规则和事务定义等。其他定义主要有嵌入式SQL语言
5、和动态SQL语言。规定了宿主语言中的SQL语言所使用的规则是对SQL的扩展,它还包括对数据库数据的重组、备份和恢复功能。3.1.2 SQL特性,集成了统一集数据定义语言DDL、数据操作语言DML和数据控制语言DCL的功能。高度非程序化的面向集合的操作模式采用集合操作模式,其操作对象和搜索结果都是元组。相同的语法结构提供了两种使用模式。SQL语言是独立的,也是嵌入式的。在两种不同的使用模式下,其语法结构基本一致,语言简洁,而且很少有易于学习和使用的动词,包括:数据查询选择;数据定义创建、删除、更改;数据操作插入、更新、删除;数据控制GRANT,revoke,3.1.3基本概念的SQL查询,SQL
6、语言支持三级模式结构,外部模式对应于视图和一些基本表,内部模式对应于基本表,内部模式对应于存储文件,3.1.3基本概念的SQL查询,一个表独立存在于一个基本表数据库被称为基本表。在SQL中,一个关系对应一个基本表,一个(或多个)基本表对应一个存储文件。一个表可以存储在具有多个索引的存储文件中。视图是指从一个或多个基本表(或视图)导出的表。虚拟表只存储视图的定义,而不存储相应的数据。查询表是指与查询结果相对应的表存储文件,表存储文件是指在数据库中存储关系的物理文件。3.7查询通用格式P106,选择有六个子句,其中选择和从是必需的,其他是可选的。它们必须按以下顺序排列:选择全部|区别为,作为,从,
7、从,其中分组依据是,由美国航空公司| desc、美国航空公司| desc订购,3.7 SQL查询的通用格式,包括:(1)以下可选格式:*,(from子句指定查询中涉及的表、视图或查询表。为了便于操作,表通常被赋予一个别名,称为元组变量。(where子句给出了查询条件,以下谓词运算符可用于后续表:比较运算符:=,=;逻辑运算符:与、或、非;范围运算符:不在之间.和;设置运算符:不输入;空运算符:不为空;字符匹配运算符:不一样;有一个量词运算符:不存在。您可以在中包含子查询,但不能直接使用聚合函数。要使用聚合函数,必须导出一个子查询,如示例3.52所示。目录,嵌套子查询,SQL概述,简单查询,连接
8、查询,聚合查询,集合操作,SQL查询的一般格式,SQL数据定义语言,SQL数据更新语言,视图,3.2简单查询。本章使用的数据库是ScoreDB,其数据库模式如图3-2、3-3、3-4和3所示。3.2简单查询,3.2简单查询,3.2.1投影操作,3.2.2选择操作,3.2.3排序操作,3.2.4查询表,3.2.1投影操作,p76,SQL的基本结构包括三个子句:select子句对应于投影操作,FROM子句所需的属性或表达式对应于笛卡尔乘积。给定查询中涉及的表,该表可以是基本表、视图或查询表。WHERE子句对应于选择操作。有必要指定查询结果元组需要满足的选择条件select和FROM,而其他条件是可
9、选的。3.2.1投影操作,基本语法是:选择A1,A2,安,来自,Rm,其中P1,A1,A2,An表示要搜索的属性或表达式、Rm表示查询中涉及的表,p表示谓词(即选择条件),如果省略WHERE子句,则表示p的查询结果为真SQL,在SQL执行过程中允许包含重复的元组:首先,在R2 R1执行查询,Rm执行笛卡儿积,然后在笛卡儿积中选择使谓词p为真的记录,然后在A1,A2,属性列,但不消除重复的元组。如果您想消除重复的元组,您必须使用关键字DISTINCT。刚才描述的SQL查询执行过程只是逻辑上的,它将在特定的执行过程中得到优化。有关查询优化的详细信息,请参见第7章。,最简单的查询,检查整个学校班级的
10、所有信息,SELECT * FROM Class *指示所有属性,并在定义表格时按照顺序显示所有属性,3.2.1投影操作,查询指定列,选择表格中的所有列或指定列,通过SELECT确定要查询的属性。例3.1查询所有班级的班级编号和班级名称,选择所属学院的班级编号和班级名称。这个查询的执行过程是:依次从类表中取出每个元组,为每个元组只选择类号、类名和机构的值,形成一个新的元组,最后将这些新的元组组织成结果关系,输出查询结果,如图3-10所示。练习,查询学号,名字和班级。查询并显示所有学生的学号、姓名和年龄。3.2.1投影操作。消除重复的元组。使用DISTINCT关键字示例3.2查询所有学院的名称。
11、选择机构从类上面的查询没有消除重复的元组,其查询结果如图3-11所示。从类中选择不同的研究所,图3-11、图3-12和3.2.1投影操作如图3-12所示。属性列的别名可用于获取属性列的可理解的列名。例如,以中文显示列名特别适合计算列示例。3.4查询所有班级的学院、班级编号和班级名称。要求用中文显示列名,如选择学院的学院、班级编号和班级名称。查询结果如图3-13所示。查询可以通过使用as关键字来别名:选择学院AS学院,类编号AS类编号,类名称AS类名称FROM类,3.2.1投影操作,查询计算列可以使用属性,常数,函数和表达式。例3.5查询每个班级编号、班级名称以及该班级现在的年级,将班级编号中的
12、大写字母改为小写字母,输出SELECT LCase(班级编号)为班级编号、班级名称、年份(日期()-年级为年级从班级函数LCase()将大写字母改为小写字母函数date()得到当前系统的日期函数年份()中的年份查询结果,如图3-14所示。3.2.2选择操作(注意WHERE子句),WHERE子句可以实现关系代数中的选择操作。常用的查询条件有:比较运算:=,(。=)范围查询:介于.AND集合查询:IN null查询:IS null字符匹配查询:LIKE逻辑查询:AND,or,NOT,3.2.2选择操作,比较操作使用比较运算符,=,(OR!=)示例3.6查询2007级的班级编号、班级名称和学院。从年
13、级=2007的班级中选择班级编号、班级名称、学院。查询结果如图3-15所示。3.2.2选择操作。执行查询的方式可能有多种:全表扫描法依次取出类表中的每个元组,判断元组的等级属性值是否等于2007;如果是,则取出元组的类号、类名和学院属性,形成新的元组;最后,所有新的元组被组织成结果关系并输出。这种方法适用于小桌子。或者该表在等级属性列上没有索引。如果表在等级属性列上有索引,并且满足条件的记录不多,则可以使用索引搜索方法来检索数据。要使用的特定方法由数据库管理系统的查询优化器选择。有关详细信息,请参见第8章,3.2.2选择操作,示例3.7在学生表中查询大于或等于19岁的学生的学生编号、姓名和出生
14、日期。从学生中选择学生编号、学生姓名、生日,其中年份(获取日期()-年份(生日)=19,3.2.2选择操作,范围查询为介于.并且属性值在一定范围内的元组不在之间.并且属性值不在某个范围内的元组是该属性的下限值。“与”之后是属性的上限值。示例3.8在课程成绩表中查询学生编号、课程编号和相应的分数在8090之间的年级。从得分在80到90之间的分数中选择学生编号、课程编号和分数。这个查询也可以通过逻辑“与”运算来实现。选课操作见例3.22、例3.2.2,查询选课成绩表中成绩不在8090分之间的学生的学号、课程号及相应的成绩见例3.9。从分数不在80到90之间的分数中选择学生编号、课程编号和分数。这个查询也可以通过使用逻辑操作or来实现,如示例3.23和3.2.2所示。选择操作,集合查询用于查询属性值在集合中的元组。非输入用于查询属性值不在集合中的元组。在是一个集合之后,它可以是一个特定的集合或者一组被查询的元组(参见第3.4节了解这部分的细节)。例3.10在选修成绩表中查询选修过“001”、“005”或“003”课程的学生人数、课程编号和相应的成绩。从(001,005,003)中的课程编号所在的分数中选择学生编号、课程编号、分数。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024工程建设监督管理合同协议书
- 技术转让合同书样本示例
- 2024敬老院承包经营合同
- 2024版单位间借款合同样本
- 标准离婚协议书格式参考样本
- 2024三方股份合同协议书
- 2024试用期员工解除劳动合同格式
- 2024劳务派遣承包合同
- 2024来料加工合同样板来料加工合作合同范本2
- 客户资源合作合同模板
- 国开(河北)2024年《中外政治思想史》形成性考核1-4答案
- 床边护理带教体会
- 2024年社区工作者考试必背1000题题库及必背答案
- MOOC 微型计算机原理与接口技术-南京邮电大学 中国大学慕课答案
- 1kw太阳能独立供电系统解决方案
- 七年级期中考试考后分析主题班会课件
- 环境教育与公众参与-第1篇
- 北师大版六年级数学上册第五单元数据处理单元测试卷及答案
- (2024年)Photoshop基础入门到精通教程全套
- 实验室建设筹备方案
- 《东北的振兴》课件
评论
0/150
提交评论