คิดว่า MUL, PRI และ UNI ใน MySQL คืออะไร?
จากเอกสารMySQL 5.7 :
- หาก Key คือ PRI คอลัมน์จะเป็นคีย์หลักหรือเป็นหนึ่งในคอลัมน์ในคีย์หลักหลายคอลัมน์
- หาก Key คือ UNI คอลัมน์จะเป็นคอลัมน์แรกของดัชนี UNIQUE (ดัชนี UNIQUE อนุญาตให้มีค่า NULL หลายค่า แต่คุณสามารถบอกได้ว่าคอลัมน์อนุญาตให้ NULL โดยการตรวจสอบฟิลด์ Null หรือไม่)
- หาก Key คือ MUL คอลัมน์จะเป็นคอลัมน์แรกของดัชนีที่ไม่ซ้ำซึ่งอนุญาตให้เกิดค่าที่กำหนดได้หลายค่าภายในคอลัมน์
ตัวอย่างสด
กลุ่มควบคุมตัวอย่างนี้ไม่มีทั้ง PRI, MUL และ UNI:
mysql> create table penguins (foo INT);
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
ตารางที่มีหนึ่งคอลัมน์และดัชนีในหนึ่งคอลัมน์มี MUL:
mysql> create table penguins (foo INT, index(foo));
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | MUL | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
ตารางที่มีคอลัมน์ที่เป็นคีย์หลักมี PRI
mysql> create table penguins (foo INT primary key);
Query OK, 0 rows affected (0.02 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | NO | PRI | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
ตารางที่มีคอลัมน์ที่เป็นคีย์เฉพาะมี UNI:
mysql> create table penguins (foo INT unique);
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | UNI | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
ตารางที่มีดัชนีครอบคลุม foo และ bar มี MUL บน foo เท่านั้น:
mysql> create table penguins (foo INT, bar INT, index(foo, bar));
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | MUL | NULL | |
| bar | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
ตารางที่มีดัชนีแยกกันสองรายการในสองคอลัมน์มี MUL สำหรับแต่ละรายการ
mysql> create table penguins (foo INT, bar int, index(foo), index(bar));
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | MUL | NULL | |
| bar | int(11) | YES | MUL | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
ตารางที่มีดัชนีซึ่งครอบคลุมสามคอลัมน์มี MUL ในวันแรก:
mysql> create table penguins (foo INT,
bar INT,
baz INT,
INDEX name (foo, bar, baz));
Query OK, 0 rows affected (0.01 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| foo | int(11) | YES | MUL | NULL | |
| bar | int(11) | YES | | NULL | |
| baz | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)
ตารางที่มีคีย์ต่างประเทศที่อ้างอิงคีย์หลักของตารางอื่นคือ MUL
mysql> create table penguins(id int primary key);
Query OK, 0 rows affected (0.01 sec)
mysql> create table skipper(id int, foreign key(id) references penguins(id));
Query OK, 0 rows affected (0.01 sec)
mysql> desc skipper;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | MUL | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> desc penguins;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
ติดที่นีโอคอร์เท็กซ์ของคุณและตั้งปุ่มหมุนเป็น "frappe"
MUL
แสดงเฉพาะคอลัมน์นั้นและไม่ใช่คอลัมน์อื่นทั้งหมดด้วย