之前寫代碼模版生成工具的時候,想要根據表結構直接生成相關代碼,需要獲取表字段和相關信息,走過一些彎路,特此記錄。
本文對應mysql版本:mysql 5.6
show create table
show create table 表名稱
這也是我每次下意識想到的語句。語義好記,可以直接查看建表語句,但不便於代碼處理。
information_schema.COLUMNS
select * from information_schema.COLUMNS where TABLE_SCHEMA = '庫名稱' and TABLE_NAME = '表名稱'
相對show create table
而言,相對簡單,信息全面,可以查詢出來字段的名稱、類型、鍵、權限、注釋和其他信息。為了獲取字段名稱,故我腳本中使用這個作為獲取表結構的方法。
desc
desc 表名稱
簡單易用,可以獲取到 COLUMNS 中的比較重要的字段:名稱、類型、是否為空、鍵、默認值、額外信息。但無法獲取字段的注釋。
附:information_schema.COLUMNS字段和含義
字段名稱 | 含義 |
---|---|
TABLE_CATALOG | 表類型(沒搞懂干啥用) |
TABLE_SCHEMA | 所屬庫名稱 |
TABLE_NAME | 表名稱 |
COLUMN_NAME | 字段名稱 |
ORDINAL_POSITION | 位置序號 |
COLUMN_DEFAULT | 默認值 |
IS_NULLABLE | 是否可為空 |
DATA_TYPE | 數據類型 |
CHARACTER_MAXIMUM_LENGTH | 字符串最大長度 (數值類型為空) |
CHARACTER_OCTET_LENGTH | 字符串最大存儲長度 (一般與上一字段相同) |
NUMERIC_PRECISION | 數值精度 (非數值類型為空) |
NUMERIC_SCALE | 數值小數位數 (非數值類型為空) |
DATETIME_PRECISION | 日期精度 |
CHARACTER_SET_NAME | 編碼方式 |
COLLATION_NAME | 排序方式 |
COLUMN_TYPE | 字段類型 |
COLUMN_KEY | 字段涉及的key (主鍵、唯一鍵等) |
EXTRA | 其他(如 auto_increment) |
PRIVILEGES | 權限 |
COLUMN_COMMENT | 字段注釋 |
GENERATION_EXPRESSION | 代表達式 (這個沒搞懂,mysql可以表繼承?) |