您的位置:首页 > 其它

binary,unsigned,unsigned zerofill关键字介绍(binary区分大小写,)

2016-01-04 18:58 225 查看
mysql建表时,每个字段的属性有三个选项: binary,unsigned,unsigned zerofill,作用如下:

一、binary

CHAR VARCHAR:值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键字。使用BINARY的例子见

mysql查询不区分大小写问题分析和解决

mysql 字符串类型及二进制字符串类型大小写比较

二、unsigned

既为非负数,用此类型可以增加数据长度!

例如如果 tinyint最大是127,那 tinyint unsigned 最大 就可以到 127 * 2

unsigned 属性只针对整型,而binary属性只用于char 和varchar。

类型说明

说明

取值范围

存储需求

tinyint[(m)]

非常小的整数

有符号值:-128 到127(- 27 到27 - 1)

无符号值:0到255(0 到28 - 1) 1个字节

1字节

smallint[(m)]

较小整数

有符号值:-32768 到32767(- 215 到215 - 1)

无符号值:0到65535(0 到21 6 - 1) 2个字节

2字节

mediumint[(m)]

中等大小整数

有符号值:-8388608 到8388607(- 22 3 到22 3 - 1 )

无符号值:0到16777215(0 到22 4 - 1) 3个字节

3字节

int[(m)]

标准整数

有符号值:-2147683648 到2147683647(- 231 到231- 1)

无符号值:0到4294967295(0 到232 - 1) 4个字节

4字节

bigint[(m)]

较大整数

有符号值:-9223372036854775808 到9223373036854775807(- 263到263-1)

无符号值:0到18446744073709551615(0到264 – 1) 8个字节

8字节

float[(m, d)]

单精度浮点数

最小非零值:±1.175494351e - 38

4字节

double[(m,d)]

双精度浮点数

最小非零值:±2.2250738585072014e - 308

8字节

decimal (m, d)

一个串的浮点数

可变;其值的范围依赖于m 和d

m字节(mysql < 3.23),m+2字节(mysql > 3.23 )

mysql提供了五种整型: tinyint、smallint、mediumint、int和bigint。int为integer的缩写。这些类型在可表示的取值范围上是不同的。 整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上。各种类型的存储量需求也是不同的。取值范围较大的类型所需的存储量较大

mysql 提供三种浮点类型: float、double和decimal。与整型不同,浮点类型不能是unsigned的,其取值范围也与整型不同,这种不同不仅在于这些类型有最大值,而且还有最小非零值。最小值提供了相应类型精度的一种度量,这对于记录科学数据来说是非常重要的(当然,也有负的最大和最小值)。

三、zerofill

那这个int[M]中M是什么意义喃,在定义数值型数据类型的时候,可以在关键字括号内指定整数值(如:int(M),M的最大值为255)显示最大显示宽度,显示宽度M与数据所占用空间,数值的范围无关。 如果在定义字段的时候指定zerofill,那么当数值的显示宽度小于指定的列宽度时候,则默认补充的空格用0代替

mysql> use test
Database changed
mysql> create table int_12(id int(12) zerofill);
Query OK, 0 rows affected (0.03 sec)

mysql> desc int_12;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type                      | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| id    | int(12) unsigned zerofill | YES  |     | NULL    |       |
+-------+---------------------------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> insert into int_12(id) values(1);
Query OK, 1 row affected (0.00 sec)

mysql> select * from int_12;
+--------------+
| id           |
+--------------+
| 000000000001 |
+--------------+
1 row in set (0.00 sec)

mysql> alter table int_12 change id id int(23) zerofill;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from int_12;
+-------------------------+
| id                      |
+-------------------------+
| 00000000000000000000001 |
+-------------------------+
1 row in set (0.00 sec)

mysql>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: