数据库原理与实践教材练习题答案.doc

上传人:h**** 文档编号:179897 上传时间:2018-07-14 格式:DOC 页数:20 大小:253.50KB
下载 相关 举报
数据库原理与实践教材练习题答案.doc_第1页
第1页 / 共20页
数据库原理与实践教材练习题答案.doc_第2页
第2页 / 共20页
数据库原理与实践教材练习题答案.doc_第3页
第3页 / 共20页
数据库原理与实践教材练习题答案.doc_第4页
第4页 / 共20页
数据库原理与实践教材练习题答案.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、第 1 页 第一章 一、单项选择题 DBDCD ABBCC CADAD 二、填空题 1、文件系统 2、层次模型的 IMS 系统,网状模型的 DBTG 报告, E.F.Codd 3、数据的完整性,并发控制 4、操作系统,数据库管理系统 5、内 三、简答题 1、数据处理是指信息的收集、管理、加工、传播等一系列活动的总和。数据管理是指对数据进行分类、组织、编码、存储、检索和维护。数据管理是数据处理的基本环节,是任何数据处理业务中必不可少的共有部分,是数据处理的中心问题。 2、 数据库技术的特点: (1)数据整体结构化,数据的共享性高, 冗余度小; (2)程序与数据之间的独立性高; (3)数据得到统一

2、管理和控制。数据的整体结构化是数据库技术的主要特征之一,也是数据库系统与文件系统的根本区别。文件系统是数据库技术的基础,因为数据库技术中对数据库的读写操作最终还是通过文件系统去实现的。 3、 尽管有各种各样的信息系统,但它们的主要功能都是进行信息处理(即数据处理),而数据处理都涉及到数据的管理问题。如果数据的管理由各个信息系统自己去实现,不但耗时耗钱 , 而且系统的稳定性、可靠性、安全性、响应时间都不能得到保证。因为数据管理软件的编写是一项专业性很强的工 作,不是一般的程序员可以胜任的。采用数据库技术后,数据的管理就由 DBMS 去完成,而 DBMS 是专业公司开发的,系统的稳定性、可靠性、安

3、全性、响应时间都有保证,而且缩短了系统的开发时间,节约了成本。 4、 数据库系统是引入了数据库技术后的计算机系统,一般由数据库、数据库管理系统(及其开发工具)、数据库应用系统、数据库管理员( DBA)构成。 DBA是数据库系统中最重要的一类人员。具体职责包括: (1)决定数据库中的信息内容和结构; (2)决定数据库的存储结构和存取策略; (3)定义数据的安全性要求和完整性约束条件; (4)监 控数据库的使用和运行;(5)数据库的改进和重组。 5、 目前最常见的商用 DBMS 有: Oracle、 DB2、 SQL Server、 MySQL 等。 DBMS 一般有六大功能: (1)数据定义功能

4、; (2)数据组织、存储和管理; (3)数据操纵功能; (4)数据库的运行管理和事务管理; (5)数据库的建立和维护功能。 6、 模式是数据库中全体数据的逻辑结构和特征的描述, 是全体用户数据的最小并集。 数据库模式以某一种数据模型为基础,综合考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。 一个数据库只有一个模式 。 外模式是用户的数 据视图,是用户可看见和使用的局部数据逻辑结构和特征的描述,是与某一具体应用有关的数据的逻辑表示。显然,外模式是模式的子集 ,且可以有多个 。内模式是数据库中数据的物理结构和存储方法的描述,是数据在数据库内部的表示方式。 内模式负责定义所有数据的物理

5、存储策略和访问控制方法。一个数据库只有一个内模式。 7、 数据库系统采用外模式、模式、内模式三级模式结构,三级模式是对数据的三个抽象级别,它把数据的具体组织留给 DBMS 管理,使用户能逻辑地抽象地处理数据,而不必关心数据在计算机中的具体表示方式和存储方式,不必考虑存取路径等 细节。 DBMS 在这三级模式之间提供了两层映像:外模式 /模式映像、模式 /内模式映像。正是这两层映像保证了数第 2 页 据库系统中的数据具有较高的逻辑独立性和物理独立性。另外,外模式是数据库安全性的一个有力措施,模式实现了数据的共享,减少了数据的冗余。 8、 程序与数据的逻辑独立性是指当模式改变时,可由数据库管理员改

6、变外模式模式映像,使得每个外模式保持不变,而应用程序是根据外模式编写的,从而不必修改应用程序。程序与数据的物理独立性是指当内模式改变时,可由数据库管理员改变模式 /内模式映像,使得模式保持不变(外模式当然也不变) ,从而不必修改应用程序。 第二章 一、单项选择题 BDACA BDCBB ABDAB DBDAD 二、填空题 1、模拟现实世界 2、数据结构 3、逻辑模型 4、实体 5、多对多 6、网状模型,面向对象模型 7、指针 8、关系 9、候选码 10、实体完整性,参照完整性 三、简答题 1、 概念模型具有较强的语义表达能力,能够方便、直接地表达应用所涉及到的现实世界中的各种语义知识,另一方面

7、它概念简单、清晰,易于用户理解,且不依赖于具体的计算机系统。概念模型主要用于数据库设计,是用户与数据库设计人员之间进行交 流的桥梁。 2、 表示概念模型最常用的方法是用 E-R 图来表示概念模型,这种概念模型也称 E-R 模型。画 E-R 图的步骤: (1)确定实体; (2)确定各实体的属性; (3)确定实体之间的联系; (4)确定各联系的属性。 3、 非关系模型中实体之间的联系是通过指针来实现的,因此查询效率较高。缺点是数据结构复杂,不易理解,编程也复杂。关系模型的优点是:有严格的理论基础,概念单一;数据结构简单、清晰、用户易理解;存取路径对用户透明,程序与数据的独立性高,易于应用程序的编写

8、和维护。缺点主要是查询效率不如非关系模型, DBMS 的 开发难度高。 4、 在关系模型中 的 概念单一主要体现在数据结构单一(即 现实世界中实体以及实体之间的各种联系都用关系来表示 ),而数据结构单一又带来操作 符 的 统一 。 操作 符 的 统一 体现在无论是插入(或删除修改)一个实体值还是插入(或删除修改)一个联系值,操作的命令是相同的 (不像 DBTG 中用 STORE 插入 实体值 ,用 CONNECT 插入 联系值 ) ,这大大方便了用户的使用。 5、 所谓存储路径对用户透明就是指用户不需要知道数据的物理结构和存储方式。优点:因为存取路径对用户透明,从而具有更高的数据独立性,更好的

9、安全保密性,简化了程序员 的工作。缺点:因为存取路径对用户透明,导致查询效率不如非关系系统,增加了开发 DBMS的难度。 6、 关系模型中有三类完整性约束,包括实体完整性、参照完整性和用户定义的完整性。其第 3 页 中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系数据库系统自动支持。实体完整性规则:若属性 A是基本关系 R 主码中的属性,则属性 A不能取“空值”。参照完整性规则:若属性(或属性组) F 是基本关系 R的外码,它与基本关系 S 的主码 Ks 相对应( R 和 S 可以是同一个关系),则对于 R 中每个元组在 F 上的值必须等 于 S

10、 中某个元组的主码值或者取空值( F 的每个属性值均为空值)。用户定义的完整性是针对某一具体的关系数据库的约束条件,它反映了某一具体应用所涉及的数据必须满足的语义要求。 7、 外码不是一定可以取空值的。当外码是本关系主码中的属性时,外码不能取空值,如果取空值将违反实体完整性规则。例如,选修关系中的外码“学号”和“课程号”就不能取空值。所以只有当外码不是本关系主码中的属性时,外码才可以取空值。 8、 用户只要告诉系统操作的要求,不必告诉系统如何来完成该操作(即用户只要告诉系统“做什么”,而不必告诉“怎么做”)的语言 就是非过程化语言。 9、 自然连接是一种特殊的等值连接, 它与等值连接的区别表现

11、在:被连接的 两个关系中进行相等比较的分量必须是相同的属性(组),并且要在结果中把重复的属性(组)去掉。 10、 例如,如果 要实现 查询要求“查询 所有 学生信息并同时查询他的选课信息” ,这时就要做 学生关系与选修关系 的 自然连接,如果有学生还没有选修过课程,那么该学生 信息 将会在结果关系中消失 ,不符合查询要求,这时就要用到左外连接。 四、关系代数 1、 Gnane, Price( Manufac=海尔 (Goods) 2、 Gnane, Price( Gtype=手机 Manufac=华为 (Goods) 3、 Cno(Customers) - Cno(Sells) 4、 Cno,

12、 Cname, Mphone(Customers) ( Cno(Customers) - Cno( Sdate=2015-01-01 (Sells) ) 5、 Sno, Gno(Detail) Gno( Gno=140010123 Gno=150020234 (Goods) 也 可以用自连接做 6、 Cno, Gno(Sells Detail) Gno( Gtype=奶粉 (Goods) 7、 gsum(Quantity) as 销售总数量 (Detail Gno( Gname=WR700N 无线路由器 Manufac=TP -LINK (Goods) ) 8、 Gtypegcount(Gno

13、) as 品种数 , avg(Price) as 平均价格 (Goods) 9、 Gtype( 平均价格 1000 ( Gtypegavg(Price) as 平均价格 (Goods) ) 10、 Cno, Cname, Mphone, Sdate, IsPay(Customers Sells) 第三章 一、单项选择题 DACDB ADADB BCBAB DCDAC 二、填空题 1、主数据,日志 2、查询速度, 1 3、 1,主 4、字符数据,二进制数据 5、系统,系统,数据字典,系统 6、用户, tempdb 第 4 页 7、拒绝 8、删除 三、简答题 1、 数据定义语言( DDL)主要定义

14、数据库的逻辑结构,包括定义基本表、索引和视图三个部分;数据操纵语言( DML)包括数据查询和数据更新两大类操作,其中数据更新又包括插入、 删除和修改三种操作;数据控制语言( DCL)主要有对基本表和视图的授权,事务控制语句等。 2、 SQL 语言的主要特点包括: (1)综合统一,即集 DDL、 DML 和 DCL 功能于一体; (2)面向集合的操作方式,即操作的对象和操作的结果都是元组的集合; (3)高度非过程化,即在完成某项查询要求时,用户无需了解存取路径,只要提出“做什么”,不必指出“怎么做”;(4)以同一种语法结构提供两种使用方式,即独立地用于联机交互的使用方式和嵌入到高级语言中这两种不

15、同的使用方式下,语法结构是基本上一致的; (5)支持三级模式结构。 3、 RDBMS 的完整性控制机制都 应 有完整性定义、完整性检查和违约处理这三方面的 功能。 4、 列级完整性约束条件中涉及的属性只能是本列中的属性,而表级完整性约束条件中涉及的属性可以是本表中所有列中的属性。 5、 SQL 语言中, 在用 CREATE TABLE 语句创建表时 ,可以 用 PRIMARY KEY 定义 主码,定义主码即实现了 实体完整性 ; 也可以 用 FOREIGN KEY REFERENCES 定义 外码,定义外码即实现了 参照完整性 。 6、 用户定义的完整性就是针对某一具体应用的数据必须满足的语义

16、要求。在 SQL Server 中可以在列 级或表级用 NOT NULL(属性取非空值)、 UNIQUE(属性取值唯一)和 CHECK(检查属性值是否满足一个逻辑表达式)三种形式实现用户定义的完整性。另外, T-SQL语言中的 DEFAULT(属性取默认值)也可以理解为列级用户定义的完整性约束。 7、 三种处理方式: (1)拒绝( NO ACTION)执行,即不允许执行该操作,一般为默认违约处理方式。 (2)级连( CASCADE)操作,表示当删除或修改被参照表的一个元组造成了参照表中某些元组的外码违反了参照完整性约束,则系统会自动删除或修改参照表中所有违反参照完整性约 束的元组。 (3)设置

17、为空值( SET NULL),表示当删除或修改被参照表的一个元组造成了参照表中某些元组的外码违反了参照完整性约束,则系统会自动将参照表中所有违反参照完整性约束的元组的外码设置为空值。 8、 只有一种处理方式,拒绝( NO ACTION)执行,即不允许执行该操作。 四、 SQL 语言 1、 CREATE TABLE Customers ( Cno char(8) PRIMARY KEY , Cname char(12) NOT NULL , Csex char(2) NOT NULL CHECK ( Csex IN (男 ,女 ) ) , Cage tinyint NOT NULL , Cadd

18、ress varchar(50) , Mphone char(11) NOT NULL , Email varchar(30) ) CREATE TABLE Goods ( Gno char(9) PRIMARY KEY , Gname char(20) NOT NULL , Gtype char(8) NOT NULL , Price decimal(9,2) NOT NULL CHECK ( Price BETWEEN 1 AND 100000 ) , 第 5 页 Manufac char(12) NOT NULL ) CREATE TABLE Sells ( Sno char(14) P

19、RIMARY KEY , Sdate datetime NOT NULL , Saddress varchar(50) NOT NULL , Cno char(8) NOT NULL FOREIGN KEY REFERENCES Customers(Cno) , IsPay char(1) NOT NULL CHECK ( IsPay IN (N,Y) ) ) CREATE TABLE Detail ( Sno char(14) FOREIGN KEY REFERENCES Sells(Sno) , Gno char(9) FOREIGN KEY REFERENCES Goods(Gno) ,

20、 Quantity smallint NOT NULL CONSTRAINT ck_D CHECK ( Quantity BETWEEN 1 AND 100 ) , PRIMARY KEY ( Sno,Gno ) ) 2、 ALTER TABLE Customers ADD CONSTRAINT ck1_C CHECK ( Cage = 10 ) ALTER TABLE Customers ADD CONSTRAINT ck2_C UNIQUE ( Mphone ) 3、 ALTER TABLE Detail DROP CONSTRAINT ck_D ALTER TABLE Detail AD

21、D CONSTRAINT ck_D CHECK ( Quantity BETWEEN 1 AND 1000 ) 4、 SELECT Gname, Price FROM Goods WHERE Manufac=海尔 ORDER BY Price DESC 5、 SELECT Gname, Price FROM Goods WHERE Manufac=华为 AND Gname LIKE %手机 % 6、 SELECT COUNT(*) FROM Goods 7、 SELECT Gtype, COUNT(*), AVG(Price) FROM Goods GROUP BY Gtype 8、 SELE

22、CT Gtype FROM Goods GROUP BY Gtype HAVING AVG(Price)1000 9、 SELECT Sno, S.Cno, Cname, Mphone FROM Sells S JOIN Customers C ON S.Cno=C.Cno WHERE IsPay=N AND Sdate BETWEEN 2015-05-01 AND 2015-05-31 10、 SELECT C.Cno, Cname, Mphone, Sdate, IsPay FROM Customers C LEFT JOIN Sells S ON C.Cno=S.Cno 11、 SELE

23、CT S.Sno, Sdate, Cname, SUM(Quantity*Price) FROM Sells S, Customers C, Detail D, Goods G WHERE S.Cno=C.Cno AND S.Sno=D.Sno AND D.Gno=G.Gno GROUP BY S.Sno, Sdate, Cname 12、 SELECT SUM(Quantity) FROM Detail D JOIN Goods G ON D.Gno=G.Gno WHERE Manufac=TP-LINK AND Gname=WR700N 无线路由器 另一种做法: SELECT SUM(Qu

24、antity) FROM Detail WHERE Gno IN (SELECT Gno FROM Goods WHERE Manufac=TP-LINK AND Gname=WR700N 无线路由器 ) 13、 SELECT Cno FROM Customers WHERE Cno NOT IN (SELECT Cno FROM Sells) 14、 SELECT Cno, Cname, Mphone FROM Customers WHERE Cno NOT IN (SELECT Cno FROM Sells WHERE Sdate=2015-01-01) 15、 SELECT Gno, G

25、name, Manufac FROM Goods G WHERE Price = (SELECT MIN(Price) FROM Goods WHERE Gtype=G.Gtype) 第 6 页 16、 SELECT Gname, Price, Manufac FROM Goods WHERE Gno IN (SELECT Gno FROM Detail GROUP BY Gno HAVING SUM(Quantity)=ALL(SELECT SUM(Quantity) FROM Detail GROUP BY Gno) 17、 SELECT Sno FROM Detail D WHERE G

26、no=140010123 AND EXISTS (SELECT * FROM Detail WHERE Sno=D.Sno AND Gno=150020234) 另一种做法: SELECT Sno FROM Detail WHERE Gno=140010123 OR Gno=150020234 GROUP BY Sno HAVING COUNT(*)=2 18、 SELECT Cno FROM Customers C WHERE NOT EXISTS (SELECT * FROM Goods G WHERE Gtype=奶粉 AND NOT EXISTS (SELECT * FROM Sell

27、s S JOIN Detail D ON S.Sno=D.Sno WHERE S.Cno=C.Cno AND D.Gno=G.Gno) 19、 SELECT Gno, Gname, Manufac FROM Goods G, (SELECT Gtype, MIN(Price) AS MinPrice FROM Goods GROUP BY Gtype) AS GtypePrice WHERE G.Gtype=GtypePrice.Gtype AND Price=MinPrice 20、 UPDATE Goods SET Price=0.95*Price WHERE Gtype=手机 21、 D

28、ELETE FROM Goods WHERE Gno=110050111 22、 INSERT INTO Goods VALUES (150050111, P8 手机 , 手机 , 2499, 华为 ) 第四章 一、单项选择题 ABADC ACCDB 二、填空题 1、搜索码,搜索码值 2、有序 3、稀疏,稠密, 1,多 4、 249, 16 5、 CLUSTERED 6、 PRIMARY KEY, UNIQUE 7、索引视图 三、简答题 1、 模式 DDL 有 CREATE TABLE 语句,子模式 DDL 有 CREATE VIEW 语句,内模式 DDL有 CREATE INDEX 语句。

29、2、 表中每个搜索码值都有一个索引项,这种索引称为稠密索引。当表按照搜索码值有序存储时,可以只为搜索码的某些值建立索引项,这种索引称为稀疏索引。稠密索引可以比稀疏索引更快地定位一条记录,但稠密索引所占用的存储空间比稀疏索引大。 3、 所谓聚集索引就是指表中的元组按照索引中搜索码指定的顺序排序,使得具有相同搜索码值的元组在物理上聚集在一起。显然,一张表最多只能有一个聚集索引。聚集索引往往是稀疏索引,可以只存储部分搜索码值。因为表中的元组是按聚 集索引而不是辅助索引的搜索码有序存放的,所以辅助索引必须是稠密索引,对每个搜索码值都有一个索引项,包含指向表中每个元组的指针。显然, 一 张 表可以 创建

30、 多个 辅助 索引 。 4、 如果索引小到可以放在内存中,那么搜索一个索引项的时间就可以忽略。但是,如果索引过大而不能放在内存中,那么当需要时,就必须从磁盘中读取索引块,于是搜索一个索引第 7 页 项可能需要多次读取磁盘块,是一个相当耗时的过程。所以 不管是聚集索引,还是辅助索引,当索引项很多,索引很大时,实际使用的往往都是多级索引 。 5、 见教材 4.1.2 小节 6、 基本表在数据库中既要 存放它的定义,又要存放它的数据。而视图 是从一张或几张基本表(或视图)导出的表。与基本表不同,视图是一张虚表,在数据库中只存放视图的定义(即SELECT 语句),不存放视图对应的数据(即 SELECT

31、 语句的查询结果) 。两者的 联系 是视图的数据在它对应的基本表中, 所以基本表中的数据一旦发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,通过它用户可以看到数据库中自己感兴趣的数据及其变化。 7、 如果定义视图的子查询对下列条件都能满足,那么该视图是可以更新的: (1)FROM 子句中只有一个数据库 关系; (2)SELECT 子句中只包含关系的属性名,不包含任何表达式、聚集函数或 DISTINCT 短语; (3)没有出现在 SELECT 子句中的属性可以取空值,也不是主码中的属性; (4)子查询中没有 GROUP BY 或 HAVING 子句。 四、 SQL

32、 语言 1、 CREATE INDEX Index_Customers_Cname ON Customers(Cname) 2、 CREATE INDEX Index_Goods_GtypePrice ON Goods(Gtype, Price) 3、 CREATE INDEX Index_Sells_CnoSdate ON Sells(Cno, Sdate DESC) 4、 CREATE VIEW GoodsPhone AS SELECT * FROM Goods WHERE Gtype=手机 5、 CREATE VIEW GoodsPhoneHuaWei AS SELECT * FROM

33、GoodsPhone WHERE Manufac=华为 6、 CREATE VIEW SellsQuantity(Gname, Price, Manufac, Squantity) AS SELECT Gname, Price, Manufac, SUM(Quantity) FROM Goods G JOIN Detail D ON G.Gno=D.Gno GROUP BY G.Gno, Gname, Price, Manufac 7、 SELECT Gname, Price, Manufac FROM SellsQuantity WHERE Squantity = (SELECT MAX(S

34、quantity) FROM SellsQuantity) 8、 CREATE VIEW SellsMoney(Sno, Sdate, Cname, Csex, Cage, Smoney) AS SELECT S.Sno, Sdate, Cname, Csex, Cage, SUM(Quantity*Price) FROM Sells S, Customers C, Detail D, Goods G WHERE S.Cno=C.Cno AND S.Sno=D.Sno AND D.Gno=G.Gno GROUP BY S.Sno, Sdate, Cname, Csex, Cage 9、 SEL

35、ECT Cname, Csex, Cage FROM SellsMoney WHERE Sdate BETWEEN 2014-01-01 AND 2014-12-31 GROUP BY Cname, Csex, Cage HAVING SUM(Smoney)10000 10、 INSERT INTO GoodsPhone VALUES (150050111, P8 手机 , 手机 , 2499, 华为 ) 第五章 一、单项选择题 BADCB CABDD 二、填空题 1、网络系统 2、合法权限检查机制 3、自主,强制 4、视图机制,审计,数据加密 第 8 页 5、 dbo, guest, dbo

36、 6、 public 7、数据库对象,操作类型 8、 Windows,混合 三、简答题 1、 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏 。数据库的完整性是指数据库的任何状态变化都能反映真实存在的客观世界的合理状态,数据库中的数据应始终保持正确且合理的状态。也就是说,数据库的完整性是指数据的正确性和相容性。 两者的定义已经看出两者的区别,而两者的联系主要体现在触发器机制既可以用来实现完整 性,也可以用来实现安全性。 2、 数据库安全性控制的常用方法和技术有: 1、用户标识和鉴别; 2、存取控制; 3、视图机制; 4、审计; 5、数据加密。 3、 在 SQL Se

37、rver 中,有登录名和数据库用户两个概念。登录名是验证用户是否有权限连接到 SQL Server 服务器,数据库用户是验证用户登录服务器后是否有对服务器上的某个数据库进行操作的权限。用户必须拥有和自己登录名对应的数据库用户才可以对某个数据库进行操作,这样增强了数据库的安全性,避免了一个用户在登录到服务器后可以对服务器上的所有数据库进行操作。 DBA可以用 CREATE LOGIN 和 DROP LOGIN 创建和删除登录名,用CREATE USER 和 DROP USER 创建和删除数据库用户。 4、 角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。可以为一组具有相同权限的数据库

38、用户创建一个角色,所以也可以说角色是具有相同权限的数据库用户组。对一个角色授权或收回权限适用于该角色的所有成员,因此使用角色来管理权限可以简化授权的过程。 5、 DBA 可以用 CREATE ROLE 和 DROP ROLE 创建和删除 角色, 用 系统存储过程sp_addrolemember 和 sp_droprolemember 为角色添加成员和从角色删除成员 。 6、 固定角色是系统内置的(预先定义好的),用户不能添加、修改或删除固定角色,只能修改固定角色的成员。固定角色分为固定服务器角色和固定数据库角色两大类。固定服务器角色有八种,其成员是登录名;而固定数据库角色有十种,其成员是数据库

39、用户。 DBA 可以用系统存储过程 sp_addsrvrolemember 为某个固定服务器角色添加成员,用sp_dropsrvrolemember 从某个固定服务器角色中删除成员。 DBA 可以用系统存储过程sp_addrolemember 为某个固定数据库角色添加成员,用 sp_droprolemember 从某个固定数据库角色中删除成员。 第六章 一、单项选择题 DCBAC ACADB 二、填空题 1、 GO 2、 - 3、 4、多语句表值型 5、游标 6、 T-SQL 第 9 页 7、 sp_ 8、 VARYING 9、 UPDATE 10、 DML 三、简答题 1、批是一起提交给 S

40、QL Server 服务器执行的一个或多个 T-SQL 语句的集合。由于批中的语句是作为一个整体发送给 SQL Server 服务器进行语法分析、优化、编译和执行,所以大大提高了执行效率。批 也常常被用在某些事必须在前面做,或者必须与其他事分开的脚本中。 2、 一条 SET 语句 只能 给 一 个变量赋值 ,而一条 SELECT 语句可以给多个变量赋值 。另外,SELECT 语句 也可以把查询的结果存放到 局部变量 中保存起来。 3、 关闭游标意味着释放当前数据结果集,并解除定位于游标的行上的游标锁定;关闭游标并不释放它占用的数据结构以便重新打开,但在重新打开游标之前,不允许读取和定位修改。如

41、果一个游标名或游标变量是最后引用游标的名称或变量,则释放游标后,游标使用的任何资源也随之释放。 4、 存储过程是一组实现某个特定功能的 T-SQL 语句的集合,经预编译后存储在服务器上的数据库中。存储过程可以避免代码的重复,隐藏 SQL 的细节,实现对业务逻辑的封装。存储过程既提高了执行效率,又减少了网络流量,降低了网络负载。另外,系统管理员可以通过对执行存储过程的权限进行限制,避免非授权用户对数据的访问,保证数据的安全性。 5、 触发器作为一种特殊类型的存储过程,不同于存储过程,触发器不能被显式地调用,当触发器所定义的触发事件发生时,触发器被触发而自动执行。触发器的主要作用是能够实现比参照完

42、整性更为复杂的两张表或多张表之间的数据的完整性和一致性,从而 保证表中数据的变化符合数据库设计者所确定的业务规则。触发器也可以用来实现数据库的安全性。 四、 SQL 语言 INSERT INTO Customers VALUES(12345678,张永斌 ,男 ,35,上海市 ,13612345678,) INSERT INTO Customers VALUES(12345680,李元祥 ,男 ,23,上海市 ,13612345680,) INSERT INTO Customers VALUES(12345682,王雪旖 ,女 ,19,苏州市 ,13612345682,) INSERT INT

43、O Goods VALUES(140010123, 1.5 匹变频空调 , 空调 , 2799, 海尔 ) INSERT INTO Goods VALUES(140050234, B199 电信手机 , 手机 , 999, 华为 ) INSERT INTO Goods VALUES(150020234, 16G 至尊高速 TF 卡 , 存储卡 , 39, 闪迪 ) INSERT INTO Goods VALUES(150050111, P8 手机 , 手机 , 2499, 华为 ) INSERT INTO Sells VALUES(20140012345678,2014-10-01,上海市 ,

44、12345678,N) INSERT INTO Sells VALUES(20140012345680,2014-11-11,上海市 ,12345680,Y) INSERT INTO Detail VALUES(20140012345678,140010123,3) INSERT INTO Detail VALUES(20140012345680,140050234,1) INSERT INTO Detail VALUES(20140012345680,150020234,2) 1、 CREATE FUNCTION F_年销售总金额 (年份 smallint = 2014) 第 10 页 RE

45、TURNS real BEGIN DECLARE 总金额 real SELECT 总金额 =SUM(Quantity*Price) FROM Sells S JOIN Detail D ON S.Sno=D.Sno JOIN Goods G ON D.Gno=G.Gno WHERE YEAR(Sdate)=年份 RETURN 总金额 END GO PRINT dbo.F_年销售总金额 (DEFAULT) PRINT dbo.F_年销售总金额 (2015) 2、 CREATE FUNCTION F_年各月份销售总金额 (年份 smallint = 2014) RETURNS TABLE RETU

46、RN ( SELECT 月份 , SUM(Quantity*Price) 月销售总金额 FROM ( SELECT MONTH(Sdate) 月份 , Quantity, Price FROM Sells S JOIN Detail D ON S.Sno=D.Sno JOIN Goods G ON D.Gno=G.Gno WHERE YEAR(Sdate)=年份 ) AS Temp GROUP BY 月份 ) GO SELECT * FROM dbo.F_年各月份销售总金额 (DEFAULT) SELECT * FROM dbo.F_年各月份销售总金额 (2015) 3、 CREATE PRO

47、C P_年销售总金额 年份 smallint = 2014, 总金额 real OUTPUT AS IF 年份 IS NULL RETURN 2 IF NOT EXISTS (SELECT * FROM Sells WHERE YEAR(Sdate)=年份 ) RETURN 1 SELECT 总金额 =SUM(Quantity*Price) FROM Sells S JOIN Detail D ON S.Sno=D.Sno JOIN Goods G ON D.Gno=G.Gno WHERE YEAR(Sdate)=年份 RETURN 0 GO 下面是一个执行该自定义存储过程的示例: DECLARE 返回值 smallint, 总金额 real EXEC 返回值 = P_年销售总金额 DEFAULT, 总金额 OUTPUT IF 返回值 = 2 PRINT 必须提供年份 ! ELSE IF 返回值 = 1 PRINT 该年份没有销售记录 ! ELSE PRINT 总金额

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

当前位置:首页 > 教育教学资料库 > 参考答案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。