问答题 设职工-社团数据库有3个基本表:
职工(职工号,姓名,年龄,性别);
社会团体(编号,名称,负责人,活动地点);
参加(职工号,编号,参加日期)。
其中:
1)职工表的主码为职工号。
2)社会团体表的主码为编号,外码为负责人,被参照表为职工表,对应属性为职工号。
3)参加表的职工号和编号为主码;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。
试用SQL语句表达下列操作:
问答题 定义职工表、社会团体表和参加表,并说明其主码和参照关系。
【正确答案】CREAT TABLE 职工(职工号 CHAR(10) NOT NULL UNIQUE, 姓名 CHAR(8) NOT NULL, 年龄 SMALLINT, 性别 CHAR(2), CONSTRAINT C1 CHECK(性别 IN (‘男’,‘女’))); CREAT TABLE 社会团体(编号 CHAR(8) NOT NULL UNIQUE, 名称 CHAR(12) NOT NULL, 负责人 CHAR(8),活动地点 VARCHAR(50), CONSTRAINT C2 FOREIGN KEY(负责人) REFERENCES 职工(职工号)); CREAT TABLE 参加(职工号 CHAR(8), 编号 CHAR(8), 参加日期 CHAR(10), CONSTRAINT C3 PRIMARY KEY(职工号,编号), CONSTRAIN C3 FOREIGN KEY(职工号) REFERENCES 职工(职工号));
【答案解析】
问答题 建立下列两个视图。 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别) 参加人情况(职工号,姓名,社团编号,社团名称,参加日期)
【正确答案】CREAT VIEW 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别) AS SELECT编号,名称,负责人,姓名,性别 FROM 社会团体,职工 WHERE 社会团体. 负责人=职工. 职工号; CREAT VIEW 参加人情况(职工号,姓名,社团编号,参加日期) AS SELECT 参加. 职员号,姓名,社会团体. 编号,名称,参加日期 FROM 职工,社会团体,参加 WHERE 职工. 职工号=参加. 职工号 AND 参加. 编号=社会团体. 编号;
【答案解析】
问答题 查找没有参加任何团体的职工情况。
【正确答案】SELECT * FROM 职工 WHERE NOT EXISTS(SELCET * FROM 参加 WHERE 参加. 职工号=职工. 职工号);
【答案解析】
问答题 查找参加了职工号为“1001”的职工所参加的全部社会团体的职工号。
【正确答案】SELECT 职工号 FROM 职工 WHERE NOT EXISTS(SELECT * FROM 参加 参加1 WHERE 参加1. 职工号=‘10001’AND NOT EXISTS(SELECT * FROM 参加 社会团体 WHERE 参加2. 编号=参加1. 编号 AND 参加2. 职工号=职工. 职工号));
【答案解析】
问答题 把对社会团体和参加两个表的数据查看、插入和删除数据的权力赋给用户张三,并允许他将此权力授予其他用户。
【正确答案】GRANT SELECT, INSERT, DELECT ON 社会团体,参加 TO 张三 WHERE GRANT OPTION;
【答案解析】