MySQL 支持所有标准的 SQL 数字数据类型,这些包括精确值数字数据类型(INTEGER、 SMALLINT、 DECIMAL和 NUMERIC),以及近似值数字数据类型(FLOAT、 REAL和 DOUBLE PRECISION)。
比特值数据类型,取值范围从 1 到 64;默认值为:1。
create table tb_name(col_name bit(1)); // BIT 数据类型示例
整数数据类型,SQL 标准有:INTEGER、SMALLINT,MySQL8 有:TINYINT、MEDIUMINT 和 BIGINT 等扩展类型。
DECIMAL 数据类型 和 NUMERIC 数据类型都用于存储精确的数字值。最大位数为 65,当精度很重要时使用这些类型,例如货币。在 MySQL 中,NUMERIC 和 DECIMAL 是一样的,因此 DECIMAL 同样适用于 NUMERIC。
try8 decimal(5,2) //DECIMAL 示例,存储范围:-999.99 到 999.99
FLOAT 数据类型 和 DOUBLE 数据类型都用于存储近似数字值。MySQL 对单精度值使用四个字节,对双精度值使用八个字节。从 0 到 23 的精度产生一个 4 字节的单精度列。从 24 到 53 的精度会产生一个 8 字节的双精度列。
float(5,2) //示例取值范围:-999.99 至 999.99,最大:(255,30) double(5,2) //示例取值范围:-999.99 至 999.99,最大:(255,30)
表示日期和时间的数据类型有:DATE、TIME、DATETIME、TIMESTAMP 和 YEAR。对于日期和时间数据类型,零值很特殊,您可以使用如下值存储它们,或者使用更容易编写的 0 值来执行操作。
DATE 数据类型表示日期但是没有时间部分的值,它允许使用字符串或数字,支持的格式为: 'YYYY-MM-DD',取值范围:'1000-01-01' 至 '9999-12-31' 。
create table tb_name (col_name date); //DATE 数据类型示例
DATETIME 数据类型表示日期和时间组合,格式为:'YYYY-MM-DD hh:mm:ss[.fraction] ,fraction 为 0 - 6 的可选值,默认 0, DATETIME 取值范围: '1000-01-01 00:00:00.000000' 至 '9999-12-31 23:59:59.999999' 。
TIMESTAMP 数据类型表示日期和时间组合,取值范围:'1970-01-01 00:00:01.000000' UTC 至 '2038-01-19 03:14:07.999999' UTC 。该时间戳与 DATETIME 不同,支持存储时区。
TIME 数据类型表示一个时间。取值范围:'-838:59:59.000000' 至 '838:59:59.000000'。允许使用字符串或数字将值分配给列,格式为:'hh:mm:ss[.fraction] 。
YEAR 数据类型表示 4 位数格式的年份。格式为:YYYY。
MySQL8 字符串数据类型有:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。
CHAR 数据类型是一个固定长度的字符串,在存储时总是用空格向右填充到指定的长度,它是 CHARACTER 的简写, 取值范围为:0~255 。定义CHAR(0) 时仅占用一位并且只能取值 NULL 和 ''(空字符串)的列。
VARCHAR 数据类型表示为可变长度的字符串,取值范围: 0 到 65535。
BINARY 数据类型类似于 CHAR,但存储的是二进制字节字符串。
VARBINARY 数据类型类似于VARCHAR,但存储二进制字节字符串。
BLOB 数据类型表示二进制字符串,有四种,TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB,其长度不同。
TEXT 数据类型表示字符串,有四种,TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT,其长度不同。
ENUM 数据类型表示枚举。用于存储一个字符串对象, 值在内部表示为整数,最多可以有 65535 个不同的元素。
create table tb_name (col_name enum ('a', 'b', 'c')); //ENUM 数据类型示例 insert into tb_name (col_name) values ('a'),('b'),('c'); select col_name from tb_name where col_name = 'a';
SET 数据类型表示字符串对象,可以有零个或多个值,值在内部表示为整数,最多可以有 64 个不同的成员。
create table tb_name (col_name set('a', 'b', 'c')); //SET 数据类型示例 insert into tb_name (col_name) values ('a'); insert into tb_name (col_name) values ('a,b,c');
MySQL 具有对应于 OpenGIS 类的空间数据类型。MySQL8 空间数据类型包含单个几何值:GEOMETRY、POINT、LINESTRING、POLYGON 。
create table tb_name (col_name GEOMETRY); //GEOMETRY 数据类型示例
MySQL 支持通过长 JSON 定义数据类型,可以高效访问 JSON(JavaScript 对象表示法)文档中的数据。与直接存储 JSON 格式的字符串相比,该数据类型具有很多优势如:方便查询、验证错误、优化存储结构等。
create table tb_name (col_name json); // JSON 数据类型示例 insert into tb_name values ('{"key1": "value1", "key2": "value2", "key3": "value3"}');
MySQL8教程 - MySQL8 数据类型,主要用于介绍 MySQL 和 MySQL8 数据库,从 MySQL8 数字数据类型开始,逐步到 MySQL8 JSON数据类型等,通篇实用易懂,让 MySQL8 入门更加快速和简单。
《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。