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.
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.
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 klausaWHERE
, nilai lajur yang dinyatakan dalam klausaSELECT
mungkin belum ditentukan lagi.
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 -
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 customerNumber
Lajur:
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!