-- ======================================================================
创建如下两个基本表,表结构如下:
-- Employs:
-- 职工编号 姓名 工作年限 职务级别 工程代号
-- 8146 李燕华 1999-9-1 5 10
-- 8234 王宏伟 1996-8-21 2 11
-- 6237 宋晓岚 1997-6-10 4 11
-- 7973 吾敏霞 1998-9-15 3 12
-- Project:
-- 工程代号 工程名称 工程负责人
-- 10 人行天桥 梁家辉
-- 11 东区D楼 朱世富
-- 12 力学楼翻新 杨咏宏
-- 13 中区校道 李家承
-- ======================================================================
-- 首先建立样题五使用的数据库
-- ======================================================================
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'Q5')
DROP DATABASE Q5
GO
CREATE DATABASE Q5
GO
USE Q5
GO
-- ======================================================================
-- 再建立两个基本表并插入数据
-- ======================================================================
CREATE TABLE Project
(
工程代号 int primary key, --主码
工程名称 varchar(30),
工程负责人 varchar(10) --外码
)
GO
CREATE TABLE Employs
(
职工编号 int primary key, --主码
姓名 varchar(10),
工作年限 datetime,
职务级别 Smallint,
工程代号 int FOREIGN KEY REFERENCES Project(工程代号) --外码
)
GO
INSERT INTO Project(工程代号,工程名称,工程负责人) VALUES (10,'人行天桥','梁家辉')
INSERT INTO Project(工程代号,工程名称,工程负责人) VALUES (11,'东区D楼','朱世富')
INSERT INTO Project(工程代号,工程名称,工程负责人) VALUES (12,'力学楼翻新','杨咏宏')
INSERT INTO Project(工程代号,工程名称,工程负责人) VALUES (13,'中区校道','李家承')
GO
INSERT INTO Employs(职工编号,姓名,工作年限,职务级别,工程代号) VALUES (8146,'李燕华','1999-9-1',5,10)
INSERT INTO Employs(职工编号,姓名,工作年限,职务级别,工程代号) VALUES (8234,'王宏伟','1996-8-21',2,11)
INSERT INTO Employs(职工编号,姓名,工作年限,职务级别,工程代号) VALUES (6237,'宋晓岚','1997-6-10',4,11)
INSERT INTO Employs(职工编号,姓名,工作年限,职务级别,工程代号) VALUES (7973,'吾敏霞','1998-9-15',3,12)
GO
-- ======================================================================
-- 1,对Employs表建立索引;(主键:职工编号,外键:工程代号)
-- 2,对Project表建立索引;(主键:工程代号)
-- 3,通过"工程代号"连接两个表
-- ======================================================================
CREATE INDEX 职工索引
ON Employs(职工编号,工程代号)
GO
CREATE INDEX 工程索引
ON Project(工程代号)
GO
SELECT E.职工编号,E.姓名,E.工作年限,E.职务级别,E.工程代号,P.工程代号,P.工程名称,P.工程负责人
FROM Employs AS E
JOIN
Project AS P
ON
E.工程代号=P.工程代号
GO
-- ======================================================================
-- 用查询分析器完成以下操作
-- 4,查询列出职工编号,职工姓名,职务级别,工程名称.
-- 5,查询列出所有参加"东区D楼"工程的职工.
-- 6,建立视图:职工编号,姓名,职务级别,工程名称,并按职工号排序.
-- ======================================================================
SELECT 职工编号,姓名,职务级别,工程名称
FROM Employs AS E INNER JOIN Project AS P
ON E.工程代号=P.工程代号
GO
SELECT 职工编号,姓名,职务级别,工程名称
FROM Employs AS E,Project AS P
WHERE E.工程代号=P.工程代号 AND P.工程名称='东区D楼'
GO
CREATE VIEW 职工与工程视图
AS (SELECT 职工编号,姓名,职务级别,工程名称
FROM Employs AS E INNER JOIN Project AS P ON E.工程代号=P.工程代号)
GO
SELECT *
FROM 职工与工程视图
ORDER BY 职工编号
GO