本文共 2812 字,大约阅读时间需要 9 分钟。
MySQL 中的数据类型是数据库设计中至关重要的一部分。不同的数据类型在存储数据时有不同的特点和限制,选择合适的数据类型可以显著地提高数据库的效率和稳定性。本文将从多个维度全面解析 MySQL 中常见的数据类型。
在创建数据库或表时,可以通过指定字符集来影响数据的存储和处理。以下是几种常见的字符集设置方式:
创建数据库时指明字符集
CREATE DATABASE IF NOT EXISTS dbtest12 CHARACTER SET 'utf8';SHOW CREATE DATABASE dbtest12;
创建表时指明表的字符集
CREATE TABLE temp(id INT) CHARACTER SET 'utf8';SHOW CREATE TABLE temp;
创建表时指定字段的字符集
CREATE TABLE temp1(id INT, `name` VARCHAR(15) CHARACTER SET 'gbk');SHOW CREATE TABLE temp1;
MySQL 中的整数类型分为五种:TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和BIGINT。这些类型根据存储空间和范围的不同,适用于不同的场景。
M
INT(5)
:当数据宽度小于5位时,在数字前面需要用字符填满宽度。该属性需要配合ZEROFILL
使用。UNSIGNED
UNSIGNED
属性。无符号整数类型的最小取值为0。ZEROFILL
UNSIGNED
属性。浮点类型用于存储带有小数的数值,MySQL支持单精度和双精度浮点数类型。DECIMAL
类型则用于高精度小数的存储。
FLOAT
,默认显示宽度为float(6)
。DOUBLE
,默认显示宽度为double(15)
。DECIMAL(M,D)
类型用于存储高精度小数,M为精度,D为标度。其最大取值范围与DOUBLE
类型一致,但有效数据范围由M和D决定。
BIT
类型用于存储二进制值,类似于010110。默认显示宽度为1位,最大支持64位。
CREATE TABLE test_bit1(f1 BIT, f2 BIT(5), f3 BIT(64));INSERT INTO test_bit1(f1) VALUES(1);INSERT INTO test_bit1(f2) VALUES(23);
BIN()
或HEX()
函数可以将二进制字段转换为十进制或十六进制表示。MySQL 提供多种日期和时间类型,根据存储空间和时间范围的不同,适用于不同的场景。
YEAR
)YEAR(4)
表示4位年份,YEAR(2)
表示两位年份(如99表示1999,00表示2000)。DATE
)DATE('2020-10-01')
。TIME
)TIME('12:35:29')
。YYYY-MM-DD HH:MM:SS
。文本字符串类型主要包括CHAR
、VARCHAR
、TEXT
等,用于存储短文本和长文本。
ENUM
)ENUM
类型用于存储可选值,定义时需指定成员的取值范围。
CREATE TABLE test_enum( season ENUM('春', '夏', '秋', '冬', 'unknow'));INSERT INTO test_enum VALUES('春'), ('秋');
SET
)SET
类型用于存储字符集合,支持一次选择多个成员。
CREATE TABLE test_set(s SET ('A', 'B', 'C'));INSERT INTO test_set VALUES('A'), ('A,B');
TINYBLOB
、BLOB
、MEDIUMBLOB
和LONGBLOB
。JSON
类型用于存储和验证结构化数据。
CREATE TABLE test_json(js JSON);INSERT INTO test_json VALUES('{"name":"songhk", "age":18, "address":{"province":"beijing","city":"beijing"}}');
SELECT js -> '$.name' AS NAME, js -> '$.age' AS age , js -> '$.address.province' AS province, js -> '$.address.city' AS city FROM test_json;
MySQL 支持空间类型用于存储地理数据,包括GEOMETRY
、POINT
、LINESTRING
等。
CREATE TABLE test_space( geom GEOMETRY, point POINT, polygon POLYGON);
通过以上内容,可以更好地理解和选择合适的 MySQL 数据类型,提升数据库的性能和稳定性。
转载地址:http://qjdfk.baihongyu.com/