内容正文:
第5章 MySQL表结构管理
主要内容
5.1 表的概念
5.2 MySQL的数据类型
5.3 创建表
5.4 定义约束
5.5 使用Workbench创建表
5.6 查看表
5.7 修改表
5.8 删除表
5.9 本章小结
5.1 表的概念
表(Table)是关系数据库中最重要的数据库对象,用来存储数据库中的数据。一个数据库包含一个或多个表,表由行(Row)和列(Column)组成。
表中的一行称为一个记录(Record),每个表包含若干行数据。列又称为字段(Field),由数据类型、长度、是否允许空值、默认值等组成,每个列表示记录的一个属性。
一个完整的表包含表结构和表数据两部分内容,表的结构主要包括表的列名、数据类型、长度、是否允许空值、默认值以及约束等,表数据就是表中的记录。例如,“教务管理系统”数据库中的学生表的结构和部分数据如表5.1和表5.2所示。
5.1 表的概念
表5.1 学生(student)表结构
列名 数据类型 长度 允许空值 默认值 约束 说明
sno char 11 否 主键 学生编号
sname varchar 10 否 学生姓名
ssex char 1 否 男 只能取'男'或'女' 性别
sbirthday date 否 出生日期
snation varchar 10 否 民族
mno char 4 是 外键,参照major表的mno列 专业编号
5.1 表的概念
表5.2 学生(student)表数据
sno sname ssex sbirthday snation mno
20190101001 刘丽 女 2001-3-2 汉族 0101
20190101002 张林 男 2000-9-12 汉族 0101
20190102001 李宏 男 2001-8-29 回族 0102
20200102001 孙明 男 2001-10-18 汉族 0102
20200102002 赵均 男 2000-12-19 汉族 0102
20200101001 张莉 女 2001-6-20 汉族 0101
20210201001 牛伟 男 2003-9-18 回族 0201
5.2 MySQL的数据类型
定义表时需要对表中的列进行属性设置,包括列的名称、数据类型、长度、默认值等,其中最重要的属性就是数据类型。数据类型是指存储在数据库中的数据的类型,决定了数据的存储格式和取值范围。
MySQL中的数据类型主要包括数值类型、字符串类型、日期和时间类型、空间类型和JSON类型。本书主要介绍数值类型、字符串类型、日期和时间类型。
5.2 MySQL的数据类型
5.2.1 数值类型
整数类型
整数类型包括TINYINT、INTEGER(或INT)、SMALLINT、MEDIUMINT和BIGINT。
数据类型 存储字节数 无符号数取值范围 有符号数取值范围
TINYINT 1 0~255 -128~127
SMALLINT 2 0~65535 -32768~32767
MEDIUMINT 3 0~16777215 -8388608~8388607
INTEGER(或INT) 4 0~4294967295 -2147483648~2147483647
BIGINT 8 0~264-1 -263~263-1
5.2 MySQL的数据类型
5.2.1 数值类型
定点数类型
定点数类型包括DECIMAL和NUMERIC,用于存储精确的数值数据。在MySQL中,NUMERIC被实现为DECIMAL。
定点数类型的定义语法为DECIMAL(M,D)或NUMERIC(M,D),其中M是最大位数(精度),范围是1到65,D是小数点后的位数(小数位数),它的范围是0 到30,并且不能大于M。如果D省略,则默认为0,如果 M省略,则默认为10。
例如,定义salary列的数据类型为DECIMAL(5,2),则该列能够存储具有五位数字和两位小数的任何值,因此salary 列的取值范围从-999.99到999.99。
5.2 MySQL的数据类型
5.2.1 数值类型
浮点数类型
浮点数类型包括单精度FLOAT类型和双精度DOUBLE类型,代表近似的数据值。MySQL对单精度值使用四个字节存储,对双精度值使用八个字节存储。
对于FLOAT,MySQL支持在关键字FLOAT之后指定可选的精度,但是FLOAT(p)中的精度值仅用于确定存储大小,0到23之间的精度将产生一个4字节的单精度浮点列。从24到53的精度将产生一个8字节的双精度浮点列。
由于浮点值是近似值,而不是存储为精确值,因此在比较中尝试将其视为精确值可能会导致问题。
5.2 MySQL的数据类型
5.2.1