【小白專用】MySQL查詢數據庫所有表名及表結構其注釋

一、先了解下INFORMATION_SCHEMA
1、在MySQL中,把INFORMATION_SCHEMA看作是一個數據庫,確切說是信息數據庫。其中保存著關于MySQL服務器所維護的所有其他數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權 限等。在INFORMATION_SCHEMA中,有數個只讀表。它們實際上是視圖,而不是基本表,因此,你將無法看到與之相關的任何文件。

2、TABLES表:提供了關于數據庫中的表的信息(包括視圖)。詳細表述了某個表屬于哪個schema,表類型,表引擎,創建時間等信息。是show tables from schemaname的結果取之此表。

3、COLUMNS表:提供了表中的列信息。詳細表述了某張表的所有列以及每個列的信息。是show columns from schemaname.tablename的結果取之此表。
?

查看ftp數據庫內以oemp開頭的所有的表名、表數據量、表備注、字段名稱、字段類型、默認值、字段備注等;如果查整個數據庫就把ftp后全刪除。

            string sql = $@"SELECT TABLE_NAME as TableName, column_name AS DbColumnName,CASE WHEN  left(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)-1)='' THEN COLUMN_TYPE ELSE  left(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)-1) END AS DataType,CAST(SUBSTRING(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)+1,LOCATE(')',COLUMN_TYPE)-LOCATE('(',COLUMN_TYPE)-1) AS signed) AS Length,column_default  AS  `DefaultValue`,column_comment  AS  `ColumnComment`,CASE WHEN COLUMN_KEY = 'PRI' THEN true ELSE false END AS `IsPrimaryKey`,CASE WHEN EXTRA='auto_increment' THEN true ELSE false END as IsIdentity,CASE WHEN is_nullable = 'YES' THEN true ELSE false END AS `IsNullable`FROM Information_schema.columns where TABLE_NAME='{tableName}' and  TABLE_SCHEMA=(select database()) ORDER BY TABLE_NAME";

SELECT  T1.TABLE_COMMENT 表注釋,T1.TABLE_ROWS 表數據量,T2.TABLE_NAME 表名,T2.COLUMN_NAME 字段名,  T2.COLUMN_TYPE 數據類型,  T2.DATA_TYPE 字段類型,  T2.CHARACTER_MAXIMUM_LENGTH 長度,  T2.IS_NULLABLE 是否為空,  T2.COLUMN_DEFAULT 默認值,  T2.COLUMN_COMMENT 字段備注   
FROM INFORMATION_SCHEMA.TABLES T1
LEFT JOININFORMATION_SCHEMA.COLUMNS T2
ONT1.TABLE_NAME = T2.TABLE_NAME
WHERE  T1.TABLE_SCHEMA ='ftp'
AND T1.TABLE_NAME LIKE 'oemp%'
ORDER BY T1.TABLE_NAME;

二、如何獲取全部表名

基本的語句為

SELECT table_name FROM information_schema.tables

但是這個并不符合業務需求,因為這會返回全部的表名,而業務中需要限定是哪個數據庫,并且,不同的業務可能會使用不同的表前綴,所以最好可以限定表前綴,并且需要展示表的注釋,不然大家也不清楚表是屬于哪個業務的。

所以,完整的SQL語句如下

SELECTTABLE_NAME,TABLE_COMMENT 
FROMinformation_schema.TABLES 
WHERETABLE_SCHEMA = 'TABLE_SCHEMA' AND TABLE_NAME LIKE 'x_%' AND TABLE_NAME NOT LIKE 'xx_exp%' 
ORDER BYTABLE_NAME

需要配置幾個參數,并且已經按表名進行排序,TABLE_COMMENT 為表注釋。

  1. TABLE_SCHEMA 數據庫名稱
  2. x_ 表前綴

運行結果如下圖

1、查看Mysql 數據庫 "ori_data"下所有表的表名、表注釋及其數據量SELECT 
TABLE_NAME 表名,TABLE_COMMENT 表注釋,TABLE_ROWS 數據量
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'ori_data' 
ORDER BY TABLE_NAME;
SELECT* FROM OPENQUERY (MYSQLTEST ,'
SELECTTABLE_NAME as 表名FROMinformation_schema.TABLES 
WHERETABLE_SCHEMA = ''msldbalitest'' AND TABLE_NAME LIKE ''tp_%'' AND TABLE_NAME NOT LIKE ''cms_exp%'' ORDER BY TABLE_NAME desc')

2. 查詢數據庫 ‘ori_data’ 下表 ‘accumulation’ 所有字段注釋SELECT 
COLUMN_NAME 字段名,column_comment 字段注釋 
FROM INFORMATION_SCHEMA.Columns 
WHERE table_name='accumulation' AND table_schema='ori_data'

select COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT from information_schema.COLUMNS where table_name = '表名' and table_schema = '數據庫名稱';
SELECT* FROM OPENQUERY (MYSQLTEST ,'
SELECT 
COLUMN_NAME as 字段名,DATA_TYPE,column_comment as 字段注釋 
FROM INFORMATION_SCHEMA.Columns 
WHERE table_name=''cms_goods'' AND table_schema=''msldbalitest''')

3. 查詢數據庫 "ori_data" 下所有表的表名、表注釋以及對應表字段注釋SELECT 
a.TABLE_NAME 表名,a.TABLE_COMMENT 表注釋,b.COLUMN_NAME 表字段,b.COLUMN_TYPE 字段類型,b.COLUMN_COMMENT 字段注釋
FROM information_schema.TABLES a,INFORMATION_SCHEMA.Columns b 
WHERE b.TABLE_NAME=a.TABLE_NAME AND a.TABLE_SCHEMA='ori_data'
SELECT* FROM OPENQUERY (MYSQLTEST ,'
SELECT 
a.TABLE_NAME as 表名,a.TABLE_COMMENT as 表注釋,b.COLUMN_NAME as 表字段,b.COLUMN_TYPE as 字段類型,b.COLUMN_COMMENT as 字段注釋
FROM information_schema.TABLES a,INFORMATION_SCHEMA.Columns b 
WHERE b.TABLE_NAME=a.TABLE_NAME AND a.TABLE_SCHEMA=''msldbalitest''')

information_schema數據庫是MySQL數據庫自帶的數據庫,里面存放的MySQL數據庫所有的信息,包括數據表、數據注釋、數據表的索引、數據庫的權限等等。

Mysql數據庫如何獲取某數據庫所有表名稱(不包含表結構),Sql如下:

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'xxx' AND table_type = 'base table'

information_schema:Mysql自帶的數據庫,存放各類數據庫相關信息的信息數據庫,表多為視圖
information_schema.tables:該數據庫下的tables表
table_schema:tables表下的一個字段,數據庫名稱
table_type:tables表下的一個字段,表類型,base table為基礎表,注:有空格
table_name:tables表下的一個字段,數據表名稱
?

查看指定表的字段及注釋

SELECT* FROM OPENQUERY (MYSQLTEST ,'
selecta.ordinal_position,a.COLUMN_name,a.COLUMN_type,a.COLumn_comment,a.is_nullable,a.column_key
frominformation_schema.COLUMNS a
whereTABLE_schema = ''msldbalitest''and TABLE_name = ''cms_admin_menu''')

查看數據所有表名及注釋

SELECT* FROM OPENQUERY (MYSQLTEST ,'
selectt.TABLE_NAME,t.TABLE_COMMENT
frominformation_schema.tables t
wheret.TABLE_TYPE = ''BASE TABLE''and TABLE_schema = ''msldbalitest''')

在mysql中,information_schema這個數據庫中保存了mysql服務器所有數據庫的信息。
包括數據庫名,數據庫的表,表字段的數據類型等。
簡而言之,若想知道mysql中有哪些庫,哪些表,表里面有哪些字段以及他們的注釋,都可以從information_schema中獲取
?

COLUMNS表
information_schema庫中的COLUMNS表,存放MySQL所有表的字段詳細信息。

常用列
TABLE_SCHEMA:數據庫名
TABLE_NAME:數據表名
COLUMN_NAME:數據列名
DATA_TYPE:數據類型,如:varchar
COLUMN_TYPE:數據列類型(含數據長度),如:varchar(32)
COLUMN_COMMENT:數據列注釋/說明
?

            string sql = $@"SELECT TABLE_NAME as TableName, column_name AS DbColumnName,CASE WHEN  left(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)-1)='' THEN COLUMN_TYPE ELSE  left(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)-1) END AS DataType,CAST(SUBSTRING(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)+1,LOCATE(')',COLUMN_TYPE)-LOCATE('(',COLUMN_TYPE)-1) AS signed) AS Length,column_default  AS  `DefaultValue`,column_comment  AS  `ColumnComment`,CASE WHEN COLUMN_KEY = 'PRI' THEN true ELSE false END AS `IsPrimaryKey`,CASE WHEN EXTRA='auto_increment' THEN true ELSE false END as IsIdentity,CASE WHEN is_nullable = 'YES' THEN true ELSE false END AS `IsNullable`FROM Information_schema.columns where TABLE_NAME='{tableName}' and  TABLE_SCHEMA=(select database()) ORDER BY TABLE_NAME";

使用MySQL創建的表,無論是表注釋、索引,還是字段的類型等等,都會存到MySQL自帶的庫表中,可以通過SQL查出來想要的表、字段信息。
了解information_schema庫,可以在工作中起到意想不到的效果

-- database_name替換為庫名,查出庫中所有表的TABLE_NAME表名、TABLE_COMMENT表注釋
SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema='database_name';

TABLES表

information_schema庫中的TABLES表,存放MySQL所有表的表信息。

常用列
  • TABLE_SCHEMA:數據庫名
  • TABLE_NAME:數據表名
  • TABLE_COMMENT:數據表注釋/說明

查詢某個表的所有字段

select column_name,data_type,column_comment,column_key,extra,character_maximum_length,is_nullable,column_default
from information_schema.columns 
where table_schema = 'seata' and table_name = 'users' ;

組裝表的所有列

select GROUP_CONCAT("t.",column_name) total
from information_schema.columns 
where table_schema = 'seata' and table_name = 'users' and column_name not in ('id');

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214545.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡安全——SSH密碼攻擊實驗

一、實驗目的要求: 二、實驗設備與環境: 三、實驗原理: 四、實驗步驟:? 五、實驗現象、結果記錄及整理: 六、分析討論與思考題解答: 一、實驗目的要求: 1、了解SSH密碼攻擊、FTP密碼攻擊…

【BEV感知 EA-LSS 方案】Edge-aware Lift-splat-shot

前言 本文分享LSS方案的改進方案——EA-LSS,它解決了“深度跳變”問題,提出了一個新框架Edge-aware Lift-splat-shot 。 適用于“多視圖轉BEV”,可以代替原來的LSS模塊,并有效地提高了檢測精度,而推理時間的增加很少。 在nuScenes測試集上驗證,純相機模型或多模態模型…

Jmeter 請求簽名api接口-BeanShell

Jmeter 請求簽名api接口-BeanShell 項目簽名說明編譯擴展jar包jmeter 使用 BeanShell 調用jar包中的簽名方法 項目簽名說明 有簽名算法的api接口本地不好測試,使用BeanShell 擴展jar 包對參數進行簽名,接口簽名算法使用 sha512Hex 算法。簽名的說明如下…

Mybatis是如何進行分頁的?

程序員的公眾號:源1024,獲取更多資料,無加密無套路! 最近整理了一份大廠面試資料《史上最全大廠面試題》,Springboot、微服務、算法、數據結構、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、數據庫等等 …

Django系列之Celery異步框架+RabbitMQ使用

在Django項目中,如何集成使用Celery框架來完成一些異步任務以及定時任務呢? 1. 安裝 pip install celery # celery框架 pip install django-celery-beat # celery定時任務使用 pip install django-celery-results # celery存儲結果使用2. Django集成…

gin投票系統3

對應視頻v1版本 1.優化登陸接口 將同步改為異步 原login前端代碼&#xff1a; <!doctype html> <html lang"en"> <head><meta charset"utf-8"><title>香香編程-投票項目</title> </head> <body> <m…

開關量防抖濾波器(梯形圖和SCL源代碼)

模擬量防抖超限報警功能塊請查看下面文章鏈接: https://rxxw-control.blog.csdn.net/article/details/133969425https://rxxw-control.blog.csdn.net/article/details/133969425 1、開關量防抖濾波器 2、防抖濾波 3、梯形圖代碼

useMemo和useCallback

useMemo和useCallback是React中的兩個優化性能的鉤子&#xff08;Hooks&#xff09;。它們都可以用來緩存計算結果&#xff0c;避免在每次渲染時都重新執行耗時的操作。然而&#xff0c;它們的主要區別在于緩存的內容和使用場景。 useMemo useMemo用于緩存那些計算成本較高的值…

2.Feign使用、上下文隔離及源碼閱讀

目錄 概述使用配置pom.xmlfeign 接口編寫controller 測試降級處理pom.xmlapplication.yml代碼 Feign如何初始化及調用源碼閱讀初始化調用 feign的上下文隔離機制源碼 結束 概述 閱讀此文&#xff0c;可以知曉 feign 使用、上下文隔離及源碼閱讀。源碼涉及兩方面&#xff1a;fe…

課后作業7.3.1:構造一個自己的小操作系統

構造一個自己的 mini 操作系統 任務描述 請實現如下功能&#xff1a; 1.寫一個命令解釋器程序 mysh.c &#xff0c;其功能是接收用戶輸入的命令并給出反饋。要求該程序既支持內部命令 cd、sync、exit &#xff1b;也支持外部命令&#xff0c;即可以接收 cat、ls 等命令&#x…

數據結構與算法-Rust 版讀書筆記-2線性數據結構-雙端隊列

數據結構與算法-Rust 版讀書筆記-2線性數據結構-雙端隊列 1、雙端隊列 deque又稱為雙端隊列&#xff0c;雙端隊列是與隊列類似的項的有序集合。deque有兩個端部&#xff1a;首端和尾端。deque不同于隊列的地方就在于項的添加和刪除是不受限制的&#xff0c;既可以從首尾兩端添…

vue3封裝接口

在src下面創建一個文件夾任意名稱 我拿這個名字舉例子了apiService 相當于創建一個新的文件 // 封裝接口 // apiService.js import axios from axios;// 接口前綴 const API_BASE_URL 前綴;接口后綴export const registerUser async (fileData) > {try {const response …

數據分析 | 頻率編碼和標簽編碼 | Python代碼

數據集見GitHub鏈接&#xff1a;https://github.com/ChuanTaoLai/Frequency-Encoding-And-Label-Encoding 標簽編碼&#xff1a; import pandas as pd from sklearn.preprocessing import LabelEncoderdata1 pd.read_excel(rD:\0文獻整理\網絡入侵檢測\KDD99\KDDTrain.xlsx) …

透析跳躍游戲

關卡名 理解與貪心有關的高頻問題 我會了?? 內容 1.理解跳躍游戲問題如何判斷是否能到達終點 ?? 2.如果能到終點&#xff0c;如何確定最少跳躍次數 ?? 1. 跳躍游戲 leetCode 55 給定一個非負整數數組&#xff0c;你最初位于數組的第一個位置。數組中的每個元素代表…

微信商家收款碼扣多少手續費

很多人想申請低手續費率的收款碼不知從何下手&#xff0c;在參考了大量博客教學之后&#xff0c;終于搞懂了詳細流程以及注意事項。在此記錄一下。我申請的是一個只需要0.2%費率的微信收款碼&#xff0c;申請時間是2022年2月12日。申請之前只需要準備營業執照和法人身份z&#…

JSON在線解析

JSON在線解析及格式化驗證 - JSON.cn JSON在線視圖查看器(Online JSON Viewer)

java中list的addAll用法詳細實例?

List 的 addAll() 方法用于將一個集合中的所有元素添加到另一個 List 中。下面是一個詳細的實例&#xff0c;展示了 addAll() 方法的使用&#xff1a; java Copy code import java.util.ArrayList; import java.util.List; public class AddAllExample { public static v…

設計模式: 關于編程范式的聲明式和命令式編程及應用框架的開發和設計原則

編程范式 命令式編程聲明式編程 上述兩種范式是相對來說的 命令式編程 詳細描述做事過程的方式就可以叫做 命令式例子: 張三媽媽讓張三買食鹽 拿錢&#xff0c;開門&#xff0c;下樓&#xff0c;到商店&#xff0c;付款&#xff0c;帶著食鹽回家 例子&#xff1a;在指定div…

驗證二叉搜索樹[中等]

優質博文&#xff1a;IT-BLOG-CN 一、題目 給你一個二叉樹的根節點root&#xff0c;判斷其是否是一個有效的二叉搜索樹。有效 二叉搜索樹定義如下&#xff1a; 【1】節點的左子樹只包含 小于 當前節點的數。 【2】節點的右子樹只包含 大于 當前節點的數。 【3】所有左子樹和右…

Leetcode 40 組合總和 II

題意理解&#xff1a; 每個數字在每個組合中只能使用 一次 數字可以重復——>難點&#xff08;如何去重&#xff09; 每個組合和target 求組合&#xff0c;對合限制&#xff0c;考慮回溯的方法。——將其抽象為樹結構。 樹的寬度——分支大小 樹的深度——最…