当前位置:文档之家› 新SQL——SERVER实验练习答案

新SQL——SERVER实验练习答案

新SQL——SERVER实验练习答案
新SQL——SERVER实验练习答案

SQL-Server实验

答案

上海师范大学计算机系

目录

第一部分企业管理器的使用 (3)

试验一注册服务器............................................................................... 错误!未定义书签。

试验二创建数据库............................................................................... 错误!未定义书签。

试验三创建表....................................................................................... 错误!未定义书签。

实验四数据输入................................................................................... 错误!未定义书签。

实验五登录到数据库服务器............................................................... 错误!未定义书签。第二部分SQL语言 (3)

第二部分SQL语言 (3)

试验一数据库创建 (3)

试验二创建表 (3)

试验三创建数据完整性 (5)

试验四数据完整性试验 (6)

试验五索引 (10)

试验六更新数据 (11)

试验七 Sql 查询语句 (12)

试验八视图 (15)

试验九安全性控制实验 (16)

试验十存储过程 (17)

试验十二触发器 (21)

试验十二恢复技术 (25)

试验十三事务 (26)

试验十四锁 (27)

第一部分企业管理器的使用

第二部分SQL语言

试验一数据库创建

目的:1掌握利用SQL语言进行数据库的创建、维护。

2 sp_helpdb 命令

要求:1 创建数据库 2 修改数据库 3 删除数据库

一建立school 数据库

1 使用查询分析器创建数据库 school

Create DataBase school

2 使用 SP_helpdb 查询数据库 School 的信息

3 使用SQL-Server 的企业管理器查看数据库 school 的信息。

4 记录:

1)school 数据库文件所在的文件夹。

2)school 数据库的文件名

二删除School数据库

1 使用查询分析器删除数据库 school

DROP DATABASE school

2 使用SQL-Server 的企业管理器删除数据库 school 。

三 create Database 深入研究

1 建立school数据库,要求数据库存储在c:\data文件夹下,初始大小为5MB ,增量为 1MB。 CREATE DATABASE school ON(

Name = ‘school_dat’,

Filename = 'c:\sqldata\school.mdf',

SIZE = 5,

FILEGROWTH = 1 )

2使用SQL-Server 的企业管理器,将数据库的每次增量改为20%。

试验二创建表

目的:1 掌握利用SQL语言创建表的方法。

2 sp_help 命令

要求:1 创建表2 修改表结构3删除表

一写出使用 Create Table 语句创建表 student , sc,course 的SQL语句。学生表、课程表、选课表属于数据库School ,其各自得数据结构如下:

学生Student (Sno,Sname,Ssex,Sage,Sdept)

课程表course(Cno,Cname,Cpno,Ccredit)

SC(Sno,Cno,Grade)

二把创建表的sql 语句的脚本存储到文件 school.sql 。create table Student (

Sno char(6) ,

Sname char(10) ,

Ssex char(2) ,

Sage smallint ,

Sdept char(10) ,

)

create table course(

Cno char(4) ,

Cname char(16) ,

Cpno char(4) ,

Ccredit int,

)

create table SC(

Sno char(6),

Cno char(4) ,

Grade int

)

三使用 SP_HELP 查看表 student 的表结构

利用企业管理器查看表 sc 的表结构

四利用 sql 语句表结构修改

1 在student 表中添加列:

家庭地址address 长度为60 varchar 型

入学日期inDate 日期型

ALTER TABLE student ADD address varchar(60)

ALTER TABLE student ADD inDate datetime

完成后用sp_help 查看是否成功。

2 将家庭地址address 长度为50

ALTER TABLE student ALTER COLUMN varchar(50)

完成后用sp_help 查看是否成功。

3 删除student 表的inDate 列

ALTER TABLE student DROP COLUMN inDate

五删除表

1 删除表sc

2 删除表student

3 删除表course

试验三创建数据完整性

目的:1掌握创建数据完整性约束的命令。

2 掌握完整性约束的修改、删除。

要求:1 能建立完整性约束 2 修改完整性约束 3 删除完整性约束

一写出带有完整性约束的 Create Table 命令建立表student、course、sc 。要求:

1 Student表的主码:sno

student 的约束:

●姓名不可为空,且唯一

●性别不能为空且取值范围为{男,女}

●年龄大于16岁

●sdept 默认为…JSJ? 系

2Course表的主码:cno

course 的约束:

●Ccredit 取值范围{ 0 ,1,2,3,4,5 }

●课程表的每一行的Cno 与cpno 不可相同

3 Sc表的主码:sno,cno 。主码名为PK_SC

Sc的外码:

●外码:SC 表的sno 参照表student 的sno

●外码:sc 表的Cno 参照表course 的cno

4 把上述创建表的sql 语句的脚本存储到文件 createSchool.sql 。

create table Student (

Sno char(6) ,

Sname char(10) not null unique ,

Ssex char(2) check (ssex='男' or ssex='女') ,

Sage smallint check(sage>16) ,

Sdept char(10) not null default 'JSJ' ,

primary key (sno)

)

create table course(

Cno char(4) ,

Cname char(16) ,

Cpno char(4) ,

Ccredit int check (Ccredit >=0 and Ccredit<=5),

check( cno<>cpno) , --约束

primary key (cno)

)

create table SC(

Sno char(6),

Cno char(4) ,

Grade int check(grade<=100) ,

constraint pk_sc primary key (sno,cno),

foreign key (sno) references student(sno) ,

foreign key (cno) references course(cno) ,

)

二使用 SP_HELP 查看表 student 的主码名,约束名,并记录。

使用SP_HELP 查看表sc 的主码名,外码名,并记录。

三利用alter table 添加、删除完整性约束

1 删除SC 的主码,sc表的主码名为pk_sc

ALTER TABLE sc DROP pk_sc

复习在Sql-Server 企业管理器中如何完成。

2 删除SC 表参照course 表的外码。

如何知道SC表参照course 表的外码的名字。

1) SP_HELP course 找到外码名,假设为:fk_sc_cno_02938

2) ALTER TABLE sc DROP fk_sc_cno_02938

3 添加SC 表的主码。主码名为PK_SC

ALTER TABLE sc ADD CONSTRAINT pk_sc PRIMARY KEY (sno,cno)

4 添加SC 表的Cno 的外码,参照表Course的Cno.

ALTER TABLE sc ADD FOREIGN KEY (cno) REFERENCES course(cno) 5加自定义约束:表SC的成绩只能在0 – 100分之间。

ALTER TABLE sc ADD check(grade>=0 and grade<=100)

四使用 Sql-Server 企业管理器完成:

1 删除SC 表参照course 表的外码。

2 建立SC 表的Cno 的外码,参照表Course的Cno.

*使该外码具有级联修改的功能。

3 删除表SC的成绩只能在0 – 100分之间的约束.

3加自定义约束:表SC的成绩只能在0 – 100分之间。

五使用

select * from student 查看信息

select * from course 查看信息

select * from sc 查看信息

试验四数据完整性试验

目的:1理解实体完整性、参照完整性、用户自定义完整性的作用

2 特别掌握外码的作用。

要求:记录试验中遇到的问题,并写出原因。

实验前需要利用试验三完成的脚本文件createSchool.sql,重新建立数据库school 。一实体完整性

●输入上述数据,记录出现的问题,说明原因。

第三行不能输入。

Student 的主码为sno , 因此sno 列的值不能重复。

●select * from student 查看你输入了几行数据。

3 SC 表数据的输入

输入上述数据,记录出现的问题,说明原因。

二用户自定义完整性约束

表student 有用户自定义约束:

性别不能为空且取值范围为{男,女}

年龄大于16岁

表course 的自定义约束:

Ccredit 取值范围{ 0 ,1,2,3,4,5 }

课程表的每一行的Cno 与cpno 不可相同

●输入上述数据,记录出现的问题,说明原因。

3005 学生不能输入,年龄问题,有约束sage>16

3006学生不能输入,性别不对。

●select * from student 查看你输入了那些数据。

1086 不能输入,因为有约束check(cno<>cpno)

●select * from student 查看你输入了那些数据。

●输入上述数据,记录出现的问题,说明原因。

3002 这条数据不能输入,因为grade不能大于100分●select * from student 查看你输入了那些数据。

三参照完整性约束

●掌握表之间建立外码后,对被参照表的如下操作会有何影响:

修改主码、插入新行、删除新行?

●对参照表添加新行、删除行、修改外码值有何影响?

●掌握级联修改、级联删除的概念。

注意:

表SC的 Sno是外码,参照student的sno。

表SC的 Cno是外码,参照course的cno。

1 输入实验前的数据

2 试验过程

记录试验结果.,写出出现此结果的原因.

不能添加,因为在cno是外码,参照course的cno , 但在course 中没有1066课程。

记录试验结果.,写出出现此结果的原因.

可以输入

3) 删除student 表的4001 ,4002学生

记录试验结果.,写出出现此结果的原因.

两个学生不能被删除,因为sc的外码sno 参照student的sno, sc中已经有4001,4002学生的数据,因此不能删除。

思考:

●删除SC表的记录有限制吗?

没有

●采取什么技术能使不能成功执行的命令变得可以执行,且使数据库保持数据完整

性。

级联删除

4) 把student 表的学号4003 改为4018 , 4001改为4021。

记录试验结果.,写出出现此结果的原因.

4003 可以改为4018, 4001不能改为4021

因为sc的外码sno 参照student的sno, sc中已经有4001的数据,但没有4003的选课数据。

思考:采取什么技术能使本题不能执行的命令可以执行,且使数据库保持数据完整性。

级联修改

4011。

记录试验结果.,写出出现此结果的原因.

不能修改,因为sc的外码sno 参照student的sno, 4011在student中不存在。

如不成功,则可以采取什么方法来实现此要求。

需要在student表中添加4011学生。

●如不成功,那么把4001修改为4003,能成功吗?

能成功!

思考: 参照完整性规则中,外码可以为空, 但SC表中的外码可以为空吗?为什么?

举一个外码可以为空的例子。

不可以,因为sc表的主码为sno+cno, 即sno,cno为主属性,所以不能为空。

试验五索引

目的:掌握索引的建立、删除的方法。

一创建索引

1 建student 的索引

为姓名建立索引,索引名:Ix_student_sname

为系科建立索引,索引名:Ix_student_sdept

create index ix_student_sname ON student(sname)

create index ix_student_sdept ON student(sdept)

2 SC 的索引

为课程号建立索引:ix_sc_cno

create index ix_sc_cno ON sc(cno)

3 Course 的索引

为课程名建立唯一性索引:Ix_course_cname

create unique index ix_course_cname ON course( cname)

4 如何SP_HELP 查看索引刚才建立的索引?

如何在企业管理器中查看索引?

二删除索引course 表的索引IX_course_cname

DROP INDEX course.ix_course_cname

三思考:如何把索引IX_student_sname 修改为唯一性索引?

可以使用企业管理器

或先删除索引,再重新建立。

*四思考建立索引的目的

1 输入下列存储过程,该程序生成大量数据供测试:

create procedure usp_makedata as

declare @nCnt int , @sNo varchar(6) , @sname varchar(8)

set @nCnt =12000 --计数器

while @nCnt<999999

begin

set @nCnt = @nCnt + 1

set @sNo = convert(varchar(6) ,@nCnt)

set @sName = '张'+@sno

insert into student (sno,sname,ssex,sage) values ( @sno,@sname,'男',20) end

return

2 exec usp_makedata --生成测试数据

3 输入下述测试程序:

create procedure usp_test as

declare @nCount int ,@data int

set @nCount=0

while @nCount<100

begin

select @data=count(*) from student where sname <'张3800' or sname>'张8800' set @nCount =@nCount + 1

end

4 测试

1)建立姓名的索引,查看运行时间(8秒).

create index ix_student_sname on student(sname) --建立索引

exec usp_test

2) 删除姓名索引,查看运行时间(2分11秒),比较与1)的时间长短。

drop index student.ix_student_sname --删除索引

exec usp_test

试验六更新数据

目的:掌握insert,update ,delete 语句的使用。

一 insert

?SX?) Insert into student (sno,sname,ssex,sage) values (…4002 …,?杨华?,?女?,21)

2 批量插入数据

1)建立一个新表sc_name ,有属性sno , sname , ssex , cno , grade 。

CREATE TABLE sc_name (

Sno char(6) ,

Sname varchar(20),

Ssex char(2) ,

cno char(4) ,

grade int )

2)把SX 系学生的sno,sname,ssex, cno , grade 插入到表sc_name 中。

Insert into sc_name (sno,sname,ssex,cno , grade)

select student.sno,sname , ssex,cno,grade from student,sc

where student.sno=sc.sno and sdept=?SX?

3)察看sc_name 表的数据

select * from sc_name

二Update

1 修改0001 学生的系科为: JSJ

Update student set sdept=?JSJ? where sno=?0001?

2 把陈小明的年龄加1岁,性别改为女。

Update student set sage=sage+1 , ssex=?女?where sname=?陈小明?

3 修改李文庆的1001课程的成绩为93 分

update sc set grade=93 where cno=?1001?and sno in (

select sno from student where sname=?李文庆?)

4 把“数据库原理”课的成绩减去1分

update sc set grade=grade - 1 where cno in (

select cno from course where cname=?数据库原理? )

三Delete

1 删除所有JSJ 系的男生

delete from student where sdept=?JSJ?

2 删除“数据库原理”的课的选课纪录

Delete from sc where cno in (select cno from course where cname=?数据库原理? ) 思考:修改数据的命令与修改表结构的命令有何区别?

试验七 Sql 查询语句

目的: 掌握 Select 查询语句。

一单表

1查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。select sno,sname,sage from student

where sage between 19 and 21 and ssex=’女’ order by sage desc

2查询姓名中第戎2个字为“明”字的学生学号、性别。

select sname ,ssex from student where sname like ‘_明%’

3查询 1001课程没有成绩的学生学号、课程号

select sno,cno from sc where grade is null and cno=’1001’

4查询JSJ 、SX、WL 系的学生学号,姓名,结果按系及学号排列

select sno,sname from student where sdept in (‘JSJ’,’SX’,’WL’)

order by sdept,sno

5按10分制查询学生的sno,cno,10分制成绩

(1-10分为1 ,11-20分为2 ,30-39分为3,。。。90-100为10)

select sno , cno , grade/10.0+1 as level from sc

6查询 student 表中的学生共分布在那几个系中。(distinct)

select distinct sdept from student

7查询0001号学生1001,1002课程的成绩。

Select cno from sc where sno=’0001’ and (cno=’1001’ or cno=’1002’)

二统计

1查询姓名中有“明”字的学生人数。

select count(*) from student where sname like ‘%明%’

2计算‘JSJ’系的平均年龄及最大年龄。

Select avg(sage) , max(sage) from student Where sdept=’JSJ’

3计算每一门课的总分、平均分,最高分、最低分,按平均分由高到低排列

select cno,sum(grade),avg(grade),max(grade),min(grade) from sc

group by cno

order by avg(grade) desc

4 计算 1001,1002 课程的平均分。

Select cno , avg(grade) from sc where cno in (‘1001’,’1002’)

Group by cno

5 查询平均分大于80分的学生学号及平均分

select sc.sno , avg(grade) from sc

group by sc.sno

having avg(grade)>80

6 统计选修课程超过 2 门的学生学号

select sno from sc group by sno having count(*)>2

7 统计有10位成绩大于85分以上的课程号。

Select cno from sc

where grade>85

group by cno having count(*) =10

8 统计平均分不及格的学生学号

select sno from sc group by sno having avg(grade)<60

9 统计有大于两门课不及格的学生学号

select sno from sc where grade<60

group by sno having count(*) >2

三连接

1查询 JSJ 系的学生选修的课程号

select cno from student,sc where student.sno=sc.sno and sdept=’JSJ’

2查询选修1002 课程的学生的学生姓名 (不用嵌套及嵌套2种方法)

a: select sname from student,sc where student.sno = sc.sno and cno=’1002’b: select sname from student where sno in (select sno from sc where cno=’1002’) 3查询数据库原理不及格的学生学号及成绩

select sno,grade from sc ,course

where https://www.doczj.com/doc/c65591737.html,o=https://www.doczj.com/doc/c65591737.html,o and cname=’数据库原理’

4查询选修“数据库原理”课且成绩 80 以上的学生姓名(不用嵌套及嵌套2种方法)

a: select sname from student , sc , course

where student.sno=sc.sno and https://www.doczj.com/doc/c65591737.html,o = https://www.doczj.com/doc/c65591737.html,o and

grade>80 and cname=’数据库原理’

b: select sname from student where sno in ( select sno from sc where grade>80 and cno in ( select cno from course where cname=’数据库原理’) )

5查询平均分不及格的学生的学号,姓名,平均分。

select sno, max(sname) , avg(grade) as avggrade from sc , student

where student.sno=sc.sno

group by student.sno

having avg(grade) <60

6查询女学生平均分高于75分的学生姓名。

A: Select sname from student where ssex=’女’ and sno in (

Select sno from sc group by sno having avg(grade)>75)

B: Select max(sname ) from sc,student where student.sno=sc.sno and Ssex=’女’ Group by student.sno having avg(grade)>75

7查询男学生学号、姓名、课程号、成绩。(一门课程也没有选修的男学生也要列出,不能遗漏)

select student.sno,sname,cno,grade from student left join sc ON student.sno=sc.sno and ssex=’男’

四嵌套、相关及其他

1 查询平均分不及格的学生人数

select count(*) from student where sno in (

select sno from sc group by sno having avg(grade)<60 )

2 查询没有选修1002 课程的学生的学生姓名

select sname from student where sno not in(

select sno from sc where cno=’1002’)

student

0001 aa X

0002 bb

0003 cc X

sc

0001 1001

0001 1002

0002 1001

0003 1002

select sname from student where not exists (

select * from sc where cno=’1002’ and sc.sno=student.sno)

3 查询平均分最高的学生学号及平均分(2种方法 TOP , any , all)

a: select top 1 sno,avg(grade) from sc group by sno order by avg(grade) desc

B: select sno,avg(grade) from sc group by sno

having avg(grade) = (select top 1 avg(grade) from sc

group by sno order by avg(grade) desc )

c: select sno,avg(grade) from sc group by sno

having avg(grade) >=all ( select avg(grade) from sc group by sno )

*4 查询没有选修1001,1002课程的学生姓名。

Select sname from student where not exists (

Select * from course where cno in (‘1001’,’1002’) and

Not exists ( select * from sc where sno=student.sno and cno=https://www.doczj.com/doc/c65591737.html,o ) )

5 查询1002课程第一名的学生学号(2种方法)

a: select top 1 sno from sc cno=’1002’ order by grade desc

b: select sno from sc where cno=’1002’ and

grade >=all (select grade from sc where cno=’1002’)

6 查询平均分前三名的学生学号

select top 3 sno from sc group by sno order by avg(grade) desc

7 查询 JSJ 系的学生与年龄不大于19岁的学生的差集

a: select * from student where sdept=’JSJ’ and sage>19

b: select * from student where sdept=’JSJ’

except select * from student where sage<19

8 查询1001号课程大于90分的学生学号、姓名及平均分大于85分的学生学号、姓名select student.sno,sname from student,sc where cno=?1001? and grade>90

union

select sno,sname from student where sno in (

select sno from sc group by sno having avg(grade)>85 )

9查询每门课程成绩都高于该门课程平均分的学生学号

select sno from student where sno not in (

select sno from sc X where grade<(

select avg(grade) from sc Y where Y.sno=X.sno)

)

select sno from student where sno not in (

select sno from sc X where grade < (

select avg(grade) from sc where cno=https://www.doczj.com/doc/c65591737.html,o )

)

10 查询大于本系科平均年龄的学生姓名

select sname from student X where sage > (

select avg(sage) from student y where sdept=x.sdept)

试验八视图

目的: 掌握视图的建立、使用。

1建立学生学号、姓名、性别、课程号、成绩的视图v_sc

查看V_sc中的数据。

Create view v_sc (sno , sname,ssex , cno, grade ) as

Select student.sno , sname,ssex , cno , grade from student , sc

Where student.sno=sc.sno

Select * from v_sc

1 建立学生学号、姓名、出生年月的视图v_age

查看V_age中的数据。

Create view v_age (sno,sname, sbirth) as

Select sno , sname , 2008 – sage from student

Select * from v_age

2 建立…JSJ? 系的学生学号、姓名、性别、年龄的视图V_JSJ

Create view v_jsj (sno,sname,ssex, sage) as

Select sno,sname,ssex,sage from student where sdept=?JSJ?

3 建立每门课程的平均分的视图V_avggrade

Create view v_avgGrade(cno, grade1 ) as

Select cno , avg(grade) from sc group by cno

4 将视图v_jsj 中李文庆的年龄改为21岁

Update v_jsj set sage=sage+1 where sname=?李文庆?

5 察看student 中李文庆的年龄

查看v_age 中李文庆的出生年月

Select * from student where sname= ?李文庆?

Select * from v_age where sname=?李文庆?

6 查询每门课程的及格率

Create view v1 (cno , cnt1) as

Select cno, count(*) from sc group by cno

Create view v2 (cno , cnt1) as

Select cno, count(*) from sc where grade>=60 group by cno

Select https://www.doczj.com/doc/c65591737.html,o , cnt2*1.0 / cnt1 from v1,v2 where https://www.doczj.com/doc/c65591737.html,o=https://www.doczj.com/doc/c65591737.html,o

思考: 1 利用V_JSJ 视图,可以更新SX 的学生的年龄吗? 写出理由

如: update v_jsj set sage=25 where sno=? 0004?

0004 号学生为SX 系.

试验九安全性控制实验

目的:掌握Sql-server 的授权机制.

1)建立新用户 mary , 密码1234

Sp_addLogin ‘mary’, ‘1234’

2) 授予 mary 可以访问 School 数据库的权力

选择 school 数据库

Sp_grantDBaccess mary

3) 以mary 登录 sql-server ,

执行 select * from student ,记录执行结果,说明原因。

无法查到数据,因为mary 没有查询 student 的权限。

4)将 course 的查询、更改权限授予 mary

Grant select , update on course to mary

5)把查询 student 表和修改学生学号的权限授予用户 mary,且他能将此权限转授他人。Grant select , update(sno) on student to mary with grant option

6) 把对 course 表的更改权限从mary 收回

Revoke update on course from mary

7) 把第5)小题授予mary的权限收回。

revoke select , update(sno) on student from mary cascade

8)mary 只能查询‘1001’ 号课程的学生成绩,请问如何授权

Create view v_sc1 (sno,cno,grade) as

Select sno, cno,grade from sc where cno=’0001’

Grant select on v_sc1 to mary

思考: 1 sp_addlogin , sp_grantdbaccess 语句的区别.

2 如有200个人需要授权,SQL-SERVER如何简化授权机制。

试验十存储过程

目的: 掌握存储过程的概念、编程及使用

1 编写一个存储过程 usp_avgage , 向客户端返回每个系科的学生平均年龄。

系科平均年龄

JSJ 21

SX 20

。。。

1) 编写存储过程的代码

Create procedure usp_avgage as

Select sdept,avg(sage) from student group by sdept

2)调试、运行该存储过程。

Usp_avgage

2编写一个存储过程 usp_sdept, 传入一个系科代码,返回该系的平均年龄,人数Create procedure usp_sdept @dept char(10) as

Select avg(sage),count(*) from student where sdept=@dept

3 编写存储过程 usp_updateGrade , 传入参数为课程号,处理逻辑:

对传入的这门课,进行如下处理:

如某学生该门课成绩>80 , 则加 2 分

如某学生该门课成绩>60 , 则加 1 分

如某学生该门课成绩<=60 ,则减 1分

并且返回此门课的每个学生的最新成绩: 学号成绩.

Create procedure usp_updateGrade @cno char(4) as

Update sc set grade=grade + 2 where cno=@cno and grade>80

Update sc set grade=grade + 1 where cno=@cno and grade between 60 and 80

Update sc set grade=grade -1 where cno=@cno and grade<=80

Select sno , grade from sc where cno=@cno

return

5 编写存储过程 usp_comp_age , 比较0001,0002学生的年龄的高低,输出: XXXX学生的年龄大

注意: XXXX为学生的姓名

Create procedure usp_comp_age as

declare @age1 int , @age2 int

declare @name1 char(10) , @name2 char(10) --临时存储两个人的姓名

select @age1=sage ,@name1 = sname from student where sno=’0001’

select @age2=sage, @name2 = sname from student where sno=’0002’

if @age1 > @age2

print @name1 + ‘学生的年龄大’

else

print @name2 + ‘学生的年龄大’

return

7 编写存储过程 usp_comp_age1 , 比较两个学生的年龄的高低,两个学生的学号有参数输入,最后输出: XXXX学生的年龄大。

注意: XXXX为学生的姓名

Create procedure usp_comp_age1 @no1 char(6),@no2 char(6) as

declare @age1 int , @age2 int

declare @name1 char(10) , @name2 char(10) --临时存储两个人的姓名

select @age1=sage ,@name1 = sname from student where sno=@no1

select @age2=sage, @name2 = sname from student where sno=@no2

if @age1 > @age2

print @name1 + ‘学生的年龄大’

else

print @name2 + ‘学生的年龄大’

return

10 编写存储过程 usp_comp_age2 , 比较两个学生的年龄的高低,两个学生的学号有参数输入,最后把年龄大的学生的姓名、性别返回客户端。

Create procedure usp_comp_age1 @no2 char(6),@no2 char(6) as

declare @age1 int , @age2 int

declare @name1 char(10) , @name2 char(10) --临时存储两个人的姓名

select @age1=sage ,@name1 = sname from student where sno=@no1

select @age2=sage, @name2 = sname from student where sno=@no2

if @age1 > @age2

select sname ,ssex from student where sno=@no1

else

select sname ,ssex from student where sno=@no2

return

12 编写存储过程 usp_t1,传入参数为学号,把该学号的课程1001的成绩减到58分。每次只能减1分,用循环完成。

create procedure usp_t1 @no char(6) as

declare @age int

set @age=100

while @age>58

BEGIN

SELECT @age = sage from student where sno=@no

If @age>58

Update sage=sage -1 where sno=@no

END

RETURN

-- 以下不需要

4 编写存储过程 usp_disp , 传入参数为课程号,处理逻辑: 返回每个学生的成绩等级。成绩>=90 为优, 成绩>=80为良,成绩>=70 为中,成绩>=60为及格 ,成绩<=60为不及格。返回结果如下:

学号课程号成绩等第

0001 1001 91 优

0001 1002 78 中

……………..

create procedure udp_disp @cno char(4) as

--建立临时表存储结果

create table #tmp (sno char(4),cno char(4),grade int , level char(6) )

--建立某门课程的游标

declare cur1 cursor for select sno,grade from sc where cno=@cno

declare @sno char(4) ,@nGrade int

declare @sLevel char(6) --临时存储某学生的成绩等级

open cur1

fetch next from cur1 into @sno , @nGrade --读出游标第一行数据

while @@fetch_status =0

begin

--处理一行数据

if @nGrade>=90

set @sLevel = ‘优’

else if @nGrade>=80

set @sLevel = ‘良’

else if @nGrade>=70

set @sLevel = ‘中’

else if @nGrade>=80

set @sLevel = ‘及格’

else

set @sLevel = ‘不及格’

--把结果写入临时表

insert into #tmp(sno,cno,grade,level) values (@sno,@cno,@nGrade,@sLevel)

fetch next from cur1 into @sno , @nGrade --读出游标下一行数据

end

close cur1

dealLocate cur1

select * from #tmp --返回结果给客户端

drop table #tmp --删除临时表

return

5 编写一个存储过程,传入参数为学号,执行后,把该学号的学生按如下格式输出成绩:(注意:只有一行)

学号姓名 1001课程 1002课程 1003 课程平均分

6 编写一个存储过程,传入参数为系科,执行后,把该系科的学生按如下格式输出学生成绩:

学号姓名 1001 课程 1002课程 1003 课程平均分

create procedure usp_grade @dept char(15) as

create table #tmp (

sno char(4) ,

sname char(10) ,

g1 int null,

g2 int null ,

g3 int null ,

pj int null )

declare @no char(4) , @name char(10), @nG1 int ,@nG2 int ,@nG3 int

declare cur1 cursor for

select sno , sname from student where sdept = @dept --游标某一个系的学生

open cur1

fetch next from cur1 into @no , @name

while @@fetch_status=0

begin

select @nG1=grade from sc where sno=@no and cno='1001'

select @nG2=grade from sc where sno=@no and cno='1002'

select @nG3=grade from sc where sno=@no and cno='1003'

insert into #tmp(sno,sname,g1,g2,g3,pj) values (@no,@name,@nG1,@nG2,@nG3,(@nG1+@nG2+@nG3)/3 )

SQLServer数据库试题九及答案

SQL Server数据库试题九及答案 一、选择题(每题2分,共30分) 1、下面不属于数据定义功能的SQL语句是:() A.CREAT TABLE B.CREAT CURSOR C.UPDA TE D.ALTER TABLE 2、SQL数据库中的视图与下列哪项是对应的()。 A.关系模式 B.存储模式 C.子模式 D.以上都不是 3、下列选项中不是数据库复制类型的是()。 A.快照复制 B.差异复制 C.事务复制 D.合并复制 4、下列说法错误的是: ()。 A.一个基本表可以跨一个或多个存储文件 B. 一个存储文件可以跨一个或多个基本表 C.每个存储文件与外部存储器上一个物理文件对应 D.每个基本表与外部存储器上一个物理文件对应 5.显示包含警告信息或其他信息的消息框,应该使用的操作是()。 A.Echo B.Message C.Warn D.MsgBox 6、在SQL Server 2000中,索引的顺序和数据表的物理顺序相同的索引是()。 A.聚集索引 B.非聚集索引 C.主键索引 D.唯一索引 7. SQL Server的字符型系统数据类型主要包括()。 A. Int、money、char B. char、varchar、text C. datetime、binary、int D. char、varchar、int 8、以下选项中哪一项不是访问数据库系统的接口()。 A.ODBC B.OLE DB C.API D.ADO 9、在SELECT语句的WHERE子句的条件表达式中,可以匹配0个到多个字符的通配符是() A.* B.% C.- D.? 10、SELECT语句中与HA VING子句同时使用的是()子句。 A.ORDER BY B.WHERE C.GROUP BY D.无需配合 11~15题使用如下数据: 当前盘当前目录下有数据库db_stock,其中有表stock的内容是: 股票代码股票名称单价交易所 600600 青岛啤酒7.48 上海 600601 方正科技15.20 上海 600602 广电电子10.40 上海 600603 兴业房产12.76 上海 600604 二纺机9.96 上海 600605 轻工机械14.59 上海 000001 深发展7.48 深圳 000002 深万科12.50 深圳 11、有如下SQL语句 create view stock_view as select * from stock where 交易所=”深圳” 执行该语句后产生的视图包含的记录个数是() A.1 B.2 C.3 D.4 12、有如下SQL语句

sqlserver数据库综合实验报告格式

华北科技学院计算机系综合性实验 实验报告 课程名称数据库原理与应用 实验学期 2009 至 2010 学年第一学期学生所在系部管理系 年级三年级专业班级商务B071班 学生姓名李荣妹学号 4121 任课教师郭红 实验成绩 计算机系制

《数据库原理与应用》课程综合性实验报告

(3)建表如下图: 图书表的结构 读者表的结构罚款表的结构 借阅表的结构密码表的结构 输入数据:图书 读者 S只学生,t指老师,1指没有超期,0表示超期 借阅 罚款

密码: (4)、创建视图。以sa的身份登录数据库,创建视图V1,V2,V3 create VIEW V1 create VIEW V2 create VIEW V3 AS AS AS select * from 图书 select * from 借阅 select * from 罚款 建立视图V5,查看在库的图书:create view V5 as select *from 图书 where 借阅状态=‘在库’ 建立已被借出去的图书视图 create view V6 as

select * from 图书 where 借阅状态='出库' 建立逾期未还的图书的学生视图: create view V7 as select * from 借阅 where datediff(day,convert(smalldatetime,借出日期),getdate())>’30’ and 借书证号 in(select 借书证号 from 读者,借阅 Where 借阅.借书证号=读者.借书证号 and 读者类别=‘s’ 四、物理设计和自定义完整性 建立索引:为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引是表中建立索引的表项: 图书表(图书编号,条形码号)读者(借书证号)借阅(借书证号,条形码号)罚款表(借书证号,条形码号)密码(借书证号) (2)建立触发器 a.对已有借书证的读者进行查询借书是否超期(这里归定30天): create trigger T1 on 读者 for insert as select 借阅.借书证号,读者.读者姓名,图书.图书编号,图书.书名,借阅.借出日期 from 读者,借阅,图书 where 读者.借书证号=借阅.借书证号 and 图书.条形码号=借阅.条形码号 and 读者类别='s' and Datediff(day,convert(smalldatetime,借出日期),getdate())>=30 b.建立触发器T2(还书时): create trigger T2 on 借阅 for insert as begin update 图书 set 借阅状态='在库' where 条形码号=(select 条形码号 from inserted) update 借阅 set 归还日期=getdate(); update 读者 set 书数=书数-1 where 借书证号=(select 借书证号 from inserted) end c.建立触发器T3(借书书时): create trigger T3 on 借阅 for insert as begin update 图书 set 借阅状态='入库' where 条形码号=(select 条形码号 from inserted) update 借阅 set 借出日期=getdate(); update 读者 set 书数=书数+1 where 借书证号=(select 借书证号 from inserted) end d.建立触发器T4,实现超出借书数目时禁借(针对老师的): create trigger T4 on 读者 for insert

SQLServer选择题含答案去原题

第一套选择题 1.下列说法错误的是()。 A.内嵌表值函数没有函数主体,返回的表是单个SELECT语句的结果集B.多语句表值函数的调用与内嵌表值函数的调用方法相同 C.多语句表值函数的功能可以用标量函数来实现 D.在内嵌表值函数的定义中,不使用BEGIN…END块定义函数主体2.以下哪个事件不能激活DML触发器的执行()。 A.SELECT B. UPDATE C. INSERT D. DELETE 3.以下哪个数据库实例不属于系统数据库()。 A.master B.model C.msdb D.temp 4.执行以下语句: DECLARE @n int Set @n=3 WHILE @n<5 Begin IF @n=4 Print ltrim(@n)+‘的平方数为’+ltrim(@n*@n) Set @n=@n+1 End 执行完成后循环次数为()。

A.0次B.1次 C.2次D.死循环 5.利用游标来操纵数据时,所用的FOR UPDATE子句充分利用了事务的哪个特性()。 A.原子性B.一致性 C.永久性D.隔离性 6.关于触发器的描述,下列说法正确的是()。 A.触发器是在数据修改前被触发,约束是在数据修改后被触发 B.触发器是一个能自动执行的特殊的存储过程 C.触发器作为一个独立的对象存在,与数据库中其他对象无关D.inserted表和deleted表是数据库中的物理表 7.关于服务器角色与数据库角色,说法正确的是()。 A.只能将一个登录名添加为某个固定服务器角色的成员 B.只能将一个登录名添加为某个固定数据库角色的成员 C.sysadmin是固定数据库角色 D.db_owner是固定服务器角色 8.关于创建永久备份设备,下列说法错误的是()。 A.执行系统存储过程sp_addumpdevice创建永久备份设备 B.执行系统存储过程sp_dropdevice删除永久备份设备 C.若被删除的“命名备份设备”的类型为磁盘,那么必须指定DELFILE选项D.只须指定该命名备份设备的物理名,无须指定该命名备份设备的逻辑名9.能够将‘java’课的学分赋值给变量的语句是哪一个()。

sqlserver2005实验

实验二 使用向导创建和删除数据库 ●实验指导——使用向导创建和删除数据库 (1) 使用向导创建上诉描述的数据库。 使用SQL Server Management Studio(简称SSMS)创建数据库。 1.启动SSMS 在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio 单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。

2.建立数据库 在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。 (2)使用向导删除上面建立的数据库。 用SSMS删除添加建立的数据库EDUC1。

实验三 使用SQL语句创建和删除数据库 一. 实验目的: 1、了解SQL Server 2005数据库的逻辑结构和物理结构。 2、掌握使用SQL 语句创建和删除数据库。 二. 实验准备 1.明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。 2.了解用SQL语句创建和删除数据库的基本语法。 三. 实验要求 3、熟练使用查询分析器进行数据库的创建和删除操作 4、完成用sql语句建立和删除数据库的实验报告 四. 实验内容 1.以下是创建数据库userdb1的SQL语句, create database userdb1 on (name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名 filename='g:\xygl\userdb4.mdf' ,--物理名称,注意路径必须存在 size=5,--数据初始长度为5M maxsize=10,--最大长度为10M filegrowth=1)--数据文件每次增长1M log on ( name=userdb4_log, filename='g:\xygl\userdb4.ldf ' , size=2 , maxsize=5 , filegrowth=1) 运行上诉语句建立数据库userdb1 2.根据步骤1的sql语句,写出创建实验二中数据库EDUC的sql语句,并建立数据库EDUC. 3.用SQL语句删除步骤一建立的数据库userdb1。

sqlserver习题及答案

S Q L S e r v e r习题及答 案 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

1. 有个用户的计算机不能连接到中心机房的SQL Server 2000上。你在调试过程中发现这个用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQL Server 2000。下面的哪些工具有助于你诊断和解决该问题(多选)A. Enterprise Manager B. Server Network Utility C. Profiler D. Query Analyzer E. Client Network Utility 答:B和E 2. 你在SQL Server 2000创建了酒店管理系统的数据库HotelDB,并创建了表CustInfo。当下面的哪些数据库被删除的情况下,仍能正确地执行“SELECT * FROM CustInfo A. Model B. Tempdb C. Msdb D. Master E. Pubs 答:A、C、E 3. 你正在使用SQL Server 2000开发银行交易系统,为了保证商业数据在网络传输(用TCP/IP协议)时不会被窃取,你在SQL Server 2000中启用了网络加密功能。请问该功能在哪一层被实现? A. TCP/IP协议软件 B.超级套接字层 C.开放式数据服务 D.关系引擎 E.存储引擎 答:B 4. 你正在使用SQL Server 2000开发超市收银系统。在客户端编写软件时使用SQL语句“SELECT * FROM Products”来查询商品的信息,但是不小心把Products输入成Product。请问该错误在哪一层被发现? A.客户端的数据库API B.客户端的NET-LIBRARY C.服务器端的开放式数据服务 D.服务器端的关系引擎 E.服务器端的存储引擎

sql server实验指导书(学生版)

数据库实验指导书 信息安全专业 王爽 2009

一.概述 1.SQL Server 2000 组成 SQL Server是可缩放的高性能基于SQL和客户/服务器体系结构的关系数据库管理系统服务器软件包,是由Microsoft 公司推出的SQL Server 数据库管理系统的最新版本。从图1 SQL Server 的体系结构示意图中看出,SQL Server 2000由4部分组成,在实验中,我们要求掌握基于SQL Server 2000的服务器的使用,也就是数据库管理员DBA的主要操作。 (注:本文所有内容均在SQLServer 2000上实现,读者也可在SQL Server 2005 上得到类似结果。) 图1 SQL Server 的体系结构示意图 2. SQL Server 2000 的安装 SQL Server 2000 的常见版本有:企业版、标准版、个人版、开发人员版等。对软硬件的最低需求为:CPU Pentium 166MHz,内存64MB,硬盘180 MB。SQL Server 2000企业版和标准版只能在windows2000 Server 版和Professional 版操作系统下运行。下面介绍SQL Server 2000企业版在本地机上的安装过程。 1)插入SQL Server 2000 光盘,自动安装程序启动,屏幕上出现如图2所示画面,按图2 所示选择SQL Server 2000 组件; 2) 选择安装数据库服务器,如图3所示,进入SQL Server2000 企业版安装向导; 3)在安装向导对话框中点击下一步,进入计算机名对话框; 4)选择本地安装,点击下一步,进入安装选择对话框;

数据库技术(SQLServer)习题与参考答案

数据库技术(SQLServer)习题与参考答案 第一章: 1、SQL Server 2005有哪些新增特性? 答:SQL Server 2005的新特性主要体现在企业数据管理、开发人员生产力、商务智能三个方面。企业数据管理体现在高可用性、管理工具、安全性与可伸缩性;开发人员生产力体现在Common Language Runtime集成、集成XML、Transact-SQL增强与SQL服务代理;商务智能体现在分析服务、数据转换服务、报表服务与数据挖掘。 2、SQL Server 2005安装的软件与硬件环境就是什么? 答:SQL Server 2005安装的软件与硬件环境参见教材6。 3、SQL Server 2005有哪些版本?有哪些服务组件? 答:SQL Server 2005包括企业版、标准版、工作组版、开发版与简易版五个版本,服务组件主要有SQL Server 数据库引擎、Analysis Services、Reporting Services、Notification Services、Integration Services等。 4、什么就是实例?经常提到的SQL Server 2005服务器与服务器实例就是否具有相同的含义? 答:实例就就是SQL服务器引擎,每个SQL Server数据库引擎实例各有一套不为其她实例共享的系统及用户数据库。一个SQL Server服务器就就是一个实例,一台计算机上,可以安装多个SQL SERVER,每个SQL SERVER就可以理解为就是一个实例。 5、默认实例与命名实例有何差别?在安装与使用上有何不同? 答:实例又分为“默认实例”与“命名实例”,如果在一台计算机上安装第一个SQL SERVER 2005命名设置保持默认的话,那这个实例就就是默认实例。一台计算机上最多只有一个默认实例,也可以没有默认实例,默认实例名与计算机名相同。除默认实例外,所有数据库引擎实例都由安装该实例的过程中指定的实例名标识。 6、SQL Server 2005的安全性验证分为哪两个阶段? 答:第1个阶段就是身份验证,验证用户就是否具有“连接权”;第2个阶段就是数据库的访问权,验证连接到服务器实例的用户,即已登录到服务器实例的用户,就是否具有“访问权”。 7、SQL Server 2005有哪些主要的实用工具?每个工具都有什么用途? 答:SQL Server Management Studio,就是Microsoft SQL Server 2005中的新组件,这就是一个用于访问、配置、管理与开发SQL Server的所有组件的集成环境,就是SQL Server 2005中最重要的管理工具。SQL Server Configuration Manager,用来管理SQL Server 2005所

SQLServer实验三分解

实验七 (1)创建并运行存储过程student_grade,要求实现如下功能:查询studb数据库中每个学生各门课的成绩,其中包括每个学生的sno、sname、cname和score。 create procedure student_grade as select student.sno,student.sname,https://www.doczj.com/doc/c65591737.html,ame,student_course.score from student join student_course on student.sno=student_course.sno join course on https://www.doczj.com/doc/c65591737.html,o=student_https://www.doczj.com/doc/c65591737.html,o 运行结果代码: use Studb go execute student_grade go (2)创建并运行名为proc_exp的存储过程,要求实现如下功能:从student_course表中查询某一学生考试的平均成绩。 create procedure proc_exp @sname varchar(8) as begin select sname,AVG(score) from student join student_course on student.sno=student_course.sno where sname=@sname group by sname end 运行结果代码:

use Studb go execute proc_exp@sname='刘招香' go (3)修改存储过程proc_exp,要求实现如下功能:输入学生学号,根据该学生所选课程的平均成绩给出提示信息,即如果平均成绩在60分以上,显示“成绩合格,成绩为XX分”,否则显示“成绩不合格,成绩为XX分”;然后调用存储过程proc_exp,输入学号0705010131,显示成绩是否合格。 alter procedure proc_exp @student_sno varchar (20) as declare@avg varchar(20) set@avg=(select AVG(score) from student_course where sno=@student_sno) if@avg>=60 print'成绩合格,成绩为'+@avg+'分' else print'成绩不合格,成绩为'+@avg+'分' 运行结果代码: use Studb go declare@student_sno varchar (20) select@student_sno='0705010131' exec proc_exp@student_sno (4)创建名为proc_add的存储过程,要求实现以下功能:向student_course表中添加学生记录;然后调用存储过程proc_add,向student_course表中添加学生成绩记录。create procedure proc_add @sno char(10), @cno char(10), @score tinyint

sqlserver实验报告—数据库和表的创建

评分 签名 日期 数据库实验报告 课程名称信息系统数据库技术 实验名称数据表的管理 专业班级 姓名 学号 实验日期 实验地点 2012—2013学年度第一学期

一、实验目的 1、掌握Microsoft SQL Server 2005 Express Edition的安装过程 2、熟悉SQL Server 2005 Express Edition的基本菜单功能,界面。 3、掌握SQL Server 2005的启动、服务器注册等功能。 二、实验内容 1、数据库的创建 2、数据库的修改 3、数据的导入 4、数据的导出 5、数据库的分离 三、实验环境 Windows XP操作系统,Microsoft SQL Server 2005 Express Edition。 四、相关知识 1、数据库命令规则取决于数据库兼容的级别,而数据库级别可以用存储过程sp_helpdb 来查询。注意:其一由于在T-SQL中,“@”表示局部变量,“@@”表示全局变量,“##”表示全局临时对象,所以不建议用这些符号作为数据库名称的开头;其二虽然在SQL Server 2005中,保留字区分大小写,但也不建议用改过大小写的保留字作为数据库名。 2、数据库文件:每个SQL Server 2005的数据库至少包含二个文件:一个数据文件(.mdf)和一个日志文件(.ldf)。 3、数据库的创建命令:CREATE DATABASE 4、数据库的修改命令:ALTER DATABASE 只有数据库管到员或具有CREATE DATABASE权限的数据库所有者才有权执行ATER DATABASE语句。在实际操作中,ALTER DATABASE一次只能修改一种参数 5、数据库的删除命令:DROP DATABASE 6、数据库的分离命令:SP_DETACH_DB 'filename' 7、数据库的附加命令:CREATE DATABASE…FOR ATTACH 8、数据的导入是指从其他数据源中把数据复制到SQL Server数据库中。 9、数据的导出是指从SQL Server数据库中把数据复制到其他数据源中。 2

实验一 SQL SERVER 2008入门实验报告

实验一SQL SERVER 2008环境 一、实验目的 1、了解SQL SERVER 2008的安装过程中的关键问题; 2、掌握通过SQL Server Management Studio管理数据库服务器、操作数据库对象的方法; 3、掌握数据库的还原与备份操作。 二、实验过程 1、启动SQLSERVER服务 实验室机器上既安装了SQL Server 2008服务器端工具又安装了客户端工具,在使用客户端工具SQL Server Management Studio连接数据库引擎之前,需要将本地数据库引擎服务启动,启动方法如下: (1)打开配置管理器 开始菜单——>所有程序——> Microsoft SQL Server 2008——>配置工具——>SQL Server配置管理器 (2)启动SQL Server服务 单击左窗格的“SQL Server 服务”选项,在右窗格中就会显示所有的服务,找到“SQL Server(MSSQLSERVER)”服务,在服务上单击右键,选择“启动”,SQL Server数据库引

擎服务启动。 2、登录服务器 在使用SQL Server Management Studio管理数据库引擎服务器时,需要首先登录到服务器上,第一次登录时需要将登录界面的“服务器名称”选项修改为本地的计算机名。同时将身份验证方式改为“Windows身份验证” 获取本地计算机名:右键点击“我的电脑”——>属性——>“计算机名”标签页

3、创建数据库 建立名为“Student”的数据库。 4、建立基本表 在“Student”数据库下,建立学生表(S)、课程表(C)和学生选课表(SC),其逻辑结构描述,详见表1、表2和表3。

(SQLServer)考试试题及答案

2013年(下)全国信息技术水平考试数据库应用系统设计技术水平证书 (SQL Server)考试试卷 第一大题:单选题(30 分) 1. (1分) 数据模型的三要素不包括()。 (A) 数据结构(B) 数据操作(C) 数据完整性约 束(D) 数据恢复 2. (1分) 数据的存储结构与数据逻辑结构之间的独立性称为数据的 ()。 (A) 结构独立性(B) 物理独立性(C) 逻辑独立 性(D) 分布独立性 3. (1分) 如果对于实体集A中的每一个实体,实体集B中可有多个实体与之联 系;反之,对于实体集B中的每一个实体,实体集A中也可有多个实体与之联系。则称实体集A与B具有()。 (A) 1:1联系(B) 1:n联系(C) n:m联 系(D) 多种联系 4. (1分) 当对关系R和S使用自然联接时,一般要求R和S至少含有一个共同的()。 (A) 元组(B) 关键字(C) 记 录(D) 属性 5. (1分) 若关系模式R(A,B,C,D,E)上的函数依赖集F={AB->C,A->D,A->E},为了满足BCNF,可以将R分解为()。 (A) R1(A,B,C,D) R2(A,E) (B) R1(A,B,C) R2(A,D,E) (C) R1(A,B,C) R2(D,E) (D) R1(A,B) R2(A,C,D,E) 6. (1分) SQL语言查询一次的结果是一个()。 (A) 元组(B) 表(C) 属性(D) 数据

库 7. (1分) 在关系模式R(U,F)中,如果X→Y,且存在X的真子集X1,使X1→Y,则称函数依赖X→Y为()。 (A) 平凡函数依赖 (B) 部分函数依赖 (C) 完全 函数依赖 (D) 传递函数依赖 8 . (1分) 在Transact-SQL中,下列命令能让程序完全跳出循环的是( )。 (A) CASE (B) WAIT (C) BREAK (D) CONTINU E 9 . (1 分) 在Transact-SQL中,下列选项不属于数值型数据类型的是( )。 (A) NUMERIC (B) DECIMAL (C) INTEGER (D) DATE 10. (1分) 下列选项中,可以正确表达姓“张”的通配符是( )。 (A) 张 _ (B) 张 % (C) 张 ^ (D) 张& 1 1. (1 分) 下列聚合函数中正确的是( )。 (A) SUM (*) (B) MAX (*) (C) COUNT (*) (D) AVG (*) 12. (1 分) 如果某一列的数据类型是FLOAT,则不允许对该列使用的函数是( )。 (A) SUM (B) ABS (C) LEFT (D) ROUND 13 . (1 分 ) 在SQL的SELECT语句中,与投影运算对应的子句是( )。 (A) SELECT (B) FROM (C) WHERE (D) GROU P BY 14. (1 分) 在SQL语言中,给表起别名应使用( )。 (A) AS (B) RENAME (C) SET (D) FOR 15. (1分) 在SELECT语句中使用GROUP BY SNO时,SNO必须() 。 (A) 在WHERE中出现 (B) 在FROM中出现

实验SqlServer的基本操作

§3.1实验一Sql Server2005的基本操作(2学时) 3.1.1 实验目的 1.熟悉SQL Server2005企业版的安装过程。 2.了解企业管理器的功能,掌握企业管理器的操作方法。 3.掌握数据库服务器的注册、配置、连接等操作。 3.1.2 实验内容和步骤 上机前先阅读本实验的详细内容,简要了解SQL SERVER2005,并完成以下操作: 1. SQL Server2005的安装 参考详细内容进行安装,在安装过程中记录安装的选择,并且对所作的选择进行思考,为何要进行这样的配置,对今后运行数据库系统会有什么影响。 2.启动和停止服务 3.启动SQL Server Management Studio 4.查看数据库属性,了解数据文件、事务日志、权限 注意事项: 1.安装时选择混合方式登录; 2.赋予sa密码。

实验一Sql Server2005的基本操作(详解) 一、安装 下面以Windows xp平台为例,介绍如何安装SQL Server 2005个人开发版。 1.根据安装机器软硬件的要求,选择一个合适的版本,以下以开发版为例 2.将SQL Server 2005 DVD 插入DVD驱动器。如果DVD驱动器的自动运行功能无法启动安装程序无法启动安装程序,请导航到DVD的根目录然后启动splash.hta。 3.在自动运行的对话框中,单击“运行SQL Server 安装向导”。 4.在“最终用户许可协议”页上,阅读许可协议,再选中相应的复选框以接受许可条款和条件。接受许可协议后即可激活“下一步”按钮。若要继续,请单击“下一步”若要结束安装程序,请单击“取消”。如下图: 5.在“SQL Server 组件更新”页上,安装程序将安装SQL Server 2005 的必需软件。有关组件要求的详细信息,请单击该页底部的“帮助”按钮。若要开始执行组件更新,请单击“安装”。更新完成之后若要继续,请单击“完成”。

试验3SQLServer的视图存储过程和触发器

实验三 SQL Server的视图、存储过程和触发器 一、实验目的 本实验主要了解SQL Server视图、存储过程和触发器的基本概念和使用方法。通过本实验,读者将学会在企业管理器中创建、修改、执行和删除存储过程的操作以及在查询分析器中执行的T-SQL语句;掌握触发器的创建、修改和删除的操作方法和T-SQL语句。掌握视图的创建、修改和删除的操作方法和T-SQL语句。 二、实验环境 ●Microsoft SQL Server 2008 SSMS ●Book数据库 三、实验内容 1. 创建存储过程proc_book11和proc_book12,查询指定学院的教师预订教材的情况。要求显示教材名称(T_BookInfo.BookName)、教师姓名(T_Teacher.TeacherName)和教材数量(T_BookOrder.StuBookNum+T_BookOrder.TeaBookNum)。 (1) proc_book11的查询条件为:学院代码 (2) proc_book12的查询条件为:学院名称 2. 创建存储过程proc_book2,查询指定教材的预订数量。 3. 创建添加教材信息的存储过程proc_book3。 4. 创建触发器tri_book1,在对T_Teacher表进行插入、修改和删除记录时,都会自动显示表中的内容。 5. 创建触发器tri_book2,当修改T_Teacher表中的TeacherCode字段值时,该字段在T_BookOrder表中的对应值也作修改。 6. 创建触发器tri_book3,检查插入在T_BookInfo表中的教材库存(StockNum)是否大于等于0。 7. 创建视图view_book1,使其包含预订数量最高的20%的教材信息。要求显示教材代号(BookCode)、教材名称(BookName)、ISBN号(ISBNCode)和出版社名称(Publisher)。 8. 创建视图view_book2,查询预订了教材名中含有“程序”一词的教师姓名(TeacherName)和所在学院名称(AcadName)。 9. 创建视图view_book3,使其包含“学院名称(AcadName)”、“教师姓名(TeacherName)”、“预订书名(BookName)”、“是否领走(TakeAway)”。 四、实验报告要求 1. 给出实现每个小题功能的SQL语句。请注意SQL语句也应有合适的缩进,对复杂的语句应加上注释,说明语句段的功能。 2. 对存储过程和视图给出执行语句以及执行结果(屏幕截图)。对触发器,请给出可以触发

sqlserver实验报告

SQL Server实验报告 学院: 班级: 姓名: 学号:

实验1 SQL Server 2005 环境 1、目的与要求 (1)掌握SQL Server Management Studio 对象资源管理器的使用方法; (2)掌握SQL Server Management Studio查询分析器的使用方法; (3)对数据库及其对象有一个基本了解。 2、实验准备 (4)了解SQL Server 2005各种版本安装的软、硬件要求;(5)了解SQL Server 2005支持的身份验证模式; (6)对数据库、表及其他数据库对象有一个基本的了解。 3、实验内容 (1)SQL Server 2005 的安装。 检查软、硬件配置是否达到SQL Server 2005的安装要求,熟悉SQL Server 2005的安装方法。 (2)对象资源管理器的使用。 ①进入SQL Server Management Studio。 从“开始”中选择“程序”,再选择“Microsoft SQL Server 2005”单击进入,打开“连接到服务器”窗口,如图所示。 在此窗口中使用系统默认设置连接服务器,单击“连接”,系统显示

“SQL Server Management Studio”窗口。 ②了解系统数据库和数据库的对象。 在SQL Server 2005安装后,系统生成4个数据库:master、model、msdb和tempdb。 在对象资源管理器中右边显示的是4个系统数据库,如图所示。选择系统数据库master,观察SQL Server 2005对象资源管理器中数据库对象的组织方式。其中,表、视图在“数据库”节点下,储存过程、触发器、函数、类型、默认值、规则等在“可编辑性”中,用户、角色、架构等在“安全性”中。 ③试试不同数据库对象的操作方法。 展开系统数据库“master”,选择“”,单击右键。

SQLServer数据库管理-复习题

一、单选题 (说明:每题有且仅有一个正确答案,正确答案必须填入下表,否则不给分。) 1. 在Transcat-SQL语句中,一个select语句中,()。 A、最多可以使用六个表 B、最多可以使用四个表 C、最多可以使用二个表 D、对表的数目没有限制 2. 在SQL SERVER 2008中,要给查询出的结果集按照升序排序可以使用()子句。 A 、Having B、Order by C、distinct D、Group by 3.你使用以下T-SQL语句创建了一个数据库benet和一个表students, create database benetcreate table students(id int,stuname nchar(10))请问这两个语句是:( ) A、DDL(数据定义语言) B、DML(数据操纵语言) C、DCL(数据控制语言) 4.Northwind数据库中有一张Customers表用于存放公司的客户信息,现在数据库管理员想通过使用一条SQL语句列出所有客户所在的城市,而且列出的条目中没有重复项,那么他可以在SELECT City FROM Customers语句中使用()关键词。 A、TOP B、DISTINCT C、DESC D、ASC 5.关于创建数据库的说法正确的是:( ) A、新创建的数据库中不包含表对象 B、新创建的数据库中包含model数据库中的表对象 C、创建数据库应估算实际使用的大小,并一次性定义好需要的空间,否则数据增长将导致数据库不可 用 D、创建数据库时,应该将数据库文件分成多个,以实现冗余 6.数据库管理员创建了一个设备清单表格,包括以下几项:编号,名称,类型,价格,规格,数量。请问最适合做表格主键的是:( ) A、名称 B、类型,名称 C、编号,类型 D、规格,价格 7.SQL Server 2008的数据结构模型属于()模型。 A、网状 B、层次 C、树状 D、关系 8.以下关于SQL Server 2008中的视图和存储过程说法不正确的是:( ) A、存储过程可以比相同的T-SQL代码执行速度快 B、视图可以包含来自多个表中的列 C、视图中不包含任何存放在基表中的数据 D、存储过程中不能包含大量的T-SQL代码 9.执行语句:SELECT * from Item as a right outer join orderdetails as b on a.icode=b.itemcode将返回:( ) A、item 表和orderdetails表中的相关记录以及orderdetails表中其余的不相关记录 B、item 表和orderdetails表中的相关记录 C、item 表和orderdetails表中的相关记录以及item表中其余的不相关记录 10.引用完整性规则是针对()而言的。 A、外键 B、主键 C、非主属性 D、编号 11.SQLServer2008的组件中用来进行综合管理的是( ) A、事件探查器 B、联机丛书 C、查询分析器 D、企业管理器 12.主要用来执行Transact-SQL语句的是()。 A、事件探查器 B、联机丛书 C、查询分析器 D、企业管理器13.多表查询中定义表的别名的关键字是:() A、join B、on C、as D、where 14.你是公司的数据库管理员,数据库benet中有个员工表employees,该表中有职务列。你想检查哪些员工的信息中没有填写职务一栏,应该使用子句:( ) A、Select * from employees where 职务=NULL B、Select * from employees where 职务=’NULL’ C、Select * from employees where 职务IS NULL D、Select * from employees where 职务IS ‘NULL’ 15.数据库管理员小明希望将旧服务器上的数据库转移到新购置的服务器上,该如何做:( ) A、将原有服务器上的数据库文件剪切至移动硬盘上,再复制到新服务器上 B、将原有服务器上的数据库文件备份至移动硬盘上,再复制到新服务器上 C、将原有服务器上的数据库文件分离,再复制到新服务器上,在新服务器上执行附加的操作 D、将原有数据库服务器上的硬盘安装在新服务器上 16.执行语句select len(‘hello’)的结果是:( ) A、7 B、hello hai C、5 D、hello 17.下面哪一项不属于关系数据库中的完整性规则:( ) A、实体完整性规则 B、索引完整性规则 C、引用完整性规则 D、数据完整性规则 18.你是某软件公司的SQL Server 2008数据库管理员,一天公司一名开发工程师说他无法使用sa帐号连接到公司用于测试的SQL Server 2008数据库服务器上,当进行连接时出现如下图所示的错误信息: 但是当他使用自己的域用户帐时却可以登录到该服务器上,那么产生这种情况最有可能的原因是:( ) A、该SQL Server服务器上的sa帐户被禁用 B、管理员误删除了该SQL Server上的sa帐户 C、该SQL Server使用了仅Windows的身份验证模式 D、没有授予sa帐户登录该服务器的权限 19.使用SQL命令将教师表teacher中工资salary字段的值增加200,应该使用的命令是()。 A、Replace salary with salary+200 B、Update teacher salary with salary+200 C、Update teacher set salary=salary+200 D、Update set salary with salary+200 20 . 当今常用的数据库有()。 A、SQLServer B、Sysbase C、ACCESS D、OFFICE 21.主要用来执行Transact-SQL语句的是()。 A、事件探查器 B、查询分析器 C、联机丛书 D、企业管理器 22.SQLServer服务器组和SQLServer服务器之间的关系是() A、SQLServer服务器组可以包含SQLServer服务器和SQLServer服务器子组 B、SQLServer服务器组不能包含SQLServer服务器

基于VB及SQLSERVER的管理系统实训指导书

基于VB及SQLSERVER的管理系统 实训指导书 计算机软件技术专业适用 大连职业技术学院 信息技术系 计算机软件技术教研室

实验(训)一连接数据库及调用存储过程(15学时) 一、创建数据库及其表 1.新建个人信息管理系统数据库“Pinformation”。 2.建表Contacts、ContactPhones、Reminders表。 (1) Contacts(联系人表) 字段名字段数据类型主键标识列说明 ContactID Int Yes Yes 联系人编号Name Varchar(50) 联系人姓名 Address Varchar(100) 联系人所在城市 ZipCode Varchar(20) 邮编EmailAddress Varchar(50) 电子邮箱 ContactNote Varchar(50) 备注 (2) ContactPhones(联系人电话表) 字段名字段数据类型主键标识列说明ContactPhoneID Int Yes Yes 联系人电话编号ContactID Int 联系人编号 PhoneType Varchar(50) 电话类型 PhoneNumber Varchar(50) 电话号码 (3) Reminders(提示信息表) 字段名字段数据类型主键标识列说明ReminderID Int Yes Yes 联系人电话编号 AlarmOn Bit 报警标识 AlarmTime datetime 报警时间 ReminderNote Varchar(1000) 提示内容 二、在VB中查看数据库对象 新建工程,在VB界面中,执行“视图” 菜单的“数据视图窗口”菜单项,或者在ADO 控件属性中操作,创建数据库的连接。 1.在图一的属性页中选择“通用”选项 卡,选择“使用连接字符串”,点击“生成” 按钮,弹出图二。 2.在图二中选择“提供者”选项卡,选 择为SQL Server提供的数据驱动,点击“下 一步”按钮,弹出图三。(图一)

SQLSERVER数据库实验

SQL SERVER 数据库应用技术 实验报告 选课序号: 班级: 学号: 姓名: 指导教师: 成绩:

目录 1.实验目的 (1) 2.实验内容 (1) 2.1创建数据库OrderDB(杂志订购数据库) (1) 2.2 T-SQL查询 (1) 2.3存储过程、自定义函数和触发器编程 (2) 3.实验步骤 (2) 3.1创建数据库OrderDB(杂志订购数据库) (2) 3.2 T-SQL查询 (5) 3.3存储过程、自定义函数和触发器编程 (5) 4.总结与体会 (8)

1.实验目的 (1)创建与使用数据库。了解数据库及其各类逻辑对象、数据库的文件与文件组的概念;实践数据库的设计、创建、查看和维护等的操作,。 (2)T-SQL查询。掌握SELECT查询命令,INSERT、UPDATE和DELETE等更新命令,及T-SQL对查询与更新命令的增强功能操作。 (3)自定义函数、存储过程与触发器。实践练习自定义函数、存储过程和触发器的使用方法。 2.实验内容 2.1创建数据库OrderDB(杂志订购数据库) 以下各表中的代码或编号列为char(6),名称或类别列为varchar(20),单价或金额列为numeric(10,2),数量列为int,订购日期为日期类型datetime,所在城市列为varchar(16)。(1)杂志表Magazine(杂志代码Mno,杂志名称Mname,杂志类别Mtype,出版商所在城市Mcity,进货单价Miprice,订购单价Moprice),其中,订购价格>进货价格,杂志类别:文学类、历史类、科技类。主键为(杂志代码Mno)。 (2)客户(杂志的订购单位信息)表Customer(客户代码Cno,客户名称Cname,客户所在城市Ccity,上级主管单位代码Sno,客户类别Ctype),客户(单位)类别:政府单位、事业单位、企业单位。主键为(客户代码Cno)。 (3)杂志订购情况主表OrderH(订单编号Ono,客户代码Cno,订购日期Odate,订单货款金额合计OMsum,订单盈利金额合计OPsum),主键为订单编号Ono。 (4)杂志订购情况明细表OrderList(订单编号Ono,杂志代码Mno,订购数量Onum,进货单价Miprice,订购单价Moprice,订购金额Omoney,盈利金额Oprofit),主键为(订单编号Ono,杂志代码Mno),订购金额=订购单价×订购数量,盈利金额=(订购单价-进货单价)×订购数量。 2.2 T-SQL查询 实现如下查询功能前,请向所有数据表添加足够多的演示数据。求年份的函数为year( ),返回类型为int,年份=year(订购日期Odate)。 (1)使用WITH公用表表达式查看客户名称为’珠江航运公司’在广州市的所有上级主管单

相关主题
文本预览
相关文档 最新文档