数据库原理复习题1006文档格式.docx

上传人:b****2 文档编号:4310250 上传时间:2023-05-03 格式:DOCX 页数:20 大小:19.86KB
下载 相关 举报
数据库原理复习题1006文档格式.docx_第1页
第1页 / 共20页
数据库原理复习题1006文档格式.docx_第2页
第2页 / 共20页
数据库原理复习题1006文档格式.docx_第3页
第3页 / 共20页
数据库原理复习题1006文档格式.docx_第4页
第4页 / 共20页
数据库原理复习题1006文档格式.docx_第5页
第5页 / 共20页
数据库原理复习题1006文档格式.docx_第6页
第6页 / 共20页
数据库原理复习题1006文档格式.docx_第7页
第7页 / 共20页
数据库原理复习题1006文档格式.docx_第8页
第8页 / 共20页
数据库原理复习题1006文档格式.docx_第9页
第9页 / 共20页
数据库原理复习题1006文档格式.docx_第10页
第10页 / 共20页
数据库原理复习题1006文档格式.docx_第11页
第11页 / 共20页
数据库原理复习题1006文档格式.docx_第12页
第12页 / 共20页
数据库原理复习题1006文档格式.docx_第13页
第13页 / 共20页
数据库原理复习题1006文档格式.docx_第14页
第14页 / 共20页
数据库原理复习题1006文档格式.docx_第15页
第15页 / 共20页
数据库原理复习题1006文档格式.docx_第16页
第16页 / 共20页
数据库原理复习题1006文档格式.docx_第17页
第17页 / 共20页
数据库原理复习题1006文档格式.docx_第18页
第18页 / 共20页
数据库原理复习题1006文档格式.docx_第19页
第19页 / 共20页
数据库原理复习题1006文档格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库原理复习题1006文档格式.docx

《数据库原理复习题1006文档格式.docx》由会员分享,可在线阅读,更多相关《数据库原理复习题1006文档格式.docx(20页珍藏版)》请在冰点文库上搜索。

数据库原理复习题1006文档格式.docx

电话

E_mail

M

借书人

借书证号姓名单位

图书关系模式:

图书(书号,书名,数量,位置,出版社名)

关系主键:

外键:

出版社名

借书人关系模式:

借书人(借书证号,姓名,单位)

借书证号

出版社关系模式:

出版社(出版社名,邮编,地址,电话,E-mail)

借阅关系模式:

借阅(借书证号,书号,借书日期,还书日期)

(借书证号,书号)

外键1:

外键2:

二、有一个[学生课程]数据库,数据库中包括三个表:

学生表(学号,姓名,性别,年龄,所在系)

课程表(课程号,课程名,先修课号,学分)

成绩表(学号,课程号,成绩)

用SQL语言编写实现下列功能的代码:

1、建立一个[学生表],要求设置学号属性为主键,规定年龄大于

2、查询年龄在20至23岁之间的学生的姓名、系别、和年龄。

3、查询各系的人数及平均年龄。

4、计算“数据库原理”课程的学生平均成绩。

5、将计算机科学系全体学生的成绩置零。

6、创建一个“经济系”全体学生的视图V_JJX。

7、创建一个自定义函数,可以求解任意数n的阶乘累加和,即计算

+n!

,并用n=10调用该函数。

8、建一个规则,并将其绑定到学生表的所在系列上,规定取值为(

16。

S=1!

+2!

+3!

+⋯⋯

'

经济系'

'

管理系'

机电

系'

信息系'

)之一。

9、创建一个触发器,要求当更新课程表的课程号时,能更新成绩表中相应的课程号。

答案:

1、建立一个学生表。

CREATETABLE学生表

(学号CHAR(5)PRIMARYKEY,

姓名CHAR(20),

性别CHAR

(2),

年龄INTCHECK(

所在系CHAR(15))

年龄>

16),

2、查询年龄在20至23岁之间的学生的姓名、系别、和年龄

SELECT姓名,所在系,年龄

FROM学生表

WHERE年龄BETWEEN20AND23

SELECT所在系,COUNT(*),AVG(

年龄)

GROUPBY所在系

4、计算数据库应用课程的学生平均成绩

SELECTAVG(成绩)

FROM成绩表

WHERE课程号in

(SELECT课程号

WHERE课程名='

FROM课程表

数据库应用'

5、将计算机科学系全体学生的成绩置零

UPDATE成绩表

SET成绩=0

WHERE学号in

(SELECT学号FROM学生表

WHERE所在系='

计算机科学系

6、createviewV_JJX

as

select*from学生表

WHERE所在系

='

7、

CREATEFUNCTION

F_C(@nINT)

RETURNSBIGINTAS

BEGIN

DECLARE@iint,@pbigint,@sbigint

SELECT@i=1,@p=1,@s=0

WHILE@i<

=@n

SET@p=@p*@i

SET@s=@s+@p

SET@i=@i+1

END

Return@S

Go

selectdbo.F_C(10)--调用

8.

Create

rule

r_szx

@zcin

('

管理系

机电系

go

execsp_bindrule

‘r_szx

’,

‘学生表

.

所在系’

9、

Createtriggertr_up_kconkc

Forupdate

As

Declare@kh_oldchar(3),@kh_newchar(3)

Select@kh_old=deleted.课程号,@kh_new=inserted.

Fromdeletedd,insertedi

Whered.课程名=i.课程名

Updatexs_kcset课程号=@kh_new

课程号

Where课程号=@kh_old

工程名称

修路A段

铺路B段

三、现有关系数据库如下:

数据库名:

工程管理

职工表(职工编号char(6),姓名,性别,民族,工资,身份证号)

工程表(工程号char(6),名称)

参加表(ID,职工编号,工程号,天数)

用SQL语言实现下列功能的sql语句代码:

1.

创建数据库,名为

[工程管理],其它参数可自己指定

(5分)。

2.

创建上述三表的代码

(12分);

要求使用以下约束:

主键(职工表.职工编号,工程表.工程号)、外键(参加表.职工编号,参加表.工程号)、默认(民族:

汉族)、非空(姓名)、唯一(身份证号)、检查(性别、天数在0~200之间),自动编号(ID)

3.插入、修改与删除记录操作(12分):

(1)向工程表插入:

工程号

100001

100003

(2)修改工程号为100003的工程名称为:

基座打桩

(3)删除工程号为100003的工程信息

4.创建名为[参加表视图]的视图(姓名,工程名称,天数);

(8分)

5.创建名为[某工程参加职工]的内嵌表值函数,完成输入一项工程号,返回表中含有参加

该工程的职工的职工姓名、性别、工资、身份证号和天数;

(5分)

调用函数检索:

所有参加'

100001'

这项工程的职工姓名;

(3分)。

6.创建名为[职工参加天数]的存储过程:

在[参加表视图]中查找某给定姓名的职工参加所

有工程的总天数。

(5分)

执行存储过程:

计算职工“张明”的总天数。

(3分)

7.创建一个名为[GZ_RULE]的规则,并将其绑定到职工表的工资列上,规定取值为1000

元到3000元之间。

(6分)

8.创建一个名为[del_tr]的触发器,如果某人参加工程的天数不为0,就不能删除该职工的

信息,即回滚撤销删除。

(6分)

createdatabase[

use[工程管理

]

--

(5

分)

createtable

职工表

([

[

编号]char(6)primarykey,姓名]nchar(4)notnull,性别]nchar

(1)check([民族]nchar(8)default'

性别]in('

男'

汉族'

notnull,

女'

)),

[工资]nchar(12),

[身份证号]char(18)unique

createtable工程表--(2分)

([工程号]char(6)primarykey,

[工程名称]char(40)notnull

createtable参加表

(IDIDENTITY(1,1),

[职工编号]char(6)references

[工程号]char(6)references

[天数]intcheck([天数

职工表(职工编号

工程表(工程号),

]between0and200)

(4),

3.

insert

update

delete

工程表工程表工程表工程表

values('

修路

100003'

铺路

set名称='

基座打桩'

where

where工程号='

A段'

B段'

工程号='

4.

createview[

select姓名,

where职工表.

参加表视图]as

工程名称,天数from职工表,参加表,工程表

职工编号=参加表.职工编号AND职工表.编号=参加表

职工编号

5.

createfunction[

某工程参加职工

](@

varchar(6))

returnstableas

return(select

fromwhere

姓名、性别、工资、身份证号,天数

职工表.编号=参加表.职工编号AND工程号=@工程号

select*from[

]('

6.

createprocedure[职工参加天数]

@职工名nchar(16)

begin

selectsum(天数)from参加表视图

where姓名=@职工名

end

execute[职工参加天数]'

张明'

7.

createrulegz_rule_

as@GZBETWEEN1000AND3000

sp_bindrule‘gz_rule’,'

职工表

工资'

Createtriggerdel_tron

Fordelete

Begin

If(select

天数from

参加表where

职工号in

(select

职工号fromdeleted))<

>

Rollback

四、1、计算1+2*3+4*5+6*7

⋯⋯+96*97+98*99

的和,并使用

PRINT显示计算结果。

DECLARE@Iint

,@sumint,@csumchar(10)

SELECT@I=________

,@sum=______

WHILE@I<

=_________

SELECT@I=__________

SELECT@sum=__________

SELECT@csum=convert(char(10),@sum)

__________

’1+2*3+4*5+6*7

=’+@csum

2、假定某单位有一工资数据表,表名为

GZ,部分数据如下:

工号

姓名

基本工资

津贴

公积金

养老保险

失业保险

医疗保险

1001

鑫1,200.00

100.00

10.00

30.00

20.00

1002

李倩如1,100.00

123.00

12.00

23.00

21.00

1103

张大宏1,111.00

121.00

1104

赵楠欣1,212.00

211.00

13.00

31.00

32.00

对以上数据表要做如下处理:

如果平均岗位津贴低于150元,则使用

有人的岗位津贴加10元,如果最高岗位津贴超过300元,则退出WHILE

USETEST

GO

DECLARE@avgjtdecimal(4,1)

WHILE________________________<

150

UPDATEGZ

SET_______________________

IF______________________________>

300

PRINT'

最高岗位津贴超过300元'

____________--中途退出WHILE循环

WHILE循环。

循环将所

SELECT@avgjt=AVG(岗位津贴)FROMGZ

PRINT'

岗位津贴增加完毕,平均岗位津贴为:

+

STR(@avgjt,4,1)

3.给定一个身份证号,返回其中的省份编码和生日数据。

DECLARE@sfzhchar(18)

SET@sfzh=’420103************’

PRINT‘省份编码是:

’+

PRINT‘生日数据是:

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2