SQL实训
(
[出生日期] ASC
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
-------------------------------------------------------------------------------------------------------
(3).在salary表的工资列上创建名为money的非聚集索引,并按从小到大的次序排列。脚本文件名:0703.sql。
------------------------------------脚本文件0703.sql-------------- ------------------------------
USE [factory] GO
CREATE NONCLUSTERED INDEX [money] ON [dbo].[salary] (
[工资] ASC
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
-------------------------------------------------------------------------------------------------------
8.SQL编程
(1)创建一个存储过程showworker,要求该存储过程能根据提供的职工号返回其工作部门名称;如果不存在此人,则显示提示信息“查无此人”。
执行该存储过程,查询职工号为10的职工信息。 脚本文件名:0801.sql。
---------------------------------------脚本文件0801.sql------------------------------------------
if ( select count(*) from worker where 职工号=10)>0 select depart.部门名,worker.职工号 from worker,depart where
worker.职工号=10 and worker.部门号=depart.部门号 else
print '查无此人'
----------------------------------------------------------------------------------
(2)求出男女职工的平均工资。若男职工平均工资高出女职工平均工资50%,则显示“男职工比女职工的工资高多了”的信息;若男职工平均工资与女职工平均工资比率在1.5~0.8之间,则显示“男职工跟女职工的工资差不多”的信息;否则,显示“女职工比男职工的工资高多了”的信息。脚本文件名:0802.sql。 --------------------------------------脚本文件0802.sql-------------- ---------------------------
declare @男float,@女float,@比较值float
select @男=avg(salary.工资) --计算男职工平均工资 from worker,salary
where worker.职工号=salary.职工号and worker.性别='男' select @女=avg(salary.工资) --计算女职工平均工资 from worker,salary
where worker.职工号=salary.职工号and worker.性别='女'
- 10 -
SQL实训
set @比较值=@男/@女 if @比较值>1.5
print '男职工比女职工的工资高多了' else
if @比较值>=0.8
print '男职工跟女职工的工资差不多' else
print '女职工比男职工的工资高多了'
9.触发器
创建一个触发器Delworker,删除worker表中指定职工号的记录时,也将职工工资表salary中相应的记录删去。脚本文件名:0901.sql。
------------------------------------脚本文件0901.sql-------------- ------------------------------
CREATE TRIGGER Delworker ON worker AFTER delete AS begin
declare @worker varchar(30)
select @worker 职工号from deleted print @worker+'用户已被删除!' end
delete from worker where 职工号='13'--触发器验证
------------------------------------------------------------------------------------------------------- 10.数据转换
(1).新建一个数据库factory1,将前面已建的factory数据库中的所有表导入到factory1数据库中。
(2).将前面已建的factory数据库中的所有表(不包括视图)导出到Factory.mdb(ACCESS数据库)。
(3).将此文件夹下的“订单.mdb”(ACCESS数据库)的数据导入到数据库factory中。
- 11 -
SQL实训
实 训 总 结
这次实训,总的下来,感觉不易。在数据库这门课程一开始,感觉学的云里雾里,觉得记代码很麻烦,也会担心这门课程期末考过不了。许多同学也有这样的感受,但相信通过这次的实训大家应该有了更多的信心。这次实训还综合应用数据库、SQLServer2005、学生管理等知识。使我们所学知识得到延伸与拓展,也提高了我们的综合实践能力。
在这一周的实训当中,我们做了一个员工管理数据库系统,我们实训的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从实训中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败。另一个内容是数据库的约束、视图、查询。从中我们了解到查询语句的基本结构,和简单SELECT语句的使用,多表连接查询。而在视图的操作中,也了解到了视图是常见的数据库对象,是提供查看和存取数据的另一种途径,对查询执行的大部分操作,使用视图一样可以完成。虽然只是一个比较和我们有关的数据库,但是在这一周的实训过程中,做的也不是很顺利,其中也遇到了许多问题,通过反反复复的看书,并且向同学请教,把相关的知识复习了一遍,这也是一种很大的收获。至少我们在做的过程中学会了思考,就像在做这个数据库系统的时候,我们在做之前就要有一个方案,设计一个步骤,先开始进行需求分析,接着进行概念模型设计,其次进行逻辑结构设计,最后我们在创建数据库脚步文件。在创建的过程中,是我们问题最多的步骤,通过做题,我们发现了自己的不足,这也与我们平时上课有关,许多学过的知识,转眼就忘,而且也没有在空余时间去复习,并且对于一些重点的知识,我们也掌握的不好,许多的语法知识和基本语句都会出错。对于这种情况,我们就得好好反省自己,在以后的学习当中,我们就要补其不足,掌握更好的学习方法。
其实,不管我们做什么事情,我们都应该想清楚,首先干什么,其次干什么,有了一个合理的规划,我们做起来也就比较的有了方向,有了目标,再向目标去奋斗,这样我们才能更好的把握自己,使自己更好的发展。
- 12 -