SQLite สร้าง แก้ไข วางตารางพร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
SQLite การจัดการตารางนั้นอาศัยคำสั่งกำหนดข้อมูลสามคำสั่ง ได้แก่ CREATE TABLE สำหรับกำหนดตาราง, ALTER TABLE สำหรับเปลี่ยนชื่อหรือเพิ่มและเปลี่ยนแปลงคอลัมน์ และ DROP TABLE สำหรับลบตารางออกจากฐานข้อมูลโดยสมบูรณ์
ส่วนด้านล่างนี้แสดงวิธีการสร้างตาราง ปรับเปลี่ยนโครงสร้างตาราง และลบตารางในโปรแกรม SQLite3 ตัวอย่าง ครอบคลุมคำสั่ง CREATE TABLE, ALTER TABLE และ DROP TABLE
SQLite สร้างตาราง
วากยสัมพันธ์
ด้านล่างนี้คือไวยากรณ์ของคำสั่ง CREATE TABLE
CREATE TABLE table_name( column1 datatype, column1 datatype );
ในการสร้างตาราง คุณควรใช้คำสั่ง “CREATE TABLE” ดังนี้:
CREATE TABLE guru99 ( Id Int, Name Varchar );
ภายในวงเล็บสองอันหลังชื่อตาราง คุณกำหนดคอลัมน์ของตาราง โดยแต่ละคอลัมน์ควรมีคุณสมบัติต่อไปนี้:
- ชื่อ ชื่อคอลัมน์ไม่ควรซ้ำกันในคอลัมน์ของตาราง
- ชนิดข้อมูล – ชนิดข้อมูลของคอลัมน์
- ข้อจำกัดของคอลัมน์เป็นตัวเลือกเสริม ซึ่งเราจะอธิบายในส่วนต่อๆ ไปของบทช่วยสอนนี้
SQLite สร้างตารางหากยังไม่มีอยู่
เมื่อสคริปต์ทำงานมากกว่าหนึ่งครั้ง คำสั่ง CREATE TABLE แบบธรรมดาจะล้มเหลวหากตารางนั้นมีอยู่แล้ว และจะหยุดทำงานพร้อมแสดงข้อผิดพลาด SQLite วิธีนี้แก้ปัญหาด้วยคำสั่ง IF NOT EXISTS ที่เป็นตัวเลือก ซึ่งจะสร้างตารางก็ต่อเมื่อตารางนั้นไม่มีอยู่ และจะไม่ทำอะไรเลยหากมีอยู่แล้ว
CREATE TABLE IF NOT EXISTS guru99 ( Id Int, Name Varchar );
คำสั่งข้างต้นจะไม่ทำให้เกิดข้อผิดพลาด “ตารางมีอยู่แล้ว” ซึ่งทำให้ปลอดภัยที่จะวางไว้ที่ส่วนบนสุดของสคริปต์การตั้งค่าหรือการย้ายข้อมูล
หลักการเดียวกันนี้ใช้ได้ในทางกลับกันเมื่อคุณลบตาราง การเพิ่ม IF EXISTS ลงใน DROP TABLE จะช่วยหลีกเลี่ยงข้อผิดพลาดเมื่อตารางนั้นถูกลบไปแล้ว:
DROP TABLE IF EXISTS guru99;
ทั้งสองเงื่อนไขนี้พบได้ทั่วไปในสคริปต์อัตโนมัติ เนื่องจากช่วยให้สามารถเรียกใช้ไฟล์เดียวกันซ้ำๆ ได้โดยไม่ต้องล้างข้อมูลด้วยตนเองระหว่างการทำงานแต่ละครั้ง
วางตาราง
ในการลบตาราง ให้ใช้คำสั่ง “DROP TABLE” ตามด้วยชื่อตาราง ดังนี้:
DROP TABLE guru99;
เปลี่ยนตาราง
คุณสามารถใช้คำสั่ง “ALTER TABLE” เพื่อเปลี่ยนชื่อตารางได้ดังนี้:
ALTER TABLE guru99 RENAME TO guru100;
เพื่อตรวจสอบว่าชื่อตารางได้เปลี่ยนไปแล้ว คุณสามารถใช้คำสั่ง “.tables” เพื่อแสดงรายการตาราง และชื่อตารางควรจะเปลี่ยนไปดังนี้:
อย่างที่คุณเห็น ชื่อตาราง “guru99” เปลี่ยนเป็น “guru100” หลังจากใช้คำสั่ง “alter table”
SQLite เพิ่มคอลัมน์ - การใช้คำสั่ง ALTER TABLE
คุณสามารถใช้คำสั่ง “ALTER TABLE” เพื่อเพิ่มคอลัมน์ได้เช่นกัน:
ALTER TABLE guru100 ADD COLUMN Age INT;
การดำเนินการนี้จะแก้ไขตาราง “guru100” และเพิ่มคอลัมน์ใหม่ชื่อ “อายุ” เข้าไป
หากคุณไม่เห็นข้อความใดๆ แสดงขึ้น นั่นหมายความว่าคำสั่งนั้นสำเร็จ และได้เพิ่มคอลัมน์แล้ว การไม่เห็นข้อความหมายความว่าเคอร์เซอร์จะอยู่หลัง “sqlite>” โดยไม่มีข้อความใดๆ ต่อท้าย ดังนี้:
อย่างไรก็ตาม เพื่อตรวจสอบว่าคอลัมน์ถูกเพิ่มเข้าไปแล้ว เราสามารถใช้คำสั่ง “.schema guru100” ได้ คำสั่งนี้จะแสดงรายละเอียดของตาราง และคุณควรจะเห็นคอลัมน์ใหม่ที่เราเพิ่งเพิ่มเข้าไป:
SQLite คำสั่งแก้ไขตาราง: เปลี่ยนชื่อและลบคอลัมน์
นอกเหนือจากการเพิ่มเสาแล้ว เวอร์ชันสมัยใหม่ของ SQLite นอกจากนี้ยังสามารถเปลี่ยนชื่อคอลัมน์เดียวและลบคอลัมน์ได้ การเปลี่ยนชื่อคอลัมน์มีให้ใช้งานมาตั้งแต่ SQLite 3.25 และมันจะอัปเดตชื่อภายในคำจำกัดความของตาราง รวมถึงในทุกดัชนี ทริกเกอร์ และวิวที่อ้างอิงถึงคอลัมน์นั้นด้วย
ALTER TABLE guru100 RENAME COLUMN Name TO FullName;
วิธีการลบคอลัมน์ SQLite เวอร์ชัน 3.35 และเวอร์ชันต่อๆ ไปรองรับคำสั่ง DROP COLUMN โดยตรง:
ALTER TABLE guru100 DROP COLUMN Age;
ไม่สามารถลบคอลัมน์ได้หากคอลัมน์นั้นเป็นส่วนหนึ่งของคีย์หลัก ข้อจำกัดเฉพาะ หรือดัชนี (ในเวอร์ชันเก่ากว่า) SQLite สำหรับเวอร์ชันที่ไม่มีคำสั่ง DROP COLUMN วิธีแก้ปัญหาแบบดั้งเดิมคือการสร้างตารางใหม่ที่มีคอลัมน์ที่คุณต้องการ คัดลอกแถวไปยังตารางใหม่ ลบตารางเก่า และสุดท้ายเปลี่ยนชื่อตารางใหม่
วิธีการคัดลอกตารางใน SQLite โดยใช้คำสั่ง CREATE TABLE AS SELECT
บางครั้งคุณอาจต้องการสำเนาของตาราง ไม่ว่าจะเป็นเพื่อสำรองข้อมูลก่อนทำการเปลี่ยนแปลงที่มีความเสี่ยง หรือเพื่อใช้เป็นจุดเริ่มต้นสำหรับการสร้างตารางใหม่ SQLite สร้างตารางนี้ได้ในขั้นตอนเดียวด้วยคำสั่ง CREATE TABLE AS SELECT ซึ่งจะสร้างตารางใหม่ที่มีคอลัมน์มาจากคำสั่ง SQL และเติมข้อมูลลงในตารางด้วยแถวที่คำสั่งนั้นส่งคืนมา
CREATE TABLE guru100_backup AS SELECT * FROM guru100;
ตารางใหม่ “guru100_backup” จะได้รับคอลัมน์และทุกแถวเหมือนกับตาราง “guru100” หากต้องการคัดลอกเฉพาะบางแถว ให้เพิ่มเงื่อนไข WHERE ในคำสั่ง SELECT:
CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;
สิ่งสำคัญที่ควรจำไว้คือ คำสั่ง CREATE TABLE AS SELECT จะคัดลอกชื่อคอลัมน์ ชนิดข้อมูล และข้อมูล แต่จะไม่คัดลอกคีย์หลัก ข้อจำกัดอื่นๆ หรือดัชนี คุณต้องเพิ่มสิ่งเหล่านั้นลงในตารางใหม่ด้วยตนเอง หากต้องการให้ตารางที่คัดลอกมาใช้กฎเดียวกันกับตารางต้นฉบับ
SQLite ใส่ค่าลงในตาราง
ในการแทรกค่าลงในตาราง เราใช้คำสั่ง “INSERT INTO” ดังนี้:
INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);
คุณสามารถละชื่อคอลัมน์ที่อยู่หลังชื่อตารางและเขียนได้ดังนี้:
INSERT INTO Tablename VALUES(value1, value2, ….);
ในกรณีเช่นนี้ หากคุณละเว้นชื่อคอลัมน์จากตาราง จำนวนค่าที่แทรกจะต้องเท่ากับจำนวนคอลัมน์ในตารางพอดี จากนั้นค่าแต่ละค่าจะถูกแทรกลงในคอลัมน์ที่เกี่ยวข้อง ตัวอย่างเช่น สำหรับคำสั่งแทรกต่อไปนี้:
INSERT INTO guru100 VALUES(1, 'Mike', 25);
ผลลัพธ์ของคำสั่งนี้จะเป็นดังต่อไปนี้:
- ค่า 1 จะถูกแทรกเข้าไปในคอลัมน์ “id”
- ค่า 'Mike' จะถูกแทรกเข้าไปในคอลัมน์ "ชื่อ" และ
- ค่า 25 จะถูกแทรกเข้าไปในคอลัมน์ "อายุ"
แทรก … คำสั่งค่าเริ่มต้น
คุณสามารถเติมข้อมูลตารางด้วยค่าเริ่มต้นสำหรับคอลัมน์พร้อมกันได้ดังนี้:
INSERT INTO Tablename DEFAULT VALUES;
หากคอลัมน์ใดไม่อนุญาตให้มีค่าว่างหรือค่าเริ่มต้น คุณจะได้รับข้อผิดพลาดว่า “ข้อจำกัด NOT NULL ล้มเหลว” สำหรับคอลัมน์นั้น ดังต่อไปนี้:






