คุณสามารถสร้างและปรับเปลี่ยนตาราง ข้อจํากัด ดัชนี และความสัมพันธ์ใน Access โดยการเขียนคิวรีแบบสร้างข้อกําหนดข้อมูลในมุมมอง SQL บทความนี้จะอธิบายคิวรีแบบสร้างข้อกําหนดข้อมูลและวิธีการใช้คิวรีเหล่านั้นเพื่อสร้างตาราง ข้อจํากัด ดัชนี และความสัมพันธ์ บทความนี้ยังช่วยให้คุณตัดสินใจได้ว่าเมื่อใดควรใช้คิวรีแบบสร้างข้อกําหนดข้อมูล
ในบทความนี้
ภาพรวม
คิวรีแบบสร้างข้อกําหนดข้อมูลจะไม่เรียกใช้ข้อมูล ซึ่งต่างจากคิวรี Access อื่นๆ แต่คิวรีแบบสร้างข้อกําหนดข้อมูลจะใช้ภาษากําหนดโครงสร้างข้อมูลเพื่อสร้าง ปรับเปลี่ยน หรือลบวัตถุฐานข้อมูลแทน
หมายเหตุ: ภาษากําหนดโครงสร้างข้อมูล (DDL) เป็นส่วนหนึ่งของ Structured Query Language (SQL)
คิวรีแบบสร้างข้อกําหนดข้อมูลอาจสะดวกมาก คุณสามารถลบและสร้างส่วนต่างๆ ของ Schema ฐานข้อมูลของคุณใหม่เป็นประจําได้โดยการเรียกใช้คิวรีบางรายการ พิจารณาใช้คิวรีแบบสร้างข้อกําหนดข้อมูล ถ้าคุณคุ้นเคยกับคําสั่ง SQL และคุณวางแผนที่จะลบและสร้างตาราง ข้อจํากัด ดัชนี หรือความสัมพันธ์เฉพาะใหม่
คำเตือน: การใช้แบบสอบถามแบบสร้างข้อกําหนดข้อมูลเพื่อปรับเปลี่ยนวัตถุฐานข้อมูลอาจมีความเสี่ยงได้ ถ้าคุณทําผิดพลาด คุณอาจสูญเสียข้อมูลหรือเปลี่ยนการออกแบบของตารางโดยไม่ได้ตั้งใจ โปรดระมัดระวังเมื่อคุณใช้คิวรีแบบสร้างข้อกําหนดข้อมูลเพื่อปรับเปลี่ยนวัตถุในฐานข้อมูลของคุณ ถ้าคุณไม่รับผิดชอบในการรักษาฐานข้อมูลที่คุณกําลังใช้ อยู่ คุณควรปรึกษากับผู้ดูแลระบบของฐานข้อมูลก่อนที่จะเรียกใช้คิวรีแบบสร้างข้อกําหนดข้อมูล
สิ่งสำคัญ: ทําสําเนาสํารองของตารางที่เกี่ยวข้องก่อนที่คุณจะเรียกใช้คิวรีแบบสร้างข้อกําหนดข้อมูล
คําสําคัญ DDL
คำสำคัญ |
ใช้ |
CREATE |
สร้างดัชนีหรือตารางที่ยังไม่มีอยู่ |
ALTER |
ปรับเปลี่ยนตารางหรือคอลัมน์ที่มีอยู่ |
DROP |
ลบตาราง คอลัมน์ หรือข้อจํากัดที่มีอยู่ |
ADD |
เพิ่มคอลัมน์หรือข้อจํากัดลงในตาราง |
COLUMN |
ใช้กับ ADD, ALTER หรือ DROP |
CONSTRAINT |
ใช้กับ ADD, ALTER หรือ DROP |
INDEX |
ใช้กับ CREATE |
TABLE |
ใช้กับ ALTER, CREATE หรือ DROP |
สร้างหรือปรับเปลี่ยนตาราง
เมื่อต้องการสร้างตาราง คุณสามารถใช้คําสั่ง CREATE TABLE คําสั่ง CREATE TABLE มีไวยากรณ์ต่อไปนี้:
CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])
องค์ประกอบที่จําเป็นอย่างเดียวของคําสั่ง CREATE TABLE คือคําสั่ง CREATE TABLE และชื่อของตาราง แต่โดยปกติคุณจะต้องกําหนดบางเขตข้อมูลหรือแง่มุมอื่นของตาราง พิจารณาตัวอย่างง่ายๆ นี้
สมมติว่าคุณต้องการสร้างตารางเพื่อจัดเก็บชื่อ ปี และราคารถยนต์มือสองที่คุณกําลังพิจารณาซื้อ คุณต้องการใส่ชื่อและอักขระสําหรับปีได้สูงสุด 30 อักขระ เมื่อต้องการใช้คิวรีแบบสร้างข้อกําหนดข้อมูลเพื่อสร้างตาราง ให้ทําดังต่อไปนี้
หมายเหตุ: ก่อนอื่นคุณอาจต้องเปิดใช้งานเนื้อหาของฐานข้อมูลเพื่อให้คิวรีแบบสร้างข้อกําหนดข้อมูลทํางาน
-
บนแถบข้อความ ให้คลิก เปิดใช้งานเนื้อหา
สร้างตาราง
-
บนแท็บ สร้าง ในกลุ่ม แมโคร & โค้ด ให้คลิก ออกแบบคิวรี
-
บนแท็บ ออกแบบ ในกลุ่ม ชนิดคิวรี ให้คลิก คํานิยามข้อมูล
ตารางออกแบบจะถูกซ่อน และแท็บวัตถุมุมมอง SQL จะแสดงขึ้น
-
พิมพ์คําสั่ง SQL ต่อไปนี้:
CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
-
บนแท็บ ออกแบบ ในกลุ่ม ผลลัพธ์ ให้คลิก เรียกใช้
ปรับเปลี่ยนตาราง
เมื่อต้องการปรับเปลี่ยนตาราง คุณสามารถใช้คําสั่ง ALTER TABLE คุณสามารถใช้คําสั่ง ALTER TABLE เพื่อเพิ่ม ปรับเปลี่ยน หรือปล่อย (เอาออก) คอลัมน์หรือข้อจํากัดได้ คําสั่ง ALTER TABLE มีไวยากรณ์ต่อไปนี้:
ALTER TABLE table_name predicate
โดยเพรดิเคตสามารถเป็นอย่างใดอย่างหนึ่งต่อไปนี้:
ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]
ADD CONSTRAINT multifield_constraint
ALTER COLUMN field type[(size)]
DROP COLUMN field
DROP CONSTRAINT constraint
สมมติว่าคุณต้องการเพิ่มเขตข้อมูลข้อความ 10 อักขระเพื่อเก็บข้อมูลเกี่ยวกับสภาพของรถแต่ละคัน คุณสามารถทําดังต่อไปนี้:
-
บนแท็บ สร้าง ในกลุ่ม แมโคร & โค้ด ให้คลิก ออกแบบคิวรี
-
บนแท็บ ออกแบบ ในกลุ่ม ชนิดคิวรี ให้คลิก คํานิยามข้อมูล
ตารางออกแบบจะถูกซ่อน และแท็บวัตถุมุมมอง SQL จะแสดงขึ้น
-
พิมพ์คําสั่ง SQL ต่อไปนี้:
ALTER TABLE Cars ADD COLUMN Condition TEXT(10)
-
บนแท็บ ออกแบบ ในกลุ่ม ผลลัพธ์ ให้คลิก เรียกใช้
วิธีสร้างดัชนี
เมื่อต้องการสร้างดัชนีบนตารางที่มีอยู่ ให้คุณใช้คําสั่ง CREATE INDEX คําสั่ง CREATE INDEX มีไวยากรณ์ต่อไปนี้:
CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]
องค์ประกอบที่จําเป็นเท่านั้นคือคําสั่ง CREATE INDEX, ชื่อของดัชนี, อาร์กิวเมนต์ ON, ชื่อของตารางที่มีเขตข้อมูลที่คุณต้องการทําดัชนี และรายการของเขตข้อมูลที่จะรวมไว้ในดัชนี
-
อาร์กิวเมนต์ DESC ทําให้ดัชนีถูกสร้างขึ้นในลําดับจากมากไปหาน้อย ซึ่งจะเป็นประโยชน์ถ้าคุณเรียกใช้คิวรีที่ค้นหาค่าสูงสุดสําหรับเขตข้อมูลที่มีการทําดัชนีบ่อยๆ หรือเรียงลําดับเขตข้อมูลที่มีการทําดัชนีจากมากไปหาน้อย ตามค่าเริ่มต้น ดัชนีจะถูกสร้างขึ้นจากน้อยไปหามาก
-
อาร์กิวเมนต์ WITH PRIMARY จะสร้างเขตข้อมูลที่เป็นดัชนีเป็น คีย์หลัก ของตาราง
-
อาร์กิวเมนต์ WITH DISALLOW NULL ทําให้ดัชนีกําหนดให้ต้องใส่ค่าสําหรับเขตข้อมูลที่เป็นดัชนี นั่นคือ ไม่อนุญาตให้มีค่า Null
สมมติว่าคุณมีตารางที่ชื่อว่า รถยนต์ พร้อมเขตข้อมูลที่จัดเก็บชื่อ ปี ราคา และเงื่อนไขของรถยนต์มือสองที่คุณกําลังพิจารณาซื้อ และสมมติว่าตารางมีขนาดใหญ่ขึ้นและคุณมักจะรวมเขตข้อมูลปีไว้ในคิวรีด้วย คุณสามารถสร้างดัชนีบนเขตข้อมูล ปี เพื่อช่วยให้คิวรีของคุณส่งกลับผลลัพธ์ได้รวดเร็วยิ่งขึ้นโดยใช้ขั้นตอนต่อไปนี้
-
บนแท็บ สร้าง ในกลุ่ม แมโคร & โค้ด ให้คลิก ออกแบบคิวรี
-
บนแท็บ ออกแบบ ในกลุ่ม ชนิดคิวรี ให้คลิก คํานิยามข้อมูล
ตารางออกแบบจะถูกซ่อน และแท็บวัตถุมุมมอง SQL จะแสดงขึ้น
-
พิมพ์คําสั่ง SQL ต่อไปนี้:
CREATE INDEX YearIndex ON Cars (Year)
-
บนแท็บ ออกแบบ ในกลุ่ม ผลลัพธ์ ให้คลิก เรียกใช้
สร้างข้อจํากัดหรือความสัมพันธ์
ข้อจํากัดจะสร้างเงื่อนไขทางตรรกะที่เขตข้อมูลหรือชุดเขตข้อมูลต้องตรงตามเมื่อมีการแทรกค่า ตัวอย่างเช่น ข้อจํากัด UNIQUE จะป้องกันไม่ให้เขตข้อมูลที่มีข้อจํากัดยอมรับค่าที่จะทําซ้ําค่าที่มีอยู่สําหรับเขตข้อมูล
ความสัมพันธ์เป็นข้อจํากัดชนิดหนึ่งที่อ้างอิงถึงค่าของเขตข้อมูลหรือชุดเขตข้อมูลในตารางอื่นเพื่อกําหนดว่าค่าสามารถแทรกลงในเขตข้อมูลที่มีข้อจํากัดหรือการรวมเขตข้อมูลได้หรือไม่ คุณไม่ได้ใช้คําสําคัญพิเศษเพื่อระบุว่าข้อจํากัดเป็นความสัมพันธ์
เมื่อต้องการสร้างข้อจํากัด คุณสามารถใช้ส่วนคําสั่ง CONSTRAINT ในคําสั่ง CREATE TABLE หรือ ALTER TABLE ส่วนคําสั่ง CONSTRAINT มีอยู่สองชนิด คือ ชนิดหนึ่งสําหรับการสร้างข้อจํากัดบนเขตข้อมูลเดียว และอีกชนิดหนึ่งสําหรับการสร้างข้อจํากัดบนหลายเขตข้อมูล
ข้อจํากัดแบบเขตข้อมูลเดียว
ส่วนคําสั่ง CONSTRAINT แบบเขตข้อมูลเดียวจะตามหลังข้อกําหนดของเขตข้อมูลที่มีข้อจํากัด และมีไวยากรณ์ต่อไปนี้:
CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
สมมติว่าคุณมีตารางที่ชื่อว่า รถยนต์ พร้อมเขตข้อมูลที่จัดเก็บชื่อ ปี ราคา และเงื่อนไขของรถยนต์มือสองที่คุณกําลังพิจารณาซื้อ และสมมติว่าคุณลืมป้อนค่าสําหรับสภาพของรถยนต์บ่อยๆ และคุณต้องการบันทึกข้อมูลนี้เสมอ คุณสามารถสร้างข้อจํากัดบนเขตข้อมูล เงื่อนไข ที่ป้องกันไม่ให้คุณออกจากเขตข้อมูลให้ว่างได้ โดยใช้ขั้นตอนต่อไปนี้
-
บนแท็บ สร้าง ในกลุ่ม แมโคร & โค้ด ให้คลิก ออกแบบคิวรี
-
บนแท็บ ออกแบบ ในกลุ่ม ชนิดคิวรี ให้คลิก คํานิยามข้อมูล
ตารางออกแบบจะถูกซ่อน และแท็บวัตถุมุมมอง SQL จะแสดงขึ้น
-
พิมพ์คําสั่ง SQL ต่อไปนี้:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL
-
บนแท็บ ออกแบบ ในกลุ่ม ผลลัพธ์ ให้คลิก เรียกใช้
ตอนนี้สมมติว่าหลังจากเวลาสักครู่คุณสังเกตเห็นว่ามีค่าที่คล้ายกันมากมายในเขตข้อมูลเงื่อนไขที่ควรเหมือนกัน ตัวอย่างเช่นรถยนต์บางคันมีค่าสภาพไม่ดีและคนอื่น ๆ มีค่าไม่ดี
หมายเหตุ: หากคุณต้องการปฏิบัติตามขั้นตอนที่เหลือ ให้เพิ่มข้อมูลปลอมบางอย่างลงในตารางรถยนต์ที่คุณสร้างขึ้นในขั้นตอนก่อนหน้า
หลังจากที่คุณล้างค่าเพื่อให้มีความสอดคล้องกันมากขึ้นคุณสามารถสร้างตารางที่ชื่อ CarCondition ด้วยเขตข้อมูลเดียวที่ชื่อเงื่อนไขที่มีค่าทั้งหมดที่คุณต้องการใช้สําหรับสภาพของรถยนต์:
-
บนแท็บ สร้าง ในกลุ่ม แมโคร & โค้ด ให้คลิก ออกแบบคิวรี
-
บนแท็บ ออกแบบ ในกลุ่ม ชนิดคิวรี ให้คลิก คํานิยามข้อมูล
ตารางออกแบบจะถูกซ่อน และแท็บวัตถุมุมมอง SQL จะแสดงขึ้น
-
พิมพ์คําสั่ง SQL ต่อไปนี้:
CREATE TABLE CarCondition (Condition TEXT(10))
-
บนแท็บ ออกแบบ ในกลุ่ม ผลลัพธ์ ให้คลิก เรียกใช้
-
สร้างคีย์หลักสําหรับตารางโดยใช้คําสั่ง ALTER TABLE:
ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY
-
เมื่อต้องการแทรกค่าจากเขตข้อมูล เงื่อนไข ของตาราง รถยนต์ ลงในตาราง CarCondition ใหม่ ให้พิมพ์ SQL ต่อไปนี้ลงในแท็บวัตถุมุมมอง SQL:
INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;
หมายเหตุ: คําสั่ง SQL ในขั้นตอนนี้เป็น คิวรีแบบใช้ผนวกข้อมูล คิวรีแบบใช้ผนวกข้อมูลจะต่างจากคิวรีแบบใช้สร้างข้อกําหนดข้อมูลตรงที่ลงท้ายด้วยเครื่องหมายอัฒภาค
-
บนแท็บ ออกแบบ ในกลุ่ม ผลลัพธ์ ให้คลิก เรียกใช้
สร้างความสัมพันธ์โดยใช้ข้อจํากัด
เมื่อต้องการกําหนดให้ค่าใหม่ใดๆ ที่แทรกในเขตข้อมูล เงื่อนไข ของตาราง รถยนต์ ตรงกับค่าของเขตข้อมูล เงื่อนไข ในตาราง CarCondition คุณสามารถสร้างความสัมพันธ์ระหว่าง CarCondition และ Cars บนเขตข้อมูลที่ชื่อ เงื่อนไข โดยใช้ขั้นตอนต่อไปนี้:
-
บนแท็บ สร้าง ในกลุ่ม แมโคร & โค้ด ให้คลิก ออกแบบคิวรี
-
บนแท็บ ออกแบบ ในกลุ่ม ชนิดคิวรี ให้คลิก คํานิยามข้อมูล
ตารางออกแบบจะถูกซ่อน และแท็บวัตถุมุมมอง SQL จะแสดงขึ้น
-
พิมพ์คําสั่ง SQL ต่อไปนี้:
ALTER TABLE Cars ALTER COLUMN CONDITION TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Condition)
-
บนแท็บ ออกแบบ ในกลุ่ม ผลลัพธ์ ให้คลิก เรียกใช้
ข้อจํากัดแบบหลายเขตข้อมูล
ส่วนคําสั่ง CONSTRAINT แบบหลายเขตข้อมูลสามารถใช้ได้ภายนอกส่วนคําสั่งข้อกําหนดเขตข้อมูลเท่านั้น และมีไวยากรณ์ดังนี้
CONSTRAINT constraint_name
{PRIMARY KEY (pk_field1[, pk_field2[, ...]]) | UNIQUE (unique1[, unique2[, ...]]) | NOT NULL (notnull1[, notnull2[, ...]]) | FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]]) REFERENCES foreign_table [(fk_field1[, fk_field2[, ...]])] | [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
พิจารณาตัวอย่างอื่นที่ใช้ตารางรถยนต์ สมมติว่าคุณต้องการตรวจสอบให้แน่ใจว่าไม่มีสองระเบียนในตารางรถยนต์ที่มีชุดของค่าสําหรับชื่อ ปี เงื่อนไข และราคาเหมือนกัน คุณสามารถสร้างข้อจํากัด UNIQUE ที่นําไปใช้กับเขตข้อมูลเหล่านี้ได้ โดยใช้ขั้นตอนต่อไปนี้
-
บนแท็บ สร้าง ในกลุ่ม แมโคร & โค้ด ให้คลิก ออกแบบคิวรี
-
บนแท็บ ออกแบบ ในกลุ่ม ชนิดคิวรี ให้คลิก คํานิยามข้อมูล
ตารางออกแบบจะถูกซ่อน และแท็บวัตถุมุมมอง SQL จะแสดงขึ้น
-
พิมพ์คําสั่ง SQL ต่อไปนี้:
ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (name, year, condition, price)
-
บนแท็บ ออกแบบ ในกลุ่ม ผลลัพธ์ ให้คลิก เรียกใช้