溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL查詢函數(shù)之為表和字段取別名的案例

發(fā)布時(shí)間:2021-03-18 12:58:21 來源:億速云 閱讀:971 作者:小新 欄目:MySQL數(shù)據(jù)庫

這篇文章將為大家詳細(xì)講解有關(guān)MySQL查詢函數(shù)之為表和字段取別名的案例,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

(1)、為表取別名

當(dāng)表名字很長或者執(zhí)行一些特殊查詢時(shí),為了方便操作或者需要多次使用相同的表時(shí),可以為表指定別名,用這個(gè)別名代替原來的名稱。為表取別名的基本語法格式為:

表名 [as] 表別名

"表名"為數(shù)據(jù)庫中存儲的數(shù)據(jù)表的名稱,“表別名為查詢時(shí)指定的表的新名稱,as關(guān)鍵字為可選參數(shù)”

【例1】為orders表取別名o,查詢30001訂單的下單日期,SQL語句如下;

mysql> select * from orders as o    -> where o.o_num = 30001;+-------+---------------------+-------+| o_num | o_date              | c_id  |+-------+---------------------+-------+| 30001 | 2008-09-01 00:00:00 | 10001 |+-------+---------------------+-------+1 row in set (0.00 sec)

【例2】為customers和orders表分別取別名,并進(jìn)行連接查詢,SQL語句如下:

mysql> select c.c_id,o.o_num    -> from customers as c left join orders as o    -> on c.c_id = o.c_id;+-------+-------+| c_id  | o_num |+-------+-------+| 10001 | 30001 || 10003 | 30002 || 10004 | 30003 || 10001 | 30005 || 10002 |  NULL |+-------+-------+5 rows in set (0.05 sec)

由結(jié)果可以看到,MySQL可以同時(shí)為多個(gè)表取別名,而且表別名可以放在不同的位置,如where子句、select列表、on子句以及order by子句等。

自連接是一種特殊的內(nèi)連接,在連接查詢中的兩個(gè)表都是同一個(gè)表,其查詢語句如下:

mysql> select f1.f_id,f1.f_name    -> from fruits as f1,fruits as f2    -> where f1.s_id = f2.s_id and f2.f_id = 'a1';+------+------------+| f_id | f_name     |+------+------------+| a1   | apple      || b1   | blackberry || c0   | cherry     |+------+------------+3 rows in set (0.00 sec)
(2)、為字段取別名

在使用select語句顯示查詢結(jié)果是,MySQL會顯示每個(gè)select后面指定的輸出列,有些情況下,顯示的列的名稱會很長或者名稱不夠直觀,MySQL可以指定列別名,替換字段或者表達(dá)式。為字段取別名的基本語法格式為:

列名 [as] 列別名

"列名"為表中字段定義的名稱,"列別名"為字段新的名稱,as關(guān)鍵字為可選參數(shù)。

【例1】查詢fruits表,為f_name取別名fruit_name、f_price取別名fruit_price,再為fruits表取別名f1,查詢表中f_price<8的水果名稱,SQL語句如下:

mysql> select f1.f_name as fruits_name,f1.f_price as fruit_price    -> from fruits as f1    -> where f1.f_price <8;+-------------+-------------+| fruits_name | fruit_price |+-------------+-------------+| lemon       |        6.40 || apple       |        5.20 || apricot     |        2.20 || berry       |        7.60 || xxxx        |        3.60 || cherry      |        3.20 || xbabay      |        2.60 || grape       |        5.30 || xbabay      |        3.60 |+-------------+-------------+9 rows in set (0.00 sec)

【例2】查詢suppliers表中字段s_name和s_city,使用concat函數(shù)連接這兩個(gè)字段值,并取列別名為suppliers_title。

mysql> select concat(trim(s_name),'(',trim(s_city),')')
    -> from suppliers    -> order by s_name;+-------------------------------------------+| concat(trim(s_name),'(',trim(s_city),')') |+-------------------------------------------+| ACME(Shanghai)                            || DK Inc(Zhengzhou)                         || FastFruit Inc.(Tianjin)                   || FNK Inc.(Zhongshan)                       || Good Set(Taiyuan)                         || Just Eat Ours(Beijing)                    || LT Supplies(Chongqing)                    |+-------------------------------------------+7 rows in set (0.00 sec)

由結(jié)果可以看到,顯示結(jié)果的列名稱為select子句后面的計(jì)算字段,實(shí)際上計(jì)算之后的列是沒有名字的,這樣的結(jié)果讓人很不容易理解,如果為字段取一個(gè)別名,將會使結(jié)果更清晰,SQL語句如下:

mysql> select concat(trim(s_name),'(',trim(s_city),')')
    -> as suppliers_title    -> from suppliers    -> order by s_name;+-------------------------+| suppliers_title         |+-------------------------+| ACME(Shanghai)          || DK Inc(Zhengzhou)       || FastFruit Inc.(Tianjin) || FNK Inc.(Zhongshan)     || Good Set(Taiyuan)       || Just Eat Ours(Beijing)  || LT Supplies(Chongqing)  |+-------------------------+7 rows in set (0.00 sec)

可以看到,select增加了 as suppliers_title,它指示了MySQL為計(jì)算字段創(chuàng)建一個(gè)別名suppliers_title,顯示結(jié)果為指定的列別名,這樣就增強(qiáng)了查詢結(jié)果的可讀性。

注意:表別名只在執(zhí)行查詢的時(shí)候使用,并不在返回結(jié)果中顯示,而列別名定義之后,將返回給客戶端顯示,顯示的結(jié)果字段為字段列的別名。

關(guān)于“MySQL查詢函數(shù)之為表和字段取別名的案例”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI