文档介绍:第一次习题课
关系代数和SQL 查询
按照课本79页创建学生-课程数据库
use master
CREATE DATABASE S_T
GO
use S_T
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
/* 列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE, /* Sname取唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
学号
Sno
姓名
Sname
性别
Ssex
年龄
Sage
所在系
Sdept
201215121
李勇
男
20
CS
201215122
刘晨
女
19
CS
201215123
王敏
女
18
MA
201215125
张立
男
19
IS
表
CREATE TABLE Course/*创建课程表Course*/
(Cno CHAR(4) PRIMARY KEY,
/* o是主码*/
Cname CHAR(40),
Cpno CHAR(4),
Ccredit float,
FOREIGN KEY (Cpno) REFERENCES o)
/* 表级完整性约束条件,Cpno是外码,被参照表是Course,o */
);
Course表
o
ame
先行课
Cpno
redit
1
数据库
5
4
2
数学
2
3
信息系统
1
4
4
操作系统
6
3
5
数据结构
7
4
6
数据处理
2
7
PASCAL语言
6
4
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade float,
PRIMARY KEY (o),
/* 主码由两个属性(o)构成,必须作为表级完整性进行定义*/
FOREIGN KEY (Sno) REFERENCES Student(Sno),
/* 表级完整性约束条件,Sno是外码,被参照表是Student */
FOREIGN KEY (Cno)REFERENCES o)
/* o是外码,被参照表是Course*/
);
SC表
学号
Sno
课程号
Cno
成绩
Grade
201215121
1
92
201215121
2
85
201215121
3
88
201215122
2
90
201215122
3
80
查询学习1号课程的学生最高分数;
select MAX(Grade) maxgrade
from SC
group o
o='1'
查询各个课程号与相应的选课人数;
o,COUNT(*)
from SC
group o
查询每个学生及其选修课程的情况,包括学生姓名和课程名,成绩;
Select ame,grade
from Student,Course,SC
where =
and o=o
查询选修2号课程且成绩在90分以上的所有学生;
select Student.*
from Student,SC
where =
and o='2' and Grade>90