计算机系数据库整理资料
来源:小侦探旅游网
[例1]定义一个学生-课程模式S-T CREATE SCHEMA AUTHORIZATION WANG; “S-T” Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 查询指定列 SELECT Sname,Sno,Ssex//FROM Student//WHERE Sname NOT LIKE '刘%'; [例19] 查询DB_Design课程的课程号和学分。 SELECT Cno,Ccredit//FROM Course//WHERE Cname LIKE 'DB\\_Design' SELECT Student.Sno, Sname//FROM Student, SC// WHERE Student.Sno = SC.Sno AND // SC.Cno= ‘2’ AND SC.Grade > 90; [例38]查询每个学生的学号、姓名、选修的课程名及成绩 SELECT Student.Sno,Sname,Cname,Grade// FROM Student,SC,Course // [例2]CREATE SCHEMA AUTHORIZATION WANG; <模式名>隐含为用户名WANG,.如果没有指定<模式名>,那么<模式名>隐含为<用户名> 例3] CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT,COL3 CHAR(20), COL4 NUMERIC(10,3),COL5 DECIMAL(5,2)); 为用户ZHANG创建了一个模式TEST,并在其中定义了一个表TAB1。 例4] DROP SCHEMA ZHANG CASCADE; 删除模式ZHANG同时该模式中定义的表TAB1也被删除 [例1] 查询全体学生的学号与姓名。 ESCAPE '\\‘; SELECT Sno,Sname / [例20] 查询以\"DB_\"开头,且倒数第3个字FROM Student; 符为 i的课程的详细情况。 [例2] 查询全体学生的姓名、学号、所在系。 SELECT *//FROM Course//WHERE WHERE Student.Sno = SC.Sno and SELECT Sname,Sno,Sdept Cname LIKE 'DB\\_%i_ _' ESCAPE ' \\ ‘; SC.Cno = Course.Cno; / FROM Student; [例21] 某些学生选修课程后没有参加考试,例39] 查询与“刘晨”在同一个系学习的学[例3] 查询全体学生的详细记录。 所以有选课记录,但没 有考试成绩。查询缺生。此查询要求可以分步来完成 SELECT Sno,Sname,Ssex,Sage,Sdept 少成绩的学生的学号和相应的课程号。 ① 确定“刘晨”所在系名 SELECT Sdept /FROM Student; SELECT Sno,Cno//FROM SC//WHERE // FROM Student // 或 SELECT *FROM Student; [例4] 查全体学生的姓名及其出生年份。 SELECT Sname,2004-Sage /*假定当年的年份为2004年*/FROM Student; 例5] 查询全体学生的姓名、出生年份和所Grade IS NULL WHERE Sname= ' 刘晨 ';结果为: CS [例22] 查所有有成绩的学生学号和课程号。 ② 查找所有在IS系学习的学生。 SELECT Sno,Cno//FROM SC//WHERE SELECT Sno,Sname,Sdept // Grade IS NOT NULL; [例23] 查询计算机系年龄在20岁以下的学生姓名。 SELECT Sname//FROM Student//WHERE Sdept= 'CS' AND Sage<20; [例24] 查询选修了3号课程的学生的学号 FROM Student // WHERE Sdept= ' CS '; SELECT S1.Sno,S1.Sname,S1.Sdept//FROM Student S1,Student S2// WHERE S1.Sdept = S2.Sdept [例5] 建立“学生”表Student,学号是主有系,要求用小写字母表示所有系名 码,姓名取值唯一。 SELECT Sname,‘Year of Birth: ', CREATE TABLE Student 2004-Sage ,ISLOWER(Sdept)/FROM (Sno CHAR(9) PRIMARY KEY, Student ; Sname CHAR(20) UNIQUE, Ssex 例6] 查询选修了课程的学生学号。 CHAR(2),Sage SMALLINT,Sdept SELECT Sno FROM SC;等价于:CHAR(20) ); SELECT ALL Sno FROM SC; [例6] 建立一个“课程”表Course [例7] 查询计算机科学系全体学生的名 CREATE TABLE Course( Cno 单。 CHAR(4) PRIMARY KEY,Cname SELECT Sname/ FROM CHAR(40), Cpno CHAR(4),Ccredit Student/WHERE Sdept=‘CS’; SMALLINT,FOREIGN KEY (Cpno) [例8] 查询所有年龄在20岁以下的学生姓REFERENCES Course(Cno) ); 例7] 建立一个“学生选课”表SC CREATE TABLE SC (Sno 及其成绩,查询结果按分数降序排列。 AND//S2.Sname = '刘晨'; SELECT Sno,Grade//FROM SC//WHERE 例40]查询选修了课程名为“信息系统”的学Cno= ' 3 '//ORDER BY Grade DESC; 生学号和姓名 [例25] 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。 SELECT *//FROM Student//ORDER BY Sdept,Sage DESC; [例26] 查询学生总人数。SELECT SELECT Sno,Sname // FROM Student// WHERE Sno IN (SELECT Sno //FROM SC // WHERE Cno IN(SELECT Cno FROM Course //WHERE Cname= ‘信息系统’)); 用连接查询实现[例40] FROM Student,SC,Course//WHERE Student.Sno = SC.Sno AND// SC.Cno = Course.Cno AND//Course.Cname=‘信息系统’; 例:假设一个学生只可能在一个系学习,并且必须属于一个系,则在[例39]可以用 = 代替IN :SELECT Sno,Sname,Sdept//FROM Student//WHERE Sdept =(SELECT Sdept// FROM Student//WHERE Sname= ‘刘晨’); [例41]找出每个学生超过他选修课程平均成绩的课程号。 SELECT Sno, Cno//FROM SC 名及其年龄。 COUNT(*)//FROM Student; SELECT Sname,Sage /FROM [例27] 查询选修了课程的学生人数。 Student / WHERE Sage < 20; SELECT COUNT(DISTINCT Sno)//FROM SC; [例28] 计算1号课程的学生平均成绩。 SELECT AVG(Grade)//FROM SC//WHERE Cno= ' 1 '; [例29] 查询选修1号课程的学生最高分数。 SELECT MAX(Grade)//FROM SC//WHER CHAR(9), Cno CHAR(4), Grade [例9] 查询考试成绩有不及格的学生的学SMALLINT, PRIMARY KEY (Sno,Cno), 号。 FOREIGN KEY (Sno) REFERENCES SELECT DISTINCT Sno/FROM SC/ Student(Sno),FOREIGN KEY (Cno) REFERENCES Course(Cno)); [例8]向Student表增加“入学时间”列,其数据类型为日期型。 ALTER TABLE S_entrance DATE; Student ADD WHERE Grade<60; [例10] 查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄 SELECT Sname,Sdept,Sage/FROM Cno= ‘ 1 ’; Student/WHERE Sage BETWEEN 20 [例30]查询学生200215012选修课程的总AND 23; 学分数。 [例11] 查询年龄不在20~23岁之间的学生SELECT SUM(Ccredit)//FROM SC, 姓名、系别和年龄 Course// SELECT Sname,Sdept,Sage/FROM WHER Sno='200215012' AND Student/ WHERE Sage NOT BETWEEN 20 AND 23; [例12]查询信息系(IS)、数学系(MA)和不论基本表中原来是否已有数据,新增加的列一律为空值。 [例9]将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。 ALTER TABLE Student ALTER COLUMN Sage INT; [例10]增加课程名称必须取唯一值的约束条件。 ALTER TABLE Course ADD SC.Cno=Course.Cno; x//WHERE Grade >=(SELECT [例31] 求各个课程号及相应的选课人数。 AVG(Grade)/// SELECT Cno,COUNT(Sno)//FROM FROM SC y//WHERE y.Sno=x.Sno); [例42] 查询其他系中比计算机科学某一学生年龄小的学生姓名和年龄 SELECT Sname,Sage//FROM Student//WHERE Sage < ANY (SELECT Sage// FROM Student//WHERE Sdept= ' 计算机科学系(CS)学生的姓名和性别。 SC//GROUP BY Cno; SELECT Sname,Ssex//FROM [例32] 查询选修了3门以上课程的学生学Student//WHERE Sdept IN ( 'IS','MA',号。 SELECT Sno//FROM SC// GROUP BY Sno//HAVING COUNT(*) >3; [例33] 查询每个学生及其选修课程的情况 UNIQUE(Cname); 'CS' ); [例11] 删除Student表:DROP TABLE [例13]查询既不是信息系、数学系,也不是计Student CASCADE 算机科学系的学生的姓名和性别。 [例12]若表上建有视图,选择RESTRICT时表不能删除 CREATE VIEW IS_Student / AS SELECT Sname,Ssex//FROM Student// WHERE Sdept NOT IN ( 'IS','MA','CS' ); [例14] 查询学号为200215121的学生的详SELECT Student.*,SC.*//FROM CS ')//AND Sdept <> „CS ' ; Student,SC//WHERE Student.Sno = 用聚集函数实现[例42] SC.Sno; SELECT Sname,[例34] 对[例33]用自然连接完成。 SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade// Sage//FROM /SELECT Sno,Sname,Sage/FROM 细情况。 Student/ SELECT * // FROM Student // WHERE Sdept='IS';DROP TABLE WHERE Sno LIKE ‘200215121'; Student RESTRICT; --ERROR: cannot drop table Student because other objects depend on it DROP TABLE Student CASCADE; --NOTICE: drop cascades to view IS_Student SELECT * FROM IS_Student;--ERROR: relation \" IS_Student \" does not exist [例13] CREATE CLUSTER INDEX Stusname ON Student(Sname);在Student表的Sname(姓名)列上建立一个聚簇索引 [例14]为学生-课程数据库中的Student,Course,SC三个表建 立索引。 CREATE UNIQUE INDEX Stusno ON 等价于: SELECT * //FROM Student //WHERE Sno = ' 200215121 '; [例15] 查询所有姓刘学生的姓名、学号和性别。 SELECT Sname,Sno,Ssex//FROM Student//WHERE Sname LIKE ‘刘%’; Student//WHERE Sage < // (SELECT MAX(Sage)// FROM Student//WHERE Sdept= „CS FROM Student,SC//WHERE ')//AND Sdept <> ' CS ‟; Student.Sno = SC.Sno [例43] 查询其他系中比计算机科学系所有例35]查询每一门课的间接先修课(即先修课学生年龄都小的学生姓名及年龄。 的先修课) SELECT FIRST.Cno,SECOND.Cpno//FROM Course FIRST,方法一:用ALL谓词 SELECT Sname,Sage//FROM Student//WHERE Sage < ALL (SELECT Sage// FROM Student//WHERE Sdept= ' CS ')//AND Sdept <> ' CS ‟; 方法二:用聚集函数 SELECT Sname,Sage//FROM Student//WHERE Sage < (SELECT MIN(Sage)// FROM Student//WHERE Sdept= ' CS ')//AND Sdept <>' CS ‟; [例16] 查询姓\"欧阳\"且全名为三个汉字的Course SECOND// 学生的姓名。 WHERE FIRST.Cpno = SECOND.Cno; SELECT Sname//FROM 例 36] 改写[例33] Student//WHERE Sname LIKE '欧阳__'; [例17] 查询名字中第2个字为\"阳\"字的学生的姓名和学号。 SELECT Sname,Sno//FROM Student//WHERE Sname LIKE ‘__阳%’; [例18] 查询所有不姓刘的学生姓名。 SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUT JOIN SC ON (Student.Sno=SC.Sno); [例37]查询选修2号课程且成绩在90分以上的所有学生 [例44]查询所有选修了1号课程的学生姓名。 用嵌套查询SELECT Sname//FROM Student//WHERE EXISTS (SELECT *// FROM SC//WHERE Sno=Student.Sno AND Cno= ' 1 '); 用连接运算 SELECT Sname//FROM Student, SC//WHERE Student.Sno=SC.Sno AND SC.Cno= '1'; [例45] 查询没有选修1号课程的学生姓名。 SELECT Sname//FROM Student//WHERE NOT EXISTS (SELECT *//FROM SC// WHERE Sno = Student.Sno AND Cno='1'); [例46] 查询选修了全部课程的学生姓名。 SELECT Sname//FROM Student//WHERE NOT EXISTS(SELECT *//FROM Course// WHERE NOT EXISTS(SELECT *// FROM SC//WHERE Sno= Student.Sno//AND Cno= Course.Cno)); [例47]查询至少选修了学生200215122选修的全部课程的学生号码。 用NOT EXISTS谓词表示: SELECT DISTINCT Sno//FROM SC SCX//WHERE NOT EXISTS// (SELECT *// FROM SC SCY// WHERE SCY.Sno = ' 200215122 ' AND//NOT EXISTS// (SELECT *// FROM SC SCZ// WHERE SCZ.Sno=SCX.Sno AND// SCZ.Cno=SCY.Cno)); [例48] 查询计算机科学系的学生及年龄不大于19岁的学生。 方法一:SELECT *//FROM Student//WHERE 'CS'//UNION//SELECT Student//WHERE Sage<=19; Sdept= *//FROM [例3] 插入一条选课记录( '200215128','1 ')。 INSERT//INTO SC(Sno,Cno)// VALUES (‘ 200215128 ’,‘ 1 ’); @INSERT//INTO SC//VALUES 200215128 ',' 1 ',NULL); (' 表与F_Student视图的映象关系被破坏,导致该视图不能正确工作。 [例8] 删除视图BT_S: DROP VIEW BT_S;\\ 删除视图IS_S1:DROP VIEW IS_S1;\\ 拒绝执行,,级联删除:DROP VIEW IS_S1 13.数据库的设计步骤:需求分析,概念设计,逻辑结构设计,物理结构设计,数据库实施,数据库运行和维护 14.需求分析:需求分析的任务,需求分析的方法,数据字典 15.概念结构设计:概念结构,概念结构设计的方法与步骤,数据抽象与局部试图设计,视图的集成 16.逻辑结构设计:E-R图向关系模型的转换,[例4] 对每一个系,求学生的平均年龄,并CASCADE; 把结果存入数据库。 [例9] 在信息系学生的视图中找出年龄小于第一步:建表CREATE TABLE 20岁的学生。 Dept_age// (Sdept CHAR(15) // SELECT Sno,Sage//FROM 数据模型的优化,设计用户子模式 Avg_age SMALLINT); IS_Student//WHERE Sage<20;IS_Student17.数据库物理设计内容:为关系模式选择存第二步:插入数据INSERT//INTO 视图的定义 取方法,设计关系,索引等数据库文件的物Dept_age(Sdept,Avg_age)// [例10] 查询选修了1号课程的信息系学生 理存储结构 SELECT Sdept,AVG(Sage)//FROM SELECT IS_Student.Sno,Sname//FROM 18. 数据库的运行和维护:数据库的转储和恢Student//GROUP BY Sdept; IS_Student,SC// 复,数据可的安全性,完整性控制,数据库[例5] 将学生200215121的年龄改为22岁 WHERE IS_Student.Sno =SC.Sno AND UPDATE Student//SET Sage=22//WHERE SC.Cno= '1'; Sno=' 200215121 '; 例11]在S_G视图中查询平均成绩在90分以[例6] 将所有学生的年龄增加1岁 UPDATE Student//SET Sage= Sage+1; 例7] 将计算机科学系全体学生的成绩置兴宁的监督,分析和改造,数据库的重组织与重构造 19.嵌入式SQL:1 嵌入式SQL的处理过程.2 上的学生学号和平均成绩 嵌入式SQL语句与主语言之间的通信.3 不SELECT *//FROM / S_G//WHERE 使用游标的SQL语句.4 使用游标的SQL语/Gavg>=90; 句.5 动态SQL 20. 存储过程.1 PL/SQL的块结构.2 变量常量的定义.3 控制结构.4 存储过程 21.ODBC编程.1 数据库互连概述.2 ODBC工作原理概述 .3 ODBC API 基础 .4 ODBC的工作流程 22.关系数据库系统的查询处理.1 查询处理步骤.2 实现查询操作的算法示例 23. 代数优化.1 关系代数表达式等价变换规则 .2 查询树的启发式优化 24.物理优化.1 基于启发式规则的存取路径选择优化.2 基于代价的优化 25. 数据库恢复技术10.1 事务的基本概念10.2 数据库恢复概述10.3 故障的种类10.4 恢复的实现技术 10.4.1 数据转储 10.4.2 登记日志文件 10.5 恢复策略10.5.1 事务故障的恢复10.5.2 系统故障的恢复 10.5.3 介质故障的恢复 10.6 具有检查点的恢复技术10.7 数据库镜像 26. 并发控制11.1 并发控制概述11.2 封锁11.3 活锁和死锁 11.3.1 活锁11.3.2 死锁 11.4 并发调度的可串行性.1 可串行化调度.2 冲突可串行化调度 11.5 两段锁协议 11.6 封锁的粒度11.6.1 多粒度封锁11.6.2 意向锁 第1章 绪论 1 .试述数据、数据库、数据库系统、数据库管理系统的概念。答: ( l )数据( Data ) :描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。数据与其语义是不可分的。 ( 2 )数据库( DataBase ,简称 DB ) :数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。 ( 3 )数据库系统( DataBas 。 Sytem ,简称 DBS ) :数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。解析数据库系统和数据库是两个概念。数据库系统是一个人一机系统,数据库是数据库系统的一个组成部分。 ( 4 )数据库管理系统( DataBase Management sytem ,简称 DBMs ) :数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。 DBMS 的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。解析 DBMS 是一个大型的复杂的软件系统,是计算机中的基础软件。 零。 S_G视图的子查询定义: CREATE VIEW UPDATE SC//SET Grade=0//WHERE S_G (Sno,Gavg)//AS //SELECT /Sno,'CS'= (SELETE Sdept// AVG(Grade)//FROM /SC//GROUP BY FROM Student//WHERE Student.Sno = SC.Sno); [例8] 删除学号为200215128的学生记录。 DELETE//FROM Student//WHERE Sno= 200215128 '; 例9] 删除所有的学生选课记录。 DELETE//FROM SC; [例10] 删除计算机科学系所有学生的选课记录。 DELETE//FROM SC//WHERE 'CS'= (SELETE Sdept// FROM Student//WHERE Sno; [例12] 将信息系学生视图IS_Student中学号200215122的学生姓名改为“刘辰”。 UPDATE/ IS_Student//SET Sname= '刘辰'//WHERE / Sno= ' 200215122 '; 转换后的语句:UPDATE /Student//SET Sname= '刘辰'//WHERE/ Sno= ' 200215122 ' AND Sdept= 'IS'; [例13] 向信息系学生视图IS_S中插入一个新的学生记录:200215129,赵新,20岁 INSERT//INTO IS_Student//VALUES(‘95029’,‘赵新’,20); 转换为对基本表的更新: INSERT//INTO / Student(Sno,Sname,Sage,Sdept)//VALUES(‘200215129 ','赵新',20,'IS' ); [例14]删除信息系学生视图IS_Student中学号为200215129的记录 DELETE//FROM IS_Student//WHERE Sno= ' 200215129 '; 转换为对基本表的更新: DELETE//FROM Student//WHERE Sno= ' 200215129 ' AND Sdept= 'IS'; 1. 数据模型组成要素:数据结构,数据操作和完整性约束。 2. 最常用的数据模型:层次模型,网状模型,关系模型,面向对象模型,对象关系模型。 3. 关系模型中常用的关系操作:查询操作和插入,杀出,修改操作 4. 关系的三类完整:实体完整性,参照完整性和用户定义的完整性 5. 关系代数:传统的集合运算(并,差,交,笛卡尔积),专门的关系运算(选择,投影,连接,除运算) 6. 计算机系统的三类安全性问题:技术安全,管理安全,政策法律 7. 计算机安全标准:TCSEC《DoD可信计算机系统评估准则》,CC 8. 数据库安全性控制:用户标识与鉴别,存取控制,自主存取控制(DAC)方法,授权与回收,数据库角色,强制存取控制(MAC)方法 9. 审计:用户级审计和系统级审计 方法二:SELECT DISTINCT *//FROM Student.Sno=SC.Sno); Student//WHERE Sdept= 'CS' OR 例1] 建立信息系学生的视图。 Sage<=19; CREATE VIEW IS_Student//AS //SELECT 例49] 查询选修了课程1或者选修了课程2的学生。 SELECT Sno//FROM SC//WHERE Cno=' 1 '//UNION//SELECT Sno//FROM SC// WHERE Cno= ' 2 '; [例50] 查询计算机科学系的学生与年龄不大于19岁的学生的交集 SELECT *//FROM Student//WHERE Sdept='CS' //INTERSECT//SELECT *// FROM Student//WHERE Sage<=19 例51] 查询选修课程1的学生集合与选修课程2的学生集合的交集 SELECT Sno//FROM SC//WHERE Cno=' 1 ' //INTERSECT// SELECT Sno//FROM SC//WHERE Cno='2 '; @SELECT Sno//FROM SC//WHERE Cno=' 1 ' AND Sno IN// (SELECT Sno//FROM SC//WHERE Cno=' 2 '); [例52] 查询计算机科学系的学生与年龄不大于19岁的学生的差集。 SELECT *//FROM Student// WHERE Sdept='CS'//EXCEPT//SELECT *// FROM Student// WHERE Sage <=19; @SELECT *//FROM Student//WHERE Sdept= 'CS' AND Sage>19 [例1] 将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。 INSERT//INTO Student (Sno,Sname,Ssex,Sdept,Sage)// VALUES ('200215128','陈冬','男','IS',18); [例2] 将学生张成民的信息插入到Student表中。 INSERT//INTO Student//VALUES (‘200215126’, ‘张成民’, ‘男’,18,'CS'); Sno,Sname,Sage// FROM Student//WHERE Sdept= 'IS'; 例2]建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生 。 CREATE VIEW IS_Student//AS //SELECT Sno,Sname,Sage// FROM Student//WHERE 'IS'//WITH CHECK OPTION; Sdept= [例3] 建立信息系选修了1号课程的学生视图。 CREATE VIEW IS_S1(Sno,Sname,Grade)//AS //SELECT Student.Sno,Sname,Grade// FROM Student,SC//WHERE Sdept= 'IS' AND//Student.Sno=SC.Sno AND//SC.Cno= '1'; [例4] 建立信息系选修了1号课程且成绩在90分以上的学生的视图。 CREATE VIEW IS_S2//AS//SELECT Sno,Sname,Grade//FROM IS_S1// WHERE Grade>=90; 例5] 定义一个反映学生出生年份的视图。 CREATE VIEW BT_S(Sno,Sname,Sbirth)//AS //SELECT Sno,Sname,2000-Sage// FROM Student; 例6] 将学生的学号及他的平均成绩定义为一个视图,假设SC表中“成绩”列Grade为数字型 CREAT VIEW S_G(Sno,Gavg)//AS 10.数据库的完整性是指数据的正确性和相容//SELECT Sno,AVG(Grade)// 性 FROM SC//GROUP BY Sno; 11.数据库设计特点:“三分技术,七分管理,[例7]将Student表中所有女生记录定义为一个视图 CREATE VIEW F_Student(F_Sno,name,sex,age,dept)//AS//SELECT *// FROM Student//WHERE Ssex=‘女’; 缺点:修改基表Student的结构后,Student十二分基础数据”;结构数据设计和行为处理设计相结合 12.数据库设计方法:计算机的基础知识,软件工程的处理和方法,程序设计的方法和技巧,数据库的基本知识,数据库设计知识,应用领用的知识, 3 .试述文件系统与数据库系统的区别和联系。答: 文件系统与数据库系统的区别是:文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据的安全性、完整性、并发控制和恢复能力。 文件系统与数据库系统的联系是:文件系统与数据库系统都是计算机系统中管理数据的软件。解析文件系统是操作系统的重要组成部分;而 DBMS 是独立于操作系统的软件。但是 DBMS 是在操作系统的基础上实现的;数据库中数据的组织和存储是通过操作系统中的文件系统来实现的。 5 .试述数据库系统的特点。答: 数据库系统的主要特点有: ( l )数据结构化数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。 ( 2 )数据的共享性高,冗余度低,易扩充数据库的数据不再面向某个应用而是面向整个系统,因此可以被多个用户、多个应用以多种不同的语言共享使用。由于数据面向整个系统,是有结构的数据,不仅可以被多个应用共享使用,而且容易增加新的应用,这就使得数据库系统弹性大,易于扩充。 ( 3 )数据独立性高数据独立性包括数据的物理独立性和数据的逻辑独立性。数据库管理系统的模式结构和二级映像功能保证了数据库中的数据具有很高的物理独立性和逻辑独立性。 ( 4 )数据由 DBMS 统一管理和控制数据库的共享是并发的共享,即多个用户可以同时存取数据库中的数据甚至可以同时存取数据库中同一个数据。。 6 .数据库管理系统的主要功能有哪些?答:( l )数据库定义功能; ( 2 )数据存取功能; ( 3 )数据库运行管理; ( 4 )数据库的建立和维护功能。 7 .试述数据模型的概念、数据模型的作用和数据模型的三个要素。答: 数据模型是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。一般地讲,数据模型是严格定义的概念的集合。这些概念精确描述了系统的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。 ( l )数据结构:是所研究的对象类型的集合,是对系统静态特性的描述。 ( 2 )数据操作:是指对数据库中各种对象(型)的实例(值)允许进行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。 ( 3 )数据的约束条件:是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。数据模型是数据库系统的基础。任何一个 DBMS 都以某一个数据模型为基础,或者说支持某一个数据模型。数据库系统中,模型有不同的层次。根据模型应用的不同目的,可以将模型分成两类或者说两个层次:一类是概念模型,是按用户的观点来对数据和信息建模,用于信息世界的建模,强调语义表达能力,概念简单清晰;另一类是数据模型,是按计算机系统的观点对数据建模,用于机器世界,人们可以用它定义、操纵数据库中的数据,一般需要有严格的形式化定义和一组严格定义了语法和语义的语言,并有一些规定和限制,便于在机器上实现。 8 .试述概念模型的作用。答: 概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。 9 .定义并解释概念模型中以下术语:实体,实体型,实体集,属性,码,实体联系图( E 一 R 图)答: 实体:客观存在并可以相互区分的事物叫实体。实体型:具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。实体集:同型实体的集合称为实体集。属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。码:惟一标识实体的属性集称为码。实体联系图( E 一 R 图):提供了表示实体型、属性和联系的方法: • 实体型:用矩形表示,矩形框内写明实体名; • 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来; • 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型( 1 : 1 , 1 : n 或 m : n )。 20 .试述数据库系统三级模式结构,这种结构的优点是什么?答: 数据库系统的三级模式结构由外模式、模式和内模式组成。(参见书上图 1 . 29 ) 外模式,亦称子模式或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。模式,亦称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式描述的是数据的全局逻辑结构。外模式涉及的是数据的局部逻辑结构,通常是模式的子集。内模式,亦称存储模式,是数据在数据库系统内部的表示,即对数据的物理结构和存储方式的描述。数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给 DBMs 管理,使用户能逻辑抽象地处理数据,而不必关心数据在计算机中的表示和存储。为了能够在内部实现这三个抽象层次的联系和转换,数据库系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。 22 .什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性? 答:数据与程序的逻辑独立性:当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。数据与程序的物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。数据库管理系统在三级模式之间提供的两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。 23 .试述数据库系统的组成。 答:数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。 24 . DBA 的职责是什么? 答:负责全面地管理和控制数据库系统。具体职责包括: ① 决定数据库的信息内容和结构; ② 决定数据库的存储结构和存取策略; ③ 定义数据的安全性要求和完整性约束条件; ④ 监督和控制数据库的使用和运行; ⑤ 改进和重组数据库系统。 25 .系统分析员、数据库设计人员、应用程序员的职责是什么?答系统分析员负责应用系统的需求分析和规范说明,系统分析员要和用户及 DBA 相结合,确定系统的硬件、软件配置,并参与数据库系统的概要设计。数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。数据库设计人员必须参加用户需求调查和系统分析,然后进行数据库设计。在很多情况下,数据库设计人员就由数据库管理员担任。应用程序员负责设计和编写应用系统的程序模块,并进行调试和安装。 1 .试述关系模型的三个组成部分。 答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 第3章 关系数据库标准语言SQL 2 .试述 sQL 的定义功能。 sQL 的数据定义功能包括定义表、定义视图和定义索引。 SQL 语言使用 cREATE TABLE 语句建立基本表, ALTER TABLE 语句修改基本表定义, DROP TABLE 语句删除基本表;使用 CREATE INDEX 语句建立索引, DROP INDEX 语句删除索引;使用 CREATE VIEW 语句建立视图, DROP VIEW 语句删除视图。 4.针对上题中建立的 4 个表试用 sQL 语言完成第二章习题 5 中的查询。 ( l )求供应工程 Jl 零件的供应商号码 SELECT JNAME FROM SPJ,S,J WHERE S.SNO=SPJ.SNO AND S.CITY='上海' AND J.JNO=SPJ.JNO (7)找出没有使用天津产的零件的工程号码。 注意: SELECT DISP JNO FROM SPJ WHERE JNO NOT IN (SELECT DIST JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY='天津') 适用于JNO是唯一或不唯一的情况. 注意: SELECT DIST JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY<>'天津'适用于JNO是唯一的情况 (8)把全部红色零件的颜色改成蓝色。 UPDATE P SET COLOR='蓝' WHERE COLOR='红' (9)由S5供给J4的零件P6改为由S3供应。 UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6' (10)从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。 A、DELETE FROM S WHERE SNO=’S2’ B、DELETE FROM SPJ WHERE SNO=‘S2’ (11)请将(S2,J6,P4,200)插入供应情况关系。 INSERT INTO SPJ VALUESSNO ; (‘S2’,‘J6’,‘P4’,200) SELECT DIST SNO FROM SPJ WHERE 6 .什么是基本表?什么是视图? JNO=‟J1‟ 答两者的区别和联系是什么?基本表是本身 ( 2 )求供应工程 Jl 零件 Pl 的供应商号码 SNO ; SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1' ( 3 )求供应工程 Jl 零件为红色的供应商号码 SNO ; SELECT SNO FROM SPJ,P WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红' 独立存在的表,在 sQL 中一个关系就对应一个表。视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。 7 .试述视图的优点。 答 ( l )视图能够简化用户的操作; ( 2 )视图使用户能以多种角度看待同一数据; ( 3 )视图对重构数据库提供了一定程度的逻辑独立性; ( 4 )视图能够对机密数据提供( 4 )求没有使用天津供应商生产的红色零件安全保护。 的工程号 JNO ; 第4章 数据库安全性 SELECT DIST JNO FROM SPJ 1 .什么是数据库的安全性? WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE S.CITY='天津' AND COLOR='红' AND S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)。 ( 5 )求至少用了供应商 Sl 所供应的全部零件的工程号 JNO ; 查询分为两步 A、查询S1供应商供应的零件号 SELECT DIST PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2) B、查询哪一个工程既使用P1零件又使用P2零件。 SELECT JNO FROM SPJ WHERE PNO='P1' AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2') 5.针对习题3中的四个表试用SQL语言完成以下各项操作: (1)找出所有供应商的姓名和所在城市。 SELECT SNAME,CITY FROM S (2)找出所有零件的名称、颜色、重量。 SELECT PNAME,COLOR,WEIGHT FROM P (3)找出使用供应商S1所供应零件的工程号码。 SELECT DIST JNO FROM SPJ WHERE SNO='S1' (4)找出工程项目J2使用的各种零件的名称及其数量。 SELECT PNAME,QTY FROM SPJ,P WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2' (5)找出上海厂商供应的所有零件号码。 SELECT PNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND CITY='上海' (6)出使用上海产的零件的工程名称。 答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 5 .试述实现数据库安全性控制的常用方法和技术。 答:实现数据库安全性控制的常用方法和技术有: ( l )用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。 ( 2 )存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如CZ 级中的自主存取控制( DAC ) , Bl 级中的强制存取控制(MAC )。 ( 3 )视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。 ( 4 )审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。 ( 5 )数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。 6 .什么是数据库中的自主存取控制方法和强制存取控制方法? 答:自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。 强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强 制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。 7 .SQL 语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。 答:SQL 中的自主存取控制是通过GRANT语句和REVOKE语句来实现的。如: GRANT SELECT , INSERT ON Student TO 王平 WITH GRANT OPTION ; 就将Student 表的SELECT 和INSERT 权限授予了用户王平,后面的“WITH GRANT OPTION ”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。 REVOKE INSERT ON Student FROM 王平CASCADE ; 就将Student 表的INSERT 权限从用户王平处收回,选项CASCADE 表示,如果用户王平将Student 的INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。 10. 为什么强制存取控制提供了更高级别的数据库安全性? 答:强制存取控制(MAC )是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别