【正确答案】CREATE VIEW 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别) AS SELECT 编号,名称,负责人,姓名,性别 FROM 社会团体,职工 WHERE 社会团体.负责人=职工.职工号 CREATE VIEW 参与人情况(职工号,姓名,社团编号,社团名称,参与日期) AS SELECT 职工.职工号,姓名,社会团体.编号,名称,参与日期 FROM 职工,社会团体,参与 WHERE 职工.职工号=参与.职工号 AND 参与.编号=社会团体.编号
【答案解析】
问答题
查询参与羽毛球队、秧歌队或冬泳队的职工号和姓名。
【正确答案】SELECT DISTINCT 职工.职工号,姓名 FROM 职工,社会团体,参与 WHERE 职工.职工号=参与.职工号 AND 参与.编号=社会团体.编号 AND 社会团体.名称 IN('羽毛球队','秧歌队','冬泳队')
【答案解析】
问答题
查询参与冬泳队且年龄大于50岁的职工的职工号和姓名。
【正确答案】SELECT 职工号,姓名 FROM 职工 WHERE 职工号 IN (SELECT 职工号 FROM 参与 WHERE 编号 IN (SELECT 编号 FROM 社会团体 WHERE 名称='冬泳队')) AND 年龄>50
【答案解析】
问答题
查询还没有确定负责人的社会团体编号和名称。
【正确答案】SELECT 编号,名称 FROM 社会团体 WHERE 负责人 IS NULL
【答案解析】
问答题
查询没有参与任何社会团体的职工情况。
【正确答案】SELECT * FROM 职工 WHERE NOT EXISTS( SELECT * FROM 参与 WHERE 参与.职工号=职工.职工号)
【答案解析】
问答题
查询姓“李”且参与至少一个社会团体的男员工的平均年龄。
【正确答案】SELECT AVG(年龄) FROM 职工 WHERE 姓名 LIKE '李%'AND 性别='男' AND EXISTS ( SELECT * FROM 参与 WHERE 参与.职工号=职工.职工号)
【答案解析】
问答题
查询与“肖波”至少参与一个相同社会团体的所有职工信息。
【正确答案】SELECT * FROM 职工 AS E1 WHERE E1.姓名<>'肖波' AND EXISTS (SELECT J1.编号 FROM 参与 AS J1 WHERE J1.职工号=E1.职工号 AND J1.编号=ANY (SELECT J2.编号 FROM 职工 AS E2,参与 AS J2 WHERE E2.职工号=J2.职工号 AND E2.姓名='肖波'))
【答案解析】
问答题
查询年龄在45~55岁之间的女职工或年龄在50~60岁之间的男职工的所有信息。
【正确答案】SELECT * FROM 职工 WHERE ((年龄 BETWEEN 45 AND 55) AND 性别='女') OR ((年龄 BETWEEN 50 AND 60) AND 性别='男')
【答案解析】
问答题
查询参与了全部社会团体的职工情况。
【正确答案】SELECT * FROM 职工 WHERE NOT EXISTS( SELECT * FROM 参与 WHERE NOT EXISTS( SELECT * FROM 社会团体 WHERE 参与.职工号=职工.职工号 AND 参与.编号=社会团体.编号))
【答案解析】
问答题
查询参与了职工号为“0001”的职工所参与的全部社会团体的职工号。
【正确答案】SELECT 职工号 FROM 职工 WHERE NOT EXISTS( SELECT * FROM 参与 AS 参与 1 WHERE 参与1.职工号='0001' AND NOT EXISTS( SELECT * FROM 参与 AS 参与 2 WHERE 参与 2.编号=参与 1.编号 AND 参与 2.职工号=职工.职工号))
【答案解析】
问答题
查询与“秧歌队”负责人年龄相同的职工的姓名。
【正确答案】SELECT 姓名 FROM 职工 WHERE 年龄>( SELECT 年龄 FROM 职工,社会团体 WHERE 社会团体.负责人=职工.职工号 AND 社会团体.名称='秧歌队')
【答案解析】
问答题
查询比“秧歌队”中所有职工年龄都大的职工的姓名。
【正确答案】SELECT 姓名 FROM 职工 WHERE 年龄>ALL( SELECT 年龄 FROM 职工,社会团体,参与 WHERE 社会团体.编号=参与.编号 AND 职工.职工号=参与.职工号 AND 社会团体.名称='秧歌队')
【答案解析】
问答题
查询并统计每个社会团体的名称和参与人数。
【正确答案】SELECT 社会团体.名称,COUNT(参与.职工号) FROM 社会团体,参与 WHERE 社会团体.编号=参与.编号 GROUP BY 参与.编号,社会团体.名称
【答案解析】
问答题
查询并统计参与人数最少的社会团体的名称和参与人数。
【正确答案】SELECT 社会团体.名称,COUNT(参与.职工号) FROM 社会团体,参与 WHERE 社会团体.编号=参与.编号 GROUP BY 参与.编号,社会团体.名称 HAVING COUNT(参与.职工号)<=ALL( SELECT COUNT(参与.职工号) FROM 参与 GROUP BY 参与.编号)
【答案解析】
问答题
查询并统计参与人数超过20人的社会团体的名称和负责人。
【正确答案】SELECT 社会团体.名称,职工.姓名 FROM 职工,社会团体,参与 WHERE 社会团体.编号=参与.编号 AND 社会团体.负责人=职工.职工号 GROUP BY 参与.编号,社会团体.名称,职工.姓名 HAVING COUNT(参与.编号)>20