--设职工社团数据库有三个基本表:
-- 职工(职工号,姓名,年龄,性别);
-- 社会团体(社团号,名称,负责人,活动地点)
--参加(职工号,社团号,参加日期)
---其中: (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.查找参加了全部社会团体的职工情况。