SQL语言与关系数据理论.ppt
《SQL语言与关系数据理论.ppt》由会员分享,可在线阅读,更多相关《SQL语言与关系数据理论.ppt(64页珍藏版)》请在三一办公上搜索。
1、第11章 Web数据库应用,教材:数据库技术及应用 2006年4月,宁可、吴菁、胡海编著,本章要点,关系数据库 结构化查询语言 数据库设计理论,目 录,2.1 关系数据库 2.1.1 关系数据结构 2.1.2 关系操作 2.1.3 关系的完整性 2.2 SQL语言 2.2.1 SQL概述及特点 2.2.2 SQL数据定义 2.2.3 SQL数据查询 2.2.4 SQL数据操纵 2.2.5 数据控制 2.3 关系数据理论 2.3.1 关系模式可能存在的问题 2.3.2 函数依赖及规范化小结,2.1 关系数据库,关系数据库系统是支持关系模型的数据库系统。关系模型由关系数据结构、关系操作集合和关系完
2、整性约束三部分组成。关系数据库是表的集合,数据库中的表,数学家称为关系。关系数据库中还定义了关系操作和完整性约束,关系操作就是对表中的数据的处理、查询,完整性约束就是表中的数据要满足的条件,这些条件由数据库系统自动维护,产生违反这些约束条件的对数据的操作会被拒绝执行。,2.1.1 关系数据结构,在关系模型中,无论是实体还是实体之间的联系均由单一的结构即关系(表)来表示。关系模型是建立在集合代数的基础上的。1 关系的定义 在用户观点下,关系模型中数据的逻辑结构是一张二维表。二维表的每一列称为属性。每个属性有一个取值范围,称为值域。每个属性对应一个值域。下面是二维表的一个实例。,2 关系中的基本名
3、词(1)关键字 能唯一标识一行记录或元组的一个或一组属性。(2)候选关键字(Candidate key)和主关键字(Primary key)能作为关键字的属性可能有很多,这些属性称为候选关键字。为数据管理方便,若一个关系有多个候选关键字时,指定其中一个为主关键字。(3)主属性(Primary Attribute)和非主属性(Non-key Attribute)候选关键字中的属性为主属性。不包含在任何候选关键字中的属性为非主属性。,3 数据库中关系的类型 关系可以有三种类型:基本关系(通常称为基本表或基表)查询表和视图表。(1)基本表 基本表是关系数据库中实际存在的表,它是实际存储数据的逻辑表。
4、(2)查询表 它是从基本表中查询得到的,一般是临时表。(3)视图表 视图表是由基本表或其它视图表导出的表,它是为数据处理方便以及数据安全要求而设计的虚表,它一般是不存储数据的,而只是存储提取数据的条件,它的数据依赖于基本表。,4 基本关系的性质基本关系具有如下六条性质:(1)列是同性质的,即同一列中的分量是同一类型的数据。(2)关系中的列又称为属性,并赋予属性名。不同列的属性名不同。不同列可以取相同的数据类型。(3)列的次序可以任意交换。(4)任意两个元组不能完全相同。(5)行的次序可以任意交换。(6)列具有原子性,即每一列值是不可分的数据项,5 关系模式 关系模式是对关系的描述,可以理解为表
5、的结构定义。关系实际上就是关系模式在某一时刻的状态或内容。也就是说,关系模式是型,关系是它的值。6 关系数据库 在关系模型中,实体以及实体间的联系都是用关系来表示。在一个给定应用中,所有实体及实体之间联系的集合构成一个关系数据库。关系数据库也有型和值之分。,2.1.2 关系操作,关系模型给出了关系操作的能力,但不对具体的RDBMS给出具体的语法要求。关系操作语言灵活方便,表达能力和功能强大。关系模型的数据操作采用集合操作方式,即操作对象和结果都是集合。关系模型中常用的关系操作包括数据查询、数据维护和数据控制三大功能。数据查询指数据检索、统计、排序等功能;数据维护指数据的增加、删除、修改等数据的
6、更新功能;数据控制是为了保证数据的安全性和完整性而采用的数据存储控制及并发控制等功能。,2.1.3 关系的完整性,1 实体完整性 现实世界中的实体是可区分的,即它们具有某种唯一性标识。相应地,关系模型中以主键(主关键字)作为唯一性标识。主键中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。2 参照完整性 现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。3.用户定义的完整性 用户定义的完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。例如:某个属性的取值不能为空
7、,学生考试的成绩取值范围在0到100之间。,2.2 SQL语言,SQL全称是“Structured Query Language”,即结构化查询语言,它目前是关系数据库的标准语言,它是在1974年由Boyce和Chamberlin提出的。经过不断修改、扩充和完善,SQL语言最终发展成为关系数据库的标准语言。由于它功能丰富、语言简洁、易学易用,所以深受用户和计算机工业界的欢迎,被各计算机公司和软件公司广泛采用。SQL标准的影响超出了数据库领域,SQL成为国际标准后,它在数据库以外的其他领域也得到了重视和采用。在未来一段相当长的时间,SQL将是数据库语言领域中的一个主流语言。,2.2.1 SQL概
8、述及特点,1.SQL概述 SQL是一种结构化查询语言,其功能并不象名称所显示的那样仅仅是查询,而是一个通用的、功能强大的关系数据库语言。SQL从主要功能上可以分为4个部分:数据定义、数据查询、数据操纵和数据控制。它是一个综合的、通用的关系数据库查询语言。它的特点如下:(1)功能一体化(2)高度非过程化(3)以同一种语法结构提供两种使用方式(4)语言简洁,易学易用,2.SQL语言的基本概念 SQL支持三级模式结构,外模式对应于视图和部分基本表,模式对应于基本表,内模式对应于存储文件。基本表是独立存在的表,一个关系就是一个表。基本表是按数据全局逻辑模式建立的。全体基本表构成了数据库的模式。一个SQ
9、L模式(Schema)是表和约束的集合。视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库中只存放视图的定义而不存放视图的数据,这些数据仍存放在导出视图的基本表中。因此,视图是一个虚表。,2.2.2 SQL数据定义,SQL的数据定义功能包括定义表、定义视图、定义索引和定义数据库。SQL的数据定义语句见下表。,1.基本表的定义和维护 SQL基本表的定义和维护功能包括表的定义、修改和删除。(1)定义基本表(CREATE TABLE)例2-2 建立一个“学生”表,它由学号、姓名、性别、年龄、所在系五个属性组成,年龄是整型数据,其它为字符型。CREATE TABLE 学生(
10、学号 CHAR(5),姓名 CHAR(20),年龄 INT,性别 CHAR(2),所在系 CHAR(20),),(2)修改基本表(ALTER TABLE)例2-6 删除“学生”表中“入学时间”列。ALTER TABLE 学生 DROP COLUMN 入学时间;(3)删除基本表 例2-7 删除学生表 DROP TABLE学生,2.索引的定义和维护 当你阅读一本厚书时,如果你想快速找到特定的内容,你就需要查看目录,找到你所关心的内容在书中的准确位置页码,然后直接翻到这个位置。索引对于表,就相当于书的目录。索引可以提高数据查询速度。可以对频繁查询的表增加索引。只有按有索引的列查询,索引才有作用。,(
11、1)建立索引(CREATE INDEX)例2-8 为学生表建立索引,按学号升序建唯一索引。CREATE UNIQUE INDEX Stusno ON 学生(学号)(2)删除索引(DROP INDEX)例2-9 DROP INDEX 学生.Stusno,2.2.3 SQL数据查询,数据库查询是数据库的核心操作,查询就是从数据库中挑选、提取所需要的数据。SQL提供了SELECT语句进行数据库的查询,该语句使用方式灵活、功能强大。SELECT语句的语法格式为:SELECT ALL|DISTINCT,.FROM,.WHERE GROUP BY HAVING ORDER BY ASC|DESC;,1.简
12、单查询 简单查询是指从一个表中进行查询,也叫单表查询。如选择一个表中的某些列、某些行。(1)查询指定列例2-10 查询全体学生的姓名与学号。学生表中有很多列:学号,姓名,年龄,性别,所在系,而下列语句只选择学号和姓名两列,即查询的结果是一个只包含两列的新关系。SELECT 学号,姓名 FROM 学生;,(2)查询全部列例2-11 查询学生表的全部列:SELECT*FROM 学生 也可以写为:SELECT学号,姓名,年龄,性别,所在系,(3)查询经过计算的值 SELECT子句可以包含表达式,运算对象可以是常量或属性。例2-12 查询5年之后学生的年龄。假如数据库中学生的年龄是今年的年龄。SELE
13、CT 学号,姓名,年龄+5 FROM 学生,(4)消除取值重复的行 一个表中两个本来不完全相同的行,选择部分列后,可能完全相同了。例2-13 查询选修了课程的学号。SELECT 学号 FROM 选课 如果要去掉重复行,必须指定短语DISTINCT:SELECT DISTINCT 学号 FROM 选课 取消了重复行,结果就是选了课的学生学号。,(5)查询满足条件的行 WHERE子句通过条件表达式描述表中行的选择条件。DBMS系统根据选择条件扫描表中的每一行,把不符合条件的行筛选掉。WHERE子句常用的查询条件,如下表所示:,比较 例2-14 查询信息系学生的名单 SELECT 姓名 FROM 学
14、生 WHERE 所在系=信息系例2-15 查询所有20岁以下的学生姓名和年龄 SELECT 姓名,年龄 FROM 学生 WHERE 年龄20,例2-16 查询有成绩不及格的学生的学号 SELECT DISTINCT 学号 FROM 选课 WHERE 成绩60 确定范围例2-17 查询年龄在20到23岁(包括20和23)之间的学生姓名、年龄、所在系。SELECT 姓名,年龄,所在系 FROM 学生 WHERE 年龄BETWEEN 20 AND 23,确定集合例2-18 查询数学系或化学系学生的姓名、性别、所在系。SELECT 姓名,性别,所在系 FROM 学生 WHERE 所在系 IN(数学系,
15、化学系)字符串的匹配。例2-19 查询姓刘的学生的姓名、性别、所在系。SELECT 姓名,性别,所在系 FROM 学生 WHERE姓名 LIKE 刘%,涉及空值的查询例2-22 查询选修了课程而没参加考试的学生名单及课程号。SELECT 学号,课程号 FROM 选课 WHERE成绩 IS NULL,多重条件查询 如果查询条件多于两个,则要使用逻辑运算符AND和OR连接多个条件,AND的优先级高于OR,但可使用括号改变运算顺序。例2-23 查询计算机系姓赵的学生。SELECT 姓名 FROM 学生 WHERE所在系=计算机系 AND 姓名 LIKE 赵%,(6)对查询结果排序 如果没有指定查询结
16、果的显示顺序,DBMS通常按其数据录入的先后顺序(物理存储顺序)输出查询结果。用户也可以用ORDER BY子句指定按照一个或多个属性列的升序(ASC)或降序(DESC)重新排列查询结果,其中升序ASC为缺省值。例2-24 查询选修了3号课程的学生的学号及其成绩,查询结果按成绩的降序排列。SELECT 学号,成绩 FROM 选课 WHERE 课程号3 ORDER BY 成绩 DESC,(7)使用集合函数 为了进一步方便用户,增强检索功能,SQL提供了许多集函数,常用的集函数见下表。,例2-25 查询学生总人数。SELECT COUNT(*)FROM 学生例2-26 查询选修了课程的学生人数。SE
17、LECT COUNT(DISTINCT 学号)FROM 选课 学生每选修一门课,在选课中都有一条相应的记录,而一个学生一般都要选修多门课,为避免重复计算学生人数,必须在COUNT函数中用DISTINCT限定词。,(8)对查询结果分组 GROUP BY子句可以将查询结果表的各行按一列或多列的值分组,值相等的为一组。对查询结果分组的目的是为了细化集函数的作用对象。如果未对查询结果分组,集函数将作用于整个查询结果,即整个查询结果只有一个函数值,如上面的例题,否则,集函数将作用于每一个组,即每一组都有一个函数值。,例2-28 查询各个课程号与相应的选课人数。SELECT 课程号,COUNT(学号)FR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语言 关系 数据 理论
链接地址:https://www.31ppt.com/p-6521067.html