Mysql支持的数据类型主要有:数值数据类型、日期/时间类型、字符串类型。
![](https://i-blog.csdnimg.cn/blog_migrate/6f6ce9e597678a5fe4142456a2bbff18.png)
数值类型
1、整数类型
类型 | 说明 | 存储(字节) | 取值范围 |
---|---|---|---|
tinyint | 很小整数 | 1 | 无符号(unsigned): 0~255 有符号(signed): -128~127 255=2^8-1 |
smallint |
小整数 |
2 |
无符号(unsigned): 0~65535 有符号(signed): -32768~32767 65535=2^16-1 |
mediumint
中等
3
无符号(unsigned): 0~2^24-1
有符号(signed): -2^23-1~2^23-1
16777215 = 2^24-1
int(integer)
普通
4
无符号(unsigned): 0~ 2^32-1
有符号(signed): - 2^31-1~ 2^31-1
4294967295 = 2^32-1
bigint
大整数
8
无符号(unsigned): 0~ 2^64-1
有符号(signed): - 2^63-1~ 2^63-1
18446744073709551615=2^64-1
下面介绍常用的整型:
1.1 int(integer)类型
CREATE TABLE tab_int(
t1 INT,
t2 INT UNSIGNED
);
![](https://i-blog.csdnimg.cn/blog_migrate/0b0ce247dde7ee28f947d23231a6a166.png)
- 上面创建了tab_int表,表中字段一个是有符号的int类型t1和无符号的Int类型t2.
- 几种整型类型都是有最大最小值的,如果插入的数据超过了这个临界值,就会使用这个临界值填充。
关于表中int类型后面的数字,这个就得详细讲解一下了.
关于int(#)
int后边的(#)内的数字#与int类型的数字范围无关,不会因为里边是11或者4,就表示11位或者4位的int型数据,这个#字只表示数字显示出来的宽度。数据显示的宽度有俩种情况:
- 如果没有在数据库设置0填充,那么其实不管设置显示的宽度为多少,显示就是数据库内的数据,不会在数据左侧自动填充0来补足显示的宽度;
- 设置了0填充,在查询结果时候显示出来的数据宽度不够设置的显示宽度时候,就会在数据左侧填充0直到达到设置的显示宽度,但是有一个问题就是设置了0填充,数据会自动变成unsigned类型的;如果数据宽度超过设置的显示宽度,也不会将数据只显示指定的显示宽度。
- 字段默认是不使用0填充的。如果使用的话使用 zerofill 关键字。
----------