🔵 PostgreSQL

วิธีสร้างและลบ Database/Schema ใน PostgreSQL สำหรับมือใหม่

7 นาที 15 views บันทึกเป็น PDF
วิธีสร้างและลบ Database/Schema ใน PostgreSQL สำหรับมือใหม่

เรียนรู้วิธีจัดการฐานข้อมูลด้วยคำสั่ง CREATE และ DROP ใน PostgreSQL พร้อมเทคนิคการแบ่ง Schema ให้เป็นระเบียบ และข้อควรระวังเรื่องตัวพิมพ์เล็ก-ใหญ่ที่มือใหม่ต้องรู้

ทำความรู้จัก Database และ Schema เหมือนจัดบ้านให้เป็นระเบียบ

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

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

ถ้าคุณกำลังฝึกทำโปรเจกต์แรก การเข้าใจเรื่องนี้สำคัญมาก เพราะถ้าคุณสร้าง Database มั่วซั่ว คุณจะจัดการสิทธิ์การเข้าถึงข้อมูลได้ยากมากในอนาคต การวางโครงสร้างที่ดีตั้งแต่วันแรกจะช่วยให้คุณทำงานร่วมกับทีมได้ง่ายขึ้นเมื่อต้องไปทำงานจริงในบริษัท

วิธีสร้าง Database แรกของคุณ

การสร้างฐานข้อมูลใน PostgreSQL เราจะใช้คำสั่ง CREATE DATABASE (คำสั่งสำหรับสร้างฐานข้อมูลใหม่) ผ่านหน้าจอ Terminal (หน้าจอพิมพ์คำสั่งสั่งงานคอมพิวเตอร์) หรือเครื่องมือจัดการฐานข้อมูลที่คุณเลือกใช้ จำไว้ว่าชื่อฐานข้อมูลควรสื่อความหมายและไม่มีช่องว่าง

ลองดูตัวอย่างการสร้างฐานข้อมูลสำหรับเก็บข้อมูลผู้ใช้งานในระบบกันครับ

-- สร้างฐานข้อมูลชื่อว่า my_app_db
CREATE DATABASE my_app_db;

ส่วนประกอบของคำสั่งนี้คือ CREATE DATABASE เป็นคำสั่งหลักที่บอกให้ระบบสร้างพื้นที่เก็บข้อมูลใหม่ และ my_app_db คือชื่อที่คุณตั้งเอง โดยทุกคำสั่ง SQL (ภาษาที่ใช้คุยกับฐานข้อมูล) ต้องจบด้วยเครื่องหมายเซมิโคลอน ; เสมอเพื่อให้ระบบรู้ว่าจบคำสั่งแล้ว

ผลลัพธ์ที่ได้จากการรันคำสั่งนี้คือ คุณจะได้ฐานข้อมูลเปล่าๆ ขึ้นมาหนึ่งอันในระบบ ซึ่งพร้อมสำหรับการใช้งาน คุณสามารถตรวจสอบว่ามันถูกสร้างขึ้นจริงไหมโดยการใช้คำสั่ง \l ใน Terminal เพื่อดูรายชื่อฐานข้อมูลทั้งหมดที่มีอยู่ในเครื่อง

การแยกส่วนข้อมูลด้วย Schemas

เมื่อเรามีฐานข้อมูลแล้ว บางครั้งเราอยากแยกข้อมูลส่วนที่เป็น User (ข้อมูลผู้ใช้งาน) กับ Product (ข้อมูลสินค้า) ออกจากกัน เราก็ใช้ CREATE SCHEMA (คำสั่งสำหรับสร้างพื้นที่จัดเก็บข้อมูลย่อย) เพื่อแยกตารางข้อมูลเหล่านั้นให้ดูสะอาดตา

ลองจินตนาการว่าคุณมีบ้านหนึ่งหลัง แต่ต้องการแบ่งโซนทำงานกับโซนพักผ่อนให้ชัดเจนด้วยการกั้นผนังห้อง นี่คือวิธีการใช้งานจริงครับ

-- สร้างห้องย่อยชื่อว่า users_data
CREATE SCHEMA users_data;

-- สร้างห้องย่อยชื่อว่า products_data
CREATE SCHEMA products_data;

คำสั่ง CREATE SCHEMA ทำหน้าที่สร้างพื้นที่เสมือนภายในฐานข้อมูลที่คุณเลือกใช้งานอยู่ การแบ่งแบบนี้ช่วยให้คุณสามารถสร้างตารางที่มีชื่อซ้ำกันได้ในคนละ Schema ทำให้การจัดการข้อมูลในโปรเจกต์ขนาดใหญ่มีความยืดหยุ่นสูงขึ้นมาก

เมื่อรันคำสั่งสำเร็จ คุณจะไม่เห็นผลลัพธ์แบบกราฟิกเด้งขึ้นมาทันที แต่ถ้าคุณลองใช้คำสั่ง \dn ใน Terminal คุณจะเห็นรายชื่อ Schema ที่คุณเพิ่งสร้างขึ้นปรากฏอยู่ในรายการ ซึ่งนั่นหมายความว่าคุณพร้อมจะสร้างตารางข้อมูลเข้าไปในห้องเหล่านั้นแล้วครับ

ข้อควรระวังเรื่อง Case Sensitivity

หนึ่งในสิ่งที่มือใหม่พลาดบ่อยที่สุดคือ Case Sensitivity (ความแตกต่างระหว่างตัวอักษรพิมพ์เล็กและพิมพ์ใหญ่) ใน PostgreSQL ชื่อฐานข้อมูลหรือชื่อ Schema ถ้าคุณพิมพ์เป็นตัวพิมพ์เล็ก ระบบจะมองว่าเป็นตัวพิมพ์เล็กทั้งหมดโดยอัตโนมัติ

ถ้าคุณเผลอสร้างชื่อฐานข้อมูลด้วยการใส่เครื่องหมายคำพูดคู่ " " ระบบจะบังคับให้ชื่อนั้นต้องเป็นไปตามตัวพิมพ์เล็กใหญ่ที่คุณพิมพ์เป๊ะๆ ซึ่งมักจะสร้างปัญหาเวลาคุณพิมพ์คำสั่งเรียกใช้ในอนาคตแล้วลืมกด Shift

คำแนะนำที่ดีที่สุดคือ ให้ใช้ตัวพิมพ์เล็กทั้งหมดและใช้เครื่องหมาย Underscore (ขีดล่าง) แทนช่องว่างเสมอ เช่น my_project_db แทนที่จะเป็น MyProjectDB เพื่อลดความผิดพลาดที่อาจเกิดขึ้นจากการพิมพ์ผิดในภายหลัง

-- แบบนี้ดีที่สุด ปลอดภัยและอ่านง่าย
CREATE DATABASE project_one;

-- แบบนี้อันตราย เพราะต้องพิมพ์ชื่อให้ตรงเป๊ะทุกครั้ง
CREATE DATABASE "Project_One";

บรรทัดแรกคือวิธีมาตรฐานที่โปรแกรมเมอร์ใช้กันทั่วไป ส่วนบรรทัดที่สองคือวิธีที่มีความเสี่ยงสูง เพราะถ้าวันหนึ่งคุณเผลอพิมพ์ project_one ระบบจะหาฐานข้อมูลชื่อ "Project_One" ไม่เจอ ทำให้เกิดข้อผิดพลาด Database does not exist (ฐานข้อมูลไม่พบในระบบ)

การลบ Database และ Schema ที่ไม่ใช้งาน

เมื่อเราฝึกหัดไปสักพัก เราอาจจะมีฐานข้อมูลขยะที่สร้างไว้ทดลองเยอะแยะไปหมด การใช้ DROP DATABASE (คำสั่งสำหรับลบฐานข้อมูลทิ้งถาวร) และ DROP SCHEMA (คำสั่งสำหรับลบพื้นที่ย่อยทิ้ง) จะช่วยให้เครื่องของคุณสะอาดและไม่งง

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

-- ลบฐานข้อมูลทิ้งถาวร
DROP DATABASE my_app_db;

-- ลบ Schema ทิ้งถาวร
DROP SCHEMA users_data;

คำสั่ง DROP คือการทำลายทิ้ง ข้อมูลทั้งหมดที่อยู่ภายใต้ฐานข้อมูลหรือ Schema นั้นจะถูกลบหายไปทันที หากคุณพยายามลบฐานข้อมูลที่กำลังมีคนใช้งานอยู่ ระบบจะแจ้งเตือนว่าไม่สามารถทำได้ ซึ่งเป็นการป้องกันความผิดพลาดที่ช่วยคุณไว้ได้มาก

ผลลัพธ์ที่ควรเห็นหลังจากรันคำสั่งคือ ข้อความตอบกลับจากระบบว่า DROP DATABASE หรือ DROP SCHEMA สำเร็จ หากคุณลองตรวจสอบด้วยคำสั่ง \l หรือ \dn อีกครั้ง คุณจะพบว่าชื่อเหล่านั้นหายไปจากรายการแล้วครับ

สรุป: การนำไปใช้จริงในโปรเจกต์

ตอนนี้คุณรู้วิธีสร้างและลบ Database รวมถึงการจัดระเบียบด้วย Schema แล้ว สิ่งสำคัญคือการนำไปปรับใช้ในโปรเจกต์จริง เมื่อคุณเริ่มทำโปรเจกต์ให้สร้างฐานข้อมูล 1 ตัวต่อ 1 โปรเจกต์ และใช้ Schema แบ่งส่วนข้อมูลในโปรเจกต์นั้นให้ชัดเจน

กฎเหล็กคืออย่าใช้ชื่อซ้ำซ้อนและตั้งชื่อให้สื่อความหมาย เช่น ถ้าทำโปรเจกต์ร้านค้าออนไลน์ ให้ตั้งฐานข้อมูลว่า online_shop และแบ่ง Schema เป็น orders, inventory และ users เพื่อให้ง่ายต่อการดูแลรักษาในระยะยาว

การฝึกฝนเรื่องนี้ไม่ได้มีแค่การจำคำสั่ง แต่คือการฝึกคิดเรื่องโครงสร้างข้อมูล (Data Architecture) ซึ่งเป็นทักษะที่โปรแกรมเมอร์มืออาชีพต้องมี หากคุณเริ่มหัดวางโครงสร้างให้ดีตั้งแต่โปรเจกต์เล็กๆ คุณจะก้าวไปเป็นโปรแกรมเมอร์ที่ทำงานได้อย่างมีระบบและมีประสิทธิภาพแน่นอนครับ

แชร์บทความ

Facebook X LINE

บทความที่เกี่ยวข้อง

จัดการ PostgreSQL เบื้องต้น: การคุมสิทธิ์ User, การ Backup และ Restore ข้อมูลบน Windows
PostgreSQL

จัดการ PostgreSQL เบื้องต้น: การคุมสิทธิ์ User, การ Backup และ Restore ข้อมูลบน Windows

มือใหม่ต้องรู้! วิธีจัดการสิทธิ์ผู้ใช้งาน (Role) และการสำรองข้อมูล (Backup) ใน PostgreSQL ให้ปลอดภัย พร้อมวิธี Restore ข้อมูลกลับมาใช้ได้จริงผ่าน Command Line

4 weeks ago 8 นาที
25 views
เจาะลึก PostgreSQL Triggers: วิธีเขียนคำสั่งทำงานอัตโนมัติเมื่อข้อมูลเปลี่ยน
PostgreSQL

เจาะลึก PostgreSQL Triggers: วิธีเขียนคำสั่งทำงานอัตโนมัติเมื่อข้อมูลเปลี่ยน

อยากให้ฐานข้อมูลทำงานอัตโนมัติเมื่อมีการเพิ่มหรือแก้ไขข้อมูลไหม? มาเรียนรู้การใช้ PostgreSQL Triggers (ตัวสั่งการอัตโนมัติ) ทั้ง BEFORE และ AFTER เพื่อลดงานซ้ำซ้อน

4 weeks ago 8 นาที
19 views
เจาะลึก PostgreSQL PL/pgSQL: เขียนฟังก์ชันและ Stored Procedures ฉบับมือใหม่
PostgreSQL

เจาะลึก PostgreSQL PL/pgSQL: เขียนฟังก์ชันและ Stored Procedures ฉบับมือใหม่

เรียนรู้วิธีเขียนโปรแกรมในฐานข้อมูลด้วย PL/pgSQL ทั้งการสร้างฟังก์ชัน การใช้ตัวแปร และการทำ Loop เพื่อให้งานจัดการข้อมูลของคุณเร็วและเป็นระเบียบยิ่งขึ้น

4 weeks ago 8 นาที
18 views