PostgreSQL แก้ไขตาราง: เพิ่มและเปลี่ยนชื่อคอลัมน์
⚡ สรุปอย่างชาญฉลาด
PostgreSQL คำสั่ง ALTER TABLE เปลี่ยนแปลงโครงสร้างของตารางที่มีอยู่แล้ว ทำให้คุณสามารถเพิ่มหรือลบคอลัมน์ เปลี่ยนชื่อคอลัมน์หรือทั้งตาราง กำหนดค่าเริ่มต้น และแนบข้อจำกัดการตรวจสอบได้โดยไม่ต้องสร้างอ็อบเจ็กต์ใหม่
ALTER TABLE คืออะไรใน PostgreSQL?
การขอ แก้ไขตาราง คำสั่งนี้ใช้เพื่อเปลี่ยนแปลงโครงสร้างของ PostgreSQL คำสั่ง `table` ใช้สำหรับเปลี่ยนคอลัมน์ของตารางหรือเปลี่ยนชื่อตารางโดยไม่ต้องลบออกping และสร้างวัตถุขึ้นมาใหม่
วากยสัมพันธ์
นี่คือไวยากรณ์สำหรับ PostgreSQL คำสั่งแก้ไขตาราง:
ALTER TABLE table-name action;
พารามิเตอร์ table-name คือชื่อของตารางที่คุณต้องการเปลี่ยนแปลง พารามิเตอร์ action คือการกระทำที่คุณต้องการดำเนินการ เช่น การเปลี่ยนชื่อคอลัมน์ หรือการเปลี่ยนชนิดข้อมูลของคอลัมน์
Descriptไอออน
คำสั่ง ALTER TABLE จะเปลี่ยนคำจำกัดความของตารางที่มีอยู่ โดยจะมีฟอร์มย่อยดังต่อไปนี้:
- เพิ่มคอลัมน์: คำสั่งนี้ใช้ไวยากรณ์คล้ายกับคำสั่ง CREATE TABLE เพื่อเพิ่มคอลัมน์ใหม่ลงในตาราง
- วางคอลัมน์: สำหรับการลดping คอลัมน์ในตาราง ข้อจำกัดและดัชนีที่กำหนดไว้ในคอลัมน์เหล่านั้นก็จะถูกลบออกด้วย
- ตั้งค่า/วางค่าเริ่มต้น: ใช้สำหรับกำหนดหรือลบค่าเริ่มต้นของคอลัมน์ การเปลี่ยนแปลงจะมีผลเฉพาะกับคอลัมน์ถัดไปเท่านั้น คำสั่ง INSERT.
- SET/DROP ไม่เป็นโมฆะ: เปลี่ยนแปลงว่าคอลัมน์นั้นจะอนุญาตให้มีค่าว่างหรือไม่
- สถิติชุด: สำหรับตั้งค่าเป้าหมายการรวบรวมสถิติสำหรับแต่ละคอลัมน์ในการดำเนินการวิเคราะห์ (ANALYZE)
- ตั้งค่าการจัดเก็บ: สำหรับกำหนดโหมดการจัดเก็บข้อมูลสำหรับคอลัมน์ ไม่ว่าจะเป็นแบบแทรกในเนื้อหาหรือในตารางเสริม
- ตั้งค่าโดยไม่มี OIDS: ใช้สำหรับลบคอลัมน์ OID เก่าออกจากตาราง
- เปลี่ยนชื่อ: สำหรับการเปลี่ยนชื่อตารางหรือชื่อคอลัมน์
- เพิ่ม table_constraint: ใช้สำหรับเพิ่มข้อจำกัดใหม่ให้กับตาราง โดยใช้ไวยากรณ์เดียวกันกับ สร้างตาราง คำสั่ง
- วางข้อ จำกัด: ใช้สำหรับหยดน้ำping ข้อจำกัดของตาราง
- OWNER: สำหรับการเปลี่ยนเจ้าของตาราง ลำดับ ดัชนี หรือมุมมอง ให้เป็นผู้ใช้ที่กำหนด
- กลุ่ม: สำหรับทำเครื่องหมายตารางที่จะใช้สำหรับการดำเนินการคลัสเตอร์ในอนาคต
การแก้ไขคอลัมน์
สามารถแก้ไขคอลัมน์ได้หลายวิธี การแก้ไขดังกล่าวทำได้โดยใช้คำสั่ง ALTER TABLE เราจะมาอธิบายรายละเอียดกันด้านล่าง
การเพิ่มคอลัมน์ใหม่
หากต้องการเพิ่มคอลัมน์ใหม่ให้กับ PostgreSQL ตาราง คำสั่ง ALTER TABLE ใช้รูปแบบต่อไปนี้:
ALTER TABLE table-name ADD new-column-name column-definition;
table-name คือชื่อของตารางที่จะถูกแก้ไข new-column-name คือชื่อของคอลัมน์ใหม่ที่จะเพิ่ม column-definition คือ... ประเภทข้อมูล ของคอลัมน์ใหม่ ดูตารางหนังสือที่แสดงด้านล่าง:
ตารางนี้มีสองคอลัมน์ คือ id และ name เราต้องการเพิ่มคอลัมน์ใหม่ลงในตารางและตั้งชื่อว่า author โดยใช้คำสั่งต่อไปนี้:
ALTER TABLE Book ADD author VARCHAR(50);
หลังจากรันคำสั่งข้างต้นแล้ว ตาราง Book จะเป็นดังนี้:
เพิ่มคอลัมน์ใหม่สำเร็จแล้ว
การเปลี่ยนชื่อคอลัมน์ของตาราง
เราสามารถใช้คำสั่ง ALTER TABLE เพื่อเปลี่ยนชื่อคอลัมน์ได้ ในกรณีนี้ คำสั่งนี้จะใช้รูปแบบต่อไปนี้:
ALTER TABLE table-name RENAME COLUMN old-name TO new-name;
table-name คือชื่อของตารางที่ต้องการเปลี่ยนชื่อคอลัมน์ old-name คือชื่อปัจจุบันของคอลัมน์ และ new-name คือชื่อใหม่ของคอลัมน์ พิจารณาตาราง Book ที่แสดงด้านล่างนี้:
หนังสือ:
เราต้องเปลี่ยนชื่อคอลัมน์ author เป็น book_author โดยใช้คำสั่งดังนี้:
ALTER TABLE Book RENAME COLUMN author TO book_author;
หลังจากรันคำสั่งแล้ว เราจะสามารถดูโครงสร้างของตารางได้:
เปลี่ยนชื่อคอลัมน์เรียบร้อยแล้ว
การตั้งค่าเริ่มต้นสำหรับคอลัมน์
เราสามารถกำหนดค่าเริ่มต้นให้กับคอลัมน์ได้ เพื่อให้แม้ว่าคุณจะไม่ได้ระบุค่าสำหรับคอลัมน์นั้นในระหว่างการดำเนินการ INSERT ค่าเริ่มต้นก็จะถูกนำมาใช้ ในกรณีนี้ สามารถใช้คำสั่ง ALTER TABLE ด้วยไวยากรณ์ดังต่อไปนี้:
ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];
table-name คือชื่อของตารางที่ต้องการแก้ไขคอลัมน์ column-name คือชื่อของคอลัมน์ที่ต้องการกำหนดค่าเริ่มต้น และ value คือค่าเริ่มต้นของคอลัมน์นั้น พิจารณาตาราง Book ที่แสดงด้านล่างนี้:
เราจำเป็นต้องตั้งค่าเริ่มต้นสำหรับคอลัมน์ book_author เราสามารถรันคำสั่งต่อไปนี้:
ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';
ตอนนี้ให้เราแทรกแถวลงในตาราง:
INSERT INTO Book (id, name) VALUES (6, 'PostgreSQL for Beginners');
โปรดทราบว่าเราได้ใส่ค่าลงในคอลัมน์เพียงสองคอลัมน์ คือ id และ name เท่านั้น อย่างไรก็ตาม ค่าเริ่มต้นได้ถูกนำมาใช้สำหรับคอลัมน์ book_author:
การเพิ่มข้อจำกัดในการตรวจสอบ
ข้อจำกัดในการตรวจสอบช่วยในการตรวจสอบความถูกต้องของเรกคอร์ดที่ถูกแทรกลงในตาราง เราสามารถทำได้โดยการรวมคำสั่ง ALTER TABLE เข้ากับคำสั่ง ADD CHECK ไวยากรณ์:
ALTER TABLE table-name ADD CHECK expression;
table-name คือชื่อของตารางที่จะทำการแก้ไข และ expression คือข้อจำกัดที่จะกำหนดให้กับคอลัมน์ของตาราง ตัวอย่างเช่น เราจะแก้ไขคอลัมน์ book_author ของตาราง Book ให้ยอมรับเฉพาะค่า Nicholas และ Samuel เท่านั้น:
ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'));
ตอนนี้ ให้เราลองแทรกค่าอื่นที่ไม่ใช่ Nicholas หรือ Samuel ลงในคอลัมน์ book_author ของตาราง Book:
INSERT INTO Book VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');
คำสั่งจะส่งกลับข้อผิดพลาดต่อไปนี้:
การดำเนินการแทรกล้มเหลวเนื่องจากเราละเมิดข้อจำกัดการตรวจสอบ
การเปลี่ยนชื่อตาราง
ต่อไปนี้เป็นไวยากรณ์สำหรับคำสั่ง ALTER TABLE สำหรับการเปลี่ยนชื่อตาราง:
ALTER TABLE table-name RENAME TO new-table-name;
table-name คือชื่อปัจจุบันของตาราง และ new-table-name คือชื่อใหม่ที่จะกำหนดให้กับตาราง ตัวอย่างเช่น เราจะเปลี่ยนชื่อตาราง Book เป็น Books:
ALTER TABLE Book RENAME TO Books;
การใช้งาน pgAdmin
ที่ผ่านมาเราได้รันคำสั่งต่างๆ ผ่านทาง SQL shell แล้ว ต่อไปเราจะมาดูวิธีการดำเนินการเหล่านี้แบบเห็นภาพโดยใช้ pgAdmin กัน
การเพิ่มคอลัมน์ใหม่
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางด้านซ้าย คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
ALTER TABLE Book ADD author VARCHAR(50);
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ขั้นตอน 5) ในการตรวจสอบว่ามีการเพิ่มคอลัมน์หรือไม่ ให้ทำดังต่อไปนี้:
- คลิกฐานข้อมูลจากการนำทางด้านซ้าย
- ขยายการสาธิต
- ขยายสคีมา
- ขยายสาธารณะ
- ขยายตาราง
- ขยายหนังสือ.
- ขยายคอลัมน์
ควรเพิ่มคอลัมน์ดังที่แสดงด้านล่าง:
การเปลี่ยนชื่อคอลัมน์ของตาราง
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางด้านซ้าย คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
ALTER TABLE Book RENAME COLUMN author TO book_author;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ขั้นตอน 5) เพื่อตรวจสอบว่าการเปลี่ยนแปลงสำเร็จหรือไม่ ให้ขยายคอลัมน์ตารางหนังสือเหมือนเดิม:
ตอนนี้คอลัมน์ควรเป็นดังนี้:
เปลี่ยนคอลัมน์เรียบร้อยแล้ว
การตั้งค่าเริ่มต้นสำหรับคอลัมน์
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางด้านซ้าย คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ขั้นตอน 5) เพื่อทดสอบ ให้รันคำสั่งต่อไปนี้ในตัวแก้ไขแบบสอบถาม:
INSERT INTO Book (id, name) VALUES (6, 'PostgreSQL for Beginners')
ขั้นตอน 6) ตอนนี้เราสามารถสอบถามตารางเพื่อตรวจสอบว่าค่าเริ่มต้นถูกแทรกลงในคอลัมน์ book_author หรือไม่:
การเพิ่มข้อจำกัดในการตรวจสอบ
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางด้านซ้าย คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ขั้นตอน 5) เพื่อทดสอบ ให้พิมพ์คำสั่งต่อไปนี้ลงในตัวแก้ไขคำสั่ง และคลิกปุ่ม Execute:
INSERT INTO Book VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');
มันจะกลับมาสิ่งต่อไปนี้:
การเปลี่ยนชื่อตาราง
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางด้านซ้าย คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
ALTER TABLE Book RENAME TO Books;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ขั้นตอน 5) หากต้องการตรวจสอบว่าตารางถูกเปลี่ยนชื่อหรือไม่ ให้ขยายไปที่ ฐานข้อมูล > สาธิต > โครงสร้างข้อมูล > สาธารณะ > ตาราง:
เปลี่ยนชื่อตารางสำเร็จแล้ว
ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้


























