คีย์หลัก คีย์นอก และข้อจำกัด
อธิบายคีย์ ความไม่ซ้ำกัน และความถูกต้องของการอ้างอิง ตามแบบที่ผู้สัมภาษณ์ต้องการฟัง
คีย์หลัก คีย์นอก และข้อจำกัด เป็นบทเรียน SQL Interview Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Interview Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดคำถามเรื่องคีย์จึงเกิดขึ้นเสมอ
หลังจากนิยาม SQL แล้ว ผู้สัมภาษณ์มักหันมาถามเรื่องคีย์และข้อจำกัด แนวคิดที่เชื่อมโยงทั้งสองเรื่องคือความสมบูรณ์ของข้อมูล ซึ่งหมายถึงกฎที่ฐานข้อมูลบังคับใช้เพื่อป้องกันไม่ให้ข้อมูลผิดพลาดถูกเพิ่มเข้ามา
คีย์หลักคืออะไร
คีย์หลักใช้ระบุแถวแต่ละแถวโดยไม่ซ้ำกัน คีย์หลักต้องไม่ซ้ำกันและไม่เป็นค่าว่างเสมอ และแต่ละตารางมีคีย์หลักได้ไม่เกินหนึ่งคีย์ อธิบายให้ชัดเจนเพื่อแสดงความเข้าใจ
CREATE TABLE customers (
id INTEGER PRIMARY KEY,
email VARCHAR(255) NOT NULL,
name VARCHAR(100)
);คีย์ธรรมชาติเทียบกับคีย์ทดแทน
จะใช้ข้อมูลจริงหรือหมายเลขที่สร้างขึ้น คำตอบคือคีย์ธรรมชาติใช้ข้อมูลที่มีอยู่และไม่ซ้ำกัน ส่วนคีย์ทดแทนคือรหัสที่สร้างขึ้น ทีมส่วนใหญ่เลือกใช้คีย์ทดแทน เพราะมีความคงที่
คีย์หลักประกอบ
คีย์หลักสามารถครอบคลุมมากกว่าหนึ่งคอลัมน์ได้ ซึ่งเรียกว่าคีย์ประกอบ มักพบในตารางเชื่อมโยง โดยใช้คีย์ต่างประเทศสองคีย์ร่วมกันเพื่อระบุแต่ละแถว
CREATE TABLE enrollments (
student_id INTEGER,
course_id INTEGER,
enrolled_on DATE,
PRIMARY KEY (student_id, course_id)
);คีย์หลักเทียบกับข้อจำกัดแบบไม่ซ้ำ
คำถามที่มักเจอคือ คีย์หลักต่างจากข้อจำกัดแบบไม่ซ้ำอย่างไร ทั้งสองอย่างบังคับให้ค่าไม่ซ้ำกัน แต่แต่ละตารางมีคีย์หลักได้หนึ่งคีย์และต้องไม่เป็นค่าว่าง ขณะที่มีข้อจำกัดแบบไม่ซ้ำได้หลายรายการ และแต่ละรายการอนุญาตให้มีค่า NULL ได้
CREATE TABLE users (
id INTEGER PRIMARY KEY,
email VARCHAR(255) UNIQUE,
username VARCHAR(50) UNIQUE
);คีย์ต่างประเทศคืออะไร
คีย์ต่างประเทศอ้างอิงคีย์หลักของอีกตารางหนึ่ง และบังคับใช้ความสมบูรณ์ของการอ้างอิง กล่าวคือ คุณไม่สามารถเพิ่มแถวลูกที่ชี้ไปยังแถวแม่ซึ่งไม่มีอยู่จริงได้
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer_id INTEGER REFERENCES customers(id),
amount NUMERIC(10,2)
);การดำเนินการอ้างอิง: ON DELETE / ON UPDATE
“หากลูกค้าถูกลบ คำสั่งซื้อจะเกิดอะไรขึ้น” นี่คือการดำเนินการอ้างอิง: RESTRICT จะป้องกันการลบ ซึ่งเป็นค่าเริ่มต้น CASCADE จะลบแถวลูก และ SET NULL จะล้างค่าคีย์
CREATE TABLE order_items (
id INTEGER PRIMARY KEY,
order_id INTEGER REFERENCES orders(id) ON DELETE CASCADE
);NOT NULL, CHECK และ DEFAULT
ข้อจำกัดอีกสามอย่างช่วยให้ข้อมูลมีความสมบูรณ์ครบถ้วน: NOT NULLห้ามค่าที่ขาดหาย CHECKบังคับใช้กฎอย่าง stock >= 0 และ DEFAULTกำหนดค่าเริ่มต้นสำรอง
CREATE TABLE products (
id INTEGER PRIMARY KEY,
price NUMERIC(10,2) NOT NULL DEFAULT 0,
stock INTEGER CHECK (stock >= 0)
);ตัวอย่าง: การออกแบบโดยคำนึงถึงความสมบูรณ์ของข้อมูล
ลองออกแบบตารางการยืมหนังสือของห้องสมุด โค้ดด้านล่างใช้คีย์ต่างประเทศสองคีย์ กำหนดวันครบกำหนดเป็น NOT NULL และใช้กฎไม่ซ้ำเพื่อป้องกันไม่ให้หนังสือเล่มเดียวกันถูกยืมซ้ำในเวลาเดียวกัน
CREATE TABLE loans (
id INTEGER PRIMARY KEY,
book_id INTEGER NOT NULL REFERENCES books(id),
member_id INTEGER NOT NULL REFERENCES members(id),
due_date DATE NOT NULL,
returned BOOLEAN DEFAULT false
);วิธีอธิบายเรื่องความสมบูรณ์ของข้อมูล
กล่าวถึงความสมบูรณ์ของข้อมูลสามประเภทเพื่อแสดงความเข้าใจในระดับลึก ได้แก่ ความสมบูรณ์ของเอนทิตีจากคีย์หลัก ความสมบูรณ์ของการอ้างอิงจากคีย์ต่างประเทศ และความสมบูรณ์ของโดเมนจาก NOT NULL, CHECK และชนิดข้อมูล
การเพิ่มข้อจำกัดให้ตารางที่มีอยู่
หากถูกถามให้เพิ่มข้อจำกัดให้ตารางที่มีอยู่ ให้ใช้ ALTER TABLE ... ADD CONSTRAINT ประเด็นที่ควรกล่าวถึงคือคำสั่งนี้อาจล้มเหลว หากแถวปัจจุบันละเมิดกฎใหม่อยู่แล้ว
ALTER TABLE orders
ADD CONSTRAINT fk_orders_customer
FOREIGN KEY (customer_id) REFERENCES customers(id);ตรวจสอบความเข้าใจ
แยกความแตกต่างระหว่างคีย์หลักกับข้อจำกัดแบบไม่ซ้ำ
สรุปทบทวน
สรุปทบทวน: คีย์หลักต้องไม่ซ้ำกันและไม่เป็นค่าว่าง มีได้หนึ่งคีย์ต่อตาราง ส่วนข้อจำกัดแบบไม่ซ้ำอนุญาตให้มีค่า NULL และมีได้หลายรายการ และคีย์ต่างประเทศใช้บังคับความสมบูรณ์ของการอ้างอิง
เรียนรู้ SQL ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “คีย์หลัก คีย์นอก และข้อจำกัด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คีย์หลัก คีย์นอก และข้อจำกัด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Interview Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คีย์หลัก คีย์นอก และข้อจำกัด”
อธิบายคีย์ ความไม่ซ้ำกัน และความถูกต้องของการอ้างอิง ตามแบบที่ผู้สัมภาษณ์ต้องการฟัง คุณปฏิบัติ SQL Interview Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Interview Prep หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Interview Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “คีย์หลัก คีย์นอก และข้อจำกัด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Interview Prep นี้ได้ไหม
ได้ บทเรียน SQL Interview Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- SQL คืออะไร และเหตุใดผู้สัมภาษณ์จึงถามถึง SQL
- ลำดับการประมวลผลคิวรีเชิงตรรกะ
- คีย์หลัก คีย์นอก และข้อจำกัด
- อ่านสคีมาภายใต้ความกดดัน