数据类型
MySQL中常用的数据类型包括四种:数值类型、字符串类型、二进制类型和日期时间类型。二进制类型主要用于存储图片、音频、视频等二进制内容,但在实际使用中不会直接在数据库中存储二进制内容。
字符串类型
MySQL字符串分为char、varchar和text三种类型,每一种类型都有长度限制,若写入数据超过长度则无法写入。
- char:定长字符串,默认长度为1,最大长度255。当写入字符数小于指定长度时,多余部分会使用空格填充,所以适合存储很短或长度相近的字符串,避免空间浪费。
- varchar:变长字符串,varchar会根据字符串实际长度占用存储空间。varchar是字符串类型中使用最为广泛的数据类型。
- text:文本类型,存储小于65535个字符的文本内容。通常用于存储新闻、博客、笔记等文本内容。
数值类型
数值类型分为整型数值与浮点型数值两类。整型数值可使用关键词unsigned修饰(例如:int unsigned)表示此字段只能存储非负整数,称为无符号整数。
1、整数类型:
- int:4字节整数。表示范围为−231 ~ 231−1,无符号整数表示范围为0 ~ 232−1。
- tinyint:1字节整数。表示范围为−128 ~ 127,无符号整数表示范围为0 ~ 255。
- smallint:2字节整数。表示范围为−32768 ~ 32767,无符号整数表示范围为0 ~ 65535。
- mediumint:3字节整数。表示范围为−223 ~ 223−1,无符号整数表示范围为0 ~ 224−1。
- bigint:8字节整数。表示范围为−263 ~ 263−1,无符号整数表示范围为0 ~ 264−1。
2、浮点数类型:
- float:4字节单精度浮点数。定义float类型数据时通常会指定数字最大位数及小数点后的位数。
- double:8字节双精度浮点数。定义double类型数据时通常会指定数字最大位数及小数点后的位数。
- decimal:用于存储精确的小数值,避免浮点数的精度损失问题。decimal类型数据同样需要指定数字最大位数及小数点后的位数。
日期时间类型
日期时间类型分为date、time、datetime、timestamp和year五种类型,可以表示年份、日期、时间和日期时间。
- year:存储四位数字的年份。表示的年份范围为1901 ~ 2155。
- date:3字节日期。表示的日期范围为1000−01−01 ~ 9999−12−31。
- time:3字节时间。表示的时间范围为−838:59:59 ~ 838:59:59。
- datetime:8字节日期时间。表示的范围为1000−01−01 00:00:00 ~ 9999−12−31 23:59:59。
- timestamp:4字节时间戳,表示的范围为1970−01−01 00:00:01 ~ 2038−01−19 03:14:07。
枚举类型
当需要某个字段只接受预定义的值时,可以使用枚举enum类型:enum(选项1,选项2,...),例如性别字段可使用枚举类型enum('男','女'),只接受'男'和'女'两个值。
使用示例
1、数据表的字段类型通常在创建表时定义。

2、对已存在的表可使用alter语句的modify指令修改字段类型。
