SQL练习:构建学生-课程数据库模型
需积分: 11 90 浏览量
更新于2024-08-15
收藏 135KB PPT 举报
本资源是关于数据库原理及应用的学习资料,特别关注SQL的实践练习。提供的数据涉及到一个学生-课程数据库,包括三个表格:学生表(Student)、课程表(Course)和学生选课表(SC)。学生表记录了学生的学号、姓名、性别、年龄和所在系;课程表包含课程号、课程名称、先行课(预修课程)和学分;学生选课表则存储了学生的学号、所选课程号以及对应的分数。资料中还给出了创建这些表的SQL语句示例。
在数据库设计中,表间的关联是至关重要的。在这个S-T数据库中,Student表和Course表通过外键关联,Course表中的Cpno字段引用了自身的Cno字段,表示课程之间的预修关系。而Student表和Course表通过SC表连接,形成了学生选修课程的关系,其中Sno和Cno分别是两个表的主键,共同作为SC表的复合外键。
创建数据库和表的SQL语句示例如下:
1. 创建数据库:
```sql
CREATE DATABASE "S-T";
```
这个命令在大多数数据库管理系统(DBMS)中用于创建一个新的数据库。
2. 建立学生表Student:
```sql
CREATE TABLE Student (
Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
```
这里定义了Student表的结构,Sno为主键,确保每个学生的学号都是唯一的;Sname字段要求具有唯一性,防止同名的情况;其他字段如Ssex、Sage和Sdept分别存储性别、年龄和所在系。
3. 建立课程表Course:
```sql
CREATE TABLE Course (
Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);
```
Course表中,Cno为主键,Cname记录课程名称,Cpno是预修课程号,Ccredit表示课程的学分。Cpno字段是外键,引用了Course表的Cno字段,确保预修课程的有效性。
4. 建立学生选课表SC:
SC表没有给出具体的创建语句,但可以假设它类似如下:
```sql
CREATE TABLE SC (
Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade INT,
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
```
SC表的Sno和Cno构成复合主键,确保每条选课记录的唯一性。同时,Sno和Cno都是外键,分别与Student和Course表的主键对应,确保数据的一致性。
这个SQL练习提供了基本的数据库设计实例,适合初学者理解和实践SQL语句,包括数据表的创建、主键和外键的使用,以及表间关系的建立。通过这些练习,学习者可以加深对数据库原理的理解,并提升实际操作数据库的能力。
217 浏览量
2008-02-11 上传
2009-12-05 上传
2022-06-26 上传
2021-10-03 上传
258 浏览量
2022-06-26 上传
2024-03-07 上传

魔屋
- 粉丝: 29
最新资源
- 富文本编辑器图片获取与缩略图设置方法
- 亿图画图工具:便捷流程图设计软件
- C#实现移动二次曲面拟合法在DEM内插中的应用
- Symfony2中VreshTwilioBundle:Twilio官方SDK的扩展包装器
- Delphi调用.NET DLL的Win32交互技术解析
- C#基类库大全:全面解读.NET类库与示例
- 《计算机应用基础》第2版PPT教学资料介绍
- VehicleHelpAPI正式公开:发布问题获取使用权限
- MATLAB车牌自动检测与识别系统
- DunglasTorControlBundle:Symfony环境下TorControl的集成实现
- ReactBaiduMap:打造React生态的地图组件解决方案
- 卡巴斯基KEY工具:无限期循环激活解决方案
- 简易绿色版家用FTP服务器:安装免、直接配置
- Java Mini Game Collection解析与实战
- 继电器项目源码及使用说明
- WinRAR皮肤合集:满足不同风格需求