English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ON e USING in MySQL?

Di solito, usiamo ON in MySQL. Nella join, usiamo ON su un insieme di colonne. Quando due tabelle condividono il nome della colonna completamente uguale, USING è molto utile.

Esempio aperto.

Creiamo la nostra prima tabella.

mysql> CREATE table ForeignTableDemo
   -> (
   -> Id int,
   -> Name varchar(100),
   - > FK int
   - > );

Creiamo la seconda tabella.

mysql> CREATE table PrimaryTableDemo
   - > (
   - > FK int,
   - > Indirizzo varchar(100),
   - > primary key(FK)
   - > );

Ora aggiungiamo la restrizione.

mysql> ALTER table ForeignTableDemo add constraint FKConst foreign key(FK) references PrimaryTableDemo(FK);
Records: 0     Duplicates: 0     Warnings: 0

Aggiungiamo le registrazioni alla seconda tabella.

mysql> INSERT into PrimaryTableDemo values(1, 'US');
mysql> INSERT into PrimaryTableDemo values(2, 'UK');
mysql> INSERT into PrimaryTableDemo values(3, 'Unknown');

Visualizza tutti i record.

mysql> SELECT * from PrimaryTableDemo;

Di seguito è riportato l'output.

+----+---------+
| FK | Indirizzo |
+----+---------+
|   1 | US                 |
|   2 | UK                 |
|   3 | Sconosciuto |
+----+---------+
3 righe nel set (0.00 sec)

Ora, aggiungiamo le registrazioni alla prima tabella.

mysql> INSERT into ForeignTableDemo values (1, 'John', 1);
mysql> INSERT into ForeignTableDemo values (2, 'Bob', 2);

Ora mostriamo tutti i record della prima tabella.

mysql> SELECT * from ForeignTableDemo;

Questo è l'output.

+------+--------+--------+------+
|Id          |Name          |FK          |
+------+--------+--------+------+
|      1      |John          |      1      |
|      2      |Bob          |      2      |
+------+--------+--------+------+
2 rows in set (0.00 sec)

Di seguito è riportato un esempio di query di connessione diretta che mostra solo le righe corrispondenti. L'abbiamo utilizzato qui.

mysql> SELECT ForeignTableDemo.Id, ForeignTableDemo.Name, PrimaryTableDemo.Address
   - > from ForeignTableDemo
   - > join PrimaryTableDemo
   - > on ForeignTableDemo.FK = PrimaryTableDemo.FK;

Di seguito è riportato l'output.

+------+--------+--------+------+---------+
|Id          |Name          |Address             |
+------+--------+--------+------+---------+
|      1      |John          |US                  |
|      2      |Bob          |UK                  |
+------+--------+--------+------+---------+
2 rows in set (0.14 sec)

Esempio di utilizzo.

Di seguito è riportato un esempio di utilizzo della sintassi USING in MySQL, che mostra i record con FK = 1.

mysql> select * from ForeignTableDemo join PrimaryTableDemo using(FK) where FK=1;

Questo è l'output.

+------+--------+--------+------+---------+
|FK          |Id          |Name      |Address             |
+------+--------+--------+------+---------+
|      1      |      1      |John      |US                  |
+------+--------+--------+------+---------+
1 row in set (0.09 sec)