Mysql快速列出來所有列信息實(shí)現(xiàn)思路
需求描述
如何將MySQL數(shù)據(jù)庫(kù)中指定表【tb_order】的所有字段都展示出來,以備注中的中文名為列名。
實(shí)現(xiàn)思路
最終展示效果,即拼接出可執(zhí)行執(zhí)行的SQL,如下圖所示。
建表語(yǔ)句如下所示。
CREATE TABLE `tb_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '訂單id', `user_id` bigint(20) NOT NULL COMMENT '用戶id:長(zhǎng)度20位', `name` varchar(100) DEFAULT NULL COMMENT '商品名稱', `pay_amount` bigint(20) NOT NULL COMMENT '商品價(jià)格:單位分', `order_status` varchar(8) DEFAULT NULL COMMENT '訂單狀態(tài)', `num` bigint(10) DEFAULT '0' COMMENT '商品數(shù)量', `data_info` varchar(255) DEFAULT NULL COMMENT '訂單信息', `is_enable` varchar(10) DEFAULT NULL COMMENT '是否有效:1-有效', `created_user` varchar(20) DEFAULT NULL COMMENT '創(chuàng)建人', `created_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', PRIMARY KEY (`id`) USING BTREE, KEY `indx_user_id` (`user_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
實(shí)現(xiàn)思路,即主要解決以下幾個(gè)問題
1、如何查表信息
可以從 數(shù)據(jù)庫(kù)系統(tǒng)表information_schema的 COLUMNS 中取目標(biāo)表的信息。
SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT FROM information_schema. COLUMNS WHERE TABLE_NAME = 'tb_order';
執(zhí)行SQL查詢結(jié)果如下所示。
2、如何取字段描述信息
列備注的字段描述中有【冒號(hào): 】,如何只取冒號(hào)前的內(nèi)容,可 使用SUBSTRING_INDEX函數(shù)。
格式:SUBSTRING_INDEX(str, delimiter, number)
str 目標(biāo)字符串
delimiter 截取的分隔符
number 表示出現(xiàn)的位置
即 返回從字符串str的第number個(gè)出現(xiàn)的分隔符delimiter之前的子串
對(duì)于本需求,截取冒號(hào)前的字符串,可使用 SUBSTRING_INDEX(column_comment, ‘:’, 1)。
SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT, SUBSTRING_INDEX(column_comment, ':', 1) as columnComment FROM information_schema. COLUMNS WHERE TABLE_NAME = 'tb_order';
執(zhí)行以上SQL,結(jié)果如下所示。
3、如何將列信息一行展示
將列的信息在一行顯示,可 使用GROUP_CONCAT函數(shù)
SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT, GROUP_CONCAT(SUBSTRING_INDEX(column_comment, ':', 1)) as columnComment FROM information_schema. COLUMNS WHERE TABLE_NAME = 'tb_order';
執(zhí)行以上SQL如下所示。
4、拼接最終結(jié)果
使用 CONCAT 函數(shù),拼接想要關(guān)聯(lián)展示的信息,比如 select 、as 等,即可將信息完全展示,最終SQL如下所示,使用時(shí) 替換其中的【tb_order】即可。
SELECT CONCAT('select ', GROUP_CONCAT(CONCAT(COLUMN_NAME, ' as `', SUBSTRING_INDEX(column_comment, ':', 1)), '`'), ' from ', 'tb_order') AS querySql FROM information_schema.COLUMNS WHERE TABLE_NAME = 'tb_order';
執(zhí)行以上SQL,結(jié)果如下所示。
注:中文作為列的命名 可使用【`】,英文狀態(tài)下 esc鍵 下一行的第一個(gè)鍵。
復(fù)制出來的拼接的結(jié)果,即本案例中想要展示的內(nèi)容,如下所示。
SELECT id AS `訂單id`, user_id AS `用戶id`, NAME AS `商品名稱`, pay_amount AS `商品價(jià)格`, order_status AS `訂單狀態(tài)`, num AS `商品數(shù)量`, data_info AS `訂單信息`, is_enable AS `是否有效`, created_user AS `創(chuàng)建人`, created_time AS `創(chuàng)建時(shí)間` FROM tb_order
直接執(zhí)行即可,控制臺(tái)信息如下所示。
以上即本案例的過程,可參考使用。
到此這篇關(guān)于Mysql快速列出來所有列信息的文章就介紹到這了,更多相關(guān)mysql所有列信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用tcpdump對(duì)mysql進(jìn)行抓包操作技巧
利用tcpdump對(duì)mysql進(jìn)行抓包操作,命令簡(jiǎn)單,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2016-12-12MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要區(qū)別整理
這篇文章主要介紹了MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要區(qū)別整理,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-08-08MySQL中Distinct和Group By語(yǔ)句的基本使用教程
這篇文章主要介紹了MySQL中Distinct和Group By語(yǔ)句的基本使用教程,這里主要是針對(duì)查詢結(jié)果去重的用法,需要的朋友可以參考下2015-12-12mysql 中 replace into 與 insert into on duplicate key update 的
這篇文章主要介紹了mysql 中 replace into 與 insert into on duplicate key update 的用法和不同點(diǎn),結(jié)合實(shí)例形式分析了replace into 與 insert into on duplicate key update的功能、基本用法與操作注意事項(xiàng),需要的朋友可以參考下2020-02-02MySQL 5.7 學(xué)習(xí)心得之安全相關(guān)特性
這篇文章主要介紹了MySQL 5.7 學(xué)習(xí)心得之安全相關(guān)特性 的相關(guān)資料,需要的朋友可以參考下2016-07-07MySql連接數(shù)據(jù)庫(kù)常用參數(shù)及代碼解讀
這篇文章主要介紹了MySql連接數(shù)據(jù)庫(kù)常用參數(shù)及代碼解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02MySQL數(shù)據(jù)庫(kù)多表聯(lián)合查詢代碼示例
所謂聯(lián)合就是把多個(gè)表的記錄往一起合并,一起進(jìn)行查詢,也叫多表查詢,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)多表聯(lián)合查詢的相關(guān)資料,需要的朋友可以參考下2024-01-01