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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- VIEW แบบธรรมดา: การใช้ตรรกะซ้ำ
- VIEW ที่อัปเดตได้และทริกเกอร์ INSTEAD OF
- VIEW ที่จัดเก็บผลลัพธ์และกลยุทธ์ REFRESH
- เมื่อใดควรรวมข้อมูลล่วงหน้า