สอนใช้งาน PostgreSQL
PostgreSQL เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์สที่มีความสามารถสูง รองรับ SQL มาตรฐานอย่างครบถ้วน และมีฟีเจอร์ขั้นสูง เช่น ชนิดข้อมูล JSON และการจัดการธุรกรรมที่เชื่อถือได้ บทความนี้จะพาติดตั้ง สร้างฐานข้อมูลและผู้ใช้ กำหนดสิทธิ์ และใช้คำสั่งพื้นฐานผ่าน `psql`
หมายเหตุการทดสอบ: เครื่องที่ใช้เขียนบทความนี้ไม่มีเซิร์ฟเวอร์ PostgreSQL และไม่มี `psql` จึงยังไม่ได้รันคำสั่งในบทความ คำสั่ง SQL ที่ใช้เป็นชุดเดียวกับที่ทดสอบกับ SQLite ในบทความ SQL ซึ่งเป็นมาตรฐานร่วมกัน ควรรันเองบนเครื่องที่ติดตั้ง PostgreSQL แล้ว
สิ่งที่ต้องเตรียม
- PostgreSQL 16 ขึ้นไป ดาวน์โหลดจาก postgresql.org และติดตั้งพร้อมเครื่องมือ psql
- รหัสผ่านของผู้ใช้ `postgres` ที่ตั้งตอนติดตั้ง
ภาพรวมการเชื่อมต่อ
ขั้นที่ 1: เข้าสู่ระบบด้วย psql
psql -U postgres -h localhost
ขั้นที่ 2: สร้างฐานข้อมูลและผู้ใช้
CREATE DATABASE school;
CREATE USER teacher WITH PASSWORD 'change-me';
GRANT ALL PRIVILEGES ON DATABASE school TO teacher;
ควรเปลี่ยนรหัสผ่านตัวอย่างเป็นรหัสที่ปลอดภัยก่อนใช้งานจริง
ขั้นที่ 3: สร้างตารางและเพิ่มข้อมูล
ต่อเข้าฐานข้อมูล `school` แล้วรันคำสั่ง
\c school
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
score INTEGER
);
INSERT INTO students (name, score) VALUES ('สมชาย', 85), ('สมหญิง', 72);
SELECT name, score FROM students WHERE score >= 80;
`SERIAL` สร้างหมายเลขอัตโนมัติให้คีย์หลัก คำสั่ง `\c` เป็นคำสั่งของ psql เพื่อสลับฐานข้อมูล
ขั้นที่ 4: คำสั่ง psql ที่ใช้บ่อย
- `\l` แสดงรายการฐานข้อมูล
- `\dt` แสดงรายการตาราง
- `\d students` แสดงโครงสร้างตาราง
- `\q` ออกจาก psql
ข้อผิดพลาดที่มักพบ
- **เชื่อมต่อไม่ได้:** ตรวจว่าบริการ PostgreSQL ทำงานอยู่ และพอร์ต 5432 ไม่ถูกไฟร์วอลล์บล็อก
- **สิทธิ์ไม่พอ:** ให้สิทธิ์เฉพาะที่จำเป็น และแยกผู้ใช้สำหรับแอปพลิเคชัน
- **ลืมสำรองข้อมูล:** ใช้ `pg_dump school > school.sql` สำรองฐานข้อมูลเป็นระยะ
ขั้นต่อไป
เรียนรู้การสร้างดัชนีเพื่อเพิ่มความเร็วการค้นหา การใช้ธุรกรรมด้วย `BEGIN` และ `COMMIT` และการเก็บข้อมูลแบบ JSON
สรุป
PostgreSQL ทำงานเป็นเซิร์ฟเวอร์ที่แยกผู้ใช้ สิทธิ์ และฐานข้อมูลได้ชัดเจน ขั้นตอนพื้นฐานคือสร้างฐานข้อมูล สร้างผู้ใช้ กำหนดสิทธิ์ แล้วใช้ SQL ทำงานกับตาราง