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;

posted @ 2021-10-24 11:58  暄总-tester  阅读(145)  评论(1)    收藏  举报