MySQL的information_schema庫中有個COLUMNS表,里面記錄了mysql所有庫中所有表的字段信息,該表信息如下:
COLUMNS表的每一條記錄都對應了數據庫中某個表的某個字段,該表記錄了如下信息:
TABLE_CATALOG
MySQL官方文檔中說,這個字段值永遠是def,但沒寫這個字段是干嘛用的。
網上有把這個叫表限定符的,有叫登記目錄的。作用疑似是和其他種類的數據庫做區分。
TABLE_SCHEMA
表格所屬的庫。
TABLE_NAME
表名
COLUMN_NAME
字段名
ORDINAL_POSITION
字段標識。
其實就是字段編號,從1開始往后排。
COLUMN_DEFAULT
字段默認值。
IS_NULLABLE
字段是否可以是NULL。
該列記錄的值是YES或者NO。
DATA_TYPE
數據類型。
里面的值是字符串,比如varchar,float,int。
CHARACTER_MAXIMUM_LENGTH
字段的最大字符數。
假如字段設置為varchar(50),那么這一列記錄的值就是50。
該列只適用於二進制數據,字符,文本,圖像數據。其他類型數據比如int,float,datetime等,在該列顯示為NULL。
CHARACTER_OCTET_LENGTH
字段的最大字節數。
和最大字符數一樣,只適用於二進制數據,字符,文本,圖像數據,其他類型顯示為NULL。
和最大字符數的數值有比例關系,和字符集有關。比如UTF8類型的表,最大字節數就是最大字符數的3倍。
NUMERIC_PRECISION
數字精度。
適用於各種數字類型比如int,float之類的。
如果字段設置為int(10),那么在該列保存的數值是9,少一位,還沒有研究原因。
如果字段設置為float(10,3),那么在該列報錯的數值是10。
非數字類型顯示為在該列NULL。
NUMERIC_SCALE
小數位數。
和數字精度一樣,適用於各種數字類型比如int,float之類。
如果字段設置為int(10),那么在該列保存的數值是0,代表沒有小數。
如果字段設置為float(10,3),那么在該列報錯的數值是3。
非數字類型顯示為在該列NULL。
DATETIME_PRECISION
datetime類型和SQL-92interval類型數據庫的子類型代碼。
我本地datetime類型的字段在該列顯示為0。
其他類型顯示為NULL。
CHARACTER_SET_NAME
字段字符集名稱。比如utf8。
COLLATION_NAME
字符集排序規則。
比如utf8_general_ci,是不區分大小寫一種排序規則。utf8_general_cs,是區分大小寫的排序規則。
COLUMN_TYPE
字段類型。比如float(9,3),varchar(50)。
COLUMN_KEY
索引類型。
可包含的值有PRI,代表主鍵,UNI,代表唯一鍵,MUL,可重復。
EXTRA
其他信息。
比如主鍵的auto_increment。
PRIVILEGES
權限
多個權限用逗號隔開,比如 select,insert,update,references
COLUMN_COMMENT
字段注釋
GENERATION_EXPRESSION
組合字段的公式。