Mysql
MySQL數據精度混淆
我有兩個具有相同列的表。
第一張表:
DESC orders; Field Type Null Key Default Extra order_id int(8) unsigned zerofill NO PRI (null)auto_increment customer_id int(10) unsigned YES MUL (null)
第二張表:
DESC items; Field Type Null Key Default Extra item_id int(11) unsigned NO PRI (null) auto_increment order_id int(10) unsigned NO PRI (null)
基於上面的表 order_id 有不同的數據精度。
但是在檢查 information_schema 數據庫時,精度是相同的
SELECT c.TABLE_SCHEMA, c.TABLE_NAME, c.COLUMN_NAME, c.DATA_TYPE, c.NUMERIC_PRECISION, t.ENGINE from information_schema.COLUMNS c INNER JOIN information_schema.TABLES t on t.TABLE_NAME = c.TABLE_NAME WHERE c.TABLE_SCHEMA = 'database' AND c.COLUMN_NAME = 'order_id' and c.TABLE_NAME in ('orders','items');
結果是。
TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE NUMERIC_PRECISION ENGINE database items order_id int 10 MyISAM database orders order_id int 10 MyISAM
其中哪一個是準確的?資訊模式結果的DESC表中顯示的那個?謝謝你。
NUMBER_PRECISION
除了一種情況外是無用的:ZEROFILL
. 否則,它表示需要多少列輸出才能顯示最大數字。
INT UNSIGNED
需要10位數。INT SIGNED
需要 11 列 - 一個符號(如果為負)和 10 位數字。忽略那裡的列。看到時忽略它
int(11)
。並且不要費心將列聲明為
INT(100)
orINT(2)
; 它仍然是一個 32 位(4 字節)有符號二進制數。