MySQL常用数据类型
小提示
MySQL系统服务开机自动运行
右键点击我的电脑–》管理–》服务和应用程序–》服务–》MySQL57
双击打开
启动类型选择 自动
点击应用
服务状态选择 启动
点击确定
小提示
utf8与utf8mb4区别
MySQL在5.5.3版本以后增加了utf8mb4编码,其中mb4是most bytes 4的含义,用来兼容四个字节的Unicode(万国码)。utf8mb4是utf8的一个扩展。
随着互联网的发展,产生了许多新类型的字符,例如emoji这种类型的符号,也就是我们通常在聊天时发的小黄脸表情,这种字符的出现不在基本多平面的Unicode字符之中,导致无法在MySQL中使用utf8存储,MySQL于是对utf8字符进行了扩展,增加了utf8mb4这个编码。
所以,设计数据库时如果想要允许用户使用特殊符号,最好使用utf8mb4编码来存储,使得数据库有更好的兼容性,但是这样设计会导致耗费更多的存储空间。
MySQL数据类型
MySQL数据类型
https://www.runoob.com/mysql/mysql-data-types.html
数据类型 | 指定值和范围 |
---|---|
char | String(0~255) |
varchar | String(0~255) |
tinytext | String(0~255) |
text | String(0~65536) |
blob | String(0~65536) |
mediumtext | String(0~16777215) |
mediumblob | String(0~16777215) |
longblob | String(0~4294967295) |
longtext | String(0~4294967295) |
tinyint | Integer(-128~127) |
smallint | Integer(-32768~32767) |
mediumint | Integer(-8388608~8388607) |
int | Integer(-214847668~214847667) |
bigint | Integer(-9223372036854775808~9223372036854775807) |
float | decimal(精确到23位小数) |
double | decimal(24~54位小数) |
decimal | 将double 转储为字符串形式 |
date | YYYY-MM-DD |
datetime | YYYY-MM-DD HH:MM:SS |
timestamp | YYYYMMDDHHMMSS |
time | HH:MM:SS |
enum | 选项值之一 |
set | 选项值子集 |
boolean | tinyint(1) |
MySQL数值数据类型
在MySQL中,您可以找到所有SQL标准数字类型,包括精确数字数据类型和近似数字数据类型,包括整数,定点和浮点数。 此外,MySQL还具有用于存储位值的BIT数据类型。数字类型可以是有符号或无符号,但BIT
类型除外。
下表显示了MySQL中数字类型的总结:
数字类型 | 描述 |
---|---|
TINYINT | 一个很小的整数 |
SMALLINT | 一个小的整数 |
MEDIUMINT | 一个中等大小的整数 |
INT | 一个标准整数 |
BIGINT | 一个大整数 |
DECIMAL | 定点数 |
FLOAT | 单精度浮点数 |
DOUBLE | 双精度浮点数 |
BIT | 一个字节字段 |
MySQL布尔数据类型
MySQL没有内置的 BOOLEAN 或 BOOL 数据类型。所以要表示布尔值,MySQL使用最小的整数类型,也就是TINYINT(1)
。 换句话说,BOOLEAN
和BOOL
是TINYINT(1)
的同义词。
MySQL字符串数据类型
在MySQL中,字符串可以容纳从纯文本到二进制数据(如图像或文件)的任何内容。可以通过使用LIKE运算符,正则表达式和全文搜索,根据模式匹配来比较和搜索字符串。
下表显示了MySQL中的字符串数据类型:
字符串类型 | 描述 |
---|---|
char | 固定长度的非二进制(字符)字符串 |
varchar | 可变长度的非二进制字符串 |
BINARY | 一个固定长度的二进制字符串 |
VARBINARY | 一个可变长度的二进制字符串 |
TINYBLOB | 一个非常小的BLOB(二进制大对象) |
BLOB | 一个小的BLOB(二进制大对象) |
MEDIUMBLOB | 一个中等大小的BLOB(二进制大对象) |
LONGBLOB | 一个大的BLOB(二进制大对象) |
TINYTEXT | 一个非常小的非二进制字符串 |
TEXT | 一个小的非二进制字符串 |
MEDIUMTEXT | 一个中等大小的非二进制字符串 |
LONGTEXT | 一个很大的非二进制字符串 |
ENUM | 枚举; 每个列值可以被分配一个枚举成员 |
SET | 集合; 每个列值可以分配零个或多个SET 成员 |
MySQL日期和时间数据类型
MySQL提供日期和时间的类型以及日期和时间的组合。 此外,MySQL还支持时间戳数据类型,用于跟踪表的一行中的更改。如果只想存储没有日期和月份的年份数据,则可以使用YEAR
数据类型。
下表说明了MySQL日期和时间数据类型:
字符串类型 | 描述 |
---|---|
DATE | YYYY-MM-DD 格式的日期值 |
TIME | hh:mm:ss 格式的时间值 |
DATETIME | YYYY-MM-DD hh:mm:ss 格式的日期和时间值 |
TIMESTAMP | YYYY-MM-DD hh:mm:ss 格式的时间戳记值 |
YEAR | YYYY 或YY 格式的年值 |
MySQL空间数据类型
MySQL支持许多包含各种几何和地理值的空间数据类型,如下表所示:
字符串类型 | 描述 |
---|---|
GEOMETRY | 任何类型的空间值 |
POINT | 一个点(一对X-Y坐标) |
LINESTRING | 曲线(一个或多个POINT 值) |
POLYGON | 多边形 |
GEOMETRYCOLLECTION | GEOMETRY 值的集合 |
MULTILINESTRING | LINESTRING 值的集合 |
MULTIPOINT | POINT 值的集合 |
MULTIPOLYGON | POLYGON 值的集合 |
JSON数据类型
MySQL 5.7.8
版本支持原生JSON数据类型,可以更有效地存储和管理JSON文档。 本机JSON数据类型提供JSON文档的自动验证和最佳存储格式。
常用基本数据类型
字符串类型 | 描述 |
---|---|
INT | 整数值 |
DECIMAL | 小数值,精度高,存储金额 |
DATE | YYYY-MM-DD |
DATETIME | YYYY-MM-DD HH:MM:SS |
TIMESTAMP | YYYYMMDD HHMMSS CURRENT_TIMESTAMP |
VARCHAR | 字符串 |
TEXT | 文本数据 |
主键
主键又称主关键字,主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录
自增字段
每次插入新记录时,自动地创建主键字段的值。可以在表中创建一个 auto-increment 字段。MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。默认地AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。