设置mysql整形_mysql 整型字段设计
只要做開發(fā)的,肯定創(chuàng)建過表,表字段用什么類型,長(zhǎng)度是多少等。感覺沒什么要說的,可是歸納總結(jié)一下,還有東西可說的。
1,整型類型
數(shù)據(jù)類型
有符號(hào)
無符號(hào)
存儲(chǔ)
bigint
-2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807)
0 到 2^64-1 (18446744073709551615)
8 字節(jié)
int
-2^31 (-2147483648) 到 2^31-1 (2147483647)
0 到 2^32-1 (4294967295)
4 字節(jié)
mediumint
-2^31 (-8388608) 到 2^23-1 (8388607)
0 到 2^24-1 (16777215)
3 字節(jié)
smallint
-2^15 (-32768) 到 2^15-1 (32767)
0 到 2^16-1 (65535)
2 字節(jié)
tinyint
-2^7 (-127) 到 2^7-1 (127)
0 到 2^8-1 (255)
1 字節(jié)
知道類型的范圍值對(duì)我們有幫助的,例如,如果用tinyint,該字段的最大值不會(huì)超過255,把字段設(shè)置成tinyint(10),有符號(hào)的情況下,最大只能是127,表面上看好像是可以存入10位,而實(shí)際只能存入3位數(shù)。
根據(jù)要存數(shù)字大小,來選擇不同的數(shù)據(jù)類型,例如,如果是標(biāo)識(shí)位,一般情況設(shè)置為tinyint(1),最合適,存儲(chǔ)小,又不會(huì)存不進(jìn)去。
2,實(shí)例說明
MariaDB [test]> CREATE TABLE `test` (
-> `big_test` bigint(20) DEFAULT 0,
-> `int_test` int(11) DEFAULT 0,
-> `medium_test` mediumint(8) DEFAULT 0,
-> `small_test` smallint(6) DEFAULT 0,
-> `tiny_test` tinyint(4) DEFAULT 0
-> ) ENGINE=myisam DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.09 sec)
MariaDB [test]> INSERT INTO test (big_test, int_test, medium_test, small_test, tiny_test) VALUES (9223372036854775807, 2147483647, 8388607, 32767, 127);
Query OK, 1 row affected (0.00 sec)
MariaDB [test]> select * from test;
+---------------------+------------+-------------+------------+-----------+
| big_test | int_test | medium_test | small_test | tiny_test |
+---------------------+------------+-------------+------------+-----------+
| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |
+---------------------+------------+-------------+------------+-----------+
1 row in set (0.00 sec)
MariaDB [test]> INSERT INTO test (big_test, int_test, medium_test, small_test, tiny_test) VALUES (9223372036854775807, 2147483647, 8388607, 32767, 128);
Query OK, 1 row affected, 1 warning (0.00 sec) //128超過了,有符號(hào)tinyint的最大值,報(bào)了warning出來,但是還是入庫(kù)了。
MariaDB [test]> select * from test;
+---------------------+------------+-------------+------------+-----------+
| big_test | int_test | medium_test | small_test | tiny_test |
+---------------------+------------+-------------+------------+-----------+
| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |
| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |
+---------------------+------------+-------------+------------+-----------+
2 rows in set (0.00 sec)
MariaDB [test]> ALTER TABLE `test` CHANGE `tiny_test` `tiny_test` TINYINT( 10 ) NULL DEFAULT '0';
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0 //將長(zhǎng)度改為10,沒報(bào)錯(cuò)
MariaDB [test]> INSERT INTO test (big_test, int_test, medium_test, small_test, tiny_test) VALUES (9223372036854775807, 2147483647, 8388607, 32767, 128);
Query OK, 1 row affected, 1 warning (0.00 sec) //在插入數(shù)據(jù),一樣報(bào)warning,但還是入庫(kù)
MariaDB [test]> select * from test;
+---------------------+------------+-------------+------------+-----------+
| big_test | int_test | medium_test | small_test | tiny_test |
+---------------------+------------+-------------+------------+-----------+
| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |
| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |
| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |
+---------------------+------------+-------------+------------+-----------+
3 rows in set (0.00 sec)
總結(jié)
以上是生活随笔為你收集整理的设置mysql整形_mysql 整型字段设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql迁移之后读取速度变慢_如何解决
- 下一篇: 命令回复mysql数据库_用命令行恢复M