-- 初始化 USE Homework250403; Go CREATE SCHEMA Q7; Go CREATE TABLE Q7.职工 ( 职工号 VARCHAR(10) PRIMARY KEY, 姓名 VARCHAR(20) NOT NULL, 年龄 INT, 职务 VARCHAR(20), 工资 DECIMAL(10, 2), 部门号 VARCHAR(10) ); CREATE TABLE Q7.部门 ( 部门号 VARCHAR(10) PRIMARY KEY, 名称 VARCHAR(50) NOT NULL, 经理名 VARCHAR(20), 地址 VARCHAR(100), 电话号 VARCHAR(20) ); ALTER TABLE Q7.职工 ADD CONSTRAINT FK_职工_部门 FOREIGN KEY (部门号) REFERENCES Q7.部门(部门号); Go CREATE LOGIN 王明 WITH PASSWORD = 'Password123!'; CREATE USER 王明 FOR LOGIN 王明; CREATE LOGIN 李勇 WITH PASSWORD = 'Password123!'; CREATE USER 李勇 FOR LOGIN 李勇; CREATE LOGIN 刘星 WITH PASSWORD = 'Password123!'; CREATE USER 刘星 FOR LOGIN 刘星; CREATE LOGIN 张新 WITH PASSWORD = 'Password123!'; CREATE USER 张新 FOR LOGIN 张新; CREATE LOGIN 周平 WITH PASSWORD = 'Password123!'; CREATE USER 周平 FOR LOGIN 周平; CREATE LOGIN 杨兰 WITH PASSWORD = 'Password123!'; CREATE USER 杨兰 FOR LOGIN 杨兰; Go -- 1. 用户王明对两个表有SELECT权限 GRANT SELECT ON Q7.职工 TO 王明; GRANT SELECT ON Q7.部门 TO 王明; Go -- 2. 用户李勇对两个表有INSERT和DELETE权限 GRANT INSERT, DELETE ON Q7.职工 TO 李勇; GRANT INSERT, DELETE ON Q7.部门 TO 李勇; Go -- 3. 每个职工只对自己的记录有SELECT权限 CREATE VIEW Q7.职工个人视图 AS SELECT 职工号, 姓名, 年龄, 职务, 工资, 部门号 FROM Q7.职工 WHERE 姓名 = CURRENT_USER; Go GRANT SELECT ON Q7.职工个人视图 TO PUBLIC; Go -- 4. 用户刘星对职工表有SELECT权限,对工资字段具有更新权限 GRANT SELECT ON Q7.职工 TO 刘星; GRANT UPDATE (工资) ON Q7.职工 TO 刘星; Go -- 5. 用户张新具有修改这两个表的结构的权限 GRANT ALTER ON SCHEMA::Q7 TO 张新; Go -- 6. 用户周平具有对两个表的所有权限,并具有给其他用户授权的权限 GRANT SELECT, INSERT, UPDATE, DELETE ON Q7.职工 TO 周平 WITH GRANT OPTION; GRANT SELECT, INSERT, UPDATE, DELETE ON Q7.部门 TO 周平 WITH GRANT OPTION; Go -- 7. 用户杨兰具有从每个部门职工中SELECT的权限 CREATE VIEW Q7.部门职工视图 AS SELECT 职.*, 部.名称 AS 部门名称 FROM Q7.职工 职 JOIN Q7.部门 部 ON 职.部门号 = 部.部门号; Go GRANT SELECT ON Q7.部门职工视图 TO 杨兰; Go