SQL Interview Prep · บทเรียน

คีย์หลัก คีย์นอก และข้อจำกัด

อธิบายคีย์ ความไม่ซ้ำกัน และความถูกต้องของการอ้างอิง ตามแบบที่ผู้สัมภาษณ์ต้องการฟัง

บทเรียน 3 จาก 413 ขั้นตอน

คีย์หลัก คีย์นอก และข้อจำกัด เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. SQL คืออะไร และเหตุใดผู้สัมภาษณ์จึงถามถึง SQL
  2. ลำดับการประมวลผลคิวรีเชิงตรรกะ
  3. คีย์หลัก คีย์นอก และข้อจำกัด
  4. อ่านสคีมาภายใต้ความกดดัน
← กลับไปที่ SQL Interview Prep