SQL语句完成以下查询,急了~~~
- 提问者网友:ミ烙印ゝ
- 2021-04-26 02:03
l 职工(职工号,姓名,年龄,性别)
l 社会团体(编号,名称,负责人,活动地点)
l 参与(职工号,编号,参与日期)
其中:
l 职工表的主码为职工号,职工姓名不能为空;
l 社会团体表的主码为编号,外码为负责人,被参照表为职工表,参照属性为职工号,社会团体名称不能为空;
l 参与表的主码为职工号和编号,职工号为外码,被参照表为职工表,参照属性为职工号,编号为外码,被参照表为社会团体表,参照属性为编号。
试用SQL语句实现以下操作:
(1) 定义职工表、社会团体表和参与表,并说明其主码和参照关系。
(2) 定义两个视图:
社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别)
参与人情况(职工号,姓名,社团编号,社团名称,参与日期)
(3) 查询参与羽毛球队、秧歌队或冬泳队的职工号和姓名。
(4) 查询参与冬泳队且年龄大于50岁的职工的职工号和姓名。
(5) 查询还没有确定负责人的社会团体编号和名称。
(6) 查询没有参与任何社会团体的职工情况。
(7) 查询姓“李”且参与至少一个社会团体的男员工的平均年龄。
(8) 查询与“肖波”至少参与一个相同社会团体的所有职工信息。
(9) 查询年龄在45至55之间的女职工或年龄在50至60之间的男职工的所有信息。
(10) 查询参与了全部社会团体的职工情况。
(11) 查询参与了职工号为“0001”的职工所参与的全部社会团体的职工号。
(12) 查询与“秧歌队”负责人年龄相同的职工的姓名。
(13) 查询比“秧歌队”中所有职工年龄都大的职工的姓名。
(14) 查询并统计每个社会团体的名称和参与人数。
(15) 查询并统计参与人数最少的社会团体的名称和参与人数。
(16) 查询并统计参与人数超过20人的社会团体的名称和负责人。
- 五星知识达人网友:归鹤鸣
- 2021-04-26 02:53
答案来啦!~~!一定要采纳!
1.
(1) CREATE TABLE 职工 (
职工号 CHAr(8) PRIMARY KEY,
姓名 CHAr (8) NOT NULL,
年龄 SMALLINT,
性别 CHAr (2),
CONSTRAINT C1 CHECK (性别 IN ('男', '女')))
CREATE TABLE 社会团体 (
编号 CHAr(8) PRIMARY KEY,
名称 CHAr(8) NOT NULL,
负责人 CHAr(8),
活动地点 VARCHAr(50),
CONSTRAINT C2 FOREIGN KEY(负责人) REFERENCES 职工(职工号))
CREATE TABLE 参与 (
职工号 CHAr(8),
编号 CHAr(8),
参与日期 DATETIME,
CONSTRAINT C3 PRIMARY KEY(职工号,编号),
CONSTRAINT C4 FOREIGN KEY (职工号) REFERENCES 职工(职工号))
(2) CREATE VIEW 社团负责人(编号, 名称, 负责人职工号, 负责人姓名, 负责人性别)
AS SELECt 编号, 名称, 负责人, 姓名, 性别
FROM 社会团体, 职工
WHERe 社会团体.负责人=职工.职工号
CREATE VIEW 参与人情况(职工号, 姓名, 社团编号, 社团名称, 参与日期)
AS SELECt 职工.职工号, 姓名, 社会团体.编号, 名称, 参与日期
FROM 职工, 社会团体, 参与
WHERe 职工.职工号=参与.职工号 AND 参与.编号=社会团体.编号
(3) SELECt DISTINCT 职工.职工号, 姓名
FROM 职工, 社会团体, 参与
WHERe 职工.职工号=参与.职工号 AND 参与.编号=社会团体.编号
AND 社会团体.名称 IN('羽毛球队','秧歌队','冬泳队')
(4) SELECt 职工号, 姓名
FROM 职工
WHERe 职工号 IN
(SELECt 职工号
FROM 参与
WHERe 编号 IN
(SELECt 编号
FROM 社会团体
WHERe 名称='冬泳队'))
AND 年龄>50
(5) SELECt 编号, 名称
FROM 社会团体
WHERe 负责人 IS NULL
(6) SELECt *
FROM 职工
WHERe NOT EXISTS (
SELECt *
FROM 参与
WHERe 参与.职工号=职工.职工号)
(7) SELECt AVG(年龄)
FROM 职工
WHERe 姓名 LIKE '李%' AND 性别='男' AND EXISTS (
SELECt *
FROM 参与
WHERe 参与.职工号=职工.职工号)
(8) 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.姓名='肖波'))
(9) SELECt *
FROM 职工
WHERe ((年龄 BETWEEN 45 AND 55) AND 性别='女') OR
((年龄 BETWEEN 50 AND 60) AND 性别='男')
(10) SELECt *
FROM 职工
WHERe NOT EXISTS (
SELECt *
FROM 参与
WHERe NOT EXISTS (
SELECt *
FROM 社会团体
WHERe 参与.职工号=职工.职工号 AND 参与.编号=社会团体.编号))
(11) SELECt 职工号
FROM 职工
WHERe NOT EXISTS (
SELECt *
FROM 参与 AS 参与1
WHERe 参与1.职工号='0001' AND NOT EXISTS(
SELECt *
FROM 参与 AS 参与2
WHERe 参与2.编号=参与1.编号 AND 参与2.职工号=职工.职工号))
(12) SELECt 姓名
FROM 职工
WHERe 年龄>(
SELECt 年龄
FROM 职工, 社会团体
WHERe 社会团体.负责人=职工.职工号 AND 社会团体.名称='秧歌队')
(13) SELECt 姓名
FROM 职工
WHERe 年龄>ALL(
SELECt 年龄
FROM 职工, 社会团体,参与
WHERe 社会团体.编号=参与.编号 AND 职工.职工号=参与.职工号
AND 社会团体.名称='秧歌队')
(14) SELECt 社会团体.名称 ,COUNT(参与.职工号)
FROM 社会团体,参与
WHERe 社会团体.编号=参与.编号
GROUP BY 参与.编号,社会团体.名称
(15) SELECt 社会团体.名称, COUNT(参与.职工号)
FROM 社会团体, 参与
WHERe 社会团体.编号=参与.编号
GROUP BY 参与.编号,社会团体.名称
HAVINg COUNT(参与.职工号)<=ALL (
SELECt COUNT(参与.职工号)
FROM 参与
GROUP BY 参与.编号)
(16) SELECt 社会团体.名称, 职工.姓名
FROM 职工, 社会团体, 参与
WHERe 社会团体.编号=参与.编号
AND 社会团体.负责人=职工.职工号
GROUP BY 参与.编号,社会团体.名称, 职工.姓名
HAVINg COUNT(参与.编号)>20
- 1楼网友:千夜
- 2021-04-26 05:38
*********您好!Yadie.23很高兴能为你解答。********* +++++++++++++++++++++++++++++++++++++++++++++++++
我觉得我写了不少了。。花了差不多一天的时间。。后面剩下的
不会写了吧。。会的话,我再补上:
===================================================
(1)create database GLXT on ( name=GLXT, filename='e:\sqlde\GLXT.mdf', size=100, maxsize=200, filegrowth=20 ) log on( name='GLXTlog', filename='e:\sqlde\GLXT.ldf' ) go use GLXT create table 职工表( 职工号 varchar(10) not null primary key, 姓名 varchar(8) not null, 年龄 varchar(3), 性别 char(2) check(性别='男' or 性别='女') default 1 ) go use GLXT create table 社会团体表( 编号 int not null primary key, 名称 varchar(30) not null, 负责人 varchar(10), 活动地点 varchar(30) foreign key(负责人) references 职工表(职工号) ) go use GLXT create table 参与表( 职工号 varchar(10) not null references 职工表(职工号), 编号 int not null references 社会团体表(编号), 参与日期 smalldatetime, primary key(职工号,编号) )
==================================================
(2)use GLXT go create view 社团负责人 as select 编号,名称,职工表.职工号,职工表.姓名,职工表.性别 from 社会团体表,职工表 where 社会团体表.负责人=职工表.职工号 go use GLXT go create view 参与人情况 as select 职工表.职工号,职工表.姓名,社会团体表.编号,社会团体表.名称,参与日期 from 社会团体表,职工表,参与表 where 参与表.职工号=职工表.职工号 and 参与表.编号=社会团体表.编号
========================================================
(3)select 职工表.职工号,姓名 from 职工表,参与表 where 参与表.职工号=职工表.职工号 and 编号=any ( select 参与表.编号 from 社会团体表,参与表 where (名称='羽毛球队' or 名称='秧歌队' or 名称='冬泳队') and 社会团体表.编号=参与表.编号 )
==================================================
+++++++++++++++++++++++++++++++++++++++++++++++++ You can have a try,maybe my answer useful to you. 如满意,Yadie.23十分感谢您的采纳。*^-^*
- 2楼网友:第四晚心情
- 2021-04-26 05:00
羽毛球队,腰鼓队只是给出了名称,没有给出社会团体的编号,是否社会团体名称是唯一的?应为主码是编号!!
- 3楼网友:千杯敬自由
- 2021-04-26 04:28