Apakah kegunaan seperti dalam mysql

青灯夜游
Lepaskan: 2022-01-06 16:02:38
asal
29367 orang telah melayarinya

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 数据表;
Salin selepas log masuk

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

SELECT 
 字段名 AS `别名`
FROM 数据表;
Salin selepas log masuk

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
Salin selepas log masuk

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;
Salin selepas log masuk

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
Salin selepas log masuk

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;
Salin selepas log masuk

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
Salin selepas log masuk

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`;
Salin selepas log masuk

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
Salin selepas log masuk

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;
Salin selepas log masuk

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
Salin selepas log masuk

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 别名;
Salin selepas log masuk

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
Salin selepas log masuk

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;
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

【 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!