1、存储引擎
1.1、什么是存储引擎
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。MySQL的核心就是存储引擎。
1.2、MySQL支持的存储引擎
MySQL5.7支持的存储引擎有InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE等。可以使用SHOW ENGINES
语句查看系统所支持的引擎类型。
InnoDB是系统的默认引擎,支持可靠的事务处理。使用语句SET default_storage_engine=<存储引擎名>
可以修改数据库临时的默认存储引擎。
2、数据类型
数据类型(data_type)是指系统中所允许的数据的类型。数据库中的每个列都应该有适当的数据类型,用于限制或允许该列中存储的数据。
2.1、整数类型
类型名 |
说明 |
TINYINT |
很小的整数 |
SMALLINT |
小的整数 |
MEDIUMINT |
中等大小的整数 |
INT(INTEGER) |
普通大小的整数 |
BIGINT |
大整数 |
2.2、浮点数类型和定点数类型
类型名 |
说明 |
FLOAT(M,N) |
单精度浮点数 |
DOUBLE(M,N) |
双精度浮点数 |
DECIMAL(M,D) |
压缩的浮点数 |
DEC |
压缩的浮点数 |
浮点数类型和定点类型都可以用(M,N)来表示,其中M称为精度,表示总共的位数;N称为标度,表示小数的位数。不论是定点还是浮点数,如果用户指定的精度超出精度范围,则会四舍五入进行处理。FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度(由计算机硬度和操作系统决定),DECIMAL如果不指定精度,默认为(10,0)。浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的范围,缺点是会引起精度问题。 |
|
2.3、日期和时间类型
类型名 |
日期格式 |
取值范围 |
YEAR |
YYYY |
1901~2155 |
TIME |
HH:MM:SS |
-838:59:59~838:59:59 |
DATE |
YYYY-MM-DD |
1000-01-01~9999-12-3 |
DATETIME |
YYYY-MM-DD HH:MM:SS |
1000-01-01 00:00:00~9999-12-31 23:59:59 |
TIMESTAMP |
YYYY-MM-DD HH:MM:SS |
1980-01-01 00:00:01 UTC~2040-01-19 03:14:07 UTC |
2.4、字符串类型
类型名 |
说明 |
CHAR(M) |
固定长度非二进制字符串 |
VARCHAR(M) |
变长非二进制字符串 |
TINYTEXT |
非常小的非二进制字符串 |
TEXT |
小的非二进制字符串 |
MEDIUMTEXT |
中等大小的非二进制字符串 |
LONGTEXT |
大的非二进制字符串 |
ENUM |
枚举类型,只能有一个枚举字符串值 |
SET |
一个设置,字符串对象可以有0个或者多个SET |
2.5、二进制类型
类型名 |
说明 |
BIT(M) |
位字段类型 |
BINARY(M) |
固定长度二进制字符串 |
VARBINARY(M) |
可变长度二进制字符串 |
TINYBLOB(M) |
非常小的BLOB |
BLOB(M) |
小的BLOB |
MEDIUMBLOB(M) |
中等大小的BLOB |
LONGBLOB(M) |
非常大的BLOB |