-- 初始化
USE Homework250403;
Go
CREATE SCHEMA Q6;
Go
CREATE TABLE Q6.学生(
                        学号 CHAR(10) PRIMARY KEY,
                        姓名 NVARCHAR(20) NOT NULL,
                        年龄 INT,
                        性别 CHAR(1),
                        家庭住址 NVARCHAR(100),
                        班级号 CHAR(10) NOT NULL
);
Go
CREATE TABLE Q6.班级(
                        班级号 CHAR(10) PRIMARY KEY,
                        班级名 NVARCHAR(20) NOT NULL,
                        班主任 NVARCHAR(20),
                        班长 NVARCHAR(20)
);
Go
CREATE LOGIN U1 WITH PASSWORD = 'Password123!';
CREATE LOGIN U2 WITH PASSWORD = 'Password123!';
CREATE USER U1 FOR LOGIN U1;
CREATE USER U2 FOR LOGIN U2;
CREATE ROLE R1;
Go

-- 1. 授予用户U1对两个表的所有权限，并可给其他用户授权
GRANT SELECT, INSERT, UPDATE, DELETE ON Q6.学生 TO U1 WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, DELETE ON Q6.班级 TO U1 WITH GRANT OPTION;
Go
-- 2. 授予用户U2对学生表具有查看权限，对家庭住址具有更新权限
GRANT SELECT ON Q6.学生 TO U2;
GRANT UPDATE (家庭住址) ON Q6.学生 TO U2;
Go
-- 3. 将对班级表查看权限授予所有用户
GRANT SELECT ON Q6.班级 TO PUBLIC;
Go
-- 4. 将对学生表的查询、更新权限授予角色R1
GRANT SELECT, UPDATE ON Q6.学生 TO R1;
Go
-- 5. 将角色R1授予用户U1，并且U1可继续授权给其他角色
ALTER ROLE R1 ADD MEMBER U1;
GRANT CONTROL ON ROLE::R1 TO U1;
Go