Kodokon kodokon.com

แบบจำลองเชิงสัมพันธ์: ตาราง แถว คอลัมน์

มาดูวิธีที่ฐานข้อมูลจัดระเบียบข้อมูลลงในตาราง และสร้างตารางแรกของคุณใน SQLite

8 นาที · 3 คำถาม

เปิดบทเรียนนี้ใน Kodokon

ฐานข้อมูล (database) คือซอฟต์แวร์ที่จัดเก็บข้อมูลอย่างเป็นระเบียบและคงอยู่ถาวร แม้ในตอนที่ปิดเครื่องคอมพิวเตอร์ไปแล้ว แบบจำลองที่แพร่หลายที่สุดคือ แบบจำลองเชิงสัมพันธ์ (relational model) ซึ่งข้อมูลจะถูกจัดเรียงลงใน ตาราง (table) ตารางมีลักษณะคล้ายสเปรดชีต แต่ละ คอลัมน์ (column) อธิบายคุณสมบัติหนึ่งอย่าง (ชื่อเรื่อง ราคา...) และแต่ละ แถว (row) แทนรายการที่สมบูรณ์หนึ่งรายการ (เช่น หนังสือเล่มใดเล่มหนึ่งโดยเฉพาะ) SQL (Structured Query Language) คือภาษาที่ใช้สร้างตารางเหล่านี้และสอบถามเนื้อหาในตาราง แต่ละคำสั่งที่คุณส่งไปยังฐานข้อมูลเรียกว่า คิวรี (query)

SQL
CREATE TABLE books (
  id INTEGER PRIMARY KEY,
  title TEXT,
  author TEXT,
  genre TEXT,
  year INTEGER,
  price REAL
);
ตารางตัวอย่างของเรา: ห้องสมุดเล็ก ๆ

มาแยกคิวรีนี้ดูทีละส่วนกัน CREATE TABLE books สร้างตารางชื่อ books ภายในวงเล็บ แต่ละบรรทัดประกาศคอลัมน์หนึ่งคอลัมน์ ได้แก่ ชื่อของมัน ตามด้วย ชนิด (type) ซึ่งหมายถึงประเภทของข้อมูลที่มันรับได้ ใน SQLite ชนิดหลัก ๆ ได้แก่ INTEGER (จำนวนเต็ม), REAL (จำนวนทศนิยม), TEXT (ข้อความ) และ BLOB (ข้อมูลไบนารี เช่น รูปภาพ) การไม่มีค่าจะเขียนแทนด้วย NULL สุดท้าย PRIMARY KEY กำหนด คีย์หลัก (primary key) ซึ่งคือคอลัมน์ที่มีค่าระบุแต่ละแถวได้อย่างไม่ซ้ำกัน เหมือนหมายเลขประจำเรื่อง

SQL
INSERT INTO books (id, title, author, genre, year, price)
VALUES
(1, 'Dune', 'Herbert', 'sf', 1965, 9.9),
(2, 'Fondation', 'Asimov', 'sf', 1951, 8.5),
(3, '1984', 'Orwell', 'sf', 1949, 7.2),
(4, 'Croc-Blanc', 'London', 'aventure', 1906, 5.5),
(5, 'Les Robots', 'Asimov', 'sf', 1950, 7.9),
(6, 'Deux ans de vacances', 'Verne', 'aventure', 1888, 6.9),
(7, 'Le Petit Prince', 'Saint-Exupery', 'conte', 1943, 6.5);
คัดลอกและวางบล็อกนี้ต่อจาก CREATE TABLE ได้เลย

คิวรี INSERT INTO เพิ่มแถวลงในตาราง เราจะกล่าวถึงมันอย่างละเอียดในบทเรียนสุดท้าย สังเกตว่าค่าที่เป็นข้อความจะครอบด้วย เครื่องหมายอัญประกาศเดี่ยว (single quotes) ('Dune') ไม่ใช่อัญประกาศคู่เด็ดขาด ตอนนี้มาตรวจสอบว่าทุกอย่างอยู่ครบด้วยคิวรีสำหรับอ่านข้อมูล คือ SELECT

SQL
SELECT * FROM books;
เครื่องหมายดอกจัน * หมายถึง "ทุกคอลัมน์"

คุณควรจะเห็น 7 แถว และ 6 คอลัมน์ นั่นคือฐานข้อมูลแรกของคุณทำงานได้แล้ว จงเก็บสคริปต์ CREATE TABLE + INSERT จากบทเรียนนี้ไว้ให้ดี เพราะทุกบทเรียนถัด ๆ ไปล้วนอาศัยตาราง books เดียวกันนี้ หากคุณปิดเบราว์เซอร์หรือเทอร์มินัล เพียงรันมันอีกครั้งเพื่อเริ่มต้นใหม่จากจุดเดิม

ทดสอบความรู้

ตรวจสอบว่าคุณจำประเด็นสำคัญของบทเรียนนี้ได้ครบถ้วน

  1. ในตาราง แถวหนึ่งแถวแทนอะไร?
    • คุณสมบัติหนึ่งอย่าง เช่น ชื่อเรื่องหรือราคา
    • รายการที่สมบูรณ์หนึ่งรายการ เช่น หนังสือเล่มใดเล่มหนึ่งโดยเฉพาะ
    • ชนิดข้อมูลของคอลัมน์
  2. ชนิดข้อมูลใดของ SQLite เหมาะสำหรับเก็บราคาอย่าง 6.5?
    • INTEGER
    • TEXT
    • REAL
    • BLOB
  3. ประโยค PRIMARY KEY บนคอลัมน์ id มีจุดประสงค์อะไร?
    • เพื่อเรียงลำดับแถวตามตัวอักษรโดยอัตโนมัติ
    • เพื่อระบุแต่ละแถวอย่างไม่ซ้ำกัน
    • เพื่อห้ามใช้จำนวนติดลบ