0Pricing
SQL Academy · บทเรียน

VIEW แบบธรรมดา: การใช้ตรรกะซ้ำ

สร้าง VIEW เพื่อห่อหุ้มคำสั่งค้นหาที่ซับซ้อน ทำรายงานให้ง่ายขึ้น และให้สิทธิ์อ่านเฉพาะบางคอลัมน์

VIEW แบบธรรมดา: การใช้ตรรกะซ้ำ เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

VIEW คืออะไร

มุมมองคือคำสั่ง SELECT ที่บันทึกไว้ ทุกครั้งที่คุณสอบถามมุมมอง คำสั่ง SELECT พื้นฐานจะทำงาน มุมมองนี้เปรียบเสมือนคำสั่งสอบถามที่มีชื่อ ซึ่งคุณสามารถใช้ JOIN, กรอง และรวมผลลัพธ์ได้

CREATE VIEW active_users AS
  SELECT id, email, full_name
  FROM users
  WHERE deleted_at IS NULL;

การใช้มุมมอง

สอบถามมุมมองเหมือนตารางใด ๆ:

SELECT COUNT(*) FROM active_users;
SELECT * FROM active_users WHERE email LIKE '%@gmail.com';

มุมมองไม่ได้จัดเก็บผลลัพธ์

สิ่งที่จัดเก็บไว้คือคำจำกัดความของมุมมอง ไม่ใช่ผลลัพธ์ ทุกคำสั่งสอบถามจะขยายมุมมองและเรียกใช้คำสั่ง SELECT พื้นฐาน ข้อควรพิจารณาเกี่ยวกับแผนการสอบถามยังคงเหมือนเดิม

เหตุใดจึงใช้มุมมอง

  • การใช้ซ้ำ — กำหนดคำสั่งสอบถามที่ซับซ้อนเพียงครั้งเดียว
  • การแยกส่วนรายละเอียด — ซ่อนวิธีทำงานภายใน (รวม 3 ตาราง → "active_users")
  • ความปลอดภัย — มอบสิทธิ์ SELECT บนมุมมองโดยไม่เปิดเผยตารางฐาน
  • ความเข้ากันได้ — ทำให้รูปแบบคำสั่งสอบถามเดิมยังทำงานได้หลังเปลี่ยนแปลงโครงสร้าง

CREATE OR REPLACE

อัปเดตมุมมองเดิมได้ทันที แต่ชนิดและลำดับของคอลัมน์ต้องตรงกันเท่านั้น:

CREATE OR REPLACE VIEW active_users AS
  SELECT id, email, full_name, last_login
  FROM users
  WHERE deleted_at IS NULL;

-- ERROR if columns conflict; DROP VIEW + CREATE VIEW instead.

มุมมองที่มี JOIN และการรวมผลลัพธ์

กรณีที่พบบ่อย: สรุปรวมแยกตามผู้ใช้:

CREATE VIEW user_stats AS
SELECT u.id, u.email,
       COUNT(o.id) AS order_count,
       COALESCE(SUM(o.total), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email;

มุมมองที่อัปเดตได้

มุมมองแบบง่าย (มีตารางเดียว ไม่มีการรวมผลลัพธ์ และไม่มี DISTINCT) เป็นแบบอัปเดตได้ คุณสามารถ INSERT/UPDATE/DELETE ผ่านมุมมองเหล่านี้ได้ PostgreSQL จะอัปเดตมุมมองให้โดยอัตโนมัติเมื่อทำได้

มุมมองที่ระบุสคีมา

วางมุมมองสำหรับใช้งานทั่วไปไว้ในสคีมาเฉพาะ:

CREATE SCHEMA api;
CREATE VIEW api.users_public AS
  SELECT id, email, full_name FROM users WHERE deleted_at IS NULL;

GRANT SELECT ON api.users_public TO app_reader;

มุมมองและสิทธิ์

โดยค่าเริ่มต้น มุมมองจะทำงานด้วยสิทธิ์ของผู้ใช้ที่สอบถาม ผู้ใช้นั้นจึงยังต้องมีสิทธิ์ในตารางฐาน หากต้องการให้ผู้ใช้ที่มีสิทธิ์ต่ำสอบถามตารางที่มีข้อมูลละเอียดอ่อนได้ ให้ใช้ฟังก์ชัน SECURITY DEFINER แทน

ข้อควรพิจารณาด้านประสิทธิภาพ

ตัววางแผนจะขยายมุมมองและใช้การปรับประสิทธิภาพตามปกติ บางครั้ง GROUP BY ของมุมมองอาจขัดขวางการดัน predicate ลงไป หาก EXPLAIN แสดงปัญหา ให้แยกมุมมองหรือเขียนใหม่

การขึ้นต่อกันของมุมมอง

การลบตารางฐานจะถูกป้องกันหากมีมุมมองขึ้นต่ออยู่ ใช้ DROP TABLE ... CASCADE เฉพาะเมื่อคุณตั้งใจให้ลบสิ่งที่ขึ้นต่อทั้งหมด แสดงรายการสิ่งที่ขึ้นต่อ:

SELECT * FROM pg_depend
WHERE refobjid = 'users'::REGCLASS;

สรุป

มุมมองคือคำสั่ง SELECT ที่นำกลับมาใช้ซ้ำได้

  • กำหนดครั้งเดียว สอบถามได้หลายครั้ง
  • ช่วยแยกส่วนรายละเอียดและเพิ่มความปลอดภัย
  • อัปเดตได้เมื่อมีโครงสร้างเรียบง่าย
  • เรียกใช้ใหม่ทุกครั้งที่สอบถาม — ไม่มีการแคชในตัว

ตรวจสอบอย่างรวดเร็ว

การสอบถามมุมมองจะจัดเก็บผลลัพธ์ไว้หรือไม่?

คำถามที่พบบ่อย

บทเรียน “VIEW แบบธรรมดา: การใช้ตรรกะซ้ำ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “VIEW แบบธรรมดา: การใช้ตรรกะซ้ำ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “VIEW แบบธรรมดา: การใช้ตรรกะซ้ำ”

สร้าง VIEW เพื่อห่อหุ้มคำสั่งค้นหาที่ซับซ้อน ทำรายงานให้ง่ายขึ้น และให้สิทธิ์อ่านเฉพาะบางคอลัมน์ คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “VIEW แบบธรรมดา: การใช้ตรรกะซ้ำ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. VIEW แบบธรรมดา: การใช้ตรรกะซ้ำ
  2. VIEW ที่อัปเดตได้และทริกเกอร์ INSTEAD OF
  3. VIEW ที่จัดเก็บผลลัพธ์และกลยุทธ์ REFRESH
  4. เมื่อใดควรรวมข้อมูลล่วงหน้า
← กลับไปที่ SQL Academy