_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h':no such file or directory数据库笔试题及答案Mysql Where 条件使用列别名Every derived table must have its own aliasMySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码)utf8mb4 字符集(4字节 UTF-8 Unicode 编码)Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE)right syntax to use near 'USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8' at line 6mysql中delete的表别名使用方法Windows7下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.batMySQL与PostgreSQL比较 哪个数据库更好java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xB3' for column 'Content' at row 1service mysqld start MySQL Daemon failed to start.Python Version 2.7 required which was not found in the registry解决python连接mysql,UTF-8乱码问题如何从官网下载MySQL最新版本的安装包?MySQL 如何实现行转列分级输出?Bluemix云端数据库服务使用示例———PHP投票程序Bluemix云端数据库服务ClearDB MySQL使用示例———Python开发投票程序MySQL 数据库简介Windows 安装最新版 MySQLLinux 安装最新版MySQL与 MySQL 建立连接MySQL 创建子账号MySQL 多实例配置MySQL 创建数据库MySQL 删除数据库MySQL 选中数据库MySQL 的数据类型1MySQL 的数据类型2MySQL 设计数据表MySQL 数据表设计规范ALTER 命令修改表MySQL 删除数据表INSERT 插入数据DELETE 删除数据SELECT 查询数据UPDATE 更新数据LIKE 模糊查询WHERE 条件查询UNION 联合查询ORDER BY 排序JOIN 表连接DISTINCT 去重GROUP BY分组聚合函数 AVG、COUNT、SUM聚合函数 MIN、MAX条件判断函数MySQL 的系统函数MySQL 中使用正则表达式MySQL 存储引擎概述

MySQL 设计数据表

MySQL 设计数据表

前面小节介绍了如何新建数据库和选择数据库,还介绍了 MySQL 的存储数据类型,本小节学习如何设计学生课程相关数据表,其中包括学生信息 student,教师信息表 teacher,学科表 course,学生选课表 student_course,这一小节的主要目的是为了学习如何新建数据表,合理选择字段类型。

一个数据表主要包含信息有 : 表名主键字段数据类型索引,本节主要介绍表的命名规范字段命名字段的数据类型选择

本节内容新建的表都是新建在 “item_name” 数据库中的,新建 “item_name” 数据库命令如下 :

CREATE DATABASE item_name;

新建数据库之后选择数据库:

USE item_name;

你也可以自行新建一个数据库,自己命名就好。

1. 数据表命名规范

数据表命名是小写字母和下划线 _ 组成,用来分割不同单词之间的含义,例如 “student_course” 表示学生选课关联表,实际命名需要根据具体功能而定,好的命名规范在实际工作中也是很重要的。

2. 新建学生信息表 student

2.1 确定字段

字段名称含义
id自增主键
name学生姓名
age学生年龄
id_number身份证号

学生信息表包含的字段可以有很多,本小节选择学生姓名、年龄、身份证号介绍字段的选择,字段的确定是根据实际业务需求来新增或减少的,例如想要存储学生籍贯信息可新增 “address” 字段。

2.2 选择字段的数据类型

字段名称数据类型
id无符号整型(UNSIGNED INT)
nameVARCHAR(50)
ageUNSIGNED INT
id_numberVARCHAR(18)

Tips:实际业务中一般要将年龄字段设置为可变,通常会使用时间戳(距离1970-01-01 00:00:00的秒数)来表示年龄相关的信息,在这里为了方便演示直接使用了 UNSIGNED INT。

一般来说姓名字段的长度为 2-4 个字符,但是考虑到少数民族的学生姓名比较长,所以将姓名字段的长度设置为 50,适当的给的大一点。身份证号同样使用字符串类型来存储,因为有的身份证号中有字母。身份证的长度统一都是 18 位不变,直接在这里写死就好。

2.3 新建数据表

命令 : 
CREATE TABLE `student`  (
  `id` int() UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar() NOT NULL DEFAULT '无名',
  `age` int() UNSIGNED NOT NULL DEFAULT ,
  `id_number` varchar() NOT NULL DEFAULT '',
  PRIMARY KEY (`id`));

Tips:其中 “student” 为表名称,“id”、“name”、“age”、“id_number” 为字段名称,跟在字段名称后面的是字段的数据类型,“UNSIGNED” 表示无符号,“AUTO_INCREMENT” 表示自增,PRIMARY KEY (`id`)表示设置  “id”  为业务主键,,NOT NULL DEFAULT ‘无名’ 表示默认不为空,且默认值为 “无名” 。

执行结果如下图:

图片描述


查看当前数据库中所有的数据表:

命令:show tables

可以看到 item_name 数据库中已经有了 student 这张数据表。

3.新建教师信息表 teacher

3.1 确定字段

字段名称含义
id自增主键
name教师姓名
age教师年龄
id_number身份证号

同样教师信息的字段可选择也很多,这里选择教师姓名、教师年龄、教师身份证号,可自行选择感兴趣的字段,并参照新建学生表的步骤选择字段,如教师邮箱、教师博客地址。

3.2 选择字段的数据类型

字段名称数据类型
id无符号整型(UNSIGNED INT)
nameVARCHAR(50)
ageUNSIGNED INT
id_numberVARCHAR(18)

3.3 新建数据表

命令 : 
CREATE TABLE `teacher`  (
  `id` int() UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar() NOT NULL DEFAULT '教师名',
  `age` int() UNSIGNED NOT NULL DEFAULT ,
  `id_number` varchar() NOT NULL DEFAULT '',
  PRIMARY KEY (`id`));

Tips: 其中 “teacher” 为表名称,“id”、“name”、“age”、“id_number” 为字段名称,跟在字段名称后面的是字段的数据类型,“UNSIGNED” 表示无符号,“AUTO_INCREMENT” 表示自增,“PRIMARY KEY (`id`)” 表示设置 “id” 为业务主键,NOT NULL DEFAULT 教师名’ 表示默认不为空,且默认值为 “教师名” 。

执行结果如下图:

图片描述

Tips: 这里展示了使用 Navicat 来执行 sql 语句,选择数据库只需点击相应的数据库名称,然后选择新建查询即可。

4.新建课程表 course

4.1 确定字段

字段名称含义
id自增主键
course_name课程名称
teacher_id教师id

4.2 选择字段的数据类型

字段名称数据类型
id无符号整型(UNSIGNED INT)
course_nameVARCHAR(50)
teacher_id无符号整型(UNSIGNED INT)

4.3 新建数据表

命令 : 
CREATE TABLE `course`  (
  `id` int() UNSIGNED NOT NULL AUTO_INCREMENT,
  `course_name` varchar() NOT NULL DEFAULT '',
  `teacher_id` int() UNSIGNED NOT NULL DEFAULT ,
  PRIMARY KEY (`id`));

执行结果如下图:

图片描述

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() UNSIGNED NOT NULL AUTO_INCREMENT,
  `student_id` int() UNSIGNED NOT NULL DEFAULT ,
  `course_id` int() UNSIGNED NOT NULL DEFAULT ,
  PRIMARY KEY (`id`));

执行结果如下图:

图片描述

6.小结

本节介绍了如何新建学生选课相关数据表,熟悉如何合理选择字段数据类型,需要注意的是每一张表都必须有一个主键,一般建议选定为无符号整型 id 作为主键,并且 id 一般作为主键一般设置为自增的(特殊情况可使用其他非自增 id 作为主键),实际业务中数据库优化第一步即为合理的设计数据表,其中选择合适的数据类型显得尤为重要。