คีย์หลักใน SQL: การสร้างและการเพิ่มคีย์ลงในตารางที่มีอยู่แล้ว

⚡ สรุปอย่างชาญฉลาด

คีย์หลักใน SQL Server คือคอลัมน์หรือชุดของคอลัมน์ที่มีค่าเฉพาะตัวระบุแต่ละแถวในตาราง แต่ละตารางจะมีคีย์หลักเพียงหนึ่งเดียว และคอลัมน์เหล่านั้นต้องไม่เป็นค่าว่าง (NULL)

  • 🔑 คีย์หลักคืออะไร: คีย์หลักคือคอลัมน์ตั้งแต่หนึ่งคอลัมน์ขึ้นไปที่มีค่าไม่ซ้ำกัน และใช้ระบุแต่ละแถวในตาราง
  • ???? กฎหลัก: ตารางอนุญาตให้มีคีย์หลักได้เพียงหนึ่งเดียวเท่านั้น ทุกค่าต้องไม่ซ้ำกัน และคอลัมน์คีย์ใดๆ ก็ห้ามมีค่าเป็น NULL
  • 🖱️ วิธีสร้างสองวิธี: ทั้งโปรแกรมออกแบบตารางใน SQL Server Management Studio และคำสั่ง CREATE TABLE ใน T-SQL ต่างก็สามารถกำหนดคีย์หลักได้
  • 🧱 ข้อจำกัด: ภายในคำสั่ง CREATE TABLE ข้อความ CONSTRAINT … PRIMARY KEY จะระบุชื่อคีย์และแสดงรายการคอลัมน์หรือคอลัมน์ต่างๆ ที่เกี่ยวข้อง
  • ➕ เพิ่มข้อมูลลงในตารางที่มีอยู่แล้ว: คำสั่ง ALTER TABLE … ADD CONSTRAINT จะเพิ่มคีย์หลักให้กับคอลัมน์ NOT NULL ของตารางที่มีอยู่แล้ว
  • 🧩 คีย์ผสม: คีย์หลักสามารถรวมคอลัมน์ได้มากถึง 16 คอลัมน์ เพื่อสร้างคีย์ผสมที่ไม่ซ้ำกันในชุดข้อมูลทั้งหมด

คีย์หลักใน SQL Server: วิธีการสร้างและเพิ่มคีย์หลักลงในตารางที่มีอยู่แล้ว

คีย์หลักใน SQL คืออะไร

คีย์หลักใน SQL Server คีย์หลักคือฟิลด์ หรือชุดของฟิลด์ ที่ใช้ระบุระเบียนแต่ละรายการได้อย่างเฉพาะเจาะจง โดยเป็นคอลัมน์หรือชุดของคอลัมน์ที่ทุกค่าในคอลัมน์นั้นไม่ซ้ำกัน กล่าวคือ ไม่มีสองแถวใดที่มีค่าคีย์หลักเดียวกันได้

กฎสำหรับคีย์หลัก

  • แต่ละตารางสามารถมีคีย์หลักได้เพียงหนึ่งเดียวเท่านั้น
  • ค่าทั้งหมดไม่ซ้ำกัน และค่าคีย์หลักสามารถระบุแต่ละแถวได้อย่างเฉพาะเจาะจง
  • ระบบจะไม่อนุญาตให้แทรกแถวที่มีค่าคีย์หลักซ้ำกับตารางเดิม
  • คีย์หลักต้องไม่เป็นค่าว่าง (NULL)

แผนภาพด้านล่างสรุปประเด็นทั้งหมดข้างต้นเกี่ยวกับคีย์หลักใน SQL

แผนภาพสรุปกฎของคีย์หลักใน SQL: ค่าที่ไม่ซ้ำกัน มีหนึ่งคีย์ต่อตาราง และห้ามเป็นค่าว่าง (NULL)

วิธีสร้างคีย์หลักใน SQL Server

คุณสามารถสร้างคีย์หลักได้สองวิธี:

เรามาศึกษาวิธีการแต่ละวิธีโดยละเอียดกันเถอะ

สตูดิโอจัดการเซิร์ฟเวอร์ SQL

ขั้นตอนที่ 1) คลิกขวาที่ชื่อตารางแล้วคลิก ออกแบบ.

คลิกขวาที่ตารางแล้วเลือก Design ใน SQL Server Management Studio

ขั้นตอนที่ 2) คลิกขวาที่ชื่อคอลัมน์แล้วคลิก ตั้งค่าคีย์หลัก.

คลิกขวาที่คอลัมน์ แล้วเลือก "ตั้งค่าคีย์หลัก" ในตัวออกแบบตาราง

ผลลัพธ์: Course_Id ถูกกำหนดให้เป็นคีย์หลักแล้ว โดยแสดงด้วยไอคอนรูปกุญแจที่อยู่ข้างคอลัมน์

คอลัมน์ Course_Id ที่มีไอคอนรูปกุญแจกำกับอยู่ ถือเป็นคีย์หลัก

T-SQL: การสร้างคีย์หลักขณะสร้างตารางใหม่

ด้านล่างนี้คือไวยากรณ์สำหรับ สร้างตาราง โดยใช้คีย์หลักจาก T-SQL

ไวยากรณ์:

CREATE TABLE <Table_Name>
(
Column1 datatype,
Column2 datatype,CONSTRAINT <Name> PRIMARY KEY (Column name)
.
);

ในที่นี้ CONSTRAINT ระบุชื่อคีย์ PRIMARY KEY ระบุคอลัมน์ที่ต้องมีค่าไม่ซ้ำกัน และทุกคอลัมน์ก็ต้องการ PRIMARY KEY ด้วยเช่นกัน ประเภทข้อมูล.

เรามาสร้างตารางที่มีคอลัมน์เดียวเป็นคีย์หลักใน SQL กันเถอะ

ค้นหา:

CREATE TABLE COURSE_TSQL_PK 
(Course_ID Int not Null,
 Course_name Varchar(20)
 CONSTRAINT PK PRIMARY KEY (Course_ID)	
)

ขั้นตอนที่ 1) เรียกใช้คิวรีโดยคลิก ดำเนินงาน.

ดำเนินการคำสั่ง CREATE TABLE เพื่อกำหนดคีย์หลัก Course_ID

ผลลัพธ์: Course_Id ถูกกำหนดให้เป็นคีย์หลักในตาราง COURSE_TSQL_PK แล้ว

ตาราง COURSE_TSQL_PK แสดงว่า Course_ID ถูกตั้งค่าเป็นคีย์หลัก

ตัวอย่าง: ลองมาดูกันว่าระบบอนุญาตให้ป้อนข้อมูลหลายรายการโดยใช้รหัสวิชาเดียวกันหรือไม่

ขั้นตอนที่ 1) แทรกข้อมูลสี่แถวที่มีค่า Course_ID แตกต่างกัน

Insert into COURSE_TSQL_PK values (1,'SQL');
Insert into COURSE_TSQL_PK values (2,'Python');
Insert into COURSE_TSQL_PK values (3,'SQL');
Insert into COURSE_TSQL_PK values (4,'C');

ขั้นตอนที่ 2) ตรวจสอบว่าข้อมูลทั้งหมดถูกแทรกสำเร็จแล้วโดยการเรียกใช้คำสั่ง SELECT

ผลลัพธ์จากคำสั่ง SELECT แสดงสี่แถวที่มีค่า Course_ID แตกต่างกัน

หมายเหตุ: คุณสามารถแทรกค่าซ้ำในคอลัมน์ที่ไม่ใช่คีย์หลักได้

ขั้นตอนที่ 3) ตอนนี้เรามาลองแทรกข้อมูลใหม่โดยใช้ Course_ID ที่มีอยู่แล้ว ซึ่งเป็นคีย์หลักกัน

Insert into COURSE_TSQL_PK values (4,'JAVA');

ผลลัพธ์: ระบบไม่อนุญาตให้แทรกค่าใหม่ เนื่องจากมีค่า 4 อยู่แล้วในคอลัมน์ Course_ID ซึ่งเป็นคีย์หลัก

ข้อความแสดงข้อผิดพลาดปฏิเสธค่าคีย์หลักซ้ำสำหรับ Course_ID

จะเพิ่มคีย์หลักให้กับตารางที่มีอยู่ใน SQL ได้อย่างไร

ต่อไปนี้เราจะมาดูวิธีการเพิ่มคีย์หลักให้กับตารางที่มีอยู่แล้วใน SQL

คุณสามารถใช้คำสั่ง ALTER เพื่อสร้างคีย์หลักได้ อย่างไรก็ตาม คีย์หลักสามารถสร้างได้เฉพาะกับคอลัมน์ที่กำหนดไว้เป็น NOT NULL เท่านั้น คุณไม่สามารถสร้างคีย์หลักบนคอลัมน์ที่อนุญาตให้มีค่า NULL ได้ หากคอลัมน์ใดอนุญาตให้มีค่า NULL อยู่แล้ว คุณต้องเปลี่ยนให้เป็น NOT NULL ก่อน หรือลบและสร้างตารางใหม่

นี่คือไวยากรณ์:

ALTER TABLE tableName
ADD CONSTRAINT constraintName PRIMARY KEY (column_1, column_2, ... column_n);

ตัวอย่างเช่น:

ALTER TABLE students
ADD CONSTRAINT students_pk PRIMARY KEY (admission);

คำสั่ง ALTER TABLE เพิ่มข้อจำกัดคีย์หลักชื่อ students_pk

เราได้เพิ่มข้อจำกัดคีย์หลักให้กับตารางที่มีอยู่แล้ว เพิ่มข้อจำกัดในคอลัมน์การรับเข้าและกำหนดชื่อ students_pk

ข้อเท็จจริงที่น่าสนใจ!

  • คีย์หลักสามารถเป็นการรวมกันของหลายคอลัมน์ได้ การรวมกันแบบนี้เรียกว่าคีย์หลักแบบผสม
  • คีย์หลักสามารถมีได้สูงสุด 16 คอลัมน์

คำถามที่พบบ่อย

ทั้งสองแบบบังคับให้ข้อมูลไม่ซ้ำกัน ตารางข้อมูลอนุญาตให้มีคีย์หลักได้เพียงหนึ่งเดียว และคอลัมน์ของคีย์หลักต้องไม่เป็นค่าว่าง (NULL) ในขณะที่ตารางข้อมูลอาจมีคีย์ที่ไม่ซ้ำกันได้หลายคีย์ และคอลัมน์ที่ไม่ซ้ำกันสามารถรับค่าว่าง (NULL) ได้หนึ่งค่า โดยปกติแล้วคีย์หลักจะกำหนดตัวระบุแถวหลัก

ใช่แล้ว SQL Server จะสร้างดัชนีที่ไม่ซ้ำกันโดยอัตโนมัติเพื่อบังคับใช้คีย์หลัก โดยค่าเริ่มต้น ดัชนีนี้จะเป็นแบบคลัสเตอร์ ซึ่งจะจัดลำดับแถวตามหลักการทางกายภาพ คุณสามารถระบุ NONCLUSTERED แทนได้เมื่อมีคอลัมน์อื่นที่มีดัชนีคลัสเตอร์อยู่แล้ว

คีย์หลักแบบผสม (Composite Primary Key) คือคีย์ที่รวมคอลัมน์ตั้งแต่สองคอลัมน์ขึ้นไปเข้าด้วยกัน โดยค่าของคอลัมน์เหล่านั้นต้องไม่ซ้ำกัน แม้ว่าแต่ละคอลัมน์จะมีค่าซ้ำกันก็ตาม SQL Server อนุญาตให้คีย์หลักครอบคลุมได้สูงสุด 16 คอลัมน์ และมีความยาวรวมสูงสุด 900 ไบต์

คีย์หลักใช้ระบุแต่ละแถวในตารางได้อย่างเฉพาะเจาะจง และไม่อนุญาตให้มีค่าว่าง (NULL) คีย์ต่างประเทศ จัดเก็บค่าที่ต้องตรงกับคีย์หลักหรือคีย์เฉพาะในตารางอื่น เพื่อสร้างความสัมพันธ์ระหว่างสองตารางนั้น

เรียกใช้คำสั่ง ALTER TABLE table_name DROP CONSTRAINT constraint_name คุณต้องทราบชื่อของข้อจำกัด ซึ่งคุณสามารถค้นหาได้ใน sys.key_constraints ลบข้อจำกัดนั้นping คีย์หลักจะลบดัชนีเฉพาะที่รองรับและคีย์ต่างประเทศใดๆ ที่อ้างอิงถึงคีย์หลักนั้นออกไปด้วย

คอลัมน์ IDENTITY ที่สร้างตัวเลขโดยอัตโนมัติเป็นคีย์หลักทดแทนที่นิยมใช้กัน เนื่องจากมีขอบเขตแคบ เสถียร และไม่เป็นค่าว่าง ควรเลือกใช้คีย์ธรรมชาติแทนก็ต่อเมื่อมีคอลัมน์ที่มีอยู่แล้ว เช่น รหัสสินค้า ที่รับประกันว่ามีค่าไม่ซ้ำกันอยู่แล้ว

ใช่. นักบิน GitHub สามารถเขียนคำสั่ง CREATE TABLE และข้อจำกัด PRIMARY KEY จากข้อความแจ้งที่เป็นภาษาธรรมชาติ และแนะนำคอลัมน์คีย์ที่เหมาะสมได้ ตรวจสอบคีย์ที่สร้างขึ้น ประเภทข้อมูล และความสามารถในการรับค่าว่างเสมอ จากนั้นทดสอบสคริปต์ก่อนนำไปใช้งานจริง

เครื่องมือ AI และแมชชีนเลิร์นนิงจะวิเคราะห์ข้อมูลตัวอย่างและรูปแบบการสืบค้นเพื่อแนะนำว่าคอลัมน์ใดควรเป็นคีย์หลัก ตรวจสอบคีย์ที่อาจมีค่าซ้ำหรือค่าว่าง และแนะนำคีย์สำรอง นักพัฒนาจะตรวจสอบความถูกต้องของคำแนะนำแต่ละรายการก่อนนำไปใช้

สรุปโพสต์นี้ด้วย: