SQL SERVER20xx职工管理系统实训

时间:2024.4.2

 陕西国防工业职业技术学院

SQL Server实训报告

    业:            

    级:                             

    名:                             

    号:                            

指导老师:                             

实训时间:                             

实训地点:        8-504              

    绩:                             

软件教研室制

 

一、实训目标

掌握SQL Server数据库创建方法,掌握数据表、数据库完整性约束、基本查询语句的使用、数据更新方法、视图索引的建立、常用数据库对象的创建及使用、SQL编程序等多方面的综合练习,旨在强化训练,真正做到熟练掌握甚至精通,为以后数据库维护、网络管理、编程打好基础。

二、实训要求

完成实训题目,并将最终结果保存在自己的FTP上(在自己的FTP帐号上建立”RJ3121XXSQL实训”文件夹,将所有实训结果、脚本文件、数据库、实训报告均保存在此文件夹下,XX代表自己的学号),所有操作必须使用T-SQL代码完成。填写如下实训报告。

三、考核标准

(1)平时实习纪律考勤                    占10%

(2)实训报告                            占40%

(3)代码文件及数据库文件                占40%

(4)实习总结                            占10%


SQL Server实训

1.创建数据库

创建一个名称为factory的数据库,脚本文件名:0100.sql,此脚本文件可利用企业管理器自动生成。

(1)将主数据库文件factory_Data.MDF放置在D:\DBF文件夹中,其文件大小自动增长为按5MB增长。

(2)将事务日志文件factory_Log.MDF放置在D:\DBF文件夹中,其文件大小自动增长为按1MB增长。

------------------------------------脚本文件0100.sql-------------- ------------------------------

CREATE DATABASE factory

ON PRIMARY

(NAME='职工信息管理数据库',

FILENAME='D:\DBF\factory_Data.MDF',

FILEGROWTH=5MB

)

LOG ON

(NAME='职工管理数据库',

FILENAME='D:\DBF\factory_Log.MDF',

FILEGROWTH=1MB

)

COLLATE Chinese_PRC_CI_AS

GO

-------------------------------------------------------------------------------------------------------

2.创建和使用表

脚本文件名:0200.sql,此脚本文件可利用企业管理器自动生成。

(1)建立职工表worker,其结构为:职工号:int,姓名:char(8),性别:char(2),出生日期:datetime,党员否:bit,参加工作:datetime,部门号:int。其中“职工号”为主键。在worker表中输入如下记录:

(2)建立部门表depart,其结构为:部门号:int,部门名:char(10)。其中,“部门号”为主键。在depart表中输入如下记录:

(3)建立职工工资表salary,其结构为:职工号:int,姓名:char(8),日期:datetime,工资:decimal(6,1)。其中,“职工号”和“日期”为主键。在salary表中输入如下记录

(4)建立worker、depart和salary3个表之间的关系。

注意:

数据的录入可使用导入的方法,可先建立数据表结构,然后将此数据复制到excel,最后将其导入到数据库中,注意此数据中的日期格式。

3个表之间的关系主要指主外键关系。

--------------------------------------脚本文件0200.sql------------ ------------------------------

USE factory

GO

CREATE TABLE worker

(

职工号 int CONSTRAINT pk_xh PRIMARY KEY,

姓名 char(8) NULL,

性别 char(2) NULL,

出生日期 datetime NULL,

党员否 bit NULL,

参加工作 datetime NULL,

部门号 int NOT NULL

)

GO

CREATE TABLE depart

(

部门号 int CONSTRAINT pk_bmh PRIMARY KEY,

部门名 char(10) NULL

)

GO

CREATE TABLE salary

(

职工号 int NOT NULL,

姓名 char(8) NULL,

日期 datetime NOT NULL,

工资 decimal(6,1) NULL

CONSTRAINT pk_zgh PRIMARY KEY(职工号,日期)

)

GO

-------------------------------------------------------------------------------------------------------

3.数据库完整性

脚本文件名:0300.sql,此脚本文件可利用企业管理器自动生成。

(1)实施worker表的“性别”字段默认值为“男”的约束。

(2)实施salary表的“工资”字段值限定在0~9999的约束。

(3)建立一个规则sex:@性别='男'OR@性别='女',将其绑定到worker表的“性别”列上。

------------------------------------脚本文件0300.sql-------------- ------------------------------

USE factory

GO

ALTER TABLE worker ADD CONSTRAINT df_xb DEFAULT '男'FOR 性别

GO

ALTER TABLE salary ADD CONSTRAINT ck_gz

    CHECK(工资>=0 AND 工资<=9999)

GO

CREATE RULE sex_rule AS @性别='男' OR @性别='女'

GO

-------------------------------------------------------------------------------------------------------

4.查询数据

(1).查询所有男性职工的职工号、姓名。脚本文件名:0401.sql。

------------------------------------脚本文件0401.sql-------------- ------------------------------

USE factory

GO

SELECT 职工号,姓名 FROM worker

    WHERE 性别='男'

GO

-------------------------------------------------------------------------------------------------------

(2).查询所有20##年以前工作的职工姓名、参加工作时间。脚本文件名:0402.sql。

------------------------------------脚本文件0402.sql-------------- ------------------------------

USE factory

GO

SELECT 姓名,参加工作 FROM worker

    WHERE 参加工作<'20##-01-01'

GO

-------------------------------------------------------------------------------------------------------

(3).查询所有市场部的职工姓名、性别、职工号、是否党员。脚本文件名:0403.sql。

------------------------------------脚本文件0403.sql-------------- ------------------------------

USE factory

GO

SELECT 姓名,性别,职工号,党员否 FROM worker

    WHERE 部门号='3'

GO

(4).查询所有职工20##年2月的职工工资,显示字段包括职工号、职工姓名、性别、部门名称、工资,并按工资从大到小排序。脚本文件名:0404.sql。

------------------------------------脚本文件0404.sql-------------- ------------------------------

USE factory

GO

SELECT worker.职工号,worker.姓名,worker.性别,depart.部门名,salary.工资

    FROM worker,salary,depart

    WHERE worker.职工号=salary.职工号 AND

    salary.日期>='20##-03-01' AND salary.日期<='20##-03-31' AND

    depart.部门号=worker.部门号

    order by 工资

GO

-------------------------------------------------------------------------------------------------------

(5).查询所有市场部和人事处职工的职工号、职工姓名。脚本文件名:0405.sql。

------------------------------------脚本文件0405.sql-------------- ------------------------------

USE factory

GO

SELECT 职工号,姓名 FROM worker

    WHERE 部门号 in(2,3)

GO

-------------------------------------------------------------------------------------------------------

(6).查询所有职工的总工资、职工号、职工姓名。脚本文件名:0406.sql。

------------------------------------脚本文件0406.sql-------------- ------------------------------

USE factory

GO

SELECT worker.职工号,worker.姓名,sum(工资)AS 总工资

FROM worker,salary

WHERE worker.职工号=salary.职工号

group by worker.职工号,worker.姓名 --让各个单位组合group by

order by sum(工资)

GO

-------------------------------------------------------------------------------------------------------

(7).查询所有职工的年龄,显示字段包括职工号、职工姓名、出生年月、年龄。脚本文件名:0407.sql。

------------------------------------脚本文件0407.sql-------------- ------------------------------

USE factory

GO

SELECT 职工号,姓名,出生日期,year(getdate())-year(出生日期)AS 年龄

    FROM worker

GO

-------------------------------------------------------------------------------------------------------

(8).查询各部门的党员人数,显示字段包括部门号、部门名称、党员人数。脚本文件名:0408.sql。

------------------------------------脚本文件0408.sql-------------- ------------------------------

USE factory

GO

SELECT worker.部门号,depart.部门名,count(党员否) AS 党员人数

    FROM worker,depart

    WHERE worker.部门号=depart.部门号

    group by worker.部门号,depart.部门名

GO

-------------------------------------------------------------------------------------------------------

(9).查询所有职工的平均工资,显示字段包括职工号、职工姓名、平均工资。脚本文件名:0409.sql。

------------------------------------脚本文件0409.sql-------------- ------------------------------

USE factory

GO

SELECT 职工号,姓名,AVG(工资) AS 平均工资

    FROM salary

    group by 职工号,姓名

GO

-------------------------------------------------------------------------------------------------------

(10).查询所有平均工资高于1200的职工信息(职工号、职工姓名、性别)和对应的平均工资。脚本文件名:0410.sql。

------------------------------------脚本文件0410.sql-------------- ------------------------------

USE factory

GO

SELECT salary.职工号,salary.姓名,worker.性别,AVG(salary.工资) AS 平均工资

    FROM salary,worker

    WHERE salary.职工号=worker.职工号

    group by salary.职工号,salary.姓名,worker.性别

    having AVG(salary.工资)>'1200'

GO

(11).显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。脚本文件名:0411.sql。

------------------------------------脚本文件0411.sql-------------- ------------------------------

USE factory

GO

SELECT worker.职工号,worker.姓名,depart.部门名,salary.日期,salary.工资

    FROM worker,depart,salary

    WHERE

    worker.职工号=salary.职工号 AND

    depart.部门号=worker.部门号 AND

    salary.职工号=(select top 1 职工号 from salary

    group by 职工号

    order by MAX(工资) desc)

    group by worker.职工号,worker.姓名,depart.部门名,salary.日期,salary.工资

GO

-------------------------------------------------------------------------------------------------------

(12)显示最高工资的职工所在的部门名。脚本文件名:0412.sql。

------------------------------------脚本文件0412.sql-------------- ------------------------------

USE factory

GO

Select depart.部门名

from salary, worker,depart

WHERE worker.职工号=salary.职工号

AND depart.部门号=worker.部门号

AND 工资=(SELECT MAX(工资) FROM salary)

GO

-------------------------------------------------------------------------------------------------------

(13)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。脚本文件名:0413.sql。

------------------------------------脚本文件0413.sql-------------- ------------------------------

USE factory

GO

Select worker.职工号,worker.姓名

from worker,salary

WHERE worker.职工号=salary.职工号

group by worker.职工号,worker.姓名

having avg(工资)<(select avg(工资) from salary)

GO

5.更新数据

(1).在depart表中插入设备处记录,部门编号为4。脚本文件名:0501.sql。

------------------------------------脚本文件0501.sql-------------- ------------------------------

USE factory

Go

INSERT depart VALUES ('4','设备处')

GO

-------------------------------------------------------------------------------------------------------

(2).在depart表中插入资产处记录,部门编号为当前表中的最大编号+1。脚本文件名:0502.sql。

------------------------------------脚本文件0502.sql-------------- ------------------------------

USE factory

GO

INSERT into depart(部门号,部门名)

VALUES ((select case when max(部门号) is null then 1 else max(部门号)+1 end from depart),'资产处')

GO

-------------------------------------------------------------------------------------------------------

(3).在worker表中插入一条记录,记录内容为职工号20,姓名陈立,性别女,出生日期1955年3月8日,参加工作时间为1975年10月10日,部门号为4。脚本文件名:0503.sql。

------------------------------------脚本文件0503.sql-------------- ------------------------------

USE factory

GO

INSERT INTO worker(职工号,姓名,性别,出生日期,参加工作,部门号)

VALUES ('20','陈立','女','03/08/1955','10/10/1975','4')

GO

-------------------------------------------------------------------------------------------------------

(4).在worker表中插入一条记录,记录内容为职工号为最大职工号+1,姓名张三,性别男,出生日期1965年9月9日,参加工作时间为1980年10月1日,部门号为3。脚本文件名:0504.sql。

------------------------------------脚本文件0504.sql-------------- ------------------------------

USE factory

GO

INSERT INTO worker(职工号,姓名,性别,出生日期,参加工作,部门号)

VALUES((select case when max(职工号) is null then 1 else max(职工号)+1 end from worker),

'张三','男','09/09/1965','10/01/1980','3')

GO

-------------------------------------------------------------------------------------------------------

(5).修改职工1月份工资,将每个人的工资上涨10%。脚本文件名:0505.sql。

------------------------------------脚本文件0505.sql-------------- ------------------------------

USE factory

GO

UPDATE salary

    SET 工资=工资*1.1

    WHERE 日期='2004.01.04'

GO

-------------------------------------------------------------------------------------------------------

(6).修改所有女性职工2月份工资,将每人的工资加上100元的医疗补贴。脚本文件名:0506.sql。

------------------------------------脚本文件0506.sql-------------- ------------------------------

USE factory

GO

UPDATE salary

    SET 工资=工资+100

    FROM worker,salary

    WHERE worker.性别='女' AND

    salary.职工号=worker.职工号

GO

-------------------------------------------------------------------------------------------------------

(7).将所有财务处女性职工的参加工作时间向前推一年。脚本文件名:0507.sql。

------------------------------------脚本文件0507.sql-------------- ------------------------------

USE factory

GO

UPDATE worker

    SET worker.参加工作=YEAR(参加工作)-1

    FROM depart,worker

    WHERE worker.性别='女' AND

    depart.部门号='1' AND

    worker.部门号=depart.部门号

GO

-------------------------------------------------------------------------------------------------------

(8).删除工资表中工资最高的记录。脚本文件名:0508.sql。

------------------------------------脚本文件0508.sql-------------- ------------------------------

USE factory

GO

SELECT * INTO salary2 FROM salary

GO

DELETE salary2

    FROM salary2

    WHERE 工资=(SELECT MAX(工资) FROM salary2)

GO

-------------------------------------------------------------------------------------------------------

(9).删除工资表中平均工资最高的职工的工资记录。脚本文件名:0509.sql。

------------------------------------脚本文件0509.sql-------------- ------------------------------

USE factory

GO

DELETE salary2

    FROM salary2

    WHERE salary2.职工号=(select top 1 职工号 from salary

    group by 职工号)

GO

-------------------------------------------------------------------------------------------------------

(10).删除职工为1号的职工的所有信息。脚本文件名:0510.sql。

------------------------------------脚本文件0510.sql-------------- ------------------------------

USE factory

GO

DELETE salary2

    FROM salary2

    WHERE 职工号='2'

GO

DELETE worker2

    FROM worker2

    WHERE 职工号='2'

GO

-------------------------------------------------------------------------------------------------------

6.视图

(1)建立视图职工年龄查询,显示所有职工的年龄。脚本文件名:0601.sql。

------------------------------------脚本文件0601.sql-------------- ------------------------------

USE factory

GO

CREATE VIEW 职工年龄视图

AS

SELECT 职工号,姓名,出生日期,year(getdate())-year(出生日期)AS 年龄

    FROM worker

GO

-------------------------------------------------------------------------------------------------------

(2)建立视图’党员人数统计’,求出各部门的党员人数。脚本文件名:0602.sql。

------------------------------------脚本文件0602.sql-------------- ------------------------------

USE factory

GO

CREATE VIEW 党员人数统计

AS

SELECT depart.部门名,count(worker.党员否)AS 党员人数

    FROM depart,worker

    WHERE depart.部门号=worker.部门号

    group by depart.部门名

GO

-------------------------------------------------------------------------------------------------------

(3)建立视图20##年1月份工资查询,显示所有职工的姓名和20##年1月份工资数。脚本文件名:0603.sql。

------------------------------------脚本文件0603.sql-------------- ------------------------------

USE factory

GO

CREATE VIEW 二〇##年一月工资查询

AS

SELECT 姓名,工资

    FROM salary

    WHERE 日期='20##-01-04'

GO

-------------------------------------------------------------------------------------------------------

(4)建立视图职工平均工资查询,显示所有职工的职工号、姓名和平均工资。脚本文件名:0604.sql。

------------------------------------脚本文件0604.sql-------------- ------------------------------

USE factory

GO

CREATE VIEW 职工平均工资查询

AS

SELECT worker.职工号,worker.姓名,AVG(salary.工资) AS 平均工资

    FROM worker,salary

    WHERE worker.部门号=salary.职工号

    group by worker.职工号,worker.姓名

GO

-------------------------------------------------------------------------------------------------------

(5)建立视图20##年2月份工资查询,显示所有职工的职工号、姓名、部门名和20##年2月份工资,并按部门名顺序排列。脚本文件名:0605.sql。

------------------------------------脚本文件0605.sql-------------- ------------------------------

USE factory

GO

CREATE VIEW 二〇##年三月工资查询

AS

SELECT salary.职工号,salary.姓名,depart.部门名,salary.工资

    FROM salary,depart,worker

   

    WHERE 日期='20##-03-04' AND

    salary.职工号=worker.职工号 AND

    worker.部门号=depart.部门号

GO

-------------------------------------------------------------------------------------------------------

(6)建立视图部门平均工资查询,显示各部门名和该部门的所有职工平均工资。脚本文件名:0606.sql。

------------------------------------脚本文件0606.sql-------------- ------------------------------

USE factory

GO

CREATE VIEW 部门平均工资查询

AS

SELECT depart.部门名,AVG(salary.工资)AS 平均工资

    FROM depart,salary,worker

    WHERE salary.职工号=worker.职工号 AND

    worker.部门号=depart.部门号

    group by depart.部门号,depart.部门名

GO

-------------------------------------------------------------------------------------------------------

(7)建立视图高工资,显示有平均工资高于1200的部门名和对应的平均工资。脚本文件名:0607.sql。

------------------------------------脚本文件0607.sql-------------- ------------------------------

USE factory

GO

CREATE VIEW 高工资视图

AS

select depart.部门名,AVG(工资) AS 平均工资

     from salary,depart,worker

     where

     worker.职工号=salary.职工号 and

     depart.部门号=worker.部门号

     group by 部门名

     having AVG(工资)>'1200'

GO

-------------------------------------------------------------------------------------------------------

(8)建立视图部门类型,显示所有职工的职工号、姓名和部门类型,其中财务处和人事处属管理部门,市场部属市场部门。脚本文件名:0608.sql。

------------------------------------脚本文件0608.sql-------------- ------------------------------

USE factory

GO

CREATE VIEW 部门类型视图

AS

SELECT worker.职工号,worker.姓名,case depart.部门名

    WHEN '财务处' THEN '管理部门'

    WHEN '人事处' THEN '管理部门'

    WHEN '市场部' THEN '市场部门'

    END AS '部门类型'

    FROM worker,depart

    WHERE worker.部门号=depart.部门号

GO

-------------------------------------------------------------------------------------------------------

7.索引

(1).在worker表的姓名列上创建名为workername的惟一性索引。脚本文件名:0701.sql。

------------------------------------脚本文件0701.sql-------------- ------------------------------

USE factory

CREATE UNIQUE NONCLUSTERED

INDEX workername ON worker(姓名)

GO

-------------------------------------------------------------------------------------------------------

(2).在worker表的出生日期列上创建名为workerborn的非聚集索引,并按从大到小的次序排列。脚本文件名:0702.sql。

------------------------------------脚本文件0702.sql-------------- ------------------------------

USE factory

ALTER TABLE worker

ADD CONSTRAINT workerbron UNIQUE (出生日期)

GO

-------------------------------------------------------------------------------------------------------

(3).在salary表的工资列上创建名为money的非聚集索引,并按从小到大的次序排列。脚本文件名:0703.sql。

------------------------------------脚本文件0703.sql-------------- ------------------------------

USE factory

CREATE UNIQUE NONCLUSTERED

INDEX money ON salary(工资 asc)

GO

-------------------------------------------------------------------------------------------------------

(4).在worker表的参加工作列上创建名为workerwork的非聚集索引,要求强制SQL删除并重新建立索引。脚本文件名:0704.sql。

------------------------------------脚本文件0704.sql-------------- ------------------------------

USE factory

if exists(select name from sysobjects where name='workerwork')

drop index workerwork on worker

go

create index workerwork on worker (参加工作)

GO

-------------------------------------------------------------------------------------------------------

(5)在worker表中的“部门号”列上创建一个非聚集索引workerda,若该索引已存在,则删除后重建。脚本文件名:0705.sql。

------------------------------------脚本文件0705.sql-------------- ------------------------------

USE factory

GO

IF EXISTS(SELECT name FROM sysindexes WHERE name='workerda')

DROP INDEX worker.workerda

GO

CREATE INDEX depno ON worker(部门号)

GO

EXEC sp_helpindex worker

GO

-------------------------------------------------------------------------------------------------------

(6)在salary表的“职工号”和“日期”列创建聚集索引pk_salary,并且强制惟一性。脚本文件名:0706.sql。

------------------------------------脚本文件0706.sql-------------- ------------------------------

USE factory

CREATE UNIQUE NONCLUSTERED

INDEX pk_salary ON salary(职工号,日期)

GO

-------------------------------------------------------------------------------------------------------

8.数据库其他对象

(1).建立默认值时间,获取当前系统时间,并将起捆绑到worker表的参加工作列上。脚本文件名:0801.sql。

------------------------------------脚本文件0801.sql-------------- ------------------------------

USE factory

GO

CREATE default 时间 as getdate()

GO

EXEC sp_bindefault '时间','worker.参加工作'

GO

-------------------------------------------------------------------------------------------------------

(2).建立默认值精确时间,获取当前系统时间,并将其向前推36个小时。脚本文件名:0802.sql。

------------------------------------脚本文件0802.sql-------------- ------------------------------

USE factory

GO

CREATE default 精确时间 as dateadd(hh,-36,getdate())

GO

-------------------------------------------------------------------------------------------------------

(3).创建一个用户自定义数据类型CNO,基本数据类型为datetime,不允许为空。脚本文件名:0803.sql。

------------------------------------脚本文件0803.sql-------------- ------------------------------

USE factory

Exec sp_addtype CNO,'datetime','Not Null'

GO

-------------------------------------------------------------------------------------------------------

(4).将自定义数据类型CNO和默认值精确时间捆绑。脚本文件名:0804.sql。

------------------------------------脚本文件0804.sql-------------- ------------------------------

use factory

go

exec sp_bindefault '精确时间','cno'

go

-------------------------------------------------------------------------------------------------------

(5).创建一个触发器autosr完成salary表中职工姓名的自动输入,即插入一个记录后可以根据worker表中的职工号完成职工姓名的自动输入。脚本文件名:0805.sql。

------------------------------------脚本文件0805.sql-------------- ------------------------------

USE factory

GO

CREATE TRIGGER autosr

ON salary

FOR INSERT

AS

    BEGIN

    declare @wor_no int,@wor_nm char(8)

    select @wor_no=职工号,@wor_nm=姓名 from inserted

    insert into salary(职工号,姓名,日期)values(@wor_no,@wor_nm,getdate())

    end

GO

-------------------------------------------------------------------------------------------------------

9.SQL编程

(1).若存在职工号为10的职工,则显示其工作部门名称,否则显示相应提示信息。脚本文件名:0901.sql。

------------------------------------脚本文件0901.sql-------------- ------------------------------

use factory

go

if (select count(*) from worker where 职工号=10)>0

select 部门名 from depart,worker

where worker.部门号=depart.部门号 and

worker.职工号=10

else print'没有查该员工'

go

-------------------------------------------------------------------------------------------------------

(2).求出男女职工的平均工资,若男职工平均工资高出女职工平均工资50%,则显示“男职工比女职工的工资高多了”的信息;若男职工平均工资与女职工平均工资比率在1.5~0.8之间,则显示“男职工跟女职工的工资差不多”的信息;否则,显示“女职工比男职工的工资高多了”的信息。脚本文件名:0902.sql。

------------------------------------脚本文件0902.sql-------------- ------------------------------

use factory

go

declare @nan_gz decimal(6, 1),@nv_gz decimal(6, 1),@t decimal(6, 1)

select @nan_gz=avg(salary.工资)  from worker,salary

  where worker.职工号=salary.职工号 and

        worker.性别='男'

select @nv_gz=avg(salary.工资) from worker,salary

  where worker.职工号=salary.职工号 and

        worker.性别='女'

set @t=@nan_gz/@nv_gz

 if @t>1.5

    print '男职工比女职工的工资高多了'

else

  if @t>=0.8

    print '男职工跟女职工的工资差不多'

else

   print '女职工比男职工的工资高多了'

go

-------------------------------------------------------------------------------------------------------

(3).显示各职工的工资记录和相应的工资小计。脚本文件名:0903.sql。

------------------------------------脚本文件0903.sql-------------- ------------------------------

use factory

go

select 姓名,工资 from salary

group by 姓名,工资

order by 姓名

compute SUM (工资 ) by 姓名

go

-------------------------------------------------------------------------------------------------------

(4).按性别和部门名的所有组合方式列出相应的平均工资。脚本文件名:0904.sql。

------------------------------------脚本文件0904.sql-------------- ------------------------------

use factory

go

select depart.部门名,worker.性别 ,avg(工资) as 平均工资

from worker,salary,depart

where worker.职工号=salary.职工号 and

worker.部门号=depart.部门号

group by 部门名,性别

go

-------------------------------------------------------------------------------------------------------

(5).先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。脚本文件名:0905.sql。

------------------------------------脚本文件0905.sql-------------- ------------------------------

USE factory

GO

select count(*)as 职工人数 from worker

go

begin transaction

go

insert worker values(16,'李鑫','女',(select convert(datetime,'02/10/63',1)),0,(select convert (datetime,'07/10/02',1)),2)

go

select count(*)as 职工人数 from worker

  rollback transaction

select count(*)as 职工人数 from worker

go

-------------------------------------------------------------------------------------------------------

(6).创建一个函数,要求能完成职工平均工资的计算,参数为职工号。脚本文件名:0906.sql。

------------------------------------脚本文件0906.sql-------------- ------------------------------

use factory

go

create function pjgz(@zgh int)

returns decimal(6, 1)

as

begin

  declare @pjgz decimal(6, 1)

  select @pjgz=(select AVG(工资) from salary where 职工号=@zgh group by 职工号)

 return @pjgz

 end

go

declare @avg decimal(6, 1)

exec @avg=dbo.pjgz @zgh='15'

select @avg as '平均工资'

go

-------------------------------------------------------------------------------------------------------

(7).创建一个为worker表添加职工记录的存储过程Addworker。脚本文件名:0907.sql。

------------------------------------脚本文件0907.sql-------------- ------------------------------

use factory

go

create proc addworker

as

begin

  insert worker values(17,'魏苗','女',(select convert (datetime,'03/16/70',1)),1,(select convert (datetime,'07/12/76',1)),3)

end

go

exec addworker

select * from worker

go

-------------------------------------------------------------------------------------------------------

(8).创建一个存储过程Delworker删除worker表中指定职工号的记录。脚本文件名:0908.sql。

------------------------------------脚本文件0908.sql-------------- ------------------------------

use factory

go

create proc delworker

as

begin

  delete from worker

  where 职工号=17

end

go

exec delworker

select * from worker

go

-------------------------------------------------------------------------------------------------------

10.安全性

(1).创建一个登录账号ABC,密码为123456。脚本文件名:1001.sql,此脚本文件可利用企业管理器自动生成。

------------------------------------脚本文件1001.sql-------------- ------------------------------

use master

go

create login ABC

   with password='123456'

go

-------------------------------------------------------------------------------------------------------

(2).为factory数据库中创建一个用户账号MGZ,并将其关联到ABC登录账号中。脚本文件名:1002.sql,此脚本文件可利用企业管理器自动生成。

------------------------------------脚本文件1002.sql-------------- ------------------------------

use factory

go

create user MGZ for login ABC

GO

-------------------------------------------------------------------------------------------------------

       通过这次为期两周的SQL SERVER实训,收获颇多,最开始只做了几个题就觉得特别难了,想着后面的题该怎么做,但是通过查找资料和在网上寻找做对了一个后,就觉得不是想象中的那么难,一口气完成了三分之一。经过多番的努力和辛酸,我成功地完成了这次过程艰辛的实训,而且我从中体会到了一种叫做‘成功的喜悦’的感觉,在这当中当然碰到了许多困难,头疼过,郁闷过,努力过,那种小有成就的兴奋是只有置身其中的人才能体会的,就好比我啊,虽然知道人必须成熟稳重,但是偶尔调节一下生活乐趣也是的一项很必要的事情吧。

     总之,这次实训为我提供了与众不同的学习方法和学习体会,从书本中走出来,面对现实,为我将来走上社会打下了扎实的基础,为我又点亮了一盏明灯。而且,我也体会到了前人总结出的许多的实践经验,而且一直都知道技术永远是工资的基础,社会是不会要一个一无是处的人的,所以,为了生活庸俗一点,努力一点,多累一点,好好学习技术,才会有好的未来。

更多相关推荐:
学生信息管理系统实训报告

学生信息管理系统项目小组任务分配表学生信息管理系统前言随着科学技术的不断提高计算机科学日渐成熟其强大的功能已为人们深刻认识它已进入人类社会的各个领域并发挥着越来越重要的作用作为计算机应用的一部分使用计算机对学生...

学生信息管理系统实验报告

西安郵電學院数据库原理及应用设计报告题目:学生信息管理系统一.设计目的学生管理系统是高校管理工作中一项非常重要的组成部分。用户的需求具体体现在各种信息的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各…

信息管理系统实验报告一

2Intuitiveampeasytouse直觉式且容易使用的操作界面让百忙中的高阶主管透过简单的表示方式就可了解企业整体概况不需额外付出学习成本3Granularityofviews可提供主管各种角度的分析1...

C语言学生信息管理系统实训报告

实训报告题目学生信息管理系统院系信息科技学院专业电子信息工程姓名殷浩学号1152100135指导教师杨呈永日期20xx年6月26日桂林电子科技大学信息科技学院学生信息管理系统本题目设计目的是训练学生的基本编程能...

信息管理系统实验报告

目录1引言1211问题的提出112本系统的研发背景1213参考资料22系统分析2521可行性分析2322系统需求分析3423系统目标与期望453系统设计51131人事管理系统功能简介532系统的总体结构设计63...

图书信息管理系统实验报告

图书管理信息系统第1章图书管理信息系统系统规划11项目概况111项目说明1项目名称图书管理信息系统2客户长沙学院图书馆3供应商长沙学院计算机系12项目战略规划信息系统建设目标目标是努力达到读者满意图书馆内藏书丰...

信息管理系统实验报告

信息管理系统实验报告班级09财务管理34班成员章雅青20xx101238三班温小美20xx101253四班高艺佳20xx101284三班温丽妮20xx101302四班指导老师胡蓉食堂信息系统调查大纲一引言二系统...

个人信息管理系统网站-JSP实训报告

苏州市职业大学实习实训报告名称20xx年1月1日至20xx年1月5日共1周院系计算机工程系班级11软件技术外学号116314112姓名蒋思思系主任教研室主任指导教师目录一项目实训的目的与要求111项目实训目的1...

c#学生信息管理系统实验报告

摘要本文描述的是基于Windows环境的学生信息管理系统主要功能模块包括学生信查询学生信息管理学生成绩录入主要工具MicrosoftVisualStudio20xx设计窗体SQLserver20xx建立数据库实...

-学生信息管理系统数据库实训报告

学生信息管理系统数据库实训报告学校:武汉电力职业技术学院系部:计算机网络技术班级:实训老师:成员:一.课程设计的目的学生信息管理系统以计算机为工具,通过对教务管理所需的信息管理,把管理人员从繁琐的数据计算处理中…

学生管理系统实训报告(java语言)

Java实训设计报告学生管理系统一项目需求通过与科信学院教务人员的详细交流目标系统具备以下功能1教师客户端功能可以更改密码可以添加学生并要求填写学生基本信息可以根据学号查询学生基本信息及其成绩有权限控制每个管理...

学生成绩管理系统C++编程实验报告

C程序设计课程设计报告设计题目学生成绩管理系统专业计算机科学与技术网络工程班级学号姓名指导老师日期20xx0531目录一设计任务与要求31设计内容32课程设计的要求3二系统分析需求分析31需求分析32系统性能要...

信息管理系统实训报告(24篇)