我想顯示數據庫中的整個表的DataDictionary。MySQL顯示錶的數據字典
SHOW COLUMNS
FROM `MyDataBase`.`MyTables`
WHERE IN (SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'MyDataBase'
);
我可以使用類似這樣的查詢嗎? 我想用一個單一的查詢
我想顯示數據庫中的整個表的DataDictionary。MySQL顯示錶的數據字典
SHOW COLUMNS
FROM `MyDataBase`.`MyTables`
WHERE IN (SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'MyDataBase'
);
我可以使用類似這樣的查詢嗎? 我想用一個單一的查詢
這是你想要什麼,看整列數據:
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename'
AND `TABLE_NAME`='yourtablename';
許多章節說明什麼SHOW語句相當於一個SELECT檢索來自INFORMATION_SCHEMA的信息。對於顯示缺省數據庫信息的SHOW語句(如果省略FROM db_name子句),通常可以通過將AND TABLE_SCHEMA = SCHEMA()條件添加到從INFORMATION_SCHEMA中檢索信息的WHERE子句來選擇缺省數據庫的信息表。
describe table_name;
檢索從INFORMATION_SCHEMA
信息,但需要DBA權限。
通常情況下,我寧願將此與多個DESC
。我覺得SHOW COLUMNS
比DESC table_name
慢一點。
所以,當相比,如果想獲得的所有列在某些數據庫
SHOW TABLES FROM DB_NAME
DESC table_name
以同樣的方式,SHOW INDEXES
是慢SHOW CREATE TABLE
如果你只是想看到一個表上的索引
這裏是我用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子句更改爲僅查看所需的特定表模式。
最短的語法是這樣的:
SHOW COLUMNS
FROM `MyDataBase`.`MyTables`;
SHOW [FULL] COLUMNS
FROM tbl_name [FROM db_name]
[like_or_where]