好文档 - 专业文书写作范文服务资料分享网站

factory数据库考核

天下 分享 时间: 加入收藏 我要投稿 点赞

factory数据库考核

表中的职工人数,回滚该事务,最后显示worker表中的职工人数。

USE factory

GO

SELECT COUNT(*)AS 职工人数 FROM worker GO

BEGIN TRANSACTION

INSERT INTO worker

VALUES(11,'小明','女','1955/03/08','1','1975/10/10','4') SAVE TRANSACTION TRAN1

SELECT COUNT(*)AS 职工人数 FROM worker GO

ROLLBACK TRANSACTION

SELECT COUNT(*)AS 职工人数 FROM worker GO

6、在factory数据库上,使用T-SQL语句完成如下各题:

(1)在worker表中的“部门号”列上创建一个非聚集索引;若该索引已存在,则删除后重建。

CREATE NONCLUSTERED INDEX bmh_index ON worker(部门号) GO

(2)在salary表的“职工号”和“日期”列创建聚集索引,并且强制唯一性。

CREATE UNIQUE CLUSTERED INDEX zgh_rq_index ON salary(职工号,日期) GO

7、在factory数据库上,使用T-SQL语句完成如下各题:

(1)建立视图view1,查询所有职工的职工号、姓名、部门名和2004年2月份工资,并按部门名顺序排列。

USE factory GO

CREATE VIEW view1

AS

SELECT worker.职工号,worker.姓名,部门名,工资 FROM worker,depart,salary WHERE worker.部门号=depart.部门号 AND worker.职工号=salary.职工号 GO

(2)建立视图view2,查询所有职工的职工号、姓名和平均工资。

USE factory GO

CREATE VIEW view2

AS

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

(3)建立视图view3,查询各部门名和该部门的所有职工平均工资。

USE factory GO

factory数据库考核

CREATE VIEW view3

AS

SELECT 部门名,AVG(工资) AS 平均工资 FROM worker,depart,salary WHERE worker.部门号=depart.部门号 AND worker.职工号=salary.职工号 GROUP BY 部门名 GO

(4)显示视图view3的定义。

USE factory GO

EXEC sp_help view3 GO

8、在factory数据库上,使用T-SQL语句完成如下各题: (1)修改worker表的结构,添加“E_mail varchar(20)”字段。

USE factory GO

ALTER TABLE worker ADD E_mail varchar(20) GO

(2)将上例中worker表中“E_mail”字段的数据类型改为varchar(30)

USE factory GO

ALTER TABLE worker

ALTER COLUMN E_mail varchar(30) GO

(3)删除worker表中的“E_mail”字段

USE factory GO

ALTER TABLE worker DROP COLUMN E_mail GO

(4)将worker表中姓名为“陈明”的部门号改为“101”。

USE factory GO

UPDATE worker SET 部门号='101' WHERE 姓名='陈明' GO

(5)删除工资表salary中姓名为“陈明”的记录。

USE factory GO

DELETE FROM worker

factory数据库考核

WHERE 姓名='陈明' GO

(6)实施worker表的“性别”列默认值为“男”的约束。

USE factory GO

ALTER TABLE worker ADD CONSTRAINT default_xb DEFAULT '男' FOR 性别 GO

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

USE factory GO

ALTER TABLE salary

ADD CONSTRAINT check_gz

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

(8)实施depart表的“部门号”列值唯一的非聚集索引的约束。

USE factory GO

ALTER TABLE depart

ADD CONSTRAINT unique_bmh UNIQUE NONCLUSTERED (部门号) GO

(9)为worker表建立外键“部门号”,参考表depart的“部门号”列。

USE factory GO

ALTER TABLE worker

ADD CONSTRAINT wj_worker_depart

FOREIGN KEY (部门号) REFERENCES depart(部门号) GO

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

USE factory GO

CREATE RULE sex

AS @性别='男' OR @性别='女' GO

EXEC sp_bindrule 'sex','worker.性别' GO

(11)删除(1)小题所建立的约束。

USE factory GO

ALTER TABLE worker

DROP CONSTRAINT default_xb

factory数据库考核

GO

(12)删除(2)小题所建立的约束。

USE factory GO

ALTER TABLE salary

DROP CONSTRAINT check_gz GO

(12)删除(3)小题所建立的约束。

USE factory GO

ALTER TABLE depart

DROP CONSTRAINT unique_bmh GO

(14)删除(4)小题所建立的约束。

USE factory GO

ALTER TABLE worker

DROP CONSTRAINT wj_worker_depart GO

(15)解除(5)小题所建立的绑定并删除规则sex。

EXEC sp_unbindrule 'worker.性别' GO

DROP RULE sex GO

9、在的factory数据库上,使用T-SQL语句完成如下各题: (1)创建一个为worker表添加职工记录的存储过程Addworker。

CREATE PROCEDURE Addworker @number int, @name char(8), @gender char(2), @birthday datetime, @party char(2), @starttime datetime, @departnumber int AS BEGIN

INSERT INTO worker

VALUES(@number,@name,@gender,@birthday,@party,@starttime,@departnumber) END GO

(2)创建一个存储过程Delworker删除worker表中指定职工号的记录。

USE factory GO

CREATE PROCEDURE Delworker

factory数据库考核

@number int AS BEGIN

DELETE FROM worker WHERE 职工号=@number END GO

(3)显示存储过程Delworker。

USE factory GO

EXEC sp_helptext Delworker GO

(4)删除存储过程Addworker和Delworker。

USE factory GO

DROP PROCEDURE Addworker,Delworker GO

10、在factory数据库上,使用T-SQL语句完成如下各题:

(1)在表depart上创建一个触发器depart_update,当更改部门号时同步更改worker表中对应的部门号。

USE factory GO

CREATE TRIGGER depart_update ON depart FOR UPDATE AS

IF UPDATE(部门号) BEGIN

DECLARE @number1 int,@number2 int

SELECT @number1=deleted.部门号,@number2=inserted.部门号 FROM deleted,inserted UPDATE worker

SET 部门号=@number1 WHERE 部门号=@number2 END GO

(2)在表worker上创建一个触发器worker_delete,当删除职工记录时同步删除salary表中对应职工的工资记录。

USE factory GO

CREATE TRIGGER worker_delete ON worker FOR DELETE AS BEGIN

DELETE FROM salary

factory数据库考核

factory数据库考核表中的职工人数,回滚该事务,最后显示worker表中的职工人数。USEfactoryGOSELECTCOUNT(*)AS职工人数FROMworkerGOBEGINTRANSACTIONINSERTINTOworkerVALUES(11,'小
推荐度:
点击下载文档文档为doc格式
5fhmt3iypj9acj39qpyw5s23r4b01m00esu
领取福利

微信扫码领取福利

微信扫码分享