问题 问答题

设职工一社团数据库有三个基本表:

职工(职工号,姓名,年龄,性别);

社会团体(编号,名称,负责人,活动地点);

参加(职工号,编号,参加日期)。

其中:

1)职工表的主码为职工号。

2)社会团体表的主码为编号,外码为负责人,被参照表为职工表,对应属性为职工号。

3)参加表的职工号和编号为主码;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。

试用SQL语句表达下列操作:

1)定义职工表、社会团体表和参加表,并说明其主码和参照关系。

2)建立下列两个视图。

社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别);

参加人情况(职工号,姓名,社团编号,社团名称,参加日期)

3)查找没有参加任何团体的职工情况。

4)查找参加了职工号为“1001”的职工所参加的全部社会团体的职工号。

5)把对社会团体和参加两个表的数据查看、插入和删除数据的权力赋给用户张三,并允许他将此权力授予其他用户。

答案

参考答案:

A)CREATE TABLE 职工(职工号CHAR(H) NOT NULL UNIQUE,姓名 CHAR(H)NOT NULL,年龄 SMALLINT,性别 CHAR( B),CONSTRAINT CA CHECK(性别IN(‘男’,‘女’)));

CREATE TABLE 社会团体(编号 CHAR(H)NOT NULL UNIQUE,名称 CHAR(AB)NOT NULL,负责人 CHAR(H),活动地点 VARCHAR( E0),CON-STRAINT CB FOREICN KEY(负责人)REFERENC-ES 职工(职工号));

CREATE TABLE参加(职工号CHAR(H),编号CHAR(H),参加日期 DATA,CONSTRAINT CC PRI-MARY KEY(职工号,编号),CONSTRAIN CC FOREIGNKEY(职工号)REFFRENCES职工(职工号));

B) CREATE VIEW社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别) AS SELECT编号,名称,负责人,姓名,性别FROM社会团体,职工WHERE社会团体.负责人=职工,职工号;

CREATE VIEW参加人情况(职工号,姓名,社团编号,参加日期)AS SFLECT参加.职员号,姓名,社会团体.编号,名称,参加日期FROM职工,社会团体,参加 WHERE 职工,职工号=参加,职工号AND参加,编号=社会团体.编号;

C) SELECT*FROM职工WHERF NOT EXISTS(SELECT*FORM参加WHERE参加.职工号=职工.职工号);

D) SELECT职工号 FROM 职工 WHERENOT EXISTS(SELECT*FROM参加 参加AWHERE 参加A.职工号=‘A00A’ AND NOT EX-ISTS (SELECT*FROM 参加 WHERE 参加B.编号=社会团体,编号AND参加B.职工号=职工.职工号));

E) CRANT SELECT,INSERT,DELETE ON 社会团体,参加 TO 张三 WHERE GRANT OPTION;

解析:

主要考查了SQL的数据查询功能、数据定义功能和数据操纵功能。这类问题主要是考查对SE-LECT FROM WHERE语句的掌握。

解答题
判断题