轉(zhuǎn)帖|使用教程|編輯:鮑佳佳|2021-03-02 14:33:51.483|閱讀 388 次
概述:SQL通過(guò)SELECT *(SELECT ALL)子句使選擇表中的所有字段變得非常簡(jiǎn)單。 不幸的是,一旦您從列表中省略一列,SELECT ALL語(yǔ)句就會(huì)消失。 寫(xiě)出每個(gè)列的名稱很快就會(huì)變得乏味,尤其是當(dāng)您碰巧要處理包含數(shù)十個(gè)列的表時(shí)。 如果我們可以選擇除一列之外的每一列怎么辦-通過(guò)排除而不是包含進(jìn)行選擇? 可以辦到。 實(shí)際上,有兩種方法可以做到這一點(diǎn)-一種簡(jiǎn)單,另一種則少一些。 這些將是今天博客的重點(diǎn)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>
SQL通過(guò)SELECT *(SELECT ALL)子句使選擇表中的所有字段變得非常簡(jiǎn)單。 不幸的是,一旦您從列表中省略一列,SELECT ALL語(yǔ)句就會(huì)消失。 寫(xiě)出每個(gè)列的名稱很快就會(huì)變得乏味,尤其是當(dāng)您碰巧要處理包含數(shù)十個(gè)列的表時(shí)。 如果我們可以選擇除一列之外的每一列怎么辦-通過(guò)排除而不是包含進(jìn)行選擇? 可以辦到。 實(shí)際上,有兩種方法可以做到這一點(diǎn)-一種簡(jiǎn)單,另一種則少一些。 這些將是今天博客的重點(diǎn)。
方法1:使用INFORMATION_SCHEMA.COLUMNS表
INFORMATION_SCHEMA提供對(duì)數(shù)據(jù)庫(kù)元數(shù)據(jù)的訪問(wèn),有關(guān)MySQL服務(wù)器的信息,例如數(shù)據(jù)庫(kù)或表的名稱,列的數(shù)據(jù)類型或訪問(wèn)權(quán)限。 更具體地說(shuō),COLUMNS表提供有關(guān)表中列的信息,包括列名。
The Sakila示例數(shù)據(jù)庫(kù)的電影表中包含了最多的列13列。
這是我們使用INFORMATION_SCHEMA.COLUMNS表來(lái)獲取除original_language_id列以外的所有列的方式:
GROUP_CONCAT函數(shù)將所有列名稱連接為一個(gè)逗號(hào)分隔的字符串。 然后,我們可以將字段替換為空字符串!
執(zhí)行查詢
要克服的一個(gè)小障礙是MySQL查詢不能接受動(dòng)態(tài)列名。 解決方案是采用準(zhǔn)備好的語(yǔ)句。 這是設(shè)置@sql變量,準(zhǔn)備語(yǔ)句并執(zhí)行的代碼:
SET @sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), '<columns_to_omit>,', '') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table>' AND TABLE_SCHEMA = '<database>'), ' FROM <table>'); PREPARE stmt1 FROM @sql; EXECUTE stmt1;
在查詢中插入列,表和模式信息會(huì)產(chǎn)生我們想要的結(jié)果:
方法2:使用Navicat
Navicat等數(shù)據(jù)庫(kù)開(kāi)發(fā)和管理工具的主要目標(biāo)是提高生產(chǎn)力。 因此,Navicat旨在使您的工作盡可能快速和輕松。 為此,借助“代碼完成”和可自定義的代碼段,SQL編輯器可幫助您更快地編寫(xiě)代碼,這些代碼段可為關(guān)鍵字提供建議并從編碼中去除重復(fù)項(xiàng)。 而且,如果這還不夠的話,Navicat還提供了一個(gè)稱為“查詢創(chuàng)建工具”的有用工具來(lái)可視化地構(gòu)建查詢。 它使您僅使用SQL的一點(diǎn)點(diǎn)知識(shí)就可以創(chuàng)建和編輯查詢。 雖然Query Builder主要銷售給更多的新手程序員,但是精通SQL的人仍然可以從Query Builder中受益于某些任務(wù)。 這樣的任務(wù)之一就是選擇列。
在查詢創(chuàng)建工具中,表名稱旁邊有一個(gè)復(fù)選框,用于選擇其所有列。 如果單擊它,則只需取消選中original_language_id字段即可將其從列列表中刪除:
單擊確定按鈕,然后關(guān)閉對(duì)話框并將SQL代碼添加到編輯器:
與手動(dòng)編寫(xiě)代碼相比,使用查詢創(chuàng)建工具創(chuàng)建查詢具有一些優(yōu)勢(shì):
總結(jié)
在今天的博客中,我們學(xué)習(xí)了兩種技術(shù)來(lái)選擇表中的每一列,你學(xué)會(huì)了嗎?立即下載Navicat for MySQL體驗(yàn)吧!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: