当前位置:网站首页>大学数据库创建与查询实战——数据库表设计
大学数据库创建与查询实战——数据库表设计
2022-07-23 21:41:00 【椅糖】
创建MySQL数据表需要以下信息:
- 表名
- 表字段名
- 定义每个表字段
在MySQL中,使用CREATE TABLE语句创建表,语法格式如下:
USE 数据库名 CREATE TABLE 表名 (
列名 类型(大小)
列名 类型(大小)
.......
);
【注意】主键必须包含唯一的值;主键列不能包含NULL值;每个表有且只能有一个主键
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1
PRIMARY KEY关键字用于定义列为主键,可以使用多列来定义主键,列间以逗号分隔
MySQL命令终止符为分号;
FOREIGN KEY外键(既可以定义列也可以定义表)
CHECK约束用于限制列中的值的范围(既可以定义列也可以定义表)
比如在“ instructor”表创建“salary”列时创建CHECK约束。CHECK约束规定“salary”列必须只包含大于0的整数。
| 字段名称 | 类型 | 备注 | 约束 |
| salary | numeric(8,2) | 薪资 | 底薪大于29000 |
use universityDB;
create table instructor(
salary numeric(8,2) check(salary>29000)
);
大学数据库的整体设计
一个大学里面会有很多教学楼、学生、老师,他们之间的都有着密不可分的关系,因此将大学数据库整体设计如下图所示,总共涉及到八张表:
学生表(student):包含学生学号 ID,学生姓名 name,学生所在系 dept_name,总学分 tot_cred 属性。
课程表(course):包含课程号 course_id,课程名称 title,课程所属的系名 dept_name,学分 credits 属性。
系表(department):包含系名 dept_name,建筑 building,预算 budget 属性。
教室表(classroom):包含建筑 building,房间号 room_number,容量 capacity 属性。
教学信息表(teaches):包含教室号 ID,课程号 course_id,课程信息序号 sec_id,学期 semester,年份 year 属性。
选课信息表(takes):包含学生学号 ID,课程标识 course_id,课程段标识 sec_id,学期 semester,年份 year,成绩 grade 属性。
教师信息表(instructor)。
开课信息表(section)。

图1 大学数据库模型
教师信息表(instructor)
教师信息表的具体属性及约束如下:
| 字段名称 | 类型 | 备注 | 约束 |
|---|---|---|---|
| ID | varchar(5) | 教师号 | 主键 |
| name | varchar(20) | 教师名字 | 非空 |
| dept_name | varchar(20) | 教师所在的系 | 外键 |
| salary | numeric(8,2) | 薪资 | 底薪大于 29000 |
开课信息表(section)
开课信息表的具体属性及约束如下:
| 字段名称 | 类型 | 备注 | 约束 |
|---|---|---|---|
| course_id | varchar(8) | 课程号 | 外键 |
| sec_id | varchar(8) | 课程段标识 | 无 |
| semester | varchar(6) | 学期 | 只能插入 Fall,Winter,Spring,Summer四个值。 |
| year | numeric(4,0) | 年份 | 1701 < year < 2100 |
| building | varchar(15) | 课程所在建筑 | 外键 |
| room_number | varchar(7) | 课程所在教室号 | 外键 |
| time_slot_id | varchar(4) | 时间档序号 | 无 |
section 表的主键由 course_id,sec_id,semester,year 四个属性共同组成。
编程要求
补充代码,创建教师信息表和开课信息表(其他六张表系统已为你创建完成),使用 universityDB 数据库,创建的表命名依次为 instructor 和 section。
#请在此添加创建开课信息表的SQL语句
########## Begin ##########
use universityDB;
create table instructor(
ID varchar(5) COMMENT'教师号',primary key(ID),
name varchar(20) COMMENT'教师名字'NOT NULL,
dept_name varchar(20) DEFAULT NULL COMMENT'教师所在的系',
salary numeric(8,2) COMMENT'薪资' check(salary>29000),
foreign key (dept_name) references department(dept_name)
on delete set null
);
create table section(
course_id varchar(8) COMMENT '课程号' ,
sec_id varchar(8) COMMENT'课程段标识',
semester varchar(6) COMMENT'学期' check(semester in('Fall','Winter','Spring','Summer')),
year numeric(4,0) COMMENT'年份',
building varchar(15) COMMENT '课程所在建筑' ,
room_number varchar(7) COMMENT '课程所在教室号' ,
time_slot_id varchar(4) COMMENT'时间档序号',
primary key (course_id, sec_id, semester, year),
foreign key (course_id) references course(course_id)
on delete cascade,
foreign key (building, room_number) references classroom(building, room_number)
on delete set null
);
########## End ##########边栏推荐
- LeetCode_376_摆动序列
- Cluster chat server: cluster and distributed theory
- BroadCast(广播)
- Improving performance with explicit rendering
- Openlayers instance animated GIF GIF animation
- 集群聊天服务器为什么引入负载均衡器
- Problems and abuse of protocol buffers
- Cookie 和 Session
- Problems and abuse of protocol buffers
- Mysql database index
猜你喜欢

Flink principle and development summary (detailed)

MySQL数据库索引

Typescript Basics

scala编程(中级进阶实验应用)

Modular development

SQLite database

Customer exit variable in query

High numbers | calculation of triple integral 1 | high numbers | handwritten notes

MySql的DDL和DML和DQL的基本语法

Day109.尚医通:集成Nacos、医院列表、下拉列表查询、医院上线功能、医院详情查询
随机推荐
uniapp使用canvas写环形进度条
2022-7-23 12点 程序爱生活 小时线顶背离出现,保持下跌趋势,等待反弹信号出现。
合宙ESP32C3硬件配置信息串口打印輸出
集群聊天服务器:集群与分布式理论
Scala Programming (Junior)
TreeMap
分布式能源的不确定性——风速测试(Matlab代码实现)
Unity - 3D mathematics -vector3
MySQL数据库索引
手机测试相关基础知识
scala编程(中级进阶实验应用)
Day109. Shangyitong: integrate Nacos, hospital list, drop-down list query, hospital online function, hospital details query
[attack and defense world web] difficulty four-star 12 point advanced question: flatscience
How to use cesium knockout?
Comparison of open source distributed link tracking
[complex overloaded operator]
Compare kernelshap and treeshap based on speed, complexity and other factors
05_ UE4 advanced_ Material UV scaling
& 9 nodemon automatic restart tool
BroadCast(广播)