MySQL13--数据类型
数据类型
数据类型基础
数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。MySQL的数据类型可以分为整型、浮点型、定点数、字符型、日期时间型;
整型
TINYINT
TINYINT的表示方法如下:
TINYINT [(M)] [UNSIGNED] [ZEROFILL],占1个字节;
有符号范围:-128 到127(- 27 到27 - 1);无符号范围:0到255(0 到28 - 1);
M 表示最大显示宽度。当与扩展属性 ZEROFILL 一起使用才有意义,此时左边自动补零;
TINYINT(2) UNSIGNED 和TINYINT UNSIGNED的存储范围都是0~255;并且数字3都用3来表示。如果将TINYINT(2)同时设置扩展属性ZEROFILL时,数字3则用03表示。
CREATE TABLE testdb.t1(
c1 TINYINT UNSIGNED,
c2 TINYINT(2) UNSIGNED,
c3 TINYINT(2) UNSIGNED ZEROFILL
);
INSERT testdb.t1 VALUES(5,5,5);
INSERT testdb.t1 VALUES(23,23,23);
INSERT testdb.t1 VALUES(109,109,109);
SELECT * FROM testdb.t1;

SMALLINT
SMALLINT的表示方法如下:
SMALLINT [(M)] [UNSIGNED] [ZEROFILL],占2个字节;
有符号范围:-32768 到32767(- 215 到215 - 1);
无符号范围:0到65535(0 到216 - 1);
M 表示最大显示宽度。当与扩展属性 ZEROFILL 一起使用才有意义,此时左边自动补零;
MEDIUMINT
MEDIUMINT的表示方法如下:
MEDIUMINT [(M)] [UNSIGNED] [ZEROFILL],占3个字节;
有符号范围:-8388608 到8388607 (- 223 到223 - 1 );
无符号范围:0到16777215 (0 到224 – 1) ;
INT或INTEGER
INT/INTEGER的表示方法如下:
INT/INTEGER [(M)] [UNSIGNED] [ZEROFILL] ,占4个字节;
有符号范围:-2147683648 到2147683647 (-231到231- 1);
无符号范围:0到4294967295 (0到232 – 1);
BIGINT
BITINT的表示方法如下:
BIGINT [(M)] [UNSIGNED] [ZEROFILL],占8个字节;
有符号范围:-9223372036854775808 到9223373036854775807(- 263到263-1);
无符号范围:0到18446744073709551615(0到264 – 1);
BOOLEAN
BOOLEAN的表示方法如下:
BOOL或BOOLEAN;
BOOLEAN是TINYINT(1)的别名,其中0被认为是false;非0的值都被认为是true;
CREATE TABLE testdb.t2(
c1 BOOLEAN
);
INSERT testdb.t2 VALUES(1);
INSERT testdb.t2 VALUES(-27);
INSERT testdb.t2 VALUES(18);
INSERT testdb.t2 VALUES(0);
SELECT * FROM testdb.t2;

浮点型
FLOAT
FLOAT称为单精度浮点(single-precISiON),其表示方法如下:
FLOAT [(M,D)] [UNSIGNED] [ZEROFILL]
M表示数字的位数,D表示小数点后的数字位数,如果省略M和D,其精度取决于硬件系统;
FLOAT最多可以精确到小数点后的7位数字;
FLOAT的存储范围为-3.402823466E+38 到 -1.175494351E-38, 0, 及 1.175494351E-38 到3.402823466E+38(理论的限制,基于IEEE标准。实际的范围可能会略小取决于硬件或操作系统);
精度为024时,占4个字节;精度为2553时,占8个字节;
DOUBLE
DOUBLE称为双精度浮点(double-precISiON),其表示方法如下:
DOUBLE [(M,D)] [UNSIGNED] [ZEROFILL]
M表示数字的位数,D表示小数点后的数字位数;如果省略M和D,其精度取决于硬件系统;
DOUBLE最多可以精确到小数点后的15位数字;
DOUBLE的存储范围为-1.7976931348623157E+308 到 -2.2250738585072014E-308, 0, 和2.2250738585072014E-308 到 1.7976931348623157E+308(理论的限制,基于IEEE标准。实际的范围可能会略小取决于硬件或操作系统);
DOUBLE类型占8个字节;
定点数
DECIMAL
DECIMAL的表示方法如下:
DECIMAL [(M,D)] [UNSIGNED] [ZEROFILL]
M表示数字的位数,D表示小数点后的数字位数;
M的最大值为65,D的最大值为30;
省略M,则M的默认值为10;省略D,则默认值为0;
字符型
CHAR
定长字符串类型CHAR,其表示方法如下:
CHAR [(M)] [CHARACTER SET CHARset_name]
固定长度的字符串,其存储时右侧总是以空格填充;
M代表字符数的最大长度。M的范围是0到255;如果省略M,则默认长度为1;
VARCHAR
变长字符串VARCHAR,其表示方法如下:
VARCHAR (M) [CHARACTER SET CHARset_name]
M表示字符数的最大长度,M取值范围为0到65535,且65535个字符是所有列长度之和;
VARCHAR的有效性长度受到字符集的影响;
| Value | CHAR(4) | StORage Required | VARCHAR(4) | StORage Required |
|---|---|---|---|---|
| '' | ' ' | 4 BYtes | '' | 1 BYte |
| 'ab' | 'ab ' | 4 BYtes | 'ab' | 3 BYtes |
| 'abcd' | 'abcd' | 4 BYtes | 'abcd' | 5 BYtes |
| 'abcdefgh' | 'abcd' | 4 BYtes | 'abcd' | 5 BYtes |
TINYTEXT
TINYTEXT的表示方法如下:
TINYTEXT [CHARACTER SET CHARset_name]
文本列最大长度255(28 - 1)字符;
TEXT
TEXT的表示方法如下:
TEXT [(M)] [CHARACTER SET CHARset_name]
文本列最大长度为65535(216 - 1)字符;
MEDIUMTEXT
MEDIUMTEXT的表示方法如下:
MEDIUMTEXT [CHARACTER SET CHARset_name]
文本列最大长度为16777215(224 - 1)字符;
LONGTEXT
LONGTEXT的表示方法如下:
LONGTEXT [CHARACTER SET CHARset_name]
文本列最大长度4294967295或4GB(232 - 1)字符;
ENUM
枚举类型ENUM,其表示方法如下:
ENUM('value1','value2',...) [CHARACTER SET CHARset_name]
枚举只能有一个值,枚举列最多可以有65535个不同的元素 (实际极限小于3000);
枚举值在内部表示为整数;
日期时间型
YEAR
YEAR[(2|4)],用以存储2位或4位的年份,默认为4位年份,占1字节;
4位数字格式的范围为1901年到2155年;
1/2位数的范围为199,MySQL将把169的数字转换为20012069的年份;7099的数字转换1970~1999的年份;
DATE
日期类型DATE的表示方法如下:
DATE
DATE支持的范围为1000-01-01 ~ 9999-12-31;
DATE的格式为YYYY-MM-DD;
TIME
时间类型TIME的表示方法如下:
TIME
时间类型,支持的范围为-838:59:59 ~ 838:59:59;
MySQL显示TIME的格式为 HH:MM:SS;
DATETIME
日期时间类型DATETIME的表示方法如下:
DATETIME
DATETIME支持的范围为 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 ;
DATETIME的格式为 YYYY-MM-DD HH:MM:SS;
TIMESTAMP
时间戳类型TIMESTAMP的表示方法如下:
TIMESTAMP
TIMESTAMP被存储为1970-01-01以来的秒数;
TIMESTAMP范围是1970-01-01 00:00:01UTC 到 2038-01-19 03:14:07 UTC;
本文来自博客园,作者:暄总-tester,转载请注明原文链接:https://www.cnblogs.com/sean-test/p/15450622.html

浙公网安备 33010602011771号