• 这是五个与腐败有关的主贴。 2019-05-19
  • 最新报道(24小时滚动) 2019-05-18
  • 女性之声——全国妇联 2019-05-17
  • 人民日报长篇述评:风雨兼程  与党和人民同行——写在人民日报创刊七十周年之际 2019-05-16
  • 回复@寻找失落的真理:跟你的铁环玩去!咱真的没兴趣碾压你也。 2019-05-16
  • 李宝善社长会见越南通讯社社长阮德利一行 2019-05-15
  • 西北政法大学英语六级考试听力异常 回应:正调查 2019-05-15
  • 欧尚COS1°正式启动预订 预售12.98万元 2019-05-14
  • 父母不尊重孩子的五个表现 进来看看你有没有 2019-05-13
  • 英媒:中国开放世界最大无轴摩天轮 比“伦敦眼”高10米 2019-05-13
  • “三个蓬勃生机”彰显党取得的伟大胜利——深入学习贯彻习近平同志“七一”重要讲话精神 2019-05-12
  • 邹市明:70岁仍希望站在拳击赛场 不是天才成功源于努力 2019-05-12
  • 最强阵容被淘汰!恒大王朝崩塌在即 许家印还会坐视不理? 2019-05-11
  • 即使中美贸易归零,中国也不会屈服美国的大棒政策 2019-05-11
  • 湖州长兴师徒结对传承工匠精神 2019-05-10
  • 数据库系统及应用教程(SQL Server 2008)习题1-8章答案 下载本文

    四川时时彩qq群 www.ibajb.tw 常有效,在每一张基本表中只能有一个聚集索引。

    唯一索引:不允许具有索引值相同的行,从而禁止重复的索引或键值。并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查

    2.简述数据库视图和基本表的联系与区别。 答:

    联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系

    区别:

    (1) 视图是已经编译好的sql语句,而表不是。 (2) 视图没有实际的物理记录。而表有。 (3) 表是内容,视图是窗口。

    (4) 表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四

    对它进行修改,但视图只能有创建的语句来修改。 (5) 表是内模式,试图是外模式

    (6) 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些

    SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

    (7) 表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 (8) 视图的建立和删除只影响视图本身,不影响对应的基本表。 3.可更新视图必须满足哪些条件? 答:最重要的一个条件就是一个可更新视图只能包含一个表。其他的限制包括不允许使用GROUP BY子句和ORDER BY子句、不支持DISTINCT关键字、不能使用聚合函数或子查询以及不能包含计算列等。诸如此类的限制还有很多。某些SQL语句还要求一些额外的具体条件。例如,要对一个视图执行INSERT语句,则必须将所有定义为NOT NULL的列都包含在创建该视图的SELECT语句中。

    4.假设某“仓库管理”关系型数据库有下列五个关系模式: 零件PART(PNO,PNAME,COLOR,WEIGHT) 项目PROJECT(JNO,JNAME,JDATE)

    供应商SUPPLIER(SNO,SNAME,SADDR) 供应P_P(JNO,PNO,TOTAL)

    采购P_S(PNO,SNO,QUANTITY)

    (1) 试将PROJECT、P_P、PART三个基本表的自然联接定义为一个视图VIEW1, PART、P_S、SUPPLIER三个基本表的自然联接定义为一个视图VIEW2。 (2) 试在上述两个视图的基础上进行数据查询: ① 检索上海的供应商所供应的零件的编号和名字。

    ② 检索项目J4所用零件的供应商编号和名字。 解:

    (1) CREATE VIEW VIEWl

    AS SELECT A.JNO,JNAME,DATE,C.PNO,PNAME,COLOR,WEIGHT,TOTAL FROM PROJECT A,P_P B,PART C

    WHERE A.JNO=B.JNO AND B.PNO=C.PNO; CREATE VIEW VIEW2

    AS SELECT A.PNO,PNAME,COLOR,WEIGHT,C.SNO,SNAME,SADDR,QUANTITY

    21

    FROM PART A,P_S B,SUPPLIER C

    WHERE A.PNO=B.PNO AND B.SNO=C.SNO; (2) ①

    SELECT PNO,PNAME FROM VIEW2

    WHERE SADDR LIKE ’上海%’; ② SELECT SNO,SNAME FROM VIEWl,VIEW2

    WHERE VIEWl.PNO=VIEW2.PNO AND JNO=’J4’;

    5. 对于教务管理数据库中基本表SC,建立视图如下: CREATE VIEW S_GRADE(SNO,C_NUM,AVG_GRADE) AS SELECT SNO,COUNT(CNO),AVG(GRADE) FROM SC

    GROUP BY SNO

    试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操 作:

    (1) SELECT * FROM S_GRADE (2) SELECT SNO,C_NUM FROM S_GRADE

    WHERE AVG_GRADE>80; (3) SELECT SNO,AVG_GRADE FROM S_GRADE

    WHERE C_NUM>(SELECT C_NUM FROM S_GRADE SNO=’200912121’); (4) UPDATE S_GRADE

    SET C_NUM=C_NUM+1 WHERE SNO=’200915122’ (5) DELETE FROM S_GRADE WHERE C_NUM>4;

    解:

    答:⑴ 允许查询。相应的操作如下:

    SELECT SNO,COUNT(CNO) AS C_NUM,AVG(GRADE) AS AVG_GRADE FROM SC

    GROUP BY SNO;

    ⑵ 允许查询。相应的操作如下:

    SELECT SNO,COUNT(CNO)AS C_NUM FROM SC

    GROUP BY SNO

    HAVING AVG(GRADE)>80;

    ⑶ 允许查询。相应的操作如下:

    SELECT SNO,AVG(GRADE) AS AVG_GRADE FROM SC

    22

    GROUP BY SNO

    HAVING COUNT(CNO)>(SELECT COUNT(CNO) FROM SC

    GROUP BY SNO

    HAVING SNO=’200912121’);

    ⑷ 不允许。C_NUM是对SC中的学生选修课程的门数进行统计,在未更改SC表时,要在视图S_GRADE中更改门数,是不可能的。

    ⑸ 不允许。在视图S_GRADE中删除选修课程的门数在4门以上的学生元组,势必造成SC中这些学生学习元组的删除,这不一定是用户的原意,因此使用分组和聚合操作的视图,不允许用户执行更新操作。

    6.简述创建索引的必要性和作用。

    答:数据库的索引就类似于书籍的目录,如果想快速查找而不是逐页查找指定的内容,可以通过目录中章节的页号找到其对应的内容。类似地,索引通过记录表中的关键值指向表中的记录,这样数据库引擎就不用扫描整个表而定位到相关的记录。相反,如果没有索引,则会导致SQL Server搜索表中的所有记录,以获取匹配结果,这样就会大大降低查询的效率。

    7.聚集索引和非聚集索引有何种异同? 答:

    聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致。聚集索引即需要对已有表数据重新进行排序(若表中已有数据),即删除原始的表数据后再将排序结果按物理顺序插回,故聚集索引建立完毕后,建立聚集索引的列中的数据已经全部按序排列。一个表中只能包含一个聚集索引,但该索引可以包含多个列。非聚集索引类似书本索引,索引与数据存放在不同的物理区域,建立非聚集索引时数据本身不进行排序。一个表中可以含多个非聚集索引。

    相同之处就是它们都是索引,都可以提高数据的查询速度。

    8.用T-SQL语句,按数据库JXGL中选修课程表SC的成绩列降序创建一个普通索引(非唯一、非聚集)。

    解:

    USE JXGL GO

    CREATE INDEX SC_GRADE ON SC(GRADE DESC) GO

    第8章

    1.名词解释:

    存储过程 触发器 用户定义函数 答:

    存储过程:是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

    触发器:是一种对表进行插入、更新、删除的时候会自动执行的特殊存储过程。

    23

    用户定义函数:像系统内置函数一样,可以接受参数,执行复杂的操作并将操作结果以值的形式返回,也可以将结果用表格变量返回。

    2.对于例5.9教学管理数据库的表S和SC,有下列程序清单,试叙述其功能。

    USE JXGL GO

    DECLARE @MyNo CHAR(9) SET @MyNo='S7'

    IF (SELECT SDEPT FROM S WHERE [email protected])='CS' BEGIN

    SELECT AVG(GRADE) AS '平均成绩' FROM SC

    WHERE [email protected]

    END ELSE

    PRINT '学号为'[email protected]+'的学生不存在或不属于计算机科学系' GO

    答:输入一个学生的学号,如果该学生属于计算机科学系则输出该学生的平均成绩,否则输出:该学号的学生不存在或不属于计算机科学系的提示。

    3.简述存储过程与触发器的区别。

    答:触发器与存储过程可以说是非常相似,可以说是一种变种的存储过程,触发器和存储过程一样都是SQL语句集。存储过程执行后驻留在计算机的高速缓冲区中,利用存储过程可以提高程序的效率,但存储过程只能通过调用来运行,可以有返回的状态值,存储过程可以在程序端调用执行。触发器是不可以在程序端调用的,它是SQL服务器端自动运行。触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关。当一行被插入、更新或者删除时触发器才执行,同时还取决于触发器是怎样创建的,当UPDATE发生时使用一个更新触发器,当INSERT发生时使用一个插入触发器,当DELETE发生时使用一个删除触发器。

    4.AFTER触发器和INSTEAD OF触发器有什么不同?

    答:AFTER触发器要求只有执行某一操作INSERT、UPDATE、DELETE之后触发器才被触发,且只能定义在表上,也可以针对表的同一操作定义多个触发器以及它们触发的顺序。而INSTEAD OF触发器表示并不执行其定义的操作(INSERT、UPDATE、DELETE)而仅是执行触发器本身。既可以在表上定义INSTEAD OF触发器,也可以在视图上定义,但对同一操作只能定义一个INSTEAD OF触发器。

    5.在教学管理数据库中,创建一个名为STU_AGE的存储过程,该存储过程根据输入的学号,输出该学生的出生年份。

    解:

    USE JXGL GO

    CREATE PROCEDURE STU_AGE @S_NAME CHAR(8) AS

    SELECT YEAR(GETDATE()-AGE) AS 'YEAR' FROM S

    24

    WHERE [email protected]_NAME

    GO

    6.在教学管理数据库中,创建一个名为GRADE_INFO的存储过程,其功能是查询某门课程的所有学生成绩。显示字段为:CNAME,SNO,SNAME,GRADE。

    解:

    USE JXGL GO

    CREATE PROCEDURE GRADE_INFO @C_NAME VARCHAR(50)

    AS

    SELECT CNAME,SC.SNO,SNAME,GRADE

    FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND [email protected]_NAME

    GO

    7.在教学管理数据库中,创建一个INSERT触发器TR_C_INSERT,当在C表中插入一条新记录时,触发该触发器,并给出“你插入了一门新的课程!”的提示信息。

    解:

    CREATE TRIGGER TR_C_INSERT ON C FOR INSERT

    AS

    PRINT '你插入了一门新的课程!'

    GO

    8-8 在教学管理数据库中,创建一个AFTER触发器,要求实现以下功能:在SC表上创建一个插入、更新类型的触发器TR_GRADE_CHECK,当在GRADE字段中插入或修改成绩后,触发该触发器,检查分数是否在0~100之间。

    解:

    CREATE TRIGGER TR_GRADE_CHECK ON SC FOR

    INSERT,UPDATE

    AS

    DECLARE @SC_grede tinyint SELECT @SC_grade=SC.grade FROM SC

    IF (@SC_grade NOT BETWEEN 0 AND 100)

    PRINT '你插入的成绩不在0~100之间!'

    GO

    9.在教学管理数据库中,创建用户定义函数C_MAX,根据输入的课程名称,输出该门课程最高分数的同学学号。

    解:

    USE JXGL GO

    25

    CREATE FUNCTION C_MAX (@C_NAME CHAR(8)) RETURNS REAL AS

    BEGIN

    DECLARE @S_MAX REAL SELECT @S_MAX=MAX(GRADE)

    FROM SC JOIN C ON SC.CNO=C.CNO AND [email protected]_NAME RETURN @S_MAX

    END GO

    10.在教学管理数据库中,创建用户定义函数SNO_INFO,根据输入的课程名称,输出选修该门课程的学生学号、姓名、性别、系部、成绩。

    解:

    USE JXGL GO

    CREATE FUNCTION SNO_INFO (@C_NAME CHAR(8)) RETURNS TABLE AS

    RETURN(SELECT S.SNO,SNAME,SEX,SDEPT,GRADE

    FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND [email protected]_NAME)

    GO

    26

    福利:打开支付宝首页搜索“608066754”即可领取红包,吃个早点,买杯饮料肯定够了,红包加倍最高可以领取99元红包!

    「觉得内容不错,打赏支持一下」

    四川时时彩qq群

    觉得内容不错,打赏支持一下

    使用微信扫描二维码完成支付

    福利:打开支付宝扫描二维码领红包,可免费下载资料 微信:17702577729




  • 这是五个与腐败有关的主贴。 2019-05-19
  • 最新报道(24小时滚动) 2019-05-18
  • 女性之声——全国妇联 2019-05-17
  • 人民日报长篇述评:风雨兼程  与党和人民同行——写在人民日报创刊七十周年之际 2019-05-16
  • 回复@寻找失落的真理:跟你的铁环玩去!咱真的没兴趣碾压你也。 2019-05-16
  • 李宝善社长会见越南通讯社社长阮德利一行 2019-05-15
  • 西北政法大学英语六级考试听力异常 回应:正调查 2019-05-15
  • 欧尚COS1°正式启动预订 预售12.98万元 2019-05-14
  • 父母不尊重孩子的五个表现 进来看看你有没有 2019-05-13
  • 英媒:中国开放世界最大无轴摩天轮 比“伦敦眼”高10米 2019-05-13
  • “三个蓬勃生机”彰显党取得的伟大胜利——深入学习贯彻习近平同志“七一”重要讲话精神 2019-05-12
  • 邹市明:70岁仍希望站在拳击赛场 不是天才成功源于努力 2019-05-12
  • 最强阵容被淘汰!恒大王朝崩塌在即 许家印还会坐视不理? 2019-05-11
  • 即使中美贸易归零,中国也不会屈服美国的大棒政策 2019-05-11
  • 湖州长兴师徒结对传承工匠精神 2019-05-10