我有两张列相同的桌子。
第一表:
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表中显示的结果?谢谢。
发布于 2017-08-29 01:50:13
NUMBER_PRECISION是无用的,除了一个案例:ZEROFILL。否则,它将指示需要多少列的输出才能显示最大的数字。
INT UNSIGNED需要10位数。INT SIGNED需要11列--一个符号(如果是负的)和10位数字。
忽略那里的列。当您看到int(11)时,忽略它。
也不要将列声明为INT(100)或INT(2);它仍然是一个32位(4字节)有符号二进制数字。
https://dba.stackexchange.com/questions/184543
复制相似问题