当前位置:文档之家› 《数据库原理》课程实验报告.

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

2013-2014学年第一学期《数据库原理》课程实验报告学号: ********学生姓名:***班级:软件工程2011-2*师:***辅导老师:张建华刘宝菊2013年12月实验一:表及约束的创建1.1 实验目的与内容目的:创建数据表、添加和删除列、实现所创建表的完整性约束。

内容:11-2、11-26~33。

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

1.2 实验代码及结果1.2.1 实验代码(1)CREATE TABLE orderdetail20112723(Order_no char(6) PRIMARY KEYCONSTRAINT Order_no_constraint20112723CHECK(Order_no LIKE'[A-Z][A-Z][0-9][0-9]'),Cust_no char(6) NOT NULL,P_no char(6) NOT NULL,Order_total int NOT NULL,Order_date datetime NOT NULL,CONSTRAINT person_contr20112723FOREIGN KEY (P_no)REFERENCES person20112723(P_no)ON DELETE CASCADEON UPDATE CASCADE,CONSTRAINT customer_contr20112723FOREIGN KEY (Cust_no)REFERENCES customer20112723(Cust_no)ON DELETE CASCADEON UPDATE CASCADE,)(2)ALTER TABLE salary20112723ADD CONSTRAINT Pno_FK20112723 FOREIGN KEY(P_no) REFERENCES person20112723(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.1 11-7实验代码(1)UPDATE salary20112723SET Base=1800,Bonus=160WHERE P_no='000006'(2)UPDATE salary20112723SET Bonus=Bonus*.75WHERE NOT EXISTS(SELECT * FROM orderdetail20112723WHERE salary20112723.P_no=orderdetail20112723.P_no ANDorder_date>=GETDA TE()-730)2.2.1.2 11-8实验代码INSERT INTO person20112723V ALUES('000010','张三','男','1969-04-20','1996-08-12','培训部','000007')SELECT * FROM person20112723DELETE FROM person20112723 WHERE P_no='000010'SELECT * FROM person201127232.2.2 实验结果2.2.2.1 11-7实验结果(1)a.原来salary表的记录,000006的工资为1750,奖金为130b.修改后,000006的工资为1800,奖金为160(2)a.查询Orderdetail20112723的记录,所有员工两年均没有订单b.将满足条件的员工奖金下调25%,从图可见所有员工奖金均下调,故修改正确2.2.2.2 11-8实验结果a.表中没有工号为000010的员工,故先添加b.删除工号为000010的员工数据实验三:SQL查询语句3.1 实验目的与内容目的:select语句中各种查询条件的实验。

内容:11-12~18。

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

3.2 实验代码及结果3.2.1 实验代码3.2.1.1 11-13实验代码(1) SELECT DISTINCT Deptname FROM person20112723(2) SELECT *FROM person20112723 WHERE P_boss is null AND Sex='女'(3) SELECT * FROM person20112723WHERE P_name IN('林峰','谢志文','罗向东')(4) SELECT * FROM salary20112723WHERE P_no BETWEEN '000003'AND '000008'ORDER BY Fact ASC(5) SELECT P_no 工号,2*base+1.5*bonus 实际收入FROM salary20112723WHERE P_no='000002'3.2.1.2 11-14实验代码(1) SELECT Deptname 部门,A VG(Bonus)平均奖金FROM salary20112723 A JOIN person20112723 B ON A.P_no=B.P_noGROUP BY DeptnameHA VING A VG(Bonus)>200ORDER BY A VG(Bonus) DESC(2) SELECT COUNT(*)订单总数,SUM(Order_total)订单总额FROM orderdetail20112723,customer20112723WHERE orderdetail20112723.Cust_no=customer20112723.Cust_no AND City='上海' 3.2.2 实验结果3.2.2.1 11-13实验结果(1)(2)(3)(4)(5)3.2.2.2 11-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.1 11-3实验代码(1)CREATE VIEW CustomerView20112723 ASSELECT Cust_no,Cust_name,Sex,DiscountFROM customer20112723WHERE City='北京'sp_help CustomerView20112723(2)CREATE VIEW TrainningView20112723 ASSELECT person20112723.P_no,P_name,Sex,Deptname,SUM(Order_total) AS AchievementFROM person20112723,orderdetail20112723WHERE person20112723.P_no=orderdetail20112723.P_no AND Deptname='培训部'AND P_boss is not null AND Order_date>=GETDA TE()-365GROUP BY person20112723.P_no,P_name,Sex,Deptnamesp_help TrainningView201127234.2.1.2 11-4实验代码(1)CREATE INDEX name_sort20112723 ON person20112723(P_name)(2)CREATE INDEX birth_name20112723 ON person20112723(Birthdate,P_name)(3)CREATE UNIQUE INDEX u_name_sort20112723 ON person20112723(P_name)(4)CREATE NONCLUSTERED INDEX fact_idx20112723 ON salary20112723(Fact DESC)4.2.1.3 11-9实验代码UPDATE CustomerView20112723SET Discount=0.85WHERE Cust_name='王云'select *from Customer201127234.2.2 实验结果4.2.2.1 11-3实验结果(1)(2)4.2.2.2 11-4实验结果(1)(2)(3)(4)4.2.2.3 11-9实验结果对视图进行修改对表没有影响实验五:存储过程的建立和维护5.1 实验目的与内容目的:创建用户的存储过程,修改和删除存储过程、执行存储过程。

内容:11-22~24。

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

5.2 实验代码及结果5.2.1 实验代码CREATE PROC proc_addbonus(@P_no CHAR(6),@Add DEC(5,1) OUTPUT) ASDECLARE @Order_total INTDECLARE cur_addbonus_checks CURSOR FORSELECT P_no,Order_totalFROM orderdetail20112723WHERE P_no=@P_noSELECT @add=0OPEN cur_addbonus_checksFETCH cur_addbonus_checks INTO @Order_totalIF(@@fetch_status<>0)BEGINCLOSE cur_addbonus_checksDEALLOCATE cur_addbonus_checksRETURNENDSET NOCOUNT ONWHILE(@@fetch_status=0)BEGINIF @Order_total<=100000SET @add=@add+20ELSE SET @add=@add+@Order_total/100000*30FETCH cur_addbonus_checks INTO @Order_totalENDClOSE cur_addbonus_checksDEALLOCATE cur_addbonus_checksRETURN5.2.2 实验结果实验六:触发器的建立和维护6.1 实验目的与内容目的:创建触发器,修改和删除触发器,测试触发器的效果。

相关主题