ออกแบบตารางของคุณเองด้วยชนิดข้อมูลที่เหมาะสมและข้อจำกัด NOT NULL, UNIQUE และ PRIMARY KEY ที่ปกป้องข้อมูลของคุณ
เปิดบทเรียนนี้ใน Kodokonจนถึงตอนนี้คุณได้คิวรีตารางที่สร้างไว้เรียบร้อยแล้ว แต่นักพัฒนามืออาชีพเป็นผู้ออกแบบมัน สกีมาที่ดีจะปฏิเสธข้อมูลที่ไม่ถูกต้อง ตั้งแต่ตอนแทรกข้อมูล มันคือแนวป้องกันด่านแรกของคุณ ก่อนโค้ดของแอปพลิเคชันใด ๆ ใน sqliteonline.com หรือ sqlite3 ให้สร้างตารางนี้:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
email TEXT NOT NULL UNIQUE,
username TEXT NOT NULL UNIQUE,
created_at TEXT NOT NULL
DEFAULT (datetime('now'))
);SQLite รู้จักชนิดการจัดเก็บเพียงห้าชนิด: INTEGER, REAL, TEXT, BLOB และ NULL วันที่จะถูกเก็บที่นั่นเป็น TEXT ในรูปแบบ ISO (2026-07-04) ที่อื่น ๆ (PostgreSQL, MySQL) คุณจะประกาศเป็น VARCHAR(255), TIMESTAMP หรือ BOOLEAN แทน หลักการยังคงเหมือนเดิม เปลี่ยนเพียงชื่อของชนิดข้อมูล ตอนนี้ลองทดสอบข้อจำกัดของคุณ:
INSERT INTO users (email, username)
VALUES ('alice@example.com', 'alice');
INSERT INTO users (email, username)
VALUES ('alice@example.com', 'alice2');คีย์หลัก (primary key) ระบุตัวตนของแต่ละแถว ไม่เป็น NULL ไม่ซ้ำกัน และมีได้เพียงหนึ่งตัวต่อตาราง ใน SQLite INTEGER PRIMARY KEY มีคุณสมบัติที่มีค่า นั่นคือคอลัมน์จะเพิ่มค่าอัตโนมัติเมื่อคุณละค่าของมันไว้ ดังเช่นในการแทรกข้างต้น บน PostgreSQL คุณจะเขียน GENERATED ALWAYS AS IDENTITY และบน MySQL เขียน AUTO_INCREMENT สุดท้าย ให้เพิ่มกฎทางธุรกิจด้วย CHECK:
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
sku TEXT NOT NULL UNIQUE,
price REAL NOT NULL CHECK (price >= 0)
);
INSERT INTO products (name, sku, price)
VALUES ('Keyboard', 'KB-01', -5);