目錄:
(1)為表格取別名
(2)為欄位取別名
(免費學習推薦:mysql影片教學)
當表名字很長或執行一些特殊查詢時,為了方便操作或需要多次使用相同的表時,可以為表指定別名,用這個別名代替原來的名稱。為表取別名的基本語法格式為:
表名 [as] 表别名
"表名"為資料庫中儲存的資料表的名稱,「表別名為查詢時指定的表的新名稱,as關鍵字為可選參數」
【例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表分別取別名,並進行連接查詢,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)
由結果可以看到,MySQL可以同時為多個表取別名,而且表別名可以放在不同的位置,如where子句、select列表、on子句以及order by子句等。
自連接是一種特殊的內連接,在連接查詢中的兩個表都是同一個表,其查詢語句如下:
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)
在使用select語句顯示查詢結果是,MySQL會顯示每個select後面指定的輸出列,有些情況下,顯示的列的名稱會很長或名稱不夠直觀,MySQL可以指定列別名,替換字段或表達式。為欄位取別名的基本語法格式為:
列名 [as] 列别名
"列名"為表中欄位定義的名稱,"列別名"為欄位新的名稱,as關鍵字為選用參數。
【例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函數連接這兩個欄位值,並取列別名為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)</p> <p>由結果可以看到,顯示結果的列名稱為select子句後面的計算字段,實際上計算之後的列是沒有名字的,這樣的結果讓人很不容易理解,如果為欄位取一個別名,將會使結果更清晰,SQL語句如下:</p> <pre class="brush:php;toolbar:false">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為計算欄位建立一個別名suppliers_title,顯示結果為指定的列別名,這樣就增強了查詢結果的可讀性。
注意:表別名只在執行查詢的時候使用,並不在傳回結果中顯示,而列別名定義之後,將傳回給客戶端顯示,顯示的結果欄位為欄位列的別名。
#相關免費學習推薦:mysql資料庫(影片)
以上是MySQL查詢函數之 為表格和欄位取別名的詳細內容。更多資訊請關注PHP中文網其他相關文章!