国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql中as怎么用

2024-07-24 12:33:44
字體:
供稿:網(wǎng)友
  為了查詢方便,MySQL 提供了 AS 關(guān)鍵字來為表和字段指定別名。本節(jié)主要講解如何為表和字段指定一個別名。
 
  在使用 MySQL查詢時,當表名很長或者執(zhí)行一些特殊查詢的時候,為了方便操作或者需要多次使用相同的表時,可以為表指定別名,用這個別名代替表原來的名稱。
 
  為字段指定別名
  有時,列的名稱是一些表達式,使查詢的輸出很難理解。要給列一個描述性名稱,可以使用列別名。
 
  以下語句說明了如何使用列別名:
 
  SELECT
   字段名 AS 別名
  FROM 數(shù)據(jù)表;
  要給字段添加別名,可以使用AS關(guān)鍵詞后跟別名。 如果別名包含空格,則必須引用以下內(nèi)容:
 
  SELECT
   字段名 AS `別名`
  FROM 數(shù)據(jù)表;
  因為AS關(guān)鍵字是可選的,可以在語句中省略它。 請注意,還可以在表達式上使用別名。
 
  我們來看看示例數(shù)據(jù)庫中的employees表,其表結(jié)構(gòu)如下所示 -
 
  mysql> desc employees;
  +----------------+--------------+------+-----+---------+-------+
  | Field          | Type         | Null | Key | Default | Extra |
  +----------------+--------------+------+-----+---------+-------+
  | employeeNumber | int(11)      | NO   | PRI | NULL    |       |
  | lastName       | varchar(50)  | NO   |     | NULL    |       |
  | firstName      | varchar(50)  | NO   |     | NULL    |       |
  | extension      | varchar(10)  | NO   |     | NULL    |       |
  | email          | varchar(100) | NO   |     | NULL    |       |
  | officeCode     | varchar(10)  | NO   | MUL | NULL    |       |
  | reportsTo      | int(11)      | YES  | MUL | NULL    |       |
  | jobTitle       | varchar(50)  | NO   |     | NULL    |       |
  +----------------+--------------+------+-----+---------+-------+
  8 rows in set
  以下查詢選擇員工的名字和姓氏,并將其組合起來生成全名。 CONCAT_WS函數(shù)用于連接名字和姓氏。
 
  SELECT
      CONCAT_WS(', ', lastName, firstname)
  FROM
      employees;
  執(zhí)行上面代碼,得到以下結(jié)果 -
 
  mysql> SELECT
      CONCAT_WS(', ', lastName, firstname)
  FROM
      employees;
  +--------------------------------------+
  | CONCAT_WS(', ', lastName, firstname) |
  +--------------------------------------+
  | Murphy, Diane                        |
  | Patterson, Mary                      |
  | Firrelli, Jeff                       |
  | Patterson, William                   |
  | Bondur, Gerard                       |
  | Bow, Anthony                         |
  | Jennings, Leslie                     |
  | Thompson, Leslie                     |
  | Firrelli, Julie                      |
  | Patterson, Steve                     |
  | Tseng, Foon Yue                      |
  | Vanauf, George                       |
  | Bondur, Loui                         |
  | Hernandez, Gerard                    |
  | Castillo, Pamela                     |
  | Bott, Larry                          |
  | Jones, Barry                         |
  | Fixter, Andy                         |
  | Marsh, Peter                         |
  | King, Tom                            |
  | Nishi, Mami                          |
  | Kato, Yoshimi                        |
  | Gerard, Martin                       |
  +--------------------------------------+
  23 rows in set
  在上面示例中,列標題很難閱讀理解。可以為輸出的標題分配一個有意義的列別名,以使其更可讀,如以下查詢:
 
  SELECT
   CONCAT_WS(', ', lastName, firstname) AS `Full name`
  FROM
   employees;
  執(zhí)行上面代碼,得到以下結(jié)果 -
 
  mysql> SELECT
   CONCAT_WS(', ', lastName, firstname) AS `Full name`
  FROM
   employees;
  +--------------------+
  | Full name          |
  +--------------------+
  | Murphy, Diane      |
  | Patterson, Mary    |
  | Firrelli, Jeff     |
  ... ...
  | King, Tom          |
  | Nishi, Mami        |
  | Kato, Yoshimi      |
  | Gerard, Martin     |
  +--------------------+
  23 rows in set
  在MySQL中,可以使用ORDER BY,GROUP BY和HAVING子句中的列別名來引用該列。
 
  以下查詢使用ORDER BY子句中的列別名按字母順序排列員工的全名:
 
  SELECT
   CONCAT_WS(' ', lastName, firstname) `Full name`
  FROM
   employees
  ORDER BY
   `Full name`;
  執(zhí)行上面代碼,得到以下結(jié)果 -
 
  mysql> SELECT
   CONCAT_WS(' ', lastName, firstname) `Full name`
  FROM
   employees
  ORDER BY
   `Full name`;
  +-------------------+
  | Full name         |
  +-------------------+
  | Bondur Gerard     |
  | Bondur Loui       |
  | Bott Larry        |
  | Bow Anthony       |
  | Castillo Pamela   |
  | Firrelli Jeff     |
  | Firrelli Julie    |
  | Fixter Andy       |
  | Gerard Martin     |
  | Hernandez Gerard  |
  | Jennings Leslie   |
  | Jones Barry       |
  | Kato Yoshimi      |
  | King Tom          |
  | Marsh Peter       |
  | Murphy Diane      |
  | Nishi Mami        |
  | Patterson Mary    |
  | Patterson Steve   |
  | Patterson William |
  | Thompson Leslie   |
  | Tseng Foon Yue    |
  | Vanauf George     |
  +-------------------+
  23 rows in set
  以下語句查詢總金額大于60000的訂單。它在GROUP BY和HAVING子句中使用列別名。
 
  SELECT
   orderNumber `Order no.`,
   SUM(priceEach * quantityOrdered) total
  FROM
   orderdetails
  GROUP BY
   `Order no.`
  HAVING
   total > 60000;
  執(zhí)行上面查詢語句,得到以下結(jié)果 -
 
  mysql> SELECT
   orderNumber `Order no.`,
   SUM(priceEach * quantityOrdered) total
  FROM
   orderdetails
  GROUP BY
   `Order no.`
  HAVING
   total > 60000;
  +-----------+----------+
  | Order no. | total    |
  +-----------+----------+
  |     10165 | 67392.85 |
  |     10287 | 61402.00 |
  |     10310 | 61234.67 |
  +-----------+----------+
  3 rows in set
  請注意,不能在WHERE子句中使用列別名。原因是當MySQL評估求值WHERE子句時,SELECT子句中指定的列的值可能尚未確定。
 
  為表指定別名
  可以使用別名為表添加不同的名稱。使用AS關(guān)鍵字在表名稱分配別名,如下查詢語句語法:
 
  SELECT 字段名 FROM 數(shù)據(jù)表 AS 別名;
  該表的別名稱為表別名。像列別名一樣,AS關(guān)鍵字是可選的,所以完全可以省略它。
 
  一般在包含INNER JOIN,LEFT JOIN,self join子句和子查詢的語句中使用表別名。
  
  兩個表都具有相同的列名稱:customerNumber。如果不使用表別名來指定是哪個表中的customerNumber列,則執(zhí)行查詢時將收到類似以下錯誤消息:
 
  Error Code: 1052. Column 'customerNumber' in on clause is ambiguous
  為避免此錯誤,應(yīng)該使用表別名來限定customerNumber列:
 
  SELECT
   customerName,
   COUNT(o.orderNumber) total
  FROM
   customers c
  INNER JOIN orders o ON c.customerNumber = o.customerNumber
  GROUP BY
   customerName
  HAVING total >=5
  ORDER BY
   total DESC;
  執(zhí)行上面查詢語句,得到以下結(jié)果 -
 
  mysql> SELECT
   customerName,
   COUNT(o.orderNumber) total
  FROM
   customers c
  INNER JOIN orders o ON c.customerNumber = o.customerNumber
  GROUP BY
   customerName
  HAVING total >=5
  ORDER BY
   total DESC;
  +------------------------------+-------+
  | customerName                 | total |
  +------------------------------+-------+
  | Euro+ Shopping Channel       |    26 |
  | Mini Gifts Distributors Ltd. |    17 |
  | Reims Collectables           |     5 |
  | Down Under Souveniers, Inc   |     5 |
  | Danish Wholesale Imports     |     5 |
  | Australian Collectors, Co.   |     5 |
  | Dragon Souveniers, Ltd.      |     5 |
  +------------------------------+-------+
  7 rows in set
  上面的查詢從客戶(customers)和訂單(orders)表中選擇客戶名稱和訂單數(shù)量。 它使用c作為customers表的表別名,o作為orders表的表別名。customers和orders表中的列通過表別名(c和o)引用。
 
  如果您不在上述查詢中使用別名,則必須使用表名稱來引用其列,這樣的會使得查詢?nèi)唛L且可讀性較低,如下 -
 
  SELECT
   customers.customerName,
   COUNT(orders.orderNumber) total
  FROM
   customers
  INNER JOIN orders ON customers.customerNumber = orders.customerNumber
  GROUP BY
   customerName
  ORDER BY
   total DESC
  到此,相信大家對“mysql中as怎么用”有了更深的了解,不妨來實際操作一番吧!

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 高邮市| 鞍山市| 阆中市| 布拖县| 平果县| 象州县| 开江县| 诏安县| 綦江县| 大关县| 凤翔县| 阿巴嘎旗| 淮安市| 新晃| 华宁县| 河南省| 高邑县| 衡阳县| 彰化县| 八宿县| 化德县| 察雅县| 陕西省| 临沂市| 砚山县| 巩义市| 东乡县| 灵石县| 肇州县| 安多县| 竹山县| 峨边| 德保县| 洛隆县| 龙口市| 恩施市| 美姑县| 梅河口市| 霞浦县| 连南| 岑巩县|