SQL练习:构建学生-课程数据库模型
需积分: 11 105 浏览量
更新于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语句,包括数据表的创建、主键和外键的使用,以及表间关系的建立。通过这些练习,学习者可以加深对数据库原理的理解,并提升实际操作数据库的能力。
点击了解资源详情
点击了解资源详情
126 浏览量
2008-02-11 上传
217 浏览量
2022-06-26 上传
2021-10-03 上传
2009-12-05 上传

魔屋
- 粉丝: 29
最新资源
- VB实现Excel数据导入到ListView控件技术
- 触屏版wap购物网站模板及多技术源码大全
- ZOJ1027求串相似度解题策略与代码分析
- Excel表格数据合并工具:高效整合多个数据源
- MFC列表控件:实现下拉选择与编辑功能
- Tinymce4集成Powerpaste插件即用版使用教程
- 探索QMLVncViewer:Qt Quick打造的VNC查看器
- Mybatis生成器:快速自定义实体类与Mapper文件
- Dota 2插件开发:TrollsAndElves自定义魔兽3地图攻略
- C语言编写单片机控制蜂鸣器唱歌教程
- Ansible自动化脚本简化Ubuntu本地配置流程
- 探索ListView扩展:BlurStickyHeaderListView源码解析
- 探索traces.vim插件:Vim的范围选择与模式高亮预览
- 快速掌握Ruby编译与安装的神器:ruby-build
- C语言实现P1口灯花样控制源代码及使用指南
- 会员管理系统:消费激励方案及其源代码