《数据库原理》课程实验报告.docx

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

《数据库原理》课程实验报告.docx

《《数据库原理》课程实验报告.docx》由会员分享,可在线阅读,更多相关《《数据库原理》课程实验报告.docx(20页珍藏版)》请在冰点文库上搜索。

《数据库原理》课程实验报告.docx

《数据库原理》课程实验报告

2013-2014学年第一学期

《数据库原理》

课程实验报告

学号:

20112723

学生姓名:

林苾湲

班级:

软件工程2011-2

教师:

陶宏才

辅导老师:

张建华刘宝菊

2013年12月

实验一:

表及约束的创建

1.1实验目的与内容

目的:

创建数据表、添加和删除列、实现所创建表的完整性约束。

内容:

11-2、11-26~33。

报告:

以11-31作为实验一的报告。

1.2实验代码及结果

1.2.1实验代码

(1)CREATETABLEorderdetail20112723

Order_nochar(6)PRIMARYKEY

CONSTRAINTOrder_no_constraint20112723

CHECK(Order_noLIKE'[A-Z][A-Z][0-9][0-9]'),

Cust_nochar(6)NOTNULL,

P_nochar(6)NOTNULL,

Order_totalintNOTNULL,

Order_datedatetimeNOTNULL,

CONSTRAINTperson_contr20112723

FOREIGNKEY(P_no)

REFERENCESperson20112723(P_no)

ONDELETECASCADE

ONUPDATECASCADE,

CONSTRAINTcustomer_contr20112723

FOREIGNKEY(Cust_no)

REFERENCEScustomer20112723(Cust_no)

ONDELETECASCADE

ONUPDATECASCADE,

(2)ALTERTABLEsalary20112723

ADDCONSTRAINTPno_FK20112723FOREIGNKEY(P_no)

REFERENCESperson20112723(P_no)

1.2.2实验结果

(1)

(2)

实验二:

SQL更新语句

2.1实验目的与内容

目的:

update、delete、insert语句的练习。

内容:

11-6~8。

报告:

以11-7、11-8作为实验二的报告。

2.2实验代码及结果

2.2.1实验代码

2.2.1.111-7实验代码

(1)

UPDATEsalary20112723

SETBase=1800,Bonus=160

WHEREP_no='000006'

(2)

UPDATEsalary20112723

SETBonus=Bonus*.75

WHERENOTEXISTS(SELECT*FROMorderdetail20112723

WHEREsalary20112723.P_no=orderdetail20112723.P_noAND

order_date>=GETDATE()-730)

2.2.1.211-8实验代码

INSERTINTOperson20112723

VALUES('000010','张三','男','1969-04-20','1996-08-12','培训部','000007')

SELECT*FROMperson20112723

DELETEFROMperson20112723WHEREP_no='000010'

SELECT*FROMperson20112723

2.2.2实验结果

2.2.2.111-7实验结果

(1)a.原来salary表的记录,000006的工资为1750,奖金为130

b.修改后,000006的工资为1800,奖金为160

(2)a.查询Orderdetail20112723的记录,所有员工两年均没有订单

b.将满足条件的员工奖金下调25%,从图可见所有员工奖金均下调,故修改正确

2.2.2.211-8实验结果

a.表中没有工号为000010的员工,故先添加

b.删除工号为000010的员工数据

实验三:

SQL查询语句

3.1实验目的与内容

目的:

select语句中各种查询条件的实验。

内容:

11-12~18。

报告:

以11-13、11-14作为实验三的报告。

3.2实验代码及结果

3.2.1实验代码

3.2.1.111-13实验代码

(1)SELECTDISTINCTDeptnameFROMperson20112723

(2)SELECT*FROMperson20112723WHEREP_bossisnullANDSex='女'

(3)SELECT*FROMperson20112723

WHEREP_nameIN('林峰','谢志文','罗向东')

(4)SELECT*FROMsalary20112723

WHEREP_noBETWEEN'000003'AND'000008'

ORDERBYFactASC

(5)SELECTP_no工号,2*base+1.5*bonus实际收入

FROMsalary20112723

WHEREP_no='000002'

3.2.1.211-14实验代码

(1)SELECTDeptname部门,AVG(Bonus)平均奖金

FROMsalary20112723AJOINperson20112723BONA.P_no=B.P_no

GROUPBYDeptname

HAVINGAVG(Bonus)>200

ORDERBYAVG(Bonus)DESC

(2)SELECTCOUNT(*)订单总数,SUM(Order_total)订单总额

FROMorderdetail20112723,customer20112723

WHEREorderdetail20112723.Cust_no=customer20112723.Cust_noANDCity='上海'

3.2.2实验结果

3.2.2.111-13实验结果

(1)

(2)

(3)

(4)

(5)

3.2.2.211-14实验结果

(1)

(2)

实验四:

视图及索引的建立和维护

4.1实验目的与内容

目的:

创建表的视图,修改和删除表的视图,并利用视图完成表的查询,创建表的索引、修改和删除表的索引。

内容:

11-3~5、11-9~11。

报告:

以11-3、11-4、11-9作为实验四的报告。

4.2实验代码及结果

4.2.1实验代码

4.2.1.111-3实验代码

(1)

CREATEVIEWCustomerView20112723AS

SELECTCust_no,Cust_name,Sex,Discount

FROMcustomer20112723

WHERECity='北京'

sp_helpCustomerView20112723

(2)

CREATEVIEWTrainningView20112723AS

SELECTperson20112723.P_no,P_name,Sex,Deptname,SUM(Order_total)ASAchievement

FROMperson20112723,orderdetail20112723

WHEREperson20112723.P_no=orderdetail20112723.P_noANDDeptname='培训部'

ANDP_bossisnotnullANDOrder_date>=GETDATE()-365

GROUPBYperson20112723.P_no,P_name,Sex,Deptname

sp_helpTrainningView20112723

4.2.1.211-4实验代码

(1)

CREATEINDEXname_sort20112723ONperson20112723(P_name)

(2)

CREATEINDEXbirth_name20112723ONperson20112723(Birthdate,P_name)

(3)

CREATEUNIQUEINDEXu_name_sort20112723ONperson20112723(P_name)

(4)

CREATENONCLUSTEREDINDEXfact_idx20112723ONsalary20112723(FactDESC)

4.2.1.311-9实验代码

UPDATECustomerView20112723

SETDiscount=0.85

WHERECust_name='王云'

select*fromCustomer20112723

4.2.2实验结果

4.2.2.111-3实验结果

(1)

(2)

4.2.2.211-4实验结果

(1)

(2)

(3)

(4)

4.2.2.311-9实验结果

对视图进行修改

对表没有影响

实验五:

存储过程的建立和维护

5.1实验目的与内容

目的:

创建用户的存储过程,修改和删除存储过程、执行存储过程。

内容:

11-22~24。

报告:

以11-24作为实验五的报告。

5.2实验代码及结果

5.2.1实验代码

CREATEPROCproc_addbonus(@P_noCHAR(6),@AddDEC(5,1)OUTPUT)

AS

DECLARE@Order_totalINT

DECLAREcur_addbonus_checksCURSORFOR

SELECTP_no,Order_total

FROMorderdetail20112723

WHEREP_no=@P_no

SELECT@add=0

OPENcur_addbonus_checks

FETCHcur_addbonus_checksINTO@Order_total

IF(@@fetch_status<>0)

BEGIN

CLOSEcur_addbonus_checks

DEALLOCATEcur_addbonus_checks

RETURN

END

SETNOCOUNTON

WHILE(@@fetch_status=0)

BEGIN

IF@Order_total<=100000

SET@add=@add+20

ELSESET@add=@add+@Order_total/100000*30

FETCHcur_addbonus_checksINTO@Order_total

END

ClOSEcur_addbonus_checks

DEALLOCATEcur_addbonus_checks

RETURN

5.2.2实验结果

实验六:

触发器的建立和维护

6.1实验目的与内容

目的:

创建触发器,修改和删除触发器,测试触发器的效果。

内容:

11-34。

报告:

以11-34作为实验六的报告。

6.2实验代码及结果

6.2.1实验代码

(1)

CREATETRIGGERper_del20112723

ONperson20112723

AFTERDELETE

AS

IF@@rowcount=0RETURN

DELETEsalary20112723

FROMsalary20112723s,deletedd

WHEREs.P_no=d.P_no

RETURN

//检验代码

DELETEFROMperson20112723WHEREP_no='000001'

SELECT*FROMperson20112723

SELECT*FROMsalary20112723

(2)

CREATETRIGGERsalary_up20112723

ONsalary20112723

FORUPDATE

AS

DECLARE@num_rowsINT

SELECT@num_rows=@@rowcount

IF@num_rows=0RETURN

IF(SELECTcount(*)

FROMperson20112723p,insertedi

WHEREp.P_no=i.P_no)!

=@num_rows

BEGIN

RAISERROR53334'试图修改非法的P_no值到salary20112723表中'

ROLLBACKTRANSACTION

RETURN

END

RETURN

//检验代码

UPDATEsalary20112723SETP_no=000010

WHEREP_no=000002

(3)

CREATETRIGGERsalary_in20112723

ONsalary20112723

FORINSERT

AS

DECLARE@num_rowsINT

SELECT@num_rows=@@rowcount

IF@num_rows=0RETURN

IF(SELECTcount(*)

FROMperson20112723p,insertedi

WHEREp.P_no=i.P_no)!

=@num_rows

BEGIN

RAISERROR53334'试图插入非法的P_no值到salary20112723表中'

ROLLBACKTRANSACTION

RETURN

END

RETURN

//检验代码

INSERTINTOsalary20112723VALUES('000001','2100','300')

6.2.2实验结果

(1)

原始数据

级联删除编号为000001的员工

(2)

检验触发器

(3)

检验触发器

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

当前位置:首页 > 医药卫生 > 基础医学

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

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