当前位置: Oracle DBA培训网-优技培训 >> MySQL培训 > MySQL培训教程 >

MySQL基础知识:整数数据类型

MySQL基础知识:整数数据类型

MySQL基础知识:整数数据类型,MySQL支持所有的ANSI/ISO SQL92的数字类型,其中的整数类型为INTEGER,和SMALLINT,关键词INT是INTEGER的一个同义词:

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

取值范围:有符号:-32768到32767(-215到215-1)无符号:0到65535(0到216-1)

存储要求:2个字节

INT[(M)] [UNSIGNED] [ZEROFILL]、INTEGER[(M)] [UNSIGNED] [ZEROFILL]

取值范围:有符号:-2147483648到2147483647(-231到231-1)无符号:0到4294967295(0到232-1)

存储要求:4个字节

作为对ANSI/ISO SQL92标准的扩展,MySQL也支持上表所列的整型类型TINYINT、MEDIUMINT和BIGINT:

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

取值范围:有符号:-128到127(-27和27-1)无符号:0到255(0到28-1)

存储要求:1个字节

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

取值范围:有符号:-8388608到8388607(-223到223-1)无符号:0到16777215(0到224-1)

存储要求:3个字节

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

取值范围:有符号:-9223372036854775808到9223372036854775807(-263到263-1)无符号:0到18446744073709551615(0到264-1)

存储要求: 8个字节

在为列选择了使用某种数值类型时,除了要考虑数据的类型外,还应该注意所要表示的值的范围和存储需求,只需选择能覆盖要取值的范围的最小类型即可。选择较大类型会对空间造成浪费,使表不必要地增大,处理起来没有选择较小类型那样有效。对于整型值,如果数据取值范围较小,则TINYINT最合适。MEDIUMINT和INT虽然能表示能够表示更大的数值并且可用于更多类型的值,但存储代价更大。BIGINT 在全部整型中取值范围最大,而且需要的存储空间是表示范围次大的整型 INT 类型的两倍,因此只在确实需要时才用。

作为对ANSI/ISO SQL92标准的的另一个扩展, MySQL支持可选地指定一个整型值显示的宽度,用括号跟在基本关键词之后(例如,INT(4))。这个可选的宽度指定被用于其宽度小于列指定宽度的值得左填补显示,但是不限制能在列中被存储的值的范围;如果某个特定值的可打印表示需要不止 M 个字符,则显示完全的值;不会将值截断以适合 M 个字符。当与可选的扩展属性ZEROFILL一起使用时,缺省的空格填补用零代替。例如,对于声明为INT(5) ZEROFILL的列,一个为4的值作为00004被检索。如果定义了一个没有明确宽度的整数列,将会自动分配给它一个缺省的宽度。缺省值为每种类型的“最长”值的长度。

我们可以这样知道M和D的缺省值。先创建一个表

CREATE TABLE number

(

tiny TINYINT,u_tiny TINYINT UNSIGNED,

small SMALLINT,u_small SMALLINT UNSIGNED,

medium MEDIUMINT,u_medium MEDIUMINT UNSIGNED,

num INT,u_num INT UNSIGNED,

big BIGINT,u_big BIGINT UNSIGNED

)

然后显示这个表的结构

DESCRIBE number

在MySQL3.23上的结果如下:

+----------+-----------------------+
| Field    | Type         |
+----------+-----------------------+
| tiny     | tinyint(4)    |
| u_tiny   | tinyint(3) unsigned |
| small    | smallint(6)      |
| u_small  | smallint(5) unsigned |
| medium   | mediumint(9)    |
| u_medium | mediumint(8) unsigned |
| num      | int(11)     |
| u_num    | int(10) unsigned  |
| big      | bigint(20)    |
| u_big    | bigint(20) unsigned|
+----------+-----------------------+

技术沙龙MORE+

标签错误:<!-- #Label# labelId=20160707140604 moduleId=1 classId=12231768634 orderby=2 fields=url,title,u_info attribute= datatypeId=22192428132 recordCount=3 pageSize= <htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate> -->
我要参加技术沙龙