DB - MySQL - 資料庫表結構表字段資訊
文字編寫時間: 2022-05-08 17:53 (如下內容為本人工作中總結,只是現在才放到部落格上,歡迎大家查閱)
1. MySql函式
http://www.baidu.com/index.php?tn=mswin_oem_dg
2. 查詢資料庫中所有表
SELECT * FROM information_schema.tables
WHERE table_schema='資料庫名稱';
3. 資料庫所佔空間
SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size,
CONCAT ( TRUNCATE ( SUM(max_data_length)/1024/1024,2),'MB') AS max_data_size,
CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB') AS data_free,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
FROM information_schema.tables WHERE TABLE_SCHEMA = '資料庫名';
4. 查詢表空間使用情況
SELECT '01',CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size,
CONCAT (TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB') AS max_data_size,
CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB') AS data_free,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
FROM information_schema.tables WHERE TABLE_NAME = '表名';
5. 查詢表字段併合並
SELECT GROUP_CONCAT(column_name) FROM information_schema.columns
WHERE table_name='表名';
6. 檢視分割槽
檢視分割槽對應的表:INFORMATION_SCHEMA. PARTITIONS
查看錶具體分割槽資料量
SELECT PARTITION_NAME,TABLE_ROWS,a.index_length,a.data_length,a.* FROM INFORMATION_SCHEMA.PARTITIONS a
WHERE TABLE_NAME = '表名' ; (注意需要自行根據自己的業務分割槽欄位來限定查詢的分割槽內容)
7. 查詢表字段、欄位型別、欄位註釋 (如下SQL結構類似java實體物件資訊。請各自根據實際需要進行調整sql)
SELECT
# GROUP_CONCAT(column_name)
CONCAT('//',a.column_comment),
'private ',
CASE
WHEN a.DATA_TYPE = 'VARCHAR2' THEN 'String '
WHEN a.DATA_TYPE = 'bigint' THEN 'long'
WHEN a.DATA_TYPE = 'datetime' THEN 'Date'
WHEN a.DATA_TYPE = 'int' THEN 'int'
ELSE
'String'
END AS java_type,
column_name, ';',a.*
FROM information_schema.columns a
WHERE table_name='表名';
8. 查詢表和表字段
查詢資料庫中所有表名 (table_schema和table_type如果不確定可以先查詢出所有再根據具體需要進行篩選查詢)
select table_name from information_schema.tables
Where table_schema='庫名' and table_type='表型別';
9. 查詢指定資料庫中指定表的所有欄位名column_name
select column_name from information_schema.columns
Where table_schema='庫名' and table_name='表名';
10. 查詢表結構 (欄位名、欄位型別、欄位註釋說明,以及是否必填)
SELECT column_name, column_type, column_comment,
CASE
WHEN a.is_nullable='YES' THEN 'Y'
ELSE 'N'
END
FROM information_schema.columns a
WHERE table_name='表名';