การจัดการข้อมูล

ในตอนก่อน พูดถึงการแสดงข้อมูล และค้นหาข้อมูลตามที่ต้องการ คราวนี้มาดูวิธีการสร้างฐานข้อมูล ตาราง และการเพิ่ม ลบ แก้ไขเปลี่ยนแปลงข้อมูลของตารางกันกันบ้าง

การสร้างฐานข้อมูลนั้นจะใช้คำสั่ง CREATE ซึ่งผู้ใช้จะสร้างฐานข้อมูลได้หรือไม่นั้น ขึ้นอยู่กับว่า บัญชีนั้นมีสิทธิ์ที่จะทำได้หรือไม่ด้วย ซึ่งในหลาย ๆ โฮสต์ จะอนุญาตให้สร้างฐานข้อมูลผ่านทาง back-end แทนที่จะสร้างโดยตรงผ่านทางคำสั่ง SQL

    CREATE DATABASE knowledge_db

เราก็จะได้ฐานข้อมูลเปล่า ๆ มาอันนึง ซึ่งจำเป็นต้องสร้างตารางขึ้นมาเพื่อเก็บข้อมูลเพิ่มเติมโดยใช้คำสั่ง CREATE เช่นเดียวกัน โดยต้องระบุ ชื่อคอลัมภ์พร้อมคุณลักษณะต่าง ๆ อย่างเช่น ชนิดของข้อมูลในคอลัมภ์นั้น ๆ ด้วย

นอกจากนี้ ยังต้องคำนึงด้วยว่าระบบฐานข้อมูลที่ใช้อยู่เป็นตัวไหน เพราะคำสั่งนี้บางส่วนในบางระบบจะใช้ไม่เหมือนกัน (อย่างเช่นการกำหนด primary key และ การเพิ่มค่าอัตโนมัติในตัวอย่าง)

MySQL

    -- define primary key in last argument
    CREATE TABLE application
    (
         id int NOT NULL,
         name varchar(255) NOT NULL,
         category varchar(255),
         developer varchar(255),
         year int,
         PRIMARY KEY (id)
    )

SQL Server/Oracle/MS Access

    -- define primary key as column attribute
    CREATE TABLE application
    (
         id int NOT NULL PRIMARY KEY,
         name varchar(255) NOT NULL,
         category varchar(255),
         developer varchar(255),
         year int,
         PRIMARY KEY (id)
    )

PostgreSQL

    -- use integer instead of int
    -- and if that column is auto increment use serial instead
    -- or add DEFAULT value to nextval('serial')
    CREATE TABLE application
    (
         id serial PRIMARY KEY,
         -- or use: id integer PRIMARY KEY DEFAULT nextval('serial'),
         name varchar(255) NOT NULL,
         category varchar(255),
         developer varchar(255),
         year integer
    )

ตอนนี้ก็จะมีตาราง application เปล่า ๆ ขึ้นมาอันหนึ่ง

| id | name | category | developer | year | | — | —- | ——– | ——— | —- |

การเพิ่มข้อมูล (แถว) เข้าตารางจะใช้คำสั่ง INSERT INTO

    INSERT INTO application
    VALUES (null, 'Windows', 'OS', 'Mocrosoft', 1985)

ในที่นี้คอลัมภ์ id จะเพิ่มโดยอัตโนมัติ (auto_increment) ถ้าส่งค่า null ไประบบฐานข้อมูลจะใส่ค่าถัดไปให้โดยอัตโนมัติ และถ้าต้องการเพิ่มข้อมูลที่ละหลาย ๆ แถวก็สามารถใส่ค่าของ VALUES ลงไปหลาย ๆ ชุดได้เช่นกัน

    INSERT INTO application
    VALUES (null, 'OS X', 'OS', 'Apple Inc.', 2001),
    VALUES (null, 'Microsoft Office', 'Office Suite', 'Microsoft', 1990),
    VALUES (null, 'Libre Office', 'Office Suite', 'The Document Foundation', 2011),
    VALUES (null, 'Adobe Photoshop', 'Graphic Editor', 'Adobe', 1990),
    VALUES (null, 'GIMP', 'Graphic Editor', 'The GIMP Development Team', 1996),
    VALUES (null, 'Firefox', 'Browser', 'Mozilla', 2004)

ผลที่ได้จะเป็น

id name category developer year
1 Windows OS Microsoft 1985
2 OS X OS Apple Inc. 2001
3 Microsoft Office Office Suite Microsoft 1990
4 Libre Office Office Suite The Document Foundation 2011
5 Adobe Photoshop Graphic Editor Adobe 1990
6 GIMP Graphic Editor The GIMP Development Team 1996
7 Firefox Browser Mozilla 2004

ถ้าตารางนั้นมีข้อมูลเริ่มต้นอยู่ หรือไม่จำเป็นต้องใส่ค่าลงไปได้ สามารถที่จะระบุเฉพาะคอลัมภ์ที่ต้องการใส่ข้อมูลลงไปได้เช่นเดียวกัน

    INSERT INTO application (name, year)
    VALUES ('Chromium', 2008)

ผลที่ได้จะเป็น

id name category developer year
1 Windows OS Microsoft 1985
2 OS X OS Apple Inc. 2001
3 Microsoft Office Office Suite Microsoft 1990
4 Libre Office Office Suite The Document Foundation 2011
5 Adobe Photoshop Graphic Editor Adobe 1990
6 GIMP Graphic Editor The GIMP Development Team 1996
7 Firefox Browser Mozilla 2004
8 Chromium     2008

ส่วนการแก้ไขข้อมูลนั้นจะใช้ UPDATE

    UPDATE application
    SET name='Google Chrome', category='Browser', developer='Google Inc.'
    WHERE name='Chromium'

ผลที่ได้จะเป็น

id name category developer year
1 Windows OS Microsoft 1985
2 OS X OS Apple Inc. 2001
3 Microsoft Office Office Suite Microsoft 1990
4 Libre Office Office Suite The Document Foundation 2011
5 Adobe Photoshop Graphic Editor Adobe 1990
6 GIMP Graphic Editor The GIMP Development Team 1996
7 Firefox Browser Mozilla 2004
8 Google Chrome Browser Google Inc. 2008

สิ่งที่ควรจำให้ขึ้นใจคือ จะแก้ไขข้อมูลต้องมี WHERE เสมอ ไม่เช่นนั้นจะเป็นการแก้ไขข้อมูลทั้งตาราง! และควรจะใช้เงื่อนไขของ WHERE อย่างรอบคอบ เพื่อไม่ให้ข้อมูลที่ไม่เกี่ยวข้องได้รับผลกระทบ

ส่วนการลบข้อมูลก็จะใช้ DELETE ซึ่งจำเป็นต้องมี WHERE เช่นกัน และที่สำคัญคือถ้าใช้ WHERE ไม่รอบคอบ หรือไม่ใช้ ข้อมูลอาจจะหายไปทั้งตารางได้เช่นกัน

    DELETE FROM application
    WHERE category='Office Suite'
id name category developer year
1 Windows OS Microsoft 1985
2 OS X OS Apple Inc. 2001
5 Adobe Photoshop Graphic Editor Adobe 1990
6 GIMP Graphic Editor The GIMP Development Team 1996
7 Firefox Browser Mozilla 2004
8 Google Chrome Browser Google Inc. 2008

แม้ว่าจะใช้ DELETE ลบข้อมูลทั้งตารางทิ้งไป แต่โครงสร้างตาราง ค่า index (ที่ใช้ในการค้นหาข้อมูล) รวมถึงค่าคุณลักษณะ (attribute) ต่าง ๆ ของตารางยังคงอยู่ ไม่ได้ถูกลบไปด้วย

    DELETE FROM application
    -- or add * for more meaningful 
    DELETE * FROM application

ตามด้วย

    INSERT INTO application
    VALUES (null, 'Internet Explorer', 'Browser', 'Microsoft', 1995)

ผลจะเป็น

id name category developer year
9 Internet Explorer Browser Microsoft 1995

แต่หากต้องการจะลบข้อมูลในตารางทิ้งจริง ๆ แนะนำให้ใช้ TRUNCATE เพราะมันรวดเร็วกว่า และใช้ทรัพยากรน้อยกว่า

    TRUNCATE TABLE application

หากจะลบตารางทั้งตารางทิ้งจะใช้คำสั่ง DROP

    DROP TABLE application

ตาราง application ทั้งตารางรวมทั้งโครงสร้างจะหายไปจากฐานข้อมูล ถ้าจะใช้ตารางนี้อีก ต้องสร้างตารางขึ้นมาใหม่เสียก่อน

นอกจากลบตารางทิ้งแล้ว DROP ยังสามารถลบฐานข้อมูลทั้งฐานข้อมูลทิ้งได้เช่นกัน (ทั้งนี้ขึ้นอยู่กับสิทธิ์ในการเข้าถึงฐานข้อมูลของบัญชีผู้ใช้อันนั้น ๆ ด้วย ว่าสามารถทำได้ถึงขั้นไหน)

    DROP DATABASE knowledge_db
blog comments powered by Disqus