目录
对于整数数据类型,
M表示最大显示宽度。最大显示宽度为 255。显示宽度与类型可以存储的值的范围无关对于浮点和定点数据类型,
M是可以存储的总位数
位值类型。M表示每个值的位数,从 1 到 64。如果 M省略,则默认为 1。
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个非常小的整数。有符号范围 -128为127。无符号范围是0to 255。
这些类型是 的同义词 TINYINT(1)。零值被认为是错误的。非零值被认为是真的:
示例:0表示错误,非0表示正确
- mysql> SELECT IF(0, 'true', 'false');
- +------------------------+
- | IF(0, 'true', 'false') |
- +------------------------+
- | false |
- +------------------------+
-
- mysql> SELECT IF(1, 'true', 'false');
- +------------------------+
- | IF(1, 'true', 'false') |
- +------------------------+
- | true |
- +------------------------+
-
- mysql> SELECT IF(2, 'true', 'false');
- +------------------------+
- | IF(2, 'true', 'false') |
- +------------------------+
- | true |
- +------------------------+
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小整数。有符号范围 -32768为32767。无符号范围是0to 65535。
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中等大小的整数。有符号范围 -8388608为8388607。无符号范围是0to 16777215。
INT[(M)] [UNSIGNED] [ZEROFILL]
一个正常大小的整数。有符号范围 -2147483648为 2147483647。无符号范围是 0to 4294967295。
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
这种类型是 的同义词 INT。
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
一个大整数。有符号范围 -9223372036854775808为 9223372036854775807。无符号范围是0to 18446744073709551615。

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
一个压缩的“精确”定点数。 M是总位数(精度),D是小数点后的位数(小数位数)。小数点和(对于负数) -符号不计入 M。如果 D为 0,则值没有小数点或小数部分。最大位数 ( M) 为 DECIMAL65。支持的最大小数位数 ( D) 为 30。如果D省略,则默认为 0。如果M被省略,默认值为 10。
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
一个小的(单精度)浮点数。允许的值为-3.402823466E+38 to -1.175494351E-38、 0和1.175494351E-38 to 3.402823466E+38。这些是基于 IEEE 标准的理论限制。根据您的硬件或操作系统,实际范围可能会稍小一些。
M是总位数,D是小数点后的位数。如果省略M 和D,则将值存储在硬件允许的范围内。单精度浮点数精确到大约 7 位小数。
zerofill:
填充0,影响数字的显示方式,如果一个数字的宽度小于所允许的最大宽度,这个值前面会用0填充,如果声明了zerofill,该列会自动设为unsigned
auto_increment:
自动增长,适用于整数类型,一个表中只有一个列是可以自动增长的。
- root@wangsh 21:05 mysql>create table table2(id int auto_increment not null primary key,naeme varchar(20));
- Query OK, 0 rows affected (0.01 sec)
- root@wangsh 21:08 mysql>desc table2;
- +-------+-------------+------+-----+---------+----------------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+----------------+
- | id | int(11) | NO | PRI | NULL | auto_increment |
- | name | varchar(20) | YES | | NULL | |
- +-------+-------------+------+-----+---------+----------------+
- 2 rows in set (0.00 sec)
- root@wangsh 21:08 mysql>insert into table2(name) values('cali');
- Query OK, 1 row affected (0.00 sec)
- root@wangsh 21:08 mysql>select * from table2
- -> ;
- +----+------+
- | id | name |
- +----+------+
- | 1 | cali |
- +----+------+
- 1 row in set (0.00 sec)
- root@wangsh 21:08 mysql>insert into table2(name) values('jack');
- Query OK, 1 row affected (0.01 sec)
-
- root@wangsh 21:08 mysql>select * from table2;
- +----+------+
- | id | name |
- +----+------+
- | 1 | cali |
- | 2 | jack |
- +----+------+
- 2 rows in set (0.00 sec)
- root@wangsh 21:08 mysql>insert into table2(id,name) values(9,'tom');
- Query OK, 1 row affected (0.00 sec)
- root@wangsh 21:11 mysql>select * from table2;
- +----+------+
- | id | name |
- +----+------+
- | 1 | cali |
- | 2 | jack |
- | 9 | tom |
- +----+------+
- 3 rows in set (0.00 sec)
- root@wangsh 21:12 mysql>insert into table2(name) values('rose');
- Query OK, 1 row affected (0.00 sec)
- root@wangsh 21:12 mysql>select * from table2;
- +----+------+
- | id | name |
- +----+------+
- | 1 | cali |
- | 2 | jack |
- | 9 | tom |
- | 10 | rose |
- +----+------+
- 4 rows in set (0.00 sec)
#################################################################################################
char和varchar的区别

枚举值必须是带引号的字符串文字
示例:
- root@wangsh 09:30 mysql>create table shirts(name varchar(40), size enum('x-small', 'small', 'medium', 'large', 'x-large'));
- Query OK, 0 rows affected (0.00 sec)
- root@wangsh 09:31 mysql>desc shirts;
- +-------+----------------------------------------------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+----------------------------------------------------+------+-----+---------+-------+
- | name | varchar(40) | YES | | NULL | |
- | size | enum('x-small','small','medium','large','x-large') | YES | | NULL | |
- +-------+----------------------------------------------------+------+-----+---------+-------+
- 2 rows in set (0.00 sec)
-
- root@wangsh 09:31 mysql>INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),
- -> ('polo shirt','small');
- Query OK, 3 rows affected (0.00 sec)
- Records: 3 Duplicates: 0 Warnings: 0
-
- root@wangsh 09:32 mysql>select name, size from shirts;
- +-------------+--------+
- | name | size |
- +-------------+--------+
- | dress shirt | large |
- | t-shirt | medium |
- | polo shirt | small |
- +-------------+--------+
- 3 rows in set (0.00 sec)
如果我们插入的是枚举值之外的字符串,会报错
- root@wangsh 09:33 mysql>INSERT INTO shirts (name, size) VALUES ('lining','xxxxlarge');
- ERROR 1265 (01000): Data truncated for column 'size' at row 1
########################################################