设职工-社团数据库有3个基本表: 职工(职工号,姓名,年龄,性别); 社会团体(编号,名称,负责人,活动地点); 参加(职工号,编号,参加日期)。 其中: 1)职工表的主码为职工号。 2)社会团体表的主码为编号,外码为负责人,被参照表为职工表,对应属性为职工号。 3)参加表的职工号和编号为主码;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。 试用SQL语句表达下列操作:
问答题 定义职工表、社会团体表和参加表,并说明其主码和参照关系。
【正确答案】正确答案:CREAT TABLE职工(职工号CHAR(10)NOT NULL UNIQUE, 姓名CHAR(8)NOT NULL, 年龄SMALLTNT, 性别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), 参加日期DATE, 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 NOTEXISTS(SELECT*FROM 参加社会团体 WHERE 参加2.编号=参加1.编号 AND 参加2.职工号=职工.职工号));
【答案解析】
问答题 把对社会团体和参加两个表的数据查看、插入和删除数据的权力赋给用户张三,并允许他将此权力授予其他用户。
【正确答案】正确答案:GRANT SELECT,INSERT,DELECT ON社会团体,参加TO张三WHERE GRANT OPTION;
【答案解析】