设计学生课程相关数据表,其中包括学生信息 student,教师信息表 teacher,学科表 course,学生选课表 student_course,这一小节的主要目的是为了学习如何新建数据表,合理选择字段类型。
一个数据表主要包含信息有 : 表名、主键、字段、数据类型、索引,本节主要介绍表的命名规范、字段命名、字段的数据类型选择。
本节内容新建的表都是新建在 “zyg_test” 数据库中的,新建 “zyg_test” 数据库命令如下 :
CREATE DATABASE zyg_test;
新建数据库之后选择数据库:
USE zyg_test;
你也可以自行新建一个数据库,自己命名就好。
1. 数据表命名规范
数据表命名是小写字母和下划线 _ 组成,用来分割不同单词之间的含义,例如 “student_course” 表示学生选课关联表,实际命名需要根据具体功能而定,好的命名规范在实际工作中也是很重要的。
2. 新建学生信息表 student
2.1 确定字段
字段名称 | 含义 |
id | 自增主键 |
name | 学生姓名 |
age | 学生年龄 |
id_number | 身份证号 |
学生信息表包含的字段可以有很多,本小节选择学生姓名、年龄、身份证号介绍字段的选择,字段的确定是根据实际业务需求来新增或减少的,例如想要存储学生籍贯信息可新增 “address” 字段。
2.2 选择字段的数据类型
字段名称 | 数据类型 |
id | 无符号整型(UNSIGNED INT) |
name | VARCHAR(50) |
age | UNSIGNED INT |
id_number | VARCHAR(18) |
Tips:实际业务中一般要将年龄字段设置为可变,通常会使用时间戳(距离1970-01-01 00:00:00的秒数)来表示年龄相关的信息,在这里为了方便演示直接使用了 UNSIGNED INT。
一般来说姓名字段的长度为 2-4 个字符,但是考虑到少数民族的学生姓名比较长,所以将姓名字段的长度设置为 50,适当的给的大一点。身份证号同样使用字符串类型来存储,因为有的身份证号中有字母。身份证的长度统一都是 18 位不变,直接在这里写死就好。
2.3 新建数据表
CREATE TABLE `student` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`age` int(10) UNSIGNED NOT NULL DEFAULT 0,
`id_number` varchar(18) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
);
Tips:其中 “student” 为表名称,“id”、“name”、“age”、“id_number” 为字段名称,跟在字段名称后面的是字段的数据类型,“UNSIGNED” 表示无符号,“AUTO_INCREMENT” 表示自增,"PRIMARY KEY (`id`)"表示设置 “id” 为业务主键,"NOT NULL DEFAULT ‘’ " 表示默认不为空,且默认值为 “” 。
执行结果如下图:
选择数据库
![](https://i-blog.csdnimg.cn/blog_migrate/d09e79f241705641f19250dc1b040d20.png)
执行创建表SQL语句
![](https://i-blog.csdnimg.cn/blog_migrate/d0206494b41404dd6a28a11c13c68d8a.png)
查看当前数据库表
![](https://i-blog.csdnimg.cn/blog_migrate/7d1b46b21e81d9d6bbaf6870e21e67d8.png)
查看当前数据库中所有的数据表:
showtables代码块1
可以看到 item_name 数据库中已经有了 student 这张数据表。
3.新建教师信息表 teacher
3.1 确定字段
字段名称 | 含义 |
id | 自增主键 |
name | 教师姓名 |
age | 教师年龄 |
id_number | 身份证号 |
同样教师信息的字段可选择也很多,这里选择教师姓名、教师年龄、教师身份证号,可自行选择感兴趣的字段,并参照新建学生表的步骤选择字段,如教师邮箱、教师博客地址。
3.2 选择字段的数据类型
字段名称 | 数据类型 |
id | 无符号整型(UNSIGNED INT) |
name | VARCHAR(50) |
age | UNSIGNED INT |
id_number | VARCHAR(18) |
3.3 新建数据表
CREATE TABLE `teacher` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`age` int(10) UNSIGNED NOT NULL DEFAULT 0,
`id_number` varchar(18) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
);
Tips: 其中 “teacher” 为表名称,“id”、“name”、“age”、“id_number” 为字段名称,跟在字段名称后面的是字段的数据类型,“UNSIGNED” 表示无符号,“AUTO_INCREMENT” 表示自增,“PRIMARY KEY (`id`)” 表示设置 “id” 为业务主键,"NOT NULL DEFAULT ’ "表示默认不为空,且默认值为 “” 。
执行结果如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/041aec50d9d07fe54cdc90578997f5c6.png)
Tips: 这里展示了使用 Navicat 来执行 sql 语句,选择数据库只需点击相应的数据库名称,然后选择新建查询即可。
4.新建课程表 course
4.1 确定字段
字段名称 | 含义 |
id | 自增主键 |
course_name | 课程名称 |
teacher_id | 教师id |
4.2 选择字段的数据类型
字段名称 | 数据类型 |
id | 无符号整型(UNSIGNED INT) |
course_name | VARCHAR(50) |
teacher_id | 无符号整型(UNSIGNED INT) |
4.3 新建数据表
CREATE TABLE `course` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`course_name` varchar(50) NOT NULL DEFAULT '',
`teacher_id` int(10) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
);
执行结果如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/624793144d495eeb9c0fe297516c20f0.png)
5.新建学生选课关联表 student_course
5.1 确定字段
字段名称 | 含义 |
id | 自增主键 |
student_id | 学生id |
course_id | 课程id |
5.2 选择字段的数据类型
字段名称 | 数据类型 |
id | 无符号整型(UNSIGNED INT) |
student_id | 无符号整型(UNSIGNED INT) |
course_id | 无符号整型(UNSIGNED INT) |
5.3 新建数据表
CREATE TABLE `student_course` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`student_id` int(10) UNSIGNED NOT NULL DEFAULT 0,
`course_id` int(10) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
);
执行结果如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/53f6e3d30213806c27c20914be956612.png)
6.小结
本节介绍了如何新建学生选课相关数据表,熟悉如何合理选择字段数据类型,需要注意的是每一张表都必须有一个主键,一般建议选定为无符号整型 id 作为主键,并且 id 一般作为主键一般设置为自增的(特殊情况可使用其他非自增 id 作为主键),实际业务中数据库优化第一步即为合理的设计数据表,其中选择合适的数据类型显得尤为重要。