SQL經過SELECT *(SELECT ALL)子句使選擇表中的全部字段變得很是簡單。不幸的是,一旦您從列表中刪除了一列,SELECT ALL語句就會消失。寫出每一個列的名稱很快就會變得乏味,尤爲是當您碰巧要處理包含許多列的表時。若是咱們能夠選擇除一列以外的每一列——經過排除而不是包含進行選擇,那會怎麼樣呢?能夠辦到。實際上,有兩種方法能夠作到這一點——一種簡單,另外一種稍微簡單一些。程序員
下面將詳細介紹兩種方法:sql
方法1:使用INFORMATION_SCHEMA.COLUMNS表數據庫
INFORMATION_SCHEMA提供對數據庫元數據、有關MySQL服務器的信息(例如數據庫或表的名稱、列的數據類型或訪問權限)的訪問。更具體地說,COLUMNS表提供有關表中列的信息,包括列名。服務器
Sakila示例數據庫的film表中包含的列數最多爲13。編輯器
這是咱們使用INFORMATION_SCHEMA.COLUMNS表來獲取除original_language_id列之外的全部列的方式:ide
GROUP_CONCAT函數將全部列名稱鏈接到一個逗號分隔的字符串中。而後,咱們能夠將字段替換爲空字符串!函數
執行查詢工具
要克服的一個小障礙是MySQL查詢不能接受動態列名。解決方案是採用準備好的聲明。下面是設置@sql變量、準備語句並執行的代碼:學習
在查詢中插入列、表和模式信息會產生咱們想要的結果:ui
方法2:使用Navicat
Navicat等數據庫開發和管理工具的主要目標是提升生產力。所以,Navicat旨在使您的工做盡量快速和輕鬆。爲此,藉助「代碼完成」和可自定義的代碼段,SQL編輯器可幫助您更快地編寫代碼,這些代碼段可爲關鍵字提供建議,並消除重複代碼。若是這還不夠的話,Navicat還提供了一個稱爲Query Builder的有用工具來可視化地構建查詢。它使您僅使用SQL的一點點知識就能夠建立和編輯查詢。雖然Query Builder主要銷售給更多的新手程序員,可是精通SQL的人仍然能夠從Query Builder中完成某些任務。這樣的任務之一就是選擇列。
在查詢生成器中,表名稱旁邊有一個複選框,用於選擇其全部列。若是單擊它,則能夠簡單地取消選中original_language_id字段以將其從列列表中刪除:
單擊肯定按鈕,而後關閉對話框並將SQL代碼添加到編輯器中:
與手工編寫代碼相比,使用查詢生成器建立查詢具備一些優點:
它最大程度地減小輸入錯誤
它生成易於閱讀的格式化SQL
結論
在今天的文章中,咱們學習了幾種技術來選擇表中的每一列,但只能選擇一兩個。