Rumah >pangkalan data >tutorial mysql >Apakah kegunaan seperti dalam mysql

Apakah kegunaan seperti dalam mysql

青灯夜游
青灯夜游asal
2022-01-06 16:02:3829624semak imbas

Dalam mysql, kata kunci "as" digunakan untuk menentukan alias untuk jadual dan medan data: 1. "PILIH nama medan AS alias DARI jadual data;", anda boleh menentukan alias untuk medan. " PILIH nama medan DARI jadual data SEBAGAI alias;", anda boleh menentukan alias untuk jadual.

Apakah kegunaan seperti dalam mysql

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Untuk kemudahan pertanyaan, MySQL menyediakan kata kunci AS untuk menentukan alias untuk jadual dan medan. Bahagian ini menerangkan terutamanya cara untuk menentukan alias untuk jadual dan medan.

Apabila menggunakan pertanyaan MySQL, apabila nama jadual sangat panjang atau semasa melakukan beberapa pertanyaan khas, untuk kemudahan operasi atau apabila jadual yang sama perlu digunakan beberapa kali, anda boleh menentukan alias untuk jadual dan gunakan alias ini Gantikan nama asal jadual.

Nyatakan alias untuk medan

Kadangkala, nama lajur ialah ungkapan yang menjadikan output pertanyaan sukar difahami. Untuk memberi lajur nama deskriptif, gunakan alias lajur.

Pernyataan berikut menggambarkan cara menggunakan alias lajur:

SELECT 
 字段名 AS 别名
FROM 数据表;

Untuk menambah alias pada medan, gunakan kata kunci AS diikuti dengan alias. Jika alias mengandungi ruang, ia mesti dipetik seperti berikut:

SELECT 
 字段名 AS `别名`
FROM 数据表;

Oleh kerana kata kunci AS adalah pilihan, ia boleh diabaikan daripada pernyataan. Ambil perhatian bahawa anda juga boleh menggunakan alias pada ungkapan.

Mari kita lihat jadual employees dalam pangkalan data sampel Struktur jadualnya adalah seperti berikut -

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

Pertanyaan berikut memilih nama pertama dan nama akhir pekerja dan digabungkan. mereka untuk menjana nama Penuh. CONCAT_WS Fungsi digunakan untuk menggabungkan nama pertama dan nama keluarga.

SELECT 
    CONCAT_WS(', ', lastName, firstname)
FROM
    employees;

Laksanakan kod di atas dan dapatkan hasil berikut -

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

Dalam contoh di atas, pengepala lajur sukar dibaca dan difahami. Anda boleh menetapkan alias lajur yang bermakna kepada tajuk output untuk menjadikannya lebih mudah dibaca, seperti pertanyaan berikut:

SELECT
 CONCAT_WS(', ', lastName, firstname) AS `Full name`
FROM
 employees;

Melaksanakan kod di atas, anda mendapat hasil berikut -

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

Dalam MySQL, lajur boleh dirujuk menggunakan alias lajur dalam klausa ORDER BY, GROUP BY dan HAVING.

Pertanyaan berikut mengisih nama penuh pekerja dalam susunan abjad menggunakan alias lajur dalam klausa ORDER BY:

SELECT
 CONCAT_WS(' ', lastName, firstname) `Full name`
FROM
 employees
ORDER BY
 `Full name`;

Melaksanakan kod di atas, kami mendapat keputusan berikut -

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

Penyata berikut menanyakan pesanan dengan jumlah amaun yang lebih besar daripada 60000. Ia menggunakan alias lajur dalam klausa GROUP BY dan HAVING.

SELECT
 orderNumber `Order no.`,
 SUM(priceEach * quantityOrdered) total
FROM
 orderdetails
GROUP BY
 `Order no.`
HAVING
 total > 60000;

Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -

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

Sila ambil perhatian bahawa alias lajur tidak boleh digunakan dalam klausa WHERE. Sebabnya ialah apabila MySQL menilai klausa WHERE, nilai lajur yang dinyatakan dalam klausa SELECT mungkin belum ditentukan lagi.

Tentukan alias untuk jadual

Anda boleh menggunakan alias untuk menambah nama yang berbeza pada jadual. Gunakan kata kunci AS untuk menetapkan alias kepada nama jadual, seperti yang ditunjukkan dalam sintaks pernyataan pertanyaan berikut:

SELECT 字段名 FROM 数据表 AS 别名;

Nama alias jadual ialah alias jadual. Seperti alias lajur, kata kunci AS adalah pilihan, jadi kata kunci itu boleh ditinggalkan sepenuhnya.

biasanya digunakan dalam pernyataan yang mengandungi klausa dan subkueri INNER JOIN, LEFT JOIN, self join.

Mari kita lihat jadual pelanggan (customers) dan pesan (orders) rajah ER mereka adalah seperti berikut -

Apakah kegunaan seperti dalam mysql

dua. Semua jadual mempunyai nama lajur yang sama: customerNumber. Jika anda tidak menggunakan alias jadual untuk menentukan lajur customerNumber di mana jadual itu, anda akan menerima mesej ralat yang serupa dengan yang berikut semasa melaksanakan pertanyaan:

Error Code: 1052. Column 'customerNumber' in on clause is ambiguous

Untuk mengelakkan ralat ini, anda harus menggunakan alias jadual untuk melayakkan customerNumberLajur:

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;

Laksanakan pernyataan pertanyaan di atas dan dapatkan hasil berikut-

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

Pertanyaan di atas adalah daripada pelanggan ( Jadual customers) dan pesanan (orders) Pilih nama pelanggan dan kuantiti pesanan. Ia menggunakan c sebagai alias jadual untuk jadual customers dan o sebagai alias jadual untuk jadual orders. Lajur dalam jadual customers dan orders dirujuk melalui alias jadual (c dan o).

Jika anda tidak menggunakan alias dalam pertanyaan di atas, anda mesti menggunakan nama jadual untuk merujuk kepada lajurnya, yang akan menjadikan pertanyaan itu panjang dan kurang boleh dibaca, seperti berikut -

SELECT
 customers.customerName,
 COUNT(orders.orderNumber) total
FROM
 customers
INNER JOIN orders ON customers.customerNumber = orders.customerNumber
GROUP BY
 customerName
ORDER BY
 total DESC

【 Pengesyoran berkaitan: tutorial video mysql]

Atas ialah kandungan terperinci Apakah kegunaan seperti dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah maksud "=" dalam mysqlArtikel seterusnya:Apakah maksud "=" dalam mysql