CREATE TABLE [学生] (
[学生ID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[性别] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[班级ID] [int] NULL ,
CONSTRAINT [PK_学生] PRIMARY KEY CLUSTERED
( [学生ID] ) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [班级] (
[班级ID] [int] NOT NULL ,
[班级姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[所属院系] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[人数] [int] NULL ,
CONSTRAINT [PK_班级] PRIMARY KEY CLUSTERED
( [班级ID] ) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [课程表] (
[课程ID] [int] NOT NULL ,
[课程名称] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[任课老师] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_课程表] PRIMARY KEY CLUSTERED
( [课程ID] ) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [成绩] (
PRIMARY KEY(学生ID, 课程ID),
[学生ID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[课程ID] [int] NOT NULL ,
[成绩] [int] NULL ,
CONSTRAINT fk1 FOREIGN KEY (学生ID) REFERENCES
学生(学生ID),
CONSTRAINT fk2 FOREIGN KEY (课程ID) REFERENCES 课程表(课程ID)
)
A:学生表
insert into 学生(学生ID,姓名,性别,班级ID) values(1,'张三','男',1)
insert into 学生(学生ID,姓名,性别,班级ID) values(2,'王五','女',1)
insert into 学生(学生ID,姓名,性别,班级ID) values(3,'李六','男',2)
insert into 学生(学生ID,姓名,性别,班级ID) values(4,'周七','女',2)
B: 班级表
insert into 班级(班级ID,班级姓名,所属院系,人数) values(1,'计算机01','计算机系',28)
insert into 班级(班级ID,班级姓名,所属院系,人数) values(2,'计算机012','计算机系',21)
C: 课程表
insert into 课程表(课程ID,课程名称,任课老师) values(1,'SQL数据库','高老师')
insert into 课程表(课程ID,课程名称,任课老师) values(2,'网络基础','彭老师')
D:成绩表
insert into 成绩(学生ID,课程ID,成绩) values(1,1,90)
insert into 成绩(学生ID,课程ID,成绩) values(1,2,85)问题:
(1)打印数学成绩第10名到第15名的学生成绩单?
(2)写出存储过程,根据课程名和学生姓名查找成绩。??
[学生ID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[性别] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[班级ID] [int] NULL ,
CONSTRAINT [PK_学生] PRIMARY KEY CLUSTERED
( [学生ID] ) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [班级] (
[班级ID] [int] NOT NULL ,
[班级姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[所属院系] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[人数] [int] NULL ,
CONSTRAINT [PK_班级] PRIMARY KEY CLUSTERED
( [班级ID] ) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [课程表] (
[课程ID] [int] NOT NULL ,
[课程名称] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[任课老师] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_课程表] PRIMARY KEY CLUSTERED
( [课程ID] ) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [成绩] (
PRIMARY KEY(学生ID, 课程ID),
[学生ID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[课程ID] [int] NOT NULL ,
[成绩] [int] NULL ,
CONSTRAINT fk1 FOREIGN KEY (学生ID) REFERENCES
学生(学生ID),
CONSTRAINT fk2 FOREIGN KEY (课程ID) REFERENCES 课程表(课程ID)
)
A:学生表
insert into 学生(学生ID,姓名,性别,班级ID) values(1,'张三','男',1)
insert into 学生(学生ID,姓名,性别,班级ID) values(2,'王五','女',1)
insert into 学生(学生ID,姓名,性别,班级ID) values(3,'李六','男',2)
insert into 学生(学生ID,姓名,性别,班级ID) values(4,'周七','女',2)
B: 班级表
insert into 班级(班级ID,班级姓名,所属院系,人数) values(1,'计算机01','计算机系',28)
insert into 班级(班级ID,班级姓名,所属院系,人数) values(2,'计算机012','计算机系',21)
C: 课程表
insert into 课程表(课程ID,课程名称,任课老师) values(1,'SQL数据库','高老师')
insert into 课程表(课程ID,课程名称,任课老师) values(2,'网络基础','彭老师')
D:成绩表
insert into 成绩(学生ID,课程ID,成绩) values(1,1,90)
insert into 成绩(学生ID,课程ID,成绩) values(1,2,85)问题:
(1)打印数学成绩第10名到第15名的学生成绩单?
(2)写出存储过程,根据课程名和学生姓名查找成绩。??
(select top 6 * from
(select top 15 b.姓名,a.成绩 from 成绩 a,学生 b,课程表 c where a.学生id=b.学生id and a.课程id=c.课程id /*and c.课程名称='数学'*/ order by a.成绩 desc) xx
order by 成绩) vv order by 成绩 desc
-------------------------------------------------------
create proc pro_aa(@课程名 varchar(10),@学生姓名 varchar(10),@成绩 int output) as
select @成绩=a.成绩 from 成绩 a,学生 b,课程表 c where a.学生id=b.学生id and a.课程id=c.课程id and c.课程名称=@课程名 and b.姓名=@学生姓名
-------------------------------------------------------
declare @a int
exec pro_aa '网络基础','张三',@a output
select @a
数学成绩第10名到第15名的学生成绩单。(我只实现了前15名)
SELECT TOP 15 学生ID,课程ID,成绩
FROM 成绩
WHERE 成绩>60
order by 成绩 desc
-----存储过程可能存在一点问题---------
Create PROC P_TEST @学生姓名 char(10), @课程名称 char(10)
As
Select
课程表.课程名称,
学生.学生姓名,
成绩.成绩
From 成绩 INNER Join 学生 ON 学生.学生ID=成绩.学生ID
Join 课程表 ON 课程表.课程ID=成绩.课程ID
WHERE 学生姓名= @学生姓名
AND 课程名称 =@课程名称
GO