我正在進行表分析以了解資料庫中的每個表列。目前,我知道如何列出所有表格的詳細資訊。
select
TABLE_SCHEMA ,
TABLE_NAME ,
TABLE_TYPE ,
TABLE_ROWS
from
information_schema.TABLES t
where
TABLE_NAME like '%site%'
and TABLE_TYPE = 'BASE TABLE'
這將導致定義表模式、表名和表行。

我該如何做同樣的事情,但DESCRIBE要使用列出所有表格列?
uj5u.com熱心網友回復:
您可以使用information_schema.COLUMNS獲取 describe 命令回傳的所有欄位。
嘗試:
select TABLE_SCHEMA as 'database',
TABLE_NAME as 'table',
COLUMN_NAME as 'Field',
DATA_TYPE as 'Type',
IS_NULLABLE as 'Null',
COLUMN_KEY as 'Key',
COLUMN_DEFAULT as 'Default',
EXTRA as 'Extra'
from information_schema.COLUMNS;
注意。如果要限制對特定架構或表的搜索,請添加特定條件,例如:
WHERE TABLE_SCHEMA='your_schema' AND TABLE_NAME='your_table_name'
編輯 在我的服務器上測驗
mysql> select TABLE_SCHEMA as 'database',
TABLE_NAME as 'table',
COLUMN_NAME as 'Field',
DATA_TYPE as 'Type',
IS_NULLABLE as 'Null',
COLUMN_KEY as 'Key',
COLUMN_DEFAULT as 'Default',
EXTRA as 'Extra'
from information_schema.COLUMNS
WHERE TABLE_SCHEMA='gesti' AND TABLE_NAME='test_table';
---------- ------------ ------- ---------- ------ ----- --------- ----------------
| database | table | Field | Type | Null | Key | Default | Extra |
---------- ------------ ------- ---------- ------ ----- --------- ----------------
| gesti | test_table | id | int | NO | PRI | NULL | auto_increment |
| gesti | test_table | title | longtext | NO | MUL | NULL | |
---------- ------------ ------- ---------- ------ ----- --------- ----------------
2 rows in set (0.01 sec)
mysql> desc test_table;
------- ---------- ------ ----- --------- ----------------
| Field | Type | Null | Key | Default | Extra |
------- ---------- ------ ----- --------- ----------------
| id | int | NO | PRI | NULL | auto_increment |
| title | longtext | NO | MUL | NULL | |
------- ---------- ------ ----- --------- ----------------
2 rows in set (0.00 sec)
uj5u.com熱心網友回復:
不要使用 DESCRIBE 或 INFORMATION_SCHEMA.COLUMNS。這些陳述產生了部分資訊,有時甚至看起來像是不正確的。
例子:
CREATE TABLE test (f1 INT, f2 INT, f3 INT, f4 INT DEFAULT NULL, PRIMARY KEY (f1, f2), UNIQUE (f3, f1), INDEX (f1, f4))
DESC test領域 | 型別 | 空 | 鑰匙 | 默認 | 額外的 :---- | :-------- | :--- | :-- | :-------- | :---- f1 | 整數(11) | 否 | 優先級 | 空 | f2 | 整數(11) | 否 | 優先級 | 空 | f3 | 整數(11) | 是 | 穆爾 | 空 | f4 | 整數(11) | 是 | | 空 |
select TABLE_SCHEMA as 'database', TABLE_NAME as 'table', COLUMN_NAME as 'Field', DATA_TYPE as 'Type', IS_NULLABLE as 'Null', COLUMN_KEY as 'Key', COLUMN_DEFAULT as 'Default', EXTRA as 'Extra' from information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE()資料庫 | 表| 領域 | 型別 | 空 | 鑰匙 | 默認 | 額外的 :------------ | :---- | :---- | :--- | :--- | :-- | :-------- | :---- db_1611616104 | 測驗 | f1 | 整數 | 否 | 優先級 | 空 | db_1611616104 | 測驗 | f2 | 整數 | 否 | 優先級 | 空 | db_1611616104 | 測驗 | f3 | 整數 | 是 | 穆爾 | 空 | db_1611616104 | 測驗 | f4 | 整數 | 是 | | 空 |
SHOW CREATE TABLE testCREATE TABLE `test` ( `f1` int(11) NOT NULL, `f2` int(11) NOT NULL, `f3` int(11) DEFAULT NULL, `f4` int(11) DEFAULT NULL, PRIMARY KEY (`f1`,`f2`), UNIQUE KEY `f3` (`f3`,`f1`), KEY `f1` (`f1`,`f4`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
db<>在這里擺弄
- DESCRIBE 和 INFORMATION_SCHEMA.COLUMNS 提供的有關索引的資訊是部分的,不允許了解表中真正存在哪些索引。
- DESCRIBE 和 INFORMATION_SCHEMA.COLUMNS 的輸出都不允許理解默認值是 NULL 還是未設定。此外,DESCRIBE 和 INFORMATION_SCHEMA.COLUMNS 都顯示主鍵中涉及的列的默認值為 NULL。
因此,只有 SHOW CREATE TABLE 才能為您提供有關表結構的完整資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/497111.html
上一篇:獲取在1個作業日內關閉的專案
下一篇:MYSQl使用變數進行求和
