
--创建表
create table Student(
s# int primary key,
sname nvarchar(32) not null ,
sage int null,
ssex nvarchar(8) null
)
create table course (
c# int PRIMARY KEY,
cname nvarchar(32) not null,
t# int
)
create table sc(
s# int,
c# int,
score int
)
create table teacher(
t# int primary key,
tname nvarchar(7) not null
)
alter table course ADD CONSTRAINT t# FOREIGN KEY(t#) REFERENCES teacher (t#);
alter table sc ADD CONSTRAINT s# FOREIGN KEY(s#) REFERENCES Student (s#);
alter table sc ADD CONSTRAINT c# FOREIGN KEY(c#) REFERENCES course (c#);
--添加记录
INSERT INTO [dbo].[Student]
([s#]
,[sname]
,[sage]
,[ssex])
VALUES
(1,'刘一',18,'男'),
(2,'钱二',19,'女'),
(3,'张三',17,'男'),
(4,'李四',18,'女'),
(5,'王五',17,'男'),
(6,'赵六',19,'女')
INSERT INTO [dbo].[teacher]
([t#]
,[tname])
VALUES
(1,'叶平'),
(2,'贺高'),
(3,'杨艳'),
(4,'周磊')
INSERT INTO [dbo].[course]
([c#]
,[cname]
,[t#])
VALUES
(1,'语文',1),
(2,'数学',2),
(3,'英语',3),
(4,'物理',4)
INSERT INTO [dbo].[sc]
([s#]
,[c#]
,[score])
VALUES
(1,1,56),
(1,2,78),
(1,3,67),
(1,4,58),
(2,1,79),
(2,2,81),
(2,3,92),
(2,4,68),
(3,1,91),
(3,2,47),
(3,3,88),
(3,4,56),
(4,2,88),
(4,3,90),
(4,4,93),
(5,1,46),
(5,3,78),
(5,4,53),
(6,1,35),
(6,2,68),
(6,4,71)
--查询所有学生的选课情况
select a.s#,a.sname,c.cname from [Student] a
inner join [sc] b on a.s#=b.s#
inner join [course] c on b.c#=c.c#
--查询各个课程及相应的选修人数
select c.cname,count(a.sname) as 选修人数 from [Student] a
inner join [sc] b on a.s#=b.s#
inner join [course] c on b.c#=c.c#
group by c.cname
--查询004课程分数小于60,按分数降序排列的同学学号
select a.s#,a.sname,c.cname,b.score from [Student] a
inner join [sc] b on a.s#=b.s#
inner join [course] c on b.c#=c.c#
where b.score<60 and c.c#=4
order by b.score desc