Navicat使用教程:如何選擇MySQL中除一列外的所有列
SQL通過SELECT *(SELECT ALL)子句使選擇表中的所有字段變得非常簡單。不幸的是,一旦您從列表中刪除了一列,SELECT ALL語句就會(huì)消失。寫出每個(gè)列的名稱很快就會(huì)變得乏味,尤其是當(dāng)您碰巧要處理包含許多列的表時(shí)。如果我們可以選擇除一列之外的每一列——通過排除而不是包含進(jìn)行選擇,那會(huì)怎么樣呢?可以辦到。實(shí)際上,有兩種方法可以做到這一點(diǎn)——一種簡單,另一種稍微簡單一些。
在第二種方法中,將使用Navicat的數(shù)據(jù)庫工具Navicat for MySQL。Navicat for MySQL是管理和開發(fā) MySQL 或 MariaDB 的理想解決方案。它是一套單一的應(yīng)用程序,能同時(shí)連接 MySQL 和 MariaDB 數(shù)據(jù)庫,并與 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure、阿里云、騰訊云和華為云等云數(shù)據(jù)庫兼容。
點(diǎn)擊下載Navicat for MySQL正式版
下面將詳細(xì)介紹兩種方法:
方法1:使用INFORMATION_SCHEMA.COLUMNS表
INFORMATION_SCHEMA提供對數(shù)據(jù)庫元數(shù)據(jù)、有關(guān)MySQL服務(wù)器的信息(例如數(shù)據(jù)庫或表的名稱、列的數(shù)據(jù)類型或訪問權(quán)限)的訪問。更具體地說,COLUMNS表提供有關(guān)表中列的信息,包括列名。
Sakila示例數(shù)據(jù)庫的film表中包含的列數(shù)最多為13。
這是我們使用INFORMATION_SCHEMA.COLUMNS表來獲取除original_language_id列以外的所有列的方式:
GROUP_CONCAT函數(shù)將所有列名稱連接到一個(gè)逗號(hào)分隔的字符串中。然后,我們可以將字段替換為空字符串!
執(zhí)行查詢
要克服的一個(gè)小障礙是MySQL查詢不能接受動(dòng)態(tài)列名。解決方案是采用準(zhǔn)備好的聲明。下面是設(shè)置@sql變量、準(zhǔn)備語句并執(zhí)行的代碼:
在查詢中插入列、表和模式信息會(huì)產(chǎn)生我們想要的結(jié)果:
方法2:使用Navicat
Navicat等數(shù)據(jù)庫開發(fā)和管理工具的主要目標(biāo)是提高生產(chǎn)力。因此,Navicat旨在使您的工作盡可能快速和輕松。為此,借助“代碼完成”和可自定義的代碼段,SQL編輯器可幫助您更快地編寫代碼,這些代碼段可為關(guān)鍵字提供建議,并消除重復(fù)代碼。如果這還不夠的話,Navicat還提供了一個(gè)稱為Query Builder的有用工具來可視化地構(gòu)建查詢。它使您僅使用SQL的一點(diǎn)點(diǎn)知識(shí)就可以創(chuàng)建和編輯查詢。雖然Query Builder主要銷售給更多的新手程序員,但是精通SQL的人仍然可以從Query Builder中完成某些任務(wù)。這樣的任務(wù)之一就是選擇列。
在查詢生成器中,表名稱旁邊有一個(gè)復(fù)選框,用于選擇其所有列。如果單擊它,則可以簡單地取消選中original_language_id字段以將其從列列表中刪除:
單擊確定按鈕,然后關(guān)閉對話框并將SQL代碼添加到編輯器中:
與手工編寫代碼相比,使用查詢生成器創(chuàng)建查詢具有一些優(yōu)勢:
- 它最大程度地減少輸入錯(cuò)誤
- 它生成易于閱讀的格式化SQL
結(jié)論
在今天的文章中,我們學(xué)習(xí)了幾種技術(shù)來選擇表中的每一列,但只能選擇一兩個(gè)。感興趣的朋友可以下載Navicat for MySQL試用版免費(fèi)評(píng)估~目前正處于疫情期間,大家出門復(fù)工要注意戴口罩哦!
相關(guān)內(nèi)容推薦: