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

คำสั่ง CREATE TABLE ใน MySQL ด้วยคีย์เวิร์ด KEY

คีย์เวิร์ด KEY ใน MySQL: Synonym ของ INDEX

ใน MySQL KEY เป็น **Synonym (คำที่มีความหมายเหมือนกัน)** ของ INDEX สามารถใช้แทนกันได้ในหลายบริบท

การใช้งาน KEY ใน CREATE TABLE

1. PRIMARY KEY

CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -- หรือ
    Id INT NOT NULL AUTO_INCREMENT KEY,  -- KEY = PRIMARY KEY ใน Column Definition
    Name VARCHAR(50),
    Age INT
);

ใน Column Definition: KEY = PRIMARY KEY (เฉพาะคอลัมน์เดียว)

2. INDEX / KEY (Secondary Index)

-- สร้างตารางก่อน
CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(50),
    Age INT
);

-- เพิ่ม Index ด้วย KEY (เหมือน INDEX)
CREATE INDEX Name_Age_Index ON DemoTable (Name, Age);
-- หรือ
ALTER TABLE DemoTable ADD KEY Name_Age_Index (Name, Age);

3. ตรวจสอบโครงสร้าง

DESC DemoTable;

ผลลัพธ์:

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| Id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| Name  | varchar(50) | YES  | MUL | NULL    |                |
| Age   | int(11)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

คอลัมน์ Key แสดง: PRI = Primary Key, MUL = Non-unique Index (Multiple), UNI = Unique Index

สรุปการใช้ KEY vs INDEX

ตัวอย่างเพิ่มข้อมูลและ Query

INSERT INTO DemoTable (Name, Age) VALUES ('Robert', 21), ('Bob', 23), ('David', 22);
SELECT * FROM DemoTable;

ผลลัพธ์: (เรียงตาม PK Id)

+----+--------+------+
| Id | Name   | Age  |
+----+--------+------+
| 1  | Robert | 21   |
| 2  | Bob    | 23   |
| 3  | David  | 22   |
+----+--------+------+

ข้อแนะนำ

  • ใช้ INDEX ในคำสั่ง CREATE INDEX / ALTER TABLE เพื่อความชัดเจน (Standard SQL)
  • ใช้ PRIMARY KEY แทน KEY ใน Column Definition เพื่อความชัดเจน
  • MySQL จะแสดงเป็น KEY ใน SHOW CREATE TABLE เสมอ
  • Foreign Key: ใช้ FOREIGN KEY ไม่ใช่แค่ KEY
บริบทKEYINDEX
Column Definitioncol INT KEY = PRIMARY KEYไม่ใช้ใน Column Definition
Table ConstraintKEY idx_name (col)INDEX idx_name (col)
ALTER TABLEADD KEY idx (col)ADD INDEX idx (col)
SHOW CREATE TABLEแสดงเป็น KEYแสดงเป็น KEY (MySQL แปลง INDEX เป็น KEY)