大型数据库期末试题以及答案_第1页
大型数据库期末试题以及答案_第2页
大型数据库期末试题以及答案_第3页
大型数据库期末试题以及答案_第4页
大型数据库期末试题以及答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、选择题1、下面(_B_)描述是正确的。 A、视图是一种常用的数据库对象,使用视图不可以简化数据操作。B、使用视图可以提高数据库的安全性。 C、视图和表一样是由数据构成的。D、视图必须从多个数据表中产生才有意义。2、下面(_D_)组命令,将变量count值赋值为1。A、DIM count int SELECT count=1 B、DIM count=1int C、DECLARE count int SELECT count=1D、DECLARE count int SELECT count=13、你要为一个向全世界出口产品的物流公司开发一个数据库。这个公司有关销售信息的资料都存储在一个名为sales的表格内。消费者的名字都被存放一个名为Customers的数据库内。以下是创建表格的脚本代码。CREATE TABLE Customers ( CustomerID int NOT NULL, CustomerName varchar (30) NOT NULL, ContactName varchar (30) NULL, Phone varchar (20) NULL, Country varchar (30) NOT NULL) 通常每个国家只有1,2名顾客。然而, 有些国家有多达20 名顾客。公司的营销部门想要对超过10个顾客的国家做广告。你要为营销部门创建一个包含这些国家的名单列表。你应该使用哪个代码? ( A )A. SELECT Country FROM Customers GROUP BY Country HAVING COUNT (Country) 10B. SELECT TOP 10 Country FROM Customers C. SELECT TOP 10 Country FROM CustomersFROM (SELECT DISTINCT Country FROM Customers) AS XGROUP BY Country HAVING COUNT(*) 10D. SET ROWCOUNT 10 SELECT Country , COUNT(*) as “NumCountries” FROM Customers GROUP BY Country ORDER BY NumCountries Desc4、下列关于数据库、文件和文件组的描述中,错误的是( B )。A)一个文件或文件组只能用于一个数据库B)一个文件可以属于多个文件组 C)一个文件组可以包含多个文件D)数据文件和日志文件放在同一个组中5、学生成绩表包含列“学号”、“课程代号”、“成绩”、“考试时间”等。列“成绩”的值为NULL表示该学生缺考这门课。请用SELECT语句查询学号为“”的学生所有缺考的课程数( A )。A、SELECT COUNT(*) FROM 学生成绩表 WHERE 学号 = 98120001 AND 成绩 IS NULLB、SELECT COUNT(成绩) FROM 学生成绩表 WHERE 学号 = 98120001 AND 成绩 IS NULLC、SELECT COUNT(*) FROM 学生成绩表 WHERE 学号 = 98120001 AND 成绩NULLD、SELECT COUNT(成绩) FROM 学生成绩表 WHERE 学号 = 98120001 AND 成绩= NULL6、在录入公司业务信息时,要确保字段“业务量”的值在100到200之间,需要使用下列哪种约束( D )。A)DEFAULT B)PRIMARY KEYC)UNIQUED)CHECK7、以下不是SQL Server 2005触发器类型的是(_B_)。A、INSERT触发器 B、SELECT触发器C、UPDATE触发器 D、DELETE触发器8、在学生成绩表tblCourseScore中的列Score用来存放某学生学习某课程的考试成绩(0100分,没有小数), 用下面的哪种类型最节省空间?( C )。A) intB) smallintC) tinyintD) decimal(3,0)9、以下哪个不能用于处理缺失的信息.( A ) A. inner join B. left outer join C. right outer join D. full outer join10、修改存储过程使用的语句是(_B_)。A、INSERT PROCEDURE B、ALTER PROCEDURE C、DROP PROCEDUE D、DELETE PROCEDUE11、在Insert Into语句中某些列是可以不插入值,给出列时,可以省略这些列,以下说法不正确的是:( D )A. 具有Identity属性的列,可以省略;B. 具有默认值的列,可以省略;C. 允许为空的列,可以省略;D. 设置为主键的列,可以省略12、下列条目中,哪个不属于ALTER TABLE的功能 ( D )A增加表的完整性约束 B修改表中列的定义C增加表中的列 D修改表中的记录13、创建如下存储过程:CREATE PROCEDURE my_proc_deffirst int = NULL, second int = 2, third int = 3 ASSELECT first, second, thirdGO以下调用存储过程得到的结果错误的是 ( D )。A、EXECUTE my_proc_def 结果值:NULL 2 3B、EXECUTE my_proc_def 10, 20, 30 结果值:10 20 30C、EXECUTE my_proc_def second = 500结果值:NULL 500 3D、EXECUTE my_proc_def 40, third = 50结果值:40 500 5014、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(_D_)。A、SELECT,INTOB、SELECT,FROMC、SELECT,GROUPD、仅SELECT15、在Transact-SQL语法中,使用关键字(_A_)可以把重复行屏蔽。A、DISTINCTB、UNIONC、ALLD、TOP16、在Transact-SQL语法中,将多个查询结果返回一个结果集合的运算符是(_B_)。A、JOINB、UNIONC、INTOC、LIKE17、在Transact-SQL语法中,可以对查询结果进行排序的子句是(_C_)。 A、GROUP BYB、COMPUTE BYC、ORDER BYD、COMPUTE18、在创建视图时,可以用来将包含创建此视图的文本加密的选项是(_B_)A、WITH SCHEMABINDING B、WITH ENCRYPTIONC、WITH CHECK OPTIOND、WITH VIEW_METADATA19、一个数据库可以有几个主文件。(_C_)A、可以0个B、至少一个C、有且仅有一个D、可以0个,也可以多个20、在聚合函数中,即使每行都包含空值,仍会计算所有行的函数是(_C_)。A、SUMB、MAXC、COUNT(*)D、COUNT21、在数据库中创建表可以通过(_D_)等方法来实现。 A、企业管理器B、查询分析器C、OSQL D、企业管理器和CREATE TABLE语句22、左外联接中TABLE1 LEFT OUTER JOIN TABLE2 ON JOIN_CONDITION如果现在TABLE2中没有相应的行,则返回( D )。A、没有返回 B、两个表所有行C、TABLE2中所有行 D、TABLE1中所有行23、LIKEA-C%匹配的内容是什么( B )A匹配以A或C开头的字符串B匹配以A到C当中任何一个字母开头的字符串C匹配以A或C开头的字符串,且字符串仅包含了两个字符D匹配以A到C当中任何一个字母开头的字符串,且字符串仅包含了两个字符24、关于默认值和规则,下列描述不正确的是( C ) A. 列的默认值必须符合绑定到此列上的任何规则和CHECK 约束 B. 不能为已有默认绑定的列创建DEFAULT 约束 C. 创建的规则可检查出先前已经存在于数据库中的不符合规则的数据 D. 一个列或者用户定义数据类型只能被一个规则绑定25、下面哪些语句属于数据定义语言(DDL)是( D )。ASELECT BINSERT CUPDATE DDROP26、ALL (1, 2, 3) 表示 3,ANY (1, 2, 3) 表示 1( A )。A、大于,大于B、大于,小于C、小于,小于D、小于,大于27、以下哪些不是SQL Server的系统数据库(D)。A、masterB、modelC、tempdbD、Northwind28、已知,SQL Server中的触发器使用两种特殊的表:deleted 表和 inserted 表。那么下面的描述中那一个说法是错误的( D )。A、在执行 DELETE 语句时,行从触发器表中删除,并传输到 deleted 表中。B、在执行 INSERT 语句时,新建行被同时添加到 inserted 表和触发器表中。C、在执行 UPDATE 语句时,首先旧行被复制到 deleted 表中,然后新行被复制到触发器表和 inserted 表中。D、虽然Microsoft SQL Server 2005 自动创建和管理deleted 表和 inserted 表,但是还是允许我们直接对表中的数据进行更改。29、定单表Orders的列OrderID的类型是小整型(smallint),根据业务的发展需要改为整型(integer),应该使用下面的哪条语句(C)。A、ALTER COLUMN OrderID integer FROM Orders B、ALTER TABLE Orders ( OrderID integer )C、ALTER TABLE Orders ALTER COLUMN OrderID integerD、ALTER COLUMN Orders.OrderID integer30、执行下面脚本,共有多少条记录插入到表tblTemp中( D )。CREATE TABLE tblTemp( TempID integer not null,TempDate datetime not null)goDECLARE count integerSET count = 1WHILE count = 10BREAKELSE BeginINSERT tblTemp VALUES(count,GETDATE()SET count = count + 1endENDA、0 B、8 C、9 D、10二、判断题1、insert into tableA select * from where address=福建省福州市,要正确运行如上语句,tableA可以不存在,在查询的过程中生成。( F )2、在 Transact-SQL 语句中,使用通配符“”只能描述单个字符。( F )3、在 Transact-SQL 语句的WHERE子句中,可以用IN 搜索条件来代替由 OR 操作符连起来的一系列比较操作符。( T )4、对包含空值的字段使用聚合函数时,SQL Server 的聚合函数都将忽略字段中的空值( F )5、在 Transact-SQL 语句中,使用通配符“”只能描述单个字符。( T )6、select A, B, C,count(*) from tableA group by A, B 以上语句不存在语法错误( F )7、以下定义变量及赋值语句是正确的( F )declare i int,j intset i=2,j=28、在选择列表中,使用符号“ * ”代表选择表中所有的字段。( T )9、触发器可以引用其他表中的列,能强制比 CHECK 约束更复杂的数据完整性。( T )10、触发器是通过事件触发而由系统自动执行的。( T )11、列约束被指定为列定义的一部分,并且只应用到那一列。( T )12、如果要在多列上创建相同的默认值,可以先定义默认值再采用绑定的方法。 ( T )13、一个数据库可以有多个主文件。( F )14、UNIQUE 约束指明任意两行不能有相同的值。( F )17、在游标中,要读取游标当前的值,用select语句。(F)16、对一个表插入数据,一次只能插一条记录到表中。(F)17、禁用触发器后,若再想再次使用,必须重新创建。(F)三、填空题1、系统存储过程是存储在 master 数据库内,以 SP_ 为前缀标识的。2、可以定义一列或多列的值与同表或其他表中主键的值匹配的约束类型是 外键约束。3、Transact-SQL 语句的种类分为 DML 、 DDL 和 DCL 三种。4、某数据字段,其数据类型为decimail(7,4),若向某记录的该列赋值56.342619,则该列实际存储的是 56.3426 。5、 当标识符的第一个字符是符号时,代表它有特殊用处。以 开头的标识符代表局部变量或参数;以 开头的标识符代表全部变量或参数;6、当在定义了触发器的表上执行 UPDATE 语句的时候,原行(前像)被移到 deleted 表中,而更新的行(后像)则插入 inserted 表中。7、从表或视图中检索数据可以使用关键字 select ;将数据插入到表或视图中可使用关键字 insert ;更新表或视图中的数据可使用关键字 update ;从表或视图中删除数据可使用关键字 delete 。8、在 Transact-SQL 语句中,用来创建对象的关键字是 create 、用来更改对象的关键字是 alter 、用来删除对象的关键字是 drop 。9、在Transact-SQL 语句中,可以使用 CREATE DATABASE 语句来创建数据库,使用 CREATE TABLE 语句来创建表,使用 CREATE VIEW 语句来创建视图,使用 CREATE PROC 语句来创建存储过程.10、使用 Alter table 通过更改、添加或删除列和约束,或者启用或禁用约束和触发器,从而修改表的定义.11、编写LIKE子句用来检索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称:_ LIKE M-Zinger_12、在流程控制语句中_ beginend_语句用于包括一组T-SQL语句,使一组T-SQL语句作为一个单元进行处理。13、索引按照组织方式分,可以分为 聚集索引 和 非聚集索引 两种。四、程序题1、 请根据如下要求,使用Transact-SQL进行填空创建一个名为Students的数据库, 其中:主数据文件名为Students_Data1,初始大小10MB,最大大小不受限制,次要数据文件名为Students_Data2,初始大小为5MB,最大不超过50MB;包含一个日志文件Students_Log,初始大小3MB,最大不能超过5MB,按5增长;所有文件均存放在C:SQLData文件夹下。CREATE database Students on primary(name=Students_Data1,=C:SQLDataStudents_Data1.mdf,size=10mb),(name=Students_Data2,=C:SQLDataStudents_Data2.ndf,size=5mb,maxsize=50mb)log on(name=Students_Log,=C:SQLDataStudents_Log.ldf,size=3mb,maxsize=5mb,=5%)2、某银行数据库,有如下表CardInfo:列名数据类型长度是否空值说明CardIDchar19否卡号passchar6否密码balancemoney否余额Statechar8否状态openDatedatetime否开户时间1) 创建默认值对象default_State,默认值取值为: 正常create default default_State as 正常2) 并将此默认值对象绑定到上表的State字段中。create table CardInfo(CardID char(19) not null,pass char(6) not null,balance money not null,State char(8) not null,openDate datetime not null)exec sp_bindefault default_State,CardInfo.State分值分布情况:一、 填空题(2*10=20)二、 选择题(2*15=30)四、程序填空题(2*10=20)五 、程序题(30)(四五题)范围:1、 创建数据库答:create database 数据库名删除数据库drop database dbname2、 默认对象的创建与绑定.use xsbookgocreate default jss_default as 0 -创建默认值对象jss_default goexec sp_bindefault jss_default,xs.借书数 -将默认值对象绑定到xs表的列借书数go3、 索引的添加 CREATEUNIQUECLUSTERED|NONCLUSTEREDINDEX名字ONtable_name|view_nameWITHindex_property,.n说明:UNIQUE:建立唯一索引。CLUSTERED:建立聚集索引。NONCLUSTERED:建立非聚集索引。Index_property:索引属性。UNIQUE索引既可以采用聚集索引结构,也可以采用非聚集索引的结构,如果不指明采用的索引结构,则SQLServer系统默认为采用非聚集索引结构。 例如:CREATE UNIQUE INDEX Courseid ON Course(Cno);4、 视图的创建,往视图添加,修改数据视图创建:create view 视图名asselect * from 表名视图添加:INSERT INTO视图名VALUES(数据,数据) 修改数据:UPDATE 视图名 SET 字段名 = 修改的数据5、 触发器的创建,修改,删除(如更新触发器)创建:CREATE TRIGGER 触发器名称ON 表名FOR INSERT、UPDATE 或 DELETEAS T-SQL 语句注意:触发器名称是不加引号的。删除:在查询分析器中使用drop trigger 触发器名称来删除触发器。也可以同时删除多个触发器:drop trigger 触发器名称,触发器名称.重命名:exec sp_rename 原名称, 新名称修改:alter trigger trigger_nameon table_name view_namefor After Instead of insert, update,delete assql_statement 例题:-1、在SC表上,建立后触发的插入触发器Check_Count1,规定每门课程的选课人数不能超过4人,若该课程选课人数未满4人,可以插入数据。(前提:一次插入一条记录)create Trigger Check_Count1 On SCFor InsertASDeclare cno Char(10),StuCount intSelect cno=cno from InsertedSelect StuCount=Count(*) From SC Group by cno Having cno=cnoIf StuCount4Begin RollBack Transaction -回滚事务,即使没有使用Begin Transaction 语句; Raiserror(该课程的选课人数超过,已经满额!,16,1) -输出自定义的错误信息,Rollback后的语句仍然被执行; EndGo-测试上面的触发器;select Cno,count(sno) from SC group by Cnogoinsert into SC Values(2006010103,J004,null)-delete from SC where Sno=2006010104 and Cno=J001godrop Trigger Check_Count1-2、在SC表上,建立替代触发的插入触发器Check_Count2,规定每门课程的选课人数不能超过4人,若该课程选课人数未满4人,可以插入数据。(前提:一次插入一条记录)Create Trigger Check_Count2 On SCInstead of InsertASDeclare cno Char(10),StuCount intSelect cno=cno from InsertedSelect StuCount=Count(*) From SC Group by cno Having cno=cnoIf StuCount=4 Raiserror(该课程的选课人数超过,已经满额!,16,1)Else Insert SC Select * From Inserted Go-测试上面的触发器;select Cno,count(sno) from SC group by Cnogoinsert into SC Values(2006010103,J004,null)insert into SC Values(2006010103,J002,NUll)delete from SC where Sno=2006010103 and Cno=J004godrop Trigger Check_Count2-3、在SC表上,建立一个Update后触发器Check_CNO1,当学生修改课程编号时,给出提示信息,并不能修改该列。Create Trigger Check_CNO1 On SCAfter UpdateASIf Update(CNO) Begin Raiserror(课程号不能修改,请删除选课后,重新选课!,16,1) RollBack TransactionEndGo-测试上面的触发器;select * from SC order by Cnoupdate SC set Cno=J001 where Sno=2006010105 and Cno=J004go drop Trigger Check_CNO16、 存储过程的创建,执行,修改,删除(如:有输入参数,返回值的存储过程) 1、创建存储过程Price_order查询产品的名称,价格,并按照价格进行排序,并执行。create proc Price_orderasselect pName , priceform productsorder by price asc/desc go2、创建存储过程Most_expensiveProduct查询最高价格的产品,并执行。create proc Most_expensiveProductasselect top 1 with ties pName , priceform productsorder by price desc go3、创建存储过程TotalPrice,计算所有产品总价格,并执行。create procedure TotalPriceasselect sum(price) as 总价格 from products go 创建: 1 CREATE PROCEDURE Get_Data 2 ( 3 Dealer_ID VARCHAR(50) 4 ) 5 AS 6 SELECT * FROM myData WHERE Dealer_ID = Dealer_ID修改:1 ALTER PROCEDURE dbo.Get_Data 2 ( 3 Dealer_ID VARCHAR(50) 4 ) 5 AS 6 SELECT * FROM myData WHERE Dealer_ID = Dealer_ID删除:drop procedure sp_name7、 函数的创建,修改,删除(如:标量函数)创建:CREATE FUNCTION dbo.函数名(参数)RETURNS NVARCHAR(15)ASBEGIN修改:alter function 名称(参数名称 参数类型=默认值,n)returns 局部变量 tablewith encryptionasbegin函数体return 函数返回值end删除:dropfunction函数名 一、创建标量用户定义函数1、在学生信息管理系统中,学生信息表包含列“学号”、列“姓名”;课程信息表包含列“课程代号”、“课程名称”;学生成绩表包含列“学号”、列“课程代号”、列“成绩”,已用约束保证成绩的范围为0100分。编写标量函数fn_StudentScore,要求:输入一个学号和一个课程号,返回这个学生这门课的成绩,如果此学生没有选这门课,返回-1。CREATE FUNCTION fn_StudentScore(stu_id char(8) ,course_id char(3)returns intas begindeclare a int set a=(select score from scorewhere stu_id=stu_id and course_id=course_id)if a is nullbegin set a=-1endreturn aend2、测试函数fn_StudentScore(选两个例子,一个显示成绩,一个显示-1)declare score intexec score = fn_StudentScore stu_id=0601009 ,course_id=009select score as 成绩declare score intexec score = fn_StudentScore stu_id=0601002 ,course_id=009select score as成绩3、在学生信息管理系统中,学生信息表包含列“学号”、列“姓名”;课程信息表包含列“课程代号”、“课程名称”;学生成绩表包含列“学号”、列“课程代号”、列“成绩”,已用约束保证成绩的范围为0100分。编写用户定义函数fn_EvaluateOneStudent,要求:每次输入一个学号,计算该学生的所有课程的平均分,如果是85100分,返回“优”;如果是7584分,返回“良”;如果是6574分,返回“中”;如果是064分,返回“差”。 CREATE FUNCTION fn_EvaluateOneStudent (学号 char(8)RETURNS varchar(10)ASBEGINDECLARE 平均分 integer, 等级 varchar(10) SELECT 平均分=AVG(score)FROM score WHERE stu_id=学号 IF 平均分 BETWEEN 85 AND 100 SET 等级=优 ELSE IF 平均分 BETWEEN 75 AND 84 SET 等级=良 ELSE IF 平均分 BETWEEN 65 AND 74 SET 等级=中 ELSE IF 平均分 BETWEEN 0 AND 64 SET 等级=差 RETURN 等级END4、测试函数fn_EvaluateOneStudent例如:判断学号为、的同学的等级。declare

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论