对应属性为职工号。3)参加表的职工号和编号为主码;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。试用SQL语句表达下列操作:(每小题4分共40分)
1)定义职工表、社会团体表和参加表,并说明其主码和参照关系。2)建立下列两个视图。社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别);参加人情况(职工号,姓名,社团编号,社团名称,参加日期)3)查找参加唱歌队或篮球队的职工号和姓名。
4)查找没有参加任何团体的职工情况。5)查找参加了全部社会团体的职工情况。6)查找参加了职工号为“1001”的职工所参加的全部社会团体的职工号。7)求每个社会团体的参加人数。8)求参加人数最多的社会团体的名称和参加人数。9)求参加人数超过100人的社会团体的名称和负责人。10)把对社会团体和参加两个表的数据查看、插入和删除数据的权力赋给用户李平,并允许他将此权力授予其他用户。
答:
1)CREATTABLE职工(职工号CHAR(10)NOTNULLUNIQUE,姓名CHAR(8)NOTNULL,年龄SMALLINT,性别CHAR(2),
CONSTRAINTC1CHECK(性别IN(‘男’,‘女’)));CREATTABLE社会团体(编号CHAR(8)NOTNULLUNIQUE,
名称CHAR(12)NOTNULL,负责人CHAR(8),活动地点VARCHAR(50),CONSTRAINTC2FOREIGNKEY(负责人)REFERENCES职工(职工号));CREATTABLE参加(职工号CHAR(8),编号CHAR(8),参加日期DATA,CONSTRAINTC3PRIMARYKEY(职工号,编号),CONSTRAINC3FOREIGNKEY职工号REFERENCES职工(职工号));2)CREATVIEW社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别)ASSELECT编号,名称,负责人,姓名,性别FROM社会团体,职工WHERE社会团体负责人=职工职工号CREATVIEW参加人情况(职工号,姓名,社团编号,参加日期)ASSELECT参加职员号姓名,社会团体编号,名称,参加日期FROM职工,社会团体,参加WHERE职工职工号=参加职工号AND参加编号=社会团体编号3SELECT职工号,姓名FROM职工,社会团体,参加WHERE职工职工号=参加职工号AND参加编号=社会团体编号AND社会团体名称IN(‘唱歌队’,‘篮球队’);4)SELECTFROM职工WHERENOTEXISTS(SELECTFORM参加WHERE参加职工号=职工职工号);
5SELECTFROM职工WHERENOTEXISTS(SELECT
FROM参加
WHERENOTEXISTS(SELECTFROM社会团体
学年第学期专业计算机科学技术年级本科《数据库原理》试卷卷答案
第2页共3页
fWHERE参加职工号r