西华师范大学学生试卷年月日学年第学期考室题号一二三四五六七八九十总分阅卷教师得分计算机学院通信工程专业2008级《数据库原理及应用》试题B卷参考答案闭卷考试时间120分钟注意事项:1.满分:100分。保持卷面整洁,否则扣卷面2分。2.交卷时请将试题卷与答题卷一起交,否则扣分。3.学生必须将姓名、班级、学号完整填写在规定的密封栏目内,否则视为废卷。4.学生必须签到,否则出现遗漏由学生本人负责。得分阅卷人一、选择题(共10小题,每小题2分,共20分)1、语句:SELECT*FROM数据表WHERE编号LIKE'00[^8]%[A,C]%',可能会查询出的编号值为(B)。A、9890ACDB、007_AFFC、008&DCGD、KK8C2、从E-R模型关系向关系模型转换时,一个M:N联系转换为关系模式时,该关系模式的关键字是(C)。A.M端实体的关键字B.N端实体的关键字C.M端实体关键字与N端实体关键字组合D.重新选取其他属性3、关系模型的基本数据结构是(A)A二维表格B树C图D二级树4、根据参照完整性规则,表的(B)必须是另一个表主键的有效值,或者是空值。A次关键字B外关键字C主关键字D主属性5、下列函数哪个不是集合函数(D)ASUMBAVGCCOUNTDGETDATE6、下列哪个函数不能返回一个字符串的部分或者全部字符?(C)AleftBsubstringCdatediffDright7、下面哪个语句能够查找address字段中含有“南”字的所有记录行?(A)ASELECT*FROMstud_infoWHEREaddresslike‘%南%’BSELECT*FROMstud_infoWHEREaddresslike‘南’CSELECT*FROMstud_infoWHEREaddresslike‘南%’DSELECT*FROMstud_infoWHEREaddresslike‘%南’8、不允许在关系中出现重复记录是通过(D)约束实现的。ACHECKBDEFAULTCNULLDPRIMARYKEY9、下列哪一个不是SQLSERVER2000中的有效数据类型?(B)AbinaryBtimeCmoneyDtext10、数据库系统与文件系统的主要区别是(B)。A.数据库系统复杂,而文件系统简单B.文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以解决C.二文件系统只能管理程序文件,而数据库系统能够管理各种类型的文件D.文件系统管理的数据量较少,而数据库系统可以管理庞大的数据量得分阅卷人二、简答题(每小题5分,共30分)1、简述E-R图的构成三要素。答:实体型,属性,实体间的联系。2、两个实体之间的联系有哪几种?一对一联系、一对多联系、多对多联系。3、简述查询优化的必要性。答:关系表达式是一种级别很高、非过程化的语言,它减轻了用户选择存取路径的…………………………………………………答……………………………题……………………………线…………………………………………………姓名学号学院级专业班…………………………………………………装……………………………订……………………………线…………………………………………………负担,用户只需要提出要做什么,不必指出怎么做。对查询表达式的语义分析,完全由数据库管理系统完成。对于相同的关系表达式,通常可以有多种执行方式。而采取不同的查询策略,执行查询的时间效率和空间开销差别很大。因此,对于RDMS而言,对用户的查询进行优化,选取最优的策略执行查询,就显得非常必要。---答对得5分,部分对酌情给分4、在SQLSERVER中,系统数据库有哪些?答:master数据库,model数据库,tempdb数据库和msdb数据库。5、使用视图的优点有哪些?答:筛选表中的行,防止未经许可的用户访问敏感数据,降低数据库的复杂程度,将多个物理数据库抽象为一个逻辑数据库6、有关系模式STJ(S,T,J),S表示学生,T表示教师,J表示课程。假设:每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称。该关系模式是否是BCNF,若是,说明理由,若不是,请说明理由,并将其转化为BCNF。解:该关系模式存在函数依赖:(S,J)→T,(S,T)→J,T→J该关系模式的候选码为(S,J)和(S,T),T不是码,而T是函数依赖T→J的确定因素,所以该关系模式不是BCNF。用投影分解法,可以将该关系模式分解为BCNF的关系模式为:ST(S,T)∈BCNF,TJ(T,J)∈BCNF得分阅卷人三、应用题(每小题分,共分)已知学生信息表stud_info的表结构如下表:列名数据类型大小是否为空默认值列含义STUD_IDchar10N学号,主键NAMEnvarchar6N学生姓名BIRTHDAYdatetime出生日期GENDERnchar1性别ADDRESSnvarchar20家庭地址MARKint560入学成绩1)写出在SQLSERVER中创建表stud_info的SQL语句。(8分)createtablestud_info(stud_idchar(10)notnull,namenvarchar(6)notnull,birthdaydatetime,gendernchar(1),addressnvarchar(20),markintdefault(560)primarykey(stud_id))2)要显示入学成绩在560到580之间的学生的姓名、学号、性别、家庭地址和入学成绩,并按照入学成绩由低到高排序,请写出SQL语句(6分)解:selectstud_id,name,address,markfromstud_infowheremarkbetween560and580orderbymarkasc3)要统计入学成绩在600分以上的学生人数,请写出SQL语句。(6分)selectcount(*)as学生人数fromstud_infowheremark6004)要往学生信息表stud_info中插入如下学生信息,请写出SQL语句.(6分)Stud_idnameaddressgenderbirthdaymark2009130001张三南充市男1990-1-1580insertintostud_id(stud_id,name,address,gender,birthday,mark)values(‘2009130001’,‘张三’,‘南充市’,‘男’,‘1990-1-1’,580)5)要统计不同性别的学生人数,并按照下表形式显示,请写出SQL语句。(6分)学生性别学生人数男100女200Selectgenderas学生性别,count(*)as学生人数fromstud_info6)要从学生信息表stud_info中删除入学成绩低于560分的学生信息,请写出其SQL语句。(5分)Deletefromstud_infowheremark5607)假设要求学生的性别只能是“男”或者“女”,请重新写出创建表stud_info的SQL语句。(5分)createtablestud_info(stud_idchar(10)notnull,namenvarchar(6)notnull,birthdaydatetime,gendernchar(1)check(gender=’男’orgender=’女’),addressnvarchar(20),markintdefault(560)primarykey(stud_id))8)请为学生信息表stud_info创建一个INSERT触发器,当插入学生数据时,首先检查学生入学成绩是否在560分以上,如果入学成绩低于560分,则不允许插入该学生信息。(8分)CREATETRIGGERstudinsertONstud_infoFORinsertASdeclare@markintselect@mark=markfrominsertedif@mark560rollbacktransactionGO