首頁 > 軟體

mysql檢視表結構的三種方法總結

2022-07-06 14:05:49

mysql檢視表結構

1. show create table

show create table 表名稱

這個語句每次本能想出的,語意好記,可以直接檢視建表語句,但不便於程式碼處理。

2. desc

desc 表名稱

這個語句簡單易用,可以獲取到 COLUMNS 中的比較重要的欄位:名稱、型別、是否為空、鍵、預設值、額外資訊。但無法獲取欄位的註釋。

3. information_schema.COLUMNS

select * from information_schema.COLUMNS where TABLE_SCHEMA = '庫名稱' and TABLE_NAME = '表名稱'

相對show create table而言,相對簡單,資訊全面,可以查詢出來欄位的名稱、型別、鍵、許可權、註釋和其他資訊。為了獲取欄位名稱,故我指令碼中使用這個作為獲取表結構的方法。

附: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可以表繼承?)

獲取所有的表結構及備註

根據庫名匯出所有表資訊

SELECT
    *
FROM
    information_schema.`TABLES`
WHERE
    TABLE_SCHEMA = 'db_name'

根據庫名匯出所有表名及表備註

SELECT
    TABLE_NAME,
    TABLE_COMMENT
FROM
    information_schema.`TABLES`
WHERE
    TABLE_SCHEMA = 'db_name';

mysql獲取整個庫的所有表,及表結構

SELECT
    TABLE_SCHEMA AS '庫名',
    TABLE_NAME AS '表名',
    COLUMN_NAME AS '列名',
    ORDINAL_POSITION AS '列的排列順序',
    COLUMN_DEFAULT AS '預設值',
    IS_NULLABLE AS '是否為空',
    DATA_TYPE AS '資料型別',
    CHARACTER_MAXIMUM_LENGTH AS '字元最大長度',
    NUMERIC_PRECISION AS '數值精度(最大位數)',
    NUMERIC_SCALE AS '小數精度',
    COLUMN_TYPE AS '列型別',
    COLUMN_KEY 'KEY',
    EXTRA AS '額外說明',
    COLUMN_COMMENT AS '註釋'
FROM
    information_schema.`COLUMNS`
WHERE
    TABLE_SCHEMA = 'db_name'
ORDER BY
    TABLE_NAME,
    ORDINAL_POSITION;

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com