在职工 社团数据库有3个基本表:职工(职工号,姓名,年龄,性别); 设职工社团数据库有三个基本表: 职工(职工号,姓名,年龄,性别); 社会团体(社团号,名称,负责人
在职工 社团数据库有3个基本表:职工(职工号,姓名,年龄,性别);
1,社会团体(编号,名称,负责人,活动地点) society
参加(职工号,编号,参加日期)Join
职工(职工号) Employee
select 职工号
from Employee a
where a.职工号 in(select 职工号 from Join
where 编号 in(select 编号 from Join
where 职工号=1001))
2,select (select 名称 from society where 编号=Join.编号) 社会团体名称,
sum(职工编号) 参加人数
from Join where 编号 =
(select bb.编号 from (select 编号,count(*) 数量 from Join group by 编号 ) bb
where bb.数量 =( select max(数量) from --得到最大数量
(select 编号,count(*) 数量 from Join
group by 编号 ) aa ) ) --根据最大数量得到团体编号
3,grant select, insert, delete on society to 李平 with grant option
grant select, insert, delete on Join to 李平 with grant option
设职工社团数据库有三个基本表: 职工(职工号,姓名,年龄,性别); 社会团体(社团号,名称,负责人
--设职工社团数据库有三个基本表: -- 职工(职工号,姓名,年龄,性别); -- 社会团体(社团号,名称,负责人,活动地点) --参加(职工号,社团号,参加日期) ---其中: (1)职工表的主码为职工号。 --(2)社会团体表的主码为社团号;外码为负责人,被参照表为职工表,对应属性为职工号。 --(3)参加表的职工号和社团号为外码;职工号为外码,其被参照表为职工表,对应属性为职工号; --社团号为外码,其被参照表为社会团体表,对应属性为社团号。 --试用SQL语句表达下列操作: ---1.定义职工表、社会团体表和参加表,并说明其主码和参照关系。 create table em ( emid varchar(5) primary key, emname nvarchar(5) not null, age int, sex nchar(1)) create table team ( tid char(3) primary key, tname nvarchar(10) not null, leader varchar(5) foreign key references em(emid), workstation nvarchar(20) ) create table takepartin (emid varchar(5) foreign key references em(emid), tid char(3) foreign key references team(tid), takedate smalldatetime, primary key(emid,tid)) --- 2.建立下列两个视图: 社团负责人(社团号,名称,负责人职工号,负责人姓名,负责人性别); create view leaders as select tid,tname,em.emid,emname,sex from team join emp on team.emid=team.leader ----参加人情况(职工号,姓名,社团号,社团名称,参加日期)。 create view takes as select A.emid,emname,c.tid,tname,takedate from emp A join takepartin B on a.emid=B.emid join team C on B.tid=C.tid --3.查找参加的职工号和姓名。 select emid,emname from takes where tname=唱歌队 or tname=篮球队 ---4.查找没有参加任何社会团体的职工情况。 select * from emp where emid not in(select emid from takepartin) --5.查找参加了全部社会团体的职工情况。