2012-02-27 52 views
4

我想顯示數據庫中的整個表的DataDictionary。MySQL顯示錶的數據字典

SHOW COLUMNS 
FROM `MyDataBase`.`MyTables` 
WHERE IN (SELECT TABLE_NAME 
      FROM information_schema.TABLES 
      WHERE TABLE_SCHEMA = 'MyDataBase' 
); 

我可以使用類似這樣的查詢嗎? 我想用一個單一的查詢

回答

3

這是你想要什麼,看整列數據:

SELECT `COLUMN_NAME` 
FROM `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE `TABLE_SCHEMA`='yourdatabasename' 
    AND `TABLE_NAME`='yourtablename'; 
2

MySQL 5.7 Manual

許多章節說明什麼SHOW語句相當於一個SELECT檢索來自INFORMATION_SCHEMA的信息。對於顯示缺省數據庫信息的SHOW語句(如果省略FROM db_name子句),通常可以通過將AND TABLE_SCHEMA = SCHEMA()條件添加到從INFORMATION_SCHEMA中檢索信息的WHERE子句來選擇缺省數據庫的信息表。

1
describe table_name; 

檢索從INFORMATION_SCHEMA信息,但需要DBA權限。

1

通常情況下,我寧願將此與多個DESC。我覺得SHOW COLUMNSDESC table_name慢一點。

所以,當相比,如果想獲得的所有列在某些數據庫

  1. 環通SHOW TABLES FROM DB_NAME
  2. 環通的所有表爲DESC table_name

以同樣的方式,SHOW INDEXES是慢SHOW CREATE TABLE如果你只是想看到一個表上的索引

4

這裏是我用g當我必須填入數據字典時:

SELECT t.table_schema AS db_name, 
     t.table_name, 
     (CASE WHEN t.table_type = 'BASE TABLE' THEN 'table' 
      WHEN t.table_type = 'VIEW' THEN 'view' 
      ELSE t.table_type 
     END) AS table_type, 
     c.column_name, 
     c.column_type, 
     c.column_default, 
     c.column_key, 
     c.is_nullable, 
     c.extra, 
     c.column_comment 
FROM information_schema.tables AS t 
INNER JOIN information_schema.columns AS c 
ON t.table_name = c.table_name 
AND t.table_schema = c.table_schema 
WHERE t.table_type IN ('base table', 'view') 
AND t.table_schema LIKE '%' 
ORDER BY t.table_schema, 
     t.table_name, 
     c.ordinal_position 

這將列出服務器上的所有數據庫。您可能希望將where子句更改爲僅查看所需的特定表模式。

0

最短的語法是這樣的:

SHOW COLUMNS 
FROM `MyDataBase`.`MyTables`; 

Full SHOW Syntax爲列:

SHOW [FULL] COLUMNS 
FROM tbl_name [FROM db_name] 
[like_or_where]