東莞做網(wǎng)站找微客巴巴阿里指數(shù)網(wǎng)站
MySQL查詢數(shù)據(jù)庫(kù)中所有表名表結(jié)構(gòu)及注釋
生成數(shù)據(jù)庫(kù)文檔在后面!!!?
select t.TABLE_COMMENT -- 數(shù)據(jù)表注釋
, c.TABLE_NAME -- 表名稱
, c.COLUMN_COMMENT -- 數(shù)據(jù)項(xiàng)
, c.COLUMN_NAME -- 英文名稱
, '' -- 字段描述
, upper(c.DATA_TYPE) as DATA_TYPE -- 數(shù)據(jù)類型
, c.CHARACTER_MAXIMUM_LENGTH -- 數(shù)據(jù)長(zhǎng)度
, '' -- 是否字典項(xiàng)
, '' -- 字典內(nèi)容
, (case
when c.IS_NULLABLE = 'YES' then '是'
when c.IS_NULLABLE = 'NO' then '否'
else c.IS_NULLABLE
end) as IS_NULLABLE -- 是否為空
, (
case
when c.COLUMN_KEY = 'PRI' then '是'
when c.COLUMN_KEY is null or c.COLUMN_KEY = '' then '是'
else c.COLUMN_KEY
end
) as COLUMN_KEY-- 是否主鍵
, c.COLUMN_DEFAULT-- 默認(rèn)值
from information_schema.COLUMNS c,
information_schema.TABLES t
where c.TABLE_NAME = t.TABLE_NAME
and c.TABLE_SCHEMA not in ('information_schema', 'sys', 'performance_schema', 'mysql')
order by t.TABLE_COMMENT
;
從information_schema.COLUMNS
和information_schema.TABLES
這兩個(gè)系統(tǒng)視圖中檢索數(shù)據(jù)表及其列的詳細(xì)信息。
- 笛卡爾積:您的查詢使用了逗號(hào)分隔的表名(
information_schema.COLUMNS c, information_schema.TABLES t
),這會(huì)導(dǎo)致兩個(gè)表之間的笛卡爾積,除非您通過(guò)WHERE
子句或其他方式明確指定連接條件。在您的例子中,您確實(shí)在WHERE
子句中指定了c.TABLE_NAME = t.TABLE_NAME
作為連接條件,但這仍然可能導(dǎo)致性能問(wèn)題,因?yàn)椴皇菢?biāo)準(zhǔn)的JOIN
語(yǔ)法。 - JOIN語(yǔ)法:建議使用顯式的
JOIN
語(yǔ)法來(lái)連接表,因?yàn)樗逦腋菀拙S護(hù)。 - 表注釋:
t.TABLE_COMMENT
可能是從TABLES
視圖中獲取的,但是您沒(méi)有確保TABLES
視圖中的TABLE_COMMENT
是針對(duì)與COLUMNS
中相同的TABLE_SCHEMA
的。 - 字段描述:您為“字段描述”預(yù)留了兩個(gè)空字符串占位符,但您可能希望從某個(gè)地方獲取實(shí)際的描述。
- CASE表達(dá)式:您的
CASE
表達(dá)式用于確定IS_NULLABLE
和COLUMN_KEY
的值,但有一個(gè)潛在的問(wèn)題:當(dāng)COLUMN_KEY
為NULL
或空字符串時(shí),您將其設(shè)置為'是',這可能不是您想要的結(jié)果。通常,主鍵字段不會(huì)是'是'。
?簡(jiǎn)潔版:
SELECT t.TABLE_COMMENT AS 數(shù)據(jù)表注釋, c.TABLE_NAME AS 表名稱, c.COLUMN_COMMENT AS 數(shù)據(jù)項(xiàng), c.COLUMN_NAME AS 英文名稱, '' AS 字段描述, -- 這里可以替換為實(shí)際的字段描述來(lái)源 UPPER(c.DATA_TYPE) AS DATA_TYPE, c.CHARACTER_MAXIMUM_LENGTH AS 數(shù)據(jù)長(zhǎng)度, '' AS 是否字典項(xiàng), -- 這里可以替換為實(shí)際的字典項(xiàng)來(lái)源 '' AS 字典內(nèi)容, -- 這里可以替換為實(shí)際的字典內(nèi)容來(lái)源 CASE WHEN c.IS_NULLABLE = 'YES' THEN '是' WHEN c.IS_NULLABLE = 'NO' THEN '否' ELSE c.IS_NULLABLE END AS IS_NULLABLE, CASE WHEN c.COLUMN_KEY = 'PRI' THEN '是' WHEN c.COLUMN_KEY IN ('MUL', 'UNI') THEN '其他鍵' -- 例如:唯一鍵或多鍵 ELSE '否' END AS COLUMN_KEY, c.COLUMN_DEFAULT AS 默認(rèn)值
FROM information_schema.COLUMNS c
JOIN information_schema.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND c.TABLE_SCHEMA = t.TABLE_SCHEMA
WHERE c.TABLE_SCHEMA NOT IN ('information_schema', 'sys', 'performance_schema', 'mysql')
ORDER BY t.TABLE_COMMENT;
生成數(shù)據(jù)庫(kù)文檔!!!
screw: 簡(jiǎn)潔好用的數(shù)據(jù)庫(kù)表結(jié)構(gòu)文檔工具,支持MySQL/MariaDB/SqlServer/Oracle/PostgreSQL/TIDB/CacheDB 數(shù)據(jù)庫(kù)。 - Gitee.com
使用方法:
1、在pom文件中添加插件
<build><plugin><groupId>cn.smallbun.screw</groupId><artifactId>screw-maven-plugin</artifactId><version>1.0.4</version><dependencies><!-- HikariCP --><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>3.4.5</version></dependency><!--mysql driver--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency></dependencies><configuration><!--username--><username>root</username><!--password--><password>#n4rj</password><!--driver--><driverClassName>com.mysql.cj.jdbc.Driver</driverClassName><!--jdbc url--><jdbcUrl>jdbc:mysql://1.1.1.1:3456/tlink_sdgf</jdbcUrl><!--生成文件類型、HTML--><fileType>WORD</fileType><!--打開(kāi)文件輸出目錄--><openOutputDir>false</openOutputDir><!--生成模板--><produceType>freemarker</produceType><!--文檔名稱 為空時(shí):將采用[數(shù)據(jù)庫(kù)名稱-描述-版本號(hào)]作為文檔名稱--><fileName>測(cè)試文檔名稱</fileName><!--描述--><description>數(shù)據(jù)庫(kù)文檔生成</description><!--版本--><version>${project.version}</version><!--標(biāo)題--><title>數(shù)據(jù)庫(kù)文檔</title></configuration><executions><execution><phase>compile</phase><goals><goal>run</goal></goals></execution></executions></plugin></plugins></build>
?2、點(diǎn)開(kāi)maven找到該pom文件下面的插件雙擊run
3、成功之后在該pom文件的模塊下面生成了一個(gè)doc文件夾下面就是生成的文檔