1、(完整)数据库系统概论知识点整理(word 版可编辑修改)(完整)数据库系统概论知识点整理(word 版可编辑修改)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)数据库系统概论知识点整理(word 版可编辑修改))的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为(完整)数据库系统概论知识点整理(word 版可编辑修
2、改)的全部内容。(完整)数据库系统概论知识点整理(word 版可编辑修改)第一章:绪论第一章:绪论数据库(DB)数据库(DB):长期存储在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有娇小的冗余度、交稿的数据独立性和易扩展性,并可为各种用户共享。数据库管理系统(DBMS)数据库管理系统(DBMS):位于用户和操作系统间的数据管理系统的一层数据管理软件。用途:科学地组织和存储数据,高效地获取和维护数据。包括数据定义功能,数据组织、存储和管理,数据操纵功能,数据库的事物管理和运行管理,数据库的建立和维护功能,其他功能.数据库系统(DBS)数据库系统
3、(DBS):在计算机系统中引入数据库后的系统,一般由数据库。数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。目的:存储信息并支持用户检索和更新所需的信息。数据库系统的特点数据库系统的特点:数据结构化;数据的共享性高,冗余度低,易扩充;数据独立性高;数据由 DBMS 统一管理和控制。概念模型 概念模型 实体,客观存在并可相互区别的事物称为实体.属性,实体所具有的某一特性称为属性。码,唯一标识实体的属性集称为码。域,是一组具有相同数据类型的值的集合。实体型,具有相同属性的实体必然具有的共同的特征和性质。实体集,同一类型实体的集合称为实体集。联系两个实体型之间的联系两个实体型之间的联系
4、一对一联系;一对多联系;多对多联系关系模型 关系模型 关系,元组,属性,码,域,分量,关系模型关系数据模型的操纵与完整性约束 关系数据模型的操纵与完整性约束 关系数据模型的操作主要包括查询,插入,删除和更新数据。这些操作必须满足关系完整性约束条件。关系的完整性约束条件包括三大类:实体完整性,参照完整性和用户定义的完整性。(完整)数据库系统概论知识点整理(word 版可编辑修改)数据库系统三级模式结构数据库系统三级模式结构外模式,模式,内模式模式:(逻辑模式)数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式。模式的地位:是数据库系统模式结构的中间层,与数据
5、的物理存储细节和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关.模式定义的内容:数据的逻辑结构(数据项的名字、类型、取值范围等),数据之间的联系,数据有关的安全性、完整性要求外模式:(子模式/用户模式)数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据库和逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的系统的逻辑表示。一个数据库可以有多个外模式。外模式的地位:介于模式与应用之间模式与外模式的关系:一对多。外模式通常是模式的子集。一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求。对模式中同一数据,在外模式中的结构
6、、类型、长度、保密级别等都可以不同。外模式与应用的关系:一对多。同一外模式也可以为某一用户的多个应用系统所使用但一个应用程序只能使用一个外模式内模式:存储模式或内视图)是数据物理结构和存储方式的描述,是数据在数据库内部实际存储的表示方式:记录的存储方式(顺序,B 树,hash 方法存储),索引的组织方式,数据是否压缩存储,数据是否加密。数据存储记录结构的规定,一个数据库只有一个内模式三级模式的优点三级模式的优点:(1)保证数据的独立性(内模式与模式分开物理独立;外模式与模式分开逻辑独立)(2)简化用户窗口 (3)有利于数据共享 (4)利于数据的安全保密(5)数据存储由 DBMS 管理(用户不用
7、考虑存取路径等细节)(完整)数据库系统概论知识点整理(word 版可编辑修改)二级映像功能二级映像功能:(1)外模式/模式映像(应用可扩充性)定义外模式(局部逻辑结构)与模式(全局逻辑结构)之间的对应关系,映象定义通常包含在各自外模式的描述中,每一个外模式,数据库系统都有一个外模式模式映象.用途:保证数据的逻辑独立性当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性.(2)模式/内模式映像(空间利用率,存取效率)模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构
8、之间的对应关。数据库中模式内模式映象是唯一的.该映象定义通常包含在模式描述中.用途:保证数据的物理独立性当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式内模式映象,使模式保持不变。应用程序不受影响.保证了数据与程序的物理独立性,简称数据的物理独立性。优点:优点:(1)保证了数据库外模式的稳定性.(2)从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。(3)数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?什么叫数据与
9、程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?1、数据与程序的逻辑独立性:1、数据与程序的逻辑独立性:当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变.从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻(完整)数据库系统概论知识点整理(word 版可编辑修改)辑独立性。2、数据与程序的物理独立性2、数据与程序的物理独立性:当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式内模式映象,使模式保持不变。应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。数据库管理系统在三级模式之间
10、错提供的二层影响保证了数据系统中的数据具有较高的逻辑独立性和物理独立性。数据库系统的组成 数据库系统的组成 硬件平台及数据库,软件,人员第二章:关系数据库第二章:关系数据库关系的完整性约束关系的完整性约束实体完整性和参照完整性:关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持.用户定义的完整性:应用领域需要遵循的约束条件,体现了具体领域中的语义约束。外码,主码,候选码的概念外码,主码,候选码的概念候选码候选码:若关系中的某一属性组的职能唯一地标识一个元组,则称该属性组为候选码。主码主码:若一个关系有多个候选码,则选定期中一个为主码.外部码外部码:设 F 是基本关系
11、R 的一个或一组属性。但不是关系 R 的码,如果 F 与基本关系 S的主码 K 想对应,则称 F 是基本关系 R 的外部码,简称外码.关系的 3 类完整性约束概念关系的 3 类完整性约束概念实体完整性实体完整性:若属性(指一个或一组属性)A 是基本关系 R 的主属性,A 不能取空值。参照完整性参照完整性:若属性(或属性组)F是基本关系R的外码,它是基本关系S的主码K相对应(基本关系 R 和 S 不一定是不同的关系),则对于 R 中每个元组在 F 上的值必须为:或者取空值(F的每个属性值均为空值);或者等于 S 中某个元组的主码值。用户定义的完整性用户定义的完整性:针对某一具体关系数据库的约束条
12、件。反映某一具体应用所设计的数据必须满足的语义要求。(完整)数据库系统概论知识点整理(word 版可编辑修改)关系操作的特点,关系代数中的各种运算关系操作的特点,关系代数中的各种运算关系操作的特点关系操作的特点是集合操作方式,即操作的对象和结果是集合.关系代数关系代数 1、并(RS)仍为 n 目关系,由属于 R 或属于 S 的元组组成。RS=tt Rt S 2、差(R S)仍为 n 目关系,由属于 R 而不属于 S 的所有元组组成.R S=t|tRtS 3、交(RS)仍为 n 目关系,由既属于 R 又属于 S 的元组组成.RS=t|t Rt S RS=R(RS)4、笛卡尔积 R:n 目关系,k
13、1 个元组;S:m 目关系,k2 个元组;RS。9、选择:选择又称为限制(Restriction):对元组按照条件进行筛选。在关系 R 中选择满足给定条件的诸元组F(R)=t|tRF(t)=真.10、投影:投影运算符的含义:从 R 中选择出若干属性列组成新的关系 A(R)=tA t R A:R 中的属性列投影操作主要是从列的角度进行运算.但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)。11、连接:连接也称为连接:两张表中的元组有条件的串接。从两个关系的笛卡尔积中选取属性间满足一定条件的元组 R S=|tr Rts StrAtsB 外连接:如果把舍弃的元组也保存在结果
14、关系中,而在其他属性上填空值(Null),这种连接就叫做外连接。左外连接:如果只把左边关系 R 中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或 LEFT JOIN)。右外连接:如果只把右边关系 S 中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或 RIGHT JOIN)。12、除:给定关系 R(X,Y)和 S(Y,Z),其中 X,Y,Z 为属性组;R 中的 Y 与 S 中的 Y 可以有不同的属性名,但必须出自相同的域集;R 与 S 的除运算得到一个新的关系 P(X),P(完整)数据库系统概论知识点整理(word 版可编辑修改)是 R 中满足下列条件的元组
15、在 X 属性列上的投影第三章:关系数据库标准语言 SQL第三章:关系数据库标准语言 SQL注意:SQL(Oracle 除外)一般不提供修改视图定义和索引定义的操作,需要先删除再重建定义基本表:CREATE TABLE 表名CREATE TABLE 表名(列名 数据类型 列级完整性约束条件(列名 数据类型 列级完整性约束条件,列名 ,列名 ,表级完整性约束条件 );,表级完整性约束条件 );列级完整性约束-涉及到该表的一个属性NOT NULL:非空值约束UNIQUE:唯一性(单值约束)约束PRIMARY KEY:主码约束DEFAULT 默认值:默认(缺省)约束Check (逻辑表达式):核查约束
16、,定义校验条件NOT NULL:非空值约束UNIQUE:唯一性(单值约束)约束PRIMARY KEY:主码约束DEFAULT 默认值:默认(缺省)约束Check (逻辑表达式):核查约束,定义校验条件表级完整性约束-涉及到该表的一个或多个属性。UNIQUE(属性列列表):限定各列取值唯一PRIMARY KEY(属性列列表):指定主码(完整)数据库系统概论知识点整理(word 版可编辑修改)FOREIGN KEY(属性列列表)REFERENCES):检查约束PRIMARY KEY 与 UNIQUE 的区别?例:建立“学生”表 Student,学号是主码,姓名取值唯一 CREATE TABLE S
17、tudent (Sno CHAR(9)PRIMARY KEY,/主码*/Sname CHAR(20)UNIQUE,/Sname 取唯一值/Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));数据类型数据类型修改基本表:ALTER TABLE 表名:ALTER TABLE 表名 ADD 完整性约束 ADD 完整性约束 DROP 完整性约束名 DROP 数据类型;ALTER COLUMN列名 数据类型;例:向 Student 表增加增加“入学时间”列,其数据类型为日期型ALTER TABLE Student ADD ADD S_entrance DATE;不论基本
18、表中原来是否已有数据,新增加的列一律为空值将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为改为整数(完整)数据库系统概论知识点整理(word 版可编辑修改)ALTER TABLE Student ALTER COLUMN ALTER COLUMN Sage INT;注:修改原有的列定义有可能会破坏已有数据 增加课程名称必须取唯一值的约束条件.ALTER TABLE Course ADD UNIQUE(Cname);直接删除属性列删除属性列:(新标准)例:ALTER TABLE Student Drop SageDrop Sage;删除基本表:DROP TABLE 表名 RESTRIC
19、T|CASCADE;:DROP TABLE;DROP INDEX 索引名;删除索引时,系统会从数据字典中删去有关该索引的描述。例:删除 Student 表的 Stusname 索引:DROP INDEX Stusname2、数据查询:2、数据查询:基本格式单表查询 单表查询 选择表中的若干列(投影)查询指定列(相当于A(R),A=A1,A2,An)例;查询全体学生的学号与姓名SELECT Sno,SnameFROM Student;查询全部列:在 SELECT 关键字后面列出所有列名按用户指定顺序显示.将指定为*按关系模式中的属性顺序显示。例:查询全体学生的详细记录(完整)数据库系统概论知识点
20、整理(word 版可编辑修改)SELECT Sno,Sname,Ssex,Sdept,SageFROM Student;或 SELECT FROM Student;P.S:SELECT 子句的目标列表达式可以为:查询经过计算的值例:查全体学生的姓名及其出生年份SELECT Sname,2011Sage /*假定当年的年份为 2011 年/FROM Student;输出结果:Sname 2011Sage李勇 1991刘晨 1992字符串常量、函数例:查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名SELECT Sname,Year of Birth:,2004-Sage,ISLO
21、WER(Sdept)FROM Student;输出结果:Sname Year of Birth:2004Sage ISLOWER(Sdept)李勇 Year of Birth:1984 cs刘晨 Year of Birth:1985 is列别名SELECT Sname as NAME,Year of Birth:as BIRTH,(完整)数据库系统概论知识点整理(word 版可编辑修改)2011Sage as BIRTHDAY,LOWER(Sdept)as DEPARTMENTFROM Student;输出结果:NAME BIRTH BIRTHDAY DEPARTMENT-李勇 Year of
22、 Birth:1991 cs刘晨 Year of Birth:1992 is选择表中的若干元组(选择)消除重复性:指定 DISTINCT 关键词,去掉表中重复的行 SELECT DISTINCTDISTINCT Sno FROM SC;注意 DISTINCT 短语的作用范围是所有目标列 错误的写法 SELECT DISTINCT Cno,DISTINCT Grade FROM SC;正确的写法 SELECT DISTINCT Cno,Grade FROM SC;SELECT 子句缺省情况是保留重复元组(ALL),SELECT 子句缺省情况是保留重复元组(ALL),例:查询选修了课程的学生学号。
23、SELECT Sno FROM SC;SELECT Sno FROM SC;等价于:SELECT ALL Sno FROM SC;查询满足条件的元组WHERE 子句常用的查询条件(相当于F)(完整)数据库系统概论知识点整理(word 版可编辑修改)比较大小使用比较运算符 或逻辑运算符 NOT +比较运算符例:查询计算机科学系全体学生的名单SELECT SnameFROM StudentWHERE Sdept=CS;例:查询所有年龄在 20 岁以下的学生姓名及其年龄SELECT Sname,Sage FROM Student WHERE Sage 20;/NOT Sage=20确定范围 BETW
24、EEN AND ETWEEN AND NOT BETWEEN AND NOT BETWEEN AND 例;查询年龄在 2023 岁(包括 20 岁和 23 岁)之间的学生的姓名、系别和年龄SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23;/Sage=20 and Sage=23例:查询年龄不在 2023 岁之间的学生姓名、系别和年龄SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 AND 23;/Sage20 or Sage23确定集合 IN,N
25、OT IN 值表 IN,NOT IN 值表 (完整)数据库系统概论知识点整理(word 版可编辑修改)例:查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别SELECT Sname,SsexFROM StudentWHERE Sdept IN(IS,MA,CS);例:查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别SELECT Sname,SsexFROM StudentWHERE Sdept NOT IN(IS,MA,CS);自负匹配NOT LIKE NOT LIKE 匹配串为固定字符串例:查询学号为 200215121 的学生的详细情况.SELECT*S
26、ELECT FROM Student 等价于:FROM Student WHERE Sno LIKE 200215121;WHERE Sno=200215121;匹配串为含通配符的字符串%:代表任意长度(可以是 0)的字符串_:代表任意单个字符字符串本身就含有%或 _ 时,在 或 _ 之前加上转义符“要使用 ESCAPE 换码字符 将通配符转义为普通字符。如果 要作为一个普通字符,用连续两个 表示一个真正的。例:查询以DB_开头,且倒数第 3 个字符为 i 的课程的详细情况。SELECT FROM CourseWHERE Cname LIKE DB_%i_ _ ESCAPE ;(完整)数据库系
27、统概论知识点整理(word 版可编辑修改)涉及空值的查询 IS NULL 或 IS NOT NULL “IS”不能用“=代替例:查所有有成绩的学生学号和课程号SELECT Sno,CnoFROM SCWHERE Grade IS NOT NULL;多重条件查询:AND 和 OR 来联结多个查询条件,AND 的优先级高于 OR,可以用括号改变优先级,可用来实 现多种其他谓词。NOT INNOT INNOT BETWEEN AND NOT BETWEEN AND 改写 例:查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别SELECT Sname,SsexFROM Stude
28、ntWHERE Sdept IN(IS,MA,CS)可改写为:SELECT Sname,SsexFROM StudentWHERE Sdept=IS OR Sdept=MA OR Sdept=CS ORDER BYORDER BY 子句:对查询结果排序 可以按一个或多个属性列排序:升序:ASC;降序:DESC;缺省值为升序.当排序列含空值时:空值最大ASC:排序列为空值的元组最后显示;DESC:排序列为空值的元组最先显示。例:查询选修了 3 号课程的学生的学号及其成绩,查询结果按分数降序排列SELECT Sno,Grade(完整)数据库系统概论知识点整理(word 版可编辑修改)FROM SC
29、WHERE Cno=3 ORDER BY Grade DESC;聚集函数:对查询结果集中的某列进行计算或统计。计数计数 COUNT(DISTINCTALL*)COUNT(DISTINCT|ALL 列名)计算总和计算总和 SUM(DISTINCTALL 列名)计算平均值计算平均值 AVG(DISTINCT|ALL)MIN(DISTINCT|ALL 列名)例:查询学生 200215012 选修课程的总学分数SELECT SUM(Ccredit)FROM SC,CourseWHERWHER Sno=200215012 AND SC.Cno=Course.Cno;注:除 Count(),都要跳过空值;
30、Where 子句不能使用聚集函数。GROUP BY 子句:对查询结果分组。用途细化聚集函数的作用对象未对查询结果分组,聚集函数将作用于整个查询结果对查询结果分组后,聚集函数将分别作用于每个组使用 GROUP BY GROUP BY 后:其 SELECT 子句的列名列表中只能出现分组属性和集函数。如果分组后还要按照条件对这些组进行筛选,可使用 having having 短语指定筛选条件例:查询选修了 3 门以上课程的学生学号SELECT SnoFROM SCGROUP BY SnoHAVING COUNT()3;(完整)数据库系统概论知识点整理(word 版可编辑修改)例:查询有 3 门以上课
31、程是 90 分以上学生的学号及(90 分以上的)课程数 SELECT Sno,COUNT(*)FROM SCWhere Grade 90GROUP BY SnoHAVING COUNT(*)3;HAVING 短语与 WHERE 子句的区别:作用对象不同WHERE 子句作用于基表或视图,从中选择满足条件的元组HAVING 短语作用于组,从中选择满足条件的组。*连接查询*p100 页*连接查询*p100 页*嵌套查询*p104 页 *重点*嵌套查询*p104 页 *重点数据更新数据更新(1)插入数据(1)插入数据插入元组INSERTINSERTINTO 表名(,属性列 2)INTO 表名(,属性列
32、 2)VALUES(常量 1,)VALUES(常量 1,)功能:将新元组插入指定表中;新元组的属性列 1 的值为常量 1,属性列 2 的值为常量2,。INTO 子句:属性列的顺序可与表定义中的顺序不一致,但须指定列名;没有指定属性列,表示要插入的是一条完整的元组;指定部分属性列,未指定的属性列取空值,具有 NOT NULL的属性列除外.VALUES 子句:提供的值必须与 INTO 子句匹配,值的个数,值的类型。例:将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18(完整)数据库系统概论知识点整理(word 版可编辑修改)岁)插入到 Student 表中I
33、NSERTINTO Student(Sno,Sname,Ssex,Sdept,Sage)VALUES(200215128,陈冬,男,IS,18);例:将学生张成民的信息插入到 Student 表中INSERTINTO StudentVALUES(200215126,张成民,男,18,CS);例:插入一条选课记录(200215128,1 )。INSERTINTO SC(Sno,Cno)VALUES(200215128,1);RDBMS 将在新插入记录的 Grade 列上自动地赋空值。或者:INSERTINTO SCVALUES(200215128 ,1 ,NULL);因为没有指出 SC 的属性名
34、,在 GRADE 列上要明确给出空值插入子查询结果插入子查询结果Insert Into)子查询(select 等);(2)修改数据(2)修改数据UPDATE 表名UPDATE 表名SET =SET =(完整)数据库系统概论知识点整理(word 版可编辑修改)WHERE 条件;WHERE 条件;SET 子句:指定修改方式,要修改的列,修改后取值:表达式。WHERE 子句:指定要修改的元组,,缺省表示要修改表中的所有元组。功能:修改指定表中满足 WHERE 子句条件的元组.修改某一个元组的值例:将学生 200215121 的年龄改为 22 岁UPDATE StudentSET Sage=22WHE
35、RE Sno=200215121;修改多个元组的值例:将所有学生的年龄增加 1 岁UPDATE StudentSET Sage=Sage+1;带子查询的修改语句 子查询须放在比较运算符之后例:将计算机科学系全体学生的成绩置零。UPDATE SCSET Grade=0WHERE CS=(SELETE SdeptFROM StudentWHERE Student。Sno=SC.Sno);(3)删除数据(3)删除数据DELETEDELETEFROM FROM (完整)数据库系统概论知识点整理(word 版可编辑修改)WHERE ;WHERE ;功能:删除指定表中满足 WHERE 子句条件的元组。WH
36、ERE 子句:指定要删除的元组;缺省表示要删除表中的全部元组,表的定义仍在数据字典中。删除某一个元组的值例:删除学号为 200215128 的学生记录DELETEFROM StudentWHERE Sno=200215128 ;删除多个元组的值例:删除所有的学生选课记录DELETEFROM SC;带子查询的删除语句例:删除计算机科学系所有学生的选课记录DELETEFROM SCWHERE CS=(SELETE SdeptFROM StudentWHERE Student.Sno=SC.Sno);4、视 图4、视 图特点:虚表,是从一个或几个基本表(或视图)导出的表;只存放视图的定义,不存放视图
37、对应的数据;基表中的数据发生变化,从视图中查询出的数据也随之改变。(完整)数据库系统概论知识点整理(word 版可编辑修改)基于视图的操作:查询、删除、受限更新、定义基于该视图的新视图。(1)定义视图(1)定义视图建立视图CREATE VIEW 视图名 (列名 ,列名)CREATE VIEW 视图名 (列名 ,AS 子查询WITH CHECK OPTION;WITH CHECK OPTION;子查询:不允许含有 ORDER BY 子句和 DISTINCT 短语.WITH CHECK OPTION:表示对视图进行 UPDATE,INSERT 和 DELETE 操作时要保证更新、插入或删除的行满足
38、视图定义中的谓词条件(即子查询中的条件表达式).组成视图的属性列名:全部省略或全部指定,但在下列三种情况下必须明确指定组成视图的所有列名:某个目标列不是单纯的属性名,而是聚集函数或列表达式;多表连接时选出了几个同名列作为视图的字段;需要在视图中为某个列启用新的名字。RDBMS 执行 CREATE VIEW 语句时只是把视图定义存入数据字典,并不执行其中的 SELECT 语句。在对视图查询时,按视图的定义从基本表中将数据查出。行列子集视图:从单个基本表导出,只是去掉了基本表的某些行和某些列保留了主码例:建立信息系学生的视图CREATE VIEW IS_StudentAS SELECT Sno,S
39、name,SageFROM StudentWHERE Sdept=IS;WITH CHECK OPTION 例:建立信息系学生的视图,并要求进行修改和插入操作时仍需保证(完整)数据库系统概论知识点整理(word 版可编辑修改)该视图只有信息系的学生 CREATE VIEW IS_StudentAS SELECT Sno,Sname,SageFROM StudentWHERE Sdept=ISWITH CHECK OPTION;加上了 WITH CHECK OPTION 子句:RDBMS 对 IS_Student 视图的更新操作:修改操作:自动加上 Sdept=IS 的条件;删除操作:自动加上
40、Sdept=IS 的条件;插入操作:自动检查 Sdept属性值是否为IS。如果不是,则拒绝该插入操作.如果没有提供 Sdept 属性值,则自动定义 Sdept 为IS。基于多个基表的视图例:建立信息系选修了 1 号课程的学生视图CREATE VIEW IS_S1(Sno,Sname,Grade)AS SELECT Student.Sno,Sname,GradeFROM Student,SCWHERE Sdept=IS ANDStudent。Sno=SC.Sno ANDSC。Cno=1;基于视图的视图例:建立信息系选修了 1 号课程且成绩在 90 分以上的学生的视图CREATE VIEW IS_
41、S2AS(完整)数据库系统概论知识点整理(word 版可编辑修改)SELECT Sno,Sname,GradeFROM IS_S1WHERE Grade=90;由于视图中的数据不会实际存储,所以定义视图时可根据应用的需要,设置一些派生属性列或虚拟列,以便于查询和统计.以 SELECT*方式创建的视图可扩充性差,应尽可能避免。缺点:修改基表 Student 的结构后,Student 表与 F_Student 视图的映象关系被破坏,导致该视图不能正确工作.删除视图 DROP VIEW 视图名;DROP VIEW 视图名;该语句从数据字典中删除指定的视图定义。如果该视图上还导出了其他视图,使用 CA
42、SCADE级联删除语句,把该视图和由它导出的所有视图一起删除。删除基表时,由该基表导出的所有视图定义都必须显式地使用 DROP VIEW 语句删除。例:删除视图 BT_S:DROP VIEW BT_S;删除视图 IS_S1:拒绝执行级联删除:DROP VIEW IS_S1 CASCADE;(2)查询视图(2)查询视图:查询视图与查询基本表相同,视图定义后,就可以像对待基本表一样对视图进行查询(SELECT)操作。视图消解法(View Resolution)进行有效性检查,检查查询的表、视图等是否存在.如果存在,则从数据字典中取出视图的定义;转换成等价的对基本表的查询,把视图定义中的子查询与用户
43、的查询结合起来;执行修正后的查询。例:在信息系学生的视图中找出年龄小于 20 岁的学生SELECT Sno,SageFROM IS_Student(完整)数据库系统概论知识点整理(word 版可编辑修改)WHERE Sage=90;S_G 视图的子查询定义:CREATE VIEW S_G(Sno,Gavg)AS SELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;(3)更新视图(3)更新视图DBMS 实现视图更新的方法:转换为对基本表的更新.视图消解法(View Resolution)。只有对成为“可更新”视图才能进行更新操作.SQL2 对“可更新”视图给出正式定
44、义:从关系 R 选出某些属性(用 select 而不是 select distinct)定义的视图,R 本身可以是可更新的视图;Where 中不能嵌套涉及 R 的子查询;Select 必须包括足够多的属性,所有 not null 的属性必须包括。对于视图元组的更新操作(INSERT、DELETE、UPDATA),有以下三条规则:如果一个视图是从多个基本表使用联接操作导出的,那么不允许对这个视图执行更新操作。(完整)数据库系统概论知识点整理(word 版可编辑修改)如果在导出视图的过程中,使用了分组和聚集函数操作,也不允许对这个视图执行更新操作。行列子集视图可以执行更新操作.在 SQL2 中,允
45、许更新的视图在定义时,必须加上“WITH CHECK OPTION”短语。DBMS 在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新。例:将信息系学生视图 IS_Student 中学号 200215122 的学生姓名改为“刘辰”。UPDATE IS_StudentSET Sname=刘辰WHERE Sno=200215122;转换后的语句:UPDATE StudentSET Sname=刘辰WHERE Sno=200215122 AND Sdept=IS;例:向信息系学生视图 IS_S 中插入一个新的学生记录:200215129,赵新,20 岁INSERTINTO
46、 IS_StudentVALUES(95029,赵新,20);转换为对基本表的更新:INSERTINTO Student(Sno,Sname,Sage,Sdept)VALUES(200215129,赵新,20,IS);例:删除信息系学生视图 IS_Student 中学号为 200215129 的记录 DELETEFROM IS_Student(完整)数据库系统概论知识点整理(word 版可编辑修改)WHERE Sno=200215129;转换为对基本表的更新:DELETEFROM StudentWHERE Sno=200215129 AND Sdept=IS;更新视图的限制:一些视图是不可更新
47、的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新.对其他类型视图的更新不同系统有不同限制:(1)若视图是由两个以上基本表导出的,则此视图不允许更新(2)若视图的字段来自字段表达式或常数,则不允许对此视图执行 INSERT 和 UPDATE 操作,但允许执行 DELETE 操作.(3)若视图的字段来自集函数,则此视图不允许更新。(4)若视图定义中含有 GROUP BY 子句,则此视图不允许更新.(5)若视图定义中含有 DISTINCT 短语,则此视图不允许更新.(6)若视图定义中有嵌套查询,并且内层查询的 FROM 子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。(7
48、)一个不允许更新的视图上定义的视图也不允许更新第四章:数据库的安全性第四章:数据库的安全性计算机系统的三类安全性问题计算机系统的三类安全性问题技术安全,管理安全,政策法律数据库安全性控制(6 种)数据库安全性控制(6 种)1.用户标识与鉴别 用户标识,口令2.存取控制3.自主存取控制方法:3.自主存取控制方法:定义各个用户对不同数据对象的存取权限.当用户要访问数据库时,首先要检查其存取权限,以防止非法用户对数据库进行存取。“自主存取控制”中“自主”的(完整)数据库系统概论知识点整理(word 版可编辑修改)含义:用户可以将自己所拥有的存取权限“自主”地授予他人,即用户具有一定的“自主权。4.授
49、权与收回语句.4.授权与收回语句.GRANT 语句和 REVOKE 语句实现关系数据库系统中存取控制权限:1、GRANT(授权)GRANT 语句的一般格式:GRANT 语句的一般格式:GRANT 权限,。.GRANT 权限,。.ON 对象名,对象类型 ON 对象名,对象类型 TO,用户 。.TO,用户 。.WITH GRANT OPTION;WITH GRANT OPTION;将对指定操作对象的指定操作权限授予指定的用户发出 GRANT:DBA,数据库对象创建者(即属主 Owner),拥有该权限的用户接受权限的用户:一个或多个具体用户;PUBLIC(全体用户)。例:把查询 Student 表权
50、限授给用户 U1GRANT SELECT ON TABLE Student TO U1;例:把查询 Student 表和修改学生学号的权限授给用户 U4 GRANT UPDATE(Sno),SELECT ON TABLE Student TO U4;对属性列的授权时必须明确指出相应属性列名 2、REVOKE:授予的权限可以由 DBA 或其他授权者用 REVOKE 语句收回REVOKE 语句的一般格式为:REVOKE 语句的一般格式为:REVOKE,权限.REVOKE,权限.(完整)数据库系统概论知识点整理(word 版可编辑修改)ON 对象类型,对象名 ON 对象类型,,用户。.CASCADE