Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL ON เทียบกับการใช้?


โดยทั่วไป เราใช้ ON ใน MySQL ในการเข้าร่วม เราใช้ ON ในชุดของคอลัมน์ การใช้มีประโยชน์เมื่อทั้งสองตารางใช้คอลัมน์ที่มีชื่อเดียวกันกับที่เข้าร่วม

ตัวอย่าง On.

การสร้างตารางแรกของเรา

mysql> สร้างตาราง ForeignTableDemo -> ( -> Id int, -> Name varchar(100), -> FK int -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.47 วินาที)

กำลังสร้างตารางที่สองของเรา

mysql> สร้างตาราง PrimaryTableDemo -> ( -> FK int, -> Address varchar(100), -> primary key(FK) -> );Query OK, 0 แถวได้รับผลกระทบ (0.47 วินาที)

ให้เราเพิ่มข้อจำกัด

mysql> แก้ไขตาราง ForeignTableDemo เพิ่มข้อจำกัด FKConst foreign key(FK) อ้างอิง PrimaryTableDemo(FK) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (1.54 วินาที) ระเบียน:0 รายการซ้ำ:0 คำเตือน:0

เพื่อเพิ่มบันทึกลงในตารางที่สอง

mysql> INSERT เป็นค่า PrimaryTableDemo (1,'US');Query OK, 1 แถวได้รับผลกระทบ (0.10 วินาที)mysql> INSERT เป็นค่า PrimaryTableDemo (2,'UK');Query OK, 1 แถวได้รับผลกระทบ (0.14 วินาที )mysql> INSERT ลงในค่า PrimaryTableDemo (3,'Unknown');Query OK, 1 แถวได้รับผลกระทบ (0.08 วินาที)

กำลังแสดงรายการทั้งหมด

mysql> SELECT * จาก PrimaryTableDemo;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+----+---------+| FK | ที่อยู่ |+---+---------+| 1 | สหรัฐอเมริกา || 2 | สหราชอาณาจักร || 3 | Unknown |+----+---------+3 แถวในชุด (0.00 วินาที)

ตอนนี้เพื่อเพิ่มระเบียนลงในตารางแรก

mysql> INSERT เป็นค่า ForeignTableDemo (1,'John',1);Query OK, 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> INSERT เป็นค่า ForeignTableDemo (2,'Bob',2); แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.27 วินาที)

ให้เราแสดงระเบียนทั้งหมดจากตารางแรก

mysql> SELECT * จาก ForeignTableDemo;

นี่คือผลลัพธ์

<ก่อนหน้า>+------+------+------+| รหัส | ชื่อ | FK |+------+------+------+| 1 | จอห์น | 1 || 2 | บ๊อบ | 2 |+------+------+------+2 แถวในชุด (0.00 วินาที)

แบบสอบถามสำหรับการรวมตรงที่แสดงเฉพาะแถวที่ตรงกันแสดงอยู่ด้านล่าง เราใช้ ON ที่นี่

mysql> SELECT ForeignTableDemo.Id, ForeignTableDemo.Name, PrimaryTableDemo.Address -> จาก ForeignTableDemo -> เข้าร่วม PrimaryTableDemo -> บน ForeignTableDemo.FK =PrimaryTableDemo.FK;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+------+------+---------+| รหัส | ชื่อ | ที่อยู่ |+------+------+---------+| 1 | จอห์น | สหรัฐอเมริกา || 2 | บ๊อบ | สหราชอาณาจักร |+------+------+---------+2 แถวในชุด (0.14 วินาที)

ตัวอย่างการใช้

ต่อไปนี้เป็นไวยากรณ์ของ USING ใน MySQL ที่แสดงบันทึกโดยที่ FK =1

mysql> เลือก *จาก ForeignTableDemo เข้าร่วม PrimaryTableDemo โดยใช้ (FK) โดยที่ FK=1;

นี่คือผลลัพธ์

<ก่อนหน้า>+------+------+------+---------+| FK | รหัส | ชื่อ | ที่อยู่ |+------+------+------+---------+| 1 | 1 | จอห์น | US |+------+------+------+---------+1 แถวในชุด (0.09 วินาที)