SQL Server 习题及答案.docx

上传人:b****8 文档编号:9301419 上传时间:2023-02-04 格式:DOCX 页数:17 大小:26.49KB
下载 相关 举报
SQL Server 习题及答案.docx_第1页
第1页 / 共17页
SQL Server 习题及答案.docx_第2页
第2页 / 共17页
SQL Server 习题及答案.docx_第3页
第3页 / 共17页
SQL Server 习题及答案.docx_第4页
第4页 / 共17页
SQL Server 习题及答案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

SQL Server 习题及答案.docx

《SQL Server 习题及答案.docx》由会员分享,可在线阅读,更多相关《SQL Server 习题及答案.docx(17页珍藏版)》请在冰豆网上搜索。

SQL Server 习题及答案.docx

SQLServer习题及答案

各章习题及答案

第一章关系数据库原理

一、选择及填空题

(1)在下列四个选项中,不属于基本关系运算的是【1】

A)连接B)投影C)选择D)排序

(2)如果一个班只能有一个班长,而且一班长不能同时担任其它班的班长,班级和班长两个实体之间的关系属于【2】

A)一对一联系B)一对二联系C)多对多联系D)一对多联系

(3)扩展名为mdf的文件是【3】

A)主数据文件B)次数据文件C)日志文件D)项目文件

(4).SQLServer系统中的所有系统级信息存储于哪个数据库()。

A.masterB.model

C.tempdbD.msdb

1.SQLServer的物理存储主要包括3类文件:

、、。

2.若一个关系为R(学生号,姓名,性别,年龄),则_可以作为该关系的主码,姓名、性别和年龄为该关系的属性。

二、简答题

1、什么是数据库?

2、数据库系统有哪些特点?

3、试给出三个实际情况的联系,要求实体之间具有一对一、一对多、多对多各种不同的联系。

4、学校中对教师教学进行评价,被评对象为教师,评价对象有同行教师,学生,专家。

请用E—R图画出教学评价的概念模型。

第一章关系数据库原理(答案)

一、选择及填空题

(1)~(4)daaa

1、主数据文件,次数据文件,日志文件

2、学生号,非主或非码

二、简答题

1、数据库:

存储在一起的相关数据的集合(一个表内,表间直接关联,表间间接关联),无有害的或不必要的冗余(重复),可为多种应用服务,数据可以共享,对于拆、删、改、查等操作均可按照一种公共的可控制的方法进行。

数据被结构化。

2、答案:

1.数据结构化

2.数据的共享性高,冗余度低,易扩展

3.数据的独立性高

4.数据由DBMS统一管理和控制

3、答案:

一对一:

观众和座位

一对多:

班级和学生

多对多:

学生与课程

4、对于教学评价,对同一位被评教师而言,对其评价的学生、同行教师、专家都应该是多名,而且每一次成功评价后会得到一个评价数据,所以可得到对教师教学评价的E-R模型如下图所示。

(为了便于图形表示,图中省略了同行教师实体的属性,同教师实体的属性。

编号

第二章数据库和表的创建

1、采用代码方式创建数据库XSCJ。

要求:

存储路径为C:

\,数据库为XSCJ,主文件为prods_dat,初始容量为4MB,最大容量为10MB,增幅为1MB。

2、采用代码方式在数据库XSCJ中创建表XS_KC。

要求如下表:

列名

数据类型

长度

是否允许为空值

默认值

说明

课程号

char

3

主键

课程名

char

20

授课教师

char

8

开课学期

tinyint

1

1

只能为1~6

第二章数据库和表的创建(答案)

1、createdatabaseXSCJ

onprimary

(name=prods_dat,

filename=’c:

\prods.mdf’,

size=4,

maxsize=10,

filegrow=1)

2、createtableXS_KC

(课程号char(3)notnull,

课程名char(20)notnull,

授课教师char(8),

开课学期tinyintnotnulldefault1check(开课学期=1or开课学期=2or开课学期=3or开课学期=4or开课学期=5or开课学期=6)

constraintpk_kc

primarykey

(课程号)

第三章数据库的查询和视图

参照上面各表完成下列各题:

1、查询XSQK表中陈姓学生的所有情况。

2、用嵌套方法(IN)查询最高分的学生的学号、课程号和成绩。

3、用嵌套方法(IN)查询最高分的学生的学号、姓名、联系电话和成绩。

4、查询学生的平均分。

5、查询平均分低于60的学生学号

6、查询有不及格学生的课程的授课教师

第三章数据库的查询和视图(答案)

1、select*fromxsqkwhere姓名like‘陈%’

2、select学号,课程号,成绩fromxs_kcwhere成绩in(selectmax(成绩)fromxs_kc)

3、selecta.学号,姓名,联系电话,成绩

fromxsqkainnerjoinxs_kcb

whereb.成绩in(selectmax(成绩)fromxs_kc)

4、方法一:

selectdistinct学号,平均分=

(selectavg(成绩)fromxs_kcbwhereb.学号=a.学号)

fromxs_kca

方法二:

selectdistinct学号,avg(成绩)

fromxs_kc

groupby学号

5、方法一:

selectdistinct学号

fromxs_kca

where60>

(selectavg(成绩)fromxs_kcbwhereb.学号=a.学号)

方法二:

selectdistinct学号,avg(成绩)

fromxs_kc

groupby学号

havingsvg(成绩)<60

6、方法一:

selectdistinct授课教师

fromkc

where课程号=any

(select课程号fromxs_kcwhere成绩<60)

方法二:

selectdistinctkc.授课教师

fromkcinnerjoinxs_kconxs_kc.课程号=kc.课程号

wherexs_kc.成绩<60

第四章T-SQL语言

1、编写一个用户自定义函数average要求根据输入学号,求得该学生的各科的平均成绩。

2、使用日期函数求XSQK表中学生的年龄。

3、使用WHILECONTINUEBREAK语句求8!

4、使用case函数,根据学生的年龄范围显示相应信息(年龄在20岁以下的显示年龄较小,20到24岁的显示年龄适中,否则显示年龄偏大)。

第四章T-SQL语言(答案)

1、

createfunctionaverage(@stunoaschar(10))

returnsreal

begin

declare@averint

select@aver=

(selectavg(成绩)

fromxs_kc

where学号=@stuno

groupby学号)

return@aver

end

2、SELECTDATEDIFF(year,出生日期,getdate())as年龄FROMxsqk

3、

declare@objectint,@nint

select@object=1,@n=8

while@n>0

begin

set@object=@object*@n

set@n=@n-1

if@n>1

continue

else

begin

print‘8的阶乘为:

'

print@object

break

end

end

4、

select学号,年龄情况=

case

whenyear(getdate())-year(出生日期)<=20then'年龄较小'

whenyear(getdate())-year(出生日期)>20andyear(getdate())-year(出生日期)<24then'年龄适中'

else'年龄偏大'

end

fromxsqk

第五章、游标、存储过程和触发器

1、使用游标要遵循以下顺序。

2、使用游标,显示xs_kc表中的第4条和第7条记录。

3、使用游标,显示所有107号课程成绩及格的记录。

4、创建存储过程a,从数据库中的三个表中查询,学号、姓名、课程号、授课教师、成绩。

5、创建存储过程a,从数据库中的三个表中查询某人的学号、姓名、课程名、授课教师、成绩。

6、创建存储过程a,从数据库中的三个表中查询某些人的学号、姓名、课程名、授课教师、成绩。

7、创建存储过程a,计算指定学生的总成绩。

8、创建一个嵌套调用的存储过程,实现1!

+2!

+3!

+…+n!

9、如果向xs_kc表中添加或更改数据时,则将向客户端显示一条信息。

10、创建触发器,当向xs_kc表插入一记录时,检查该记录的学号在xsqk表中是否存在,检查课程号在kc表中是否存在,若有一项为否,则不允许插入。

11、创建一个删除类型的触发器notallowdelete,当在xsqk表中删除记录时,触发触发器,显示不允许删除表中数据的提示信息。

以说明INSTEADOF触发器的使用。

第五章、游标、存储过程和触发器(答案)

1、声明游标→打开游标→读取数据→关闭游标→删除游标

2、declarebscrollcursor

for

select*

fromxs_kc

openb

fetchabsolute5

fromb

fetchrelative2

fromb

closeb

deallocateb

3、declarecur_107成绩scrollcursor

for

select学号,课程号,成绩

fromxs_kc

where课程号='107'and成绩>=60

orderby学号

opencur_107成绩

fetchnext

fromcur_107成绩

while@@fetch_status=0

begin

fetchnext

fromcur_107成绩

end

closecur_107成绩

deallocatecur_107成绩

4、

usea

/*检查是否已存在同名的存储过程,若有,删除。

*/

ifexists(selectnamefromsysobjects

wherename='a'andtype='p')

dropprocedurea

go

/*创建存储过程*/

createprocedurea

as

selectxsqk.学号as学号,xsqk.姓名as姓名,xs_kc.课程号as课程号,kc.授课教师as授课教师,xs_kc.成绩as成绩

fromxsqk,xs_kc,kc

wherexsqk.学号=xs_kc.学号andxs_kc.课程号=kc.课程号

go

5、

usea

/*检查是否已存在同名的存储过程,若有,删除。

*/

ifexists(selectnamefromsysobjects

wherename='a'andtype='p')

dropprocedurea

go

/*创建存储过程*/

createprocedurea

@姓名char(8),@课程名char(20)

as

selectxsqk.学号as学号,xsqk.姓名as姓名,kc.课程名as课程名,kc.授课教师as授课教师,xs_kc.成绩as成绩

fromxsqk,xs_kc,kc

wherexsqk.姓名=@姓名andkc.课程名=@课程名andxsqk.学号=xs_kc.学号andxs_kc.课程号=kc.课程号

go

6、

usea

/*检查是否已存在同名的存储过程,若有,删除。

*/

ifexists(selectnamefromsysobjects

wherename='a'andtype='p')

dropprocedurea

go

/*创建存储过程*/

createprocedurea

@姓名char(8)

as

selectxsqk.学号as学号,xsqk.姓名as姓名,kc.课程名as课程名,kc.授课教师as授课教师,xs_kc.成绩as成绩

fromxsqk,xs_kc,kc

wherexsqk.姓名like@姓名andxsqk.学号=xs_kc.学号andxs_kc.课程号=kc.课程号

go

7、

usea

/*检查是否已存在同名的存储过程,若有,删除。

*/

ifexists(selectnamefromsysobjects

wherename='a'andtype='p')

dropprocedurea

go

/*创建存储过程*/

createprocedurea

@姓名char(8),@总成绩decimaloutput

as

Select@总成绩=sum(xs_kc.成绩)

fromxsqk,xs_kc

wherexsqk.姓名=@姓名andxsqk.学号=xs_kc.学号

groupbyxs_kc.学号

go

8、

(1)、创建阶乘存储过程:

createprocedurejiecheng

@nsmallint,

@jbigintoutput

as

select@j=1

while@n>0

begin

select@j=@j*@n,

@n=@n-1

end

(2)、创建加法存储过程

CREATEprocedurejiafa

@n1smallint,

@sbigintoutput

as

declare@m1bigint

set@s=0

while@n1>0

begin

executejiecheng

@n1,@m1output

select@s=@s+@m1,

@n1=@n1-1

end

9、

(1)、创建触发器:

createtriggerreminderonxs_kc

forinsert,update

asraiserror(‘数据添加或修改’,16,10)

(2)、执行:

insertintoxs_kc

(学号,课程号,成绩)

values

('1','1',1)

10、

(1)、创建触发器:

createtriggercheckstringonxs_kc

forinsert

as

ifexists(select*fromxs_kc

wherexs_kc.学号notin(selectxsqk.学号fromxsqk)or

xs_kc.课程号notin(selectkc.课程号fromkc))

begin

raiserror('违背数据的一致性',16,1)

rollbacktransaction

end

(2)、执行:

insertintoxs_kc

(学号,课程号,成绩)

values

('1','1',1)

(1)中另一种方法

createtriggercheckstring1onxs_kc

forinsert

as

ifexists(select*fromxs_kc,inserted

whereinserted.学号notin(selectxsqk.学号fromxsqk)or

inserted.课程号notin(selectkc.课程号fromkc))

begin

raiserror('违背数据的一致性',16,1)

rollbacktransaction

end

11、

创建触发器:

createtriggernotallowdelete

onxsqk

insteadofdelete

as

print'insteadof触发器开始执行……'

print'本表中的数据不允许删除'

执行:

usea

go

deletefromxsqkwhere学号='020101'

go

第六章、批、事务和锁

1、什么是事务?

必须具备哪几个ACID属性?

2、什么是锁?

琐有哪几种模式?

第六章、批、事务和锁(答案)

1、

(1)所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

(2)事务具有4个特性,即原子性、一致性、隔离性和持续性。

2、

(1)锁就是防止其他事务访问指定资源的手段。

(2)锁定资源的方式有两种基本形式:

共享锁(ShareLocks,简称S锁)

排它锁(ExclusiveLocks,简称X锁)。

第七章、索引与数据完整性的实现

1、为XS_KC表创建一个简单索引IX_学号,该索引只包含一个索引列即学号列,且按升序排序。

2、创建一个检查约束,限制联系电话的格式“区号-电话号码”

3、定义一个规则对象对性别列进行检查,使性别只能取值1(表示男)或0(表示女),并将其绑定到XSQK表的性别列。

4、为XS_KC表和KC表建立基于课程号列的关联。

第七章、索引与数据完整性的实现(答案)

1、CREATEINDEXIX_学号

ONXS_KC

(学号)

2、ALTERTABLEXSQK

ADDCONSTRAINTCH_联系电话格式

CHECK(联系电话LIKE‘____-_______%’)

3、CREATERULERO_性别

AS@性别=1or@性别=0

绑定:

sp_bindruleRO_性别,’xsqk.性别’

4、

altertablexs_kc

addconstraintxs_kc_kc

foreignkey

(课程号)

referenceskc

(课程号)

第八章、SQLServer2000管理

1、SQLServer2000有几种身份验证方式?

它们的区别是什么?

2、数据备份策略有哪些?

第八章、SQLServer2000管理(答案)

1、

(1)、Windows身份验证模式:

用户只能使用Windows身份验证连接SQLServer2000;

(2)、混合模式:

用户既可以使用Windows身份验证连接SQLServer2000,又可以使用SQLServer身份验证连接到SQLServer2000。

2、

(1)只备份数据库

(2)备份数据库和事务日志

(3)差异备份

(4)文件和文件组备份

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1