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