MySQL มุมมอง: วิธีสร้างมุมมองจากตาราง

⚡ สรุปอย่างชาญฉลาด

MySQL วิว (Views) คือตารางเสมือนที่ไม่เก็บข้อมูลใดๆ แต่จะแสดงผลลัพธ์จากคำสั่ง SELECT ที่จัดเก็บไว้ เอกสารนี้จะอธิบายวิธีการสร้าง เรียกดูข้อมูล เชื่อมต่อ และลบวิว พร้อมตัวอย่างที่สามารถใช้งานได้จริงจากฐานข้อมูล myflixdb

  • 🧱 คำจำกัดความหลัก: วิว (View) คือคำสั่ง SELECT ที่มีชื่อ ซึ่งทำงานคล้ายกับตาราง แต่ไม่มีข้อมูลอยู่ภายใน
  • 🔐 ประโยชน์ด้านความปลอดภัย: หน้าเว็บจะแสดงเฉพาะคอลัมน์ที่ได้รับอนุญาตและซ่อนข้อมูลที่ละเอียดอ่อนจากผู้ใช้
  • ♻️ ข้อดีของการนำกลับมาใช้ใหม่: การเชื่อมตารางหลายตารางที่ซับซ้อนจะถูกเขียนเพียงครั้งเดียวและนำกลับมาใช้ใหม่เป็นคำสั่ง SELECT บรรทัดเดียว
  • 🛠️ ไวยากรณ์การสร้าง: คำสั่ง CREATE VIEW `view_name` AS SELECT ใช้สำหรับกำหนดวิวภายในฐานข้อมูล
  • 🗑️ คำสั่งวงจรชีวิต: คำสั่ง SHOW CREATE VIEW จะแสดงคิวรีที่บันทึกไว้ และคำสั่ง DROP VIEW จะลบคิวรีนั้นโดยไม่เปลี่ยนแปลงตารางหลัก

MySQL เข้าชม

Views คืออะไร MySQL?

VIEWS เป็นตารางเสมือนที่ไม่เก็บข้อมูลใดๆ ของตนเอง แต่แสดงข้อมูลที่เก็บไว้ในตารางอื่น กล่าวอีกนัยหนึ่ง VIEWS ไม่มีอะไรนอกจากการสืบค้น SQL มุมมองสามารถมีทั้งหมดหรือสองสามแถวจากตารางได้ ก MySQL view สามารถแสดงข้อมูลจากตารางเดียวหรือหลายตารางได้

MySQL ไวยากรณ์มุมมอง

ตอนนี้เรามาดูไวยากรณ์พื้นฐานที่ใช้ในการสร้างมุมมอง MySQL.

CREATE VIEW `view_name` AS SELECT statement;

WHERE

  • “สร้างมุมมอง `view_name`” บอก MySQL เซิร์ฟเวอร์เพื่อสร้างวัตถุมุมมองในฐานข้อมูลชื่อ `view_name`
  • “คำสั่ง AS SELECT” คือคำสั่ง SQL ที่จะรวมไว้ในไฟล์ MySQL จำนวนการดู อาจเป็นคำสั่ง SELECT ที่สามารถประกอบด้วยข้อมูลจากตารางเดียวหรือหลายตารางก็ได้

ทำไมต้องใช้มุมมอง?

ก่อนที่จะสร้างบ้านสักหลัง ควรทำความเข้าใจก่อนว่าวิวสวยๆ นั้นให้ประโยชน์อะไรบ้าง

คุณอาจต้องการใช้มุมมองเป็นหลักด้วยเหตุผล 3 ประการต่อไปนี้

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

วิธีสร้างมุมมองใน MySQL

เมื่อเข้าใจไวยากรณ์และประโยชน์แล้ว ขั้นตอนต่อไปนี้จะสร้างมุมมองการทำงานแบบครบวงจร

ต่อไปนี้เป็นกระบวนการทีละขั้นตอนในการสร้างมุมมองใน MySQL:

ขั้นตอน 1) สร้างมุมมองแรกของเราโดยใช้ “myflixdb”

ตอนนี้เรามาสร้างมุมมองแรกของเราโดยใช้ "myflixdb" เราจะสร้างมุมมองง่ายๆ ที่จำกัดคอลัมน์ที่เห็นในตารางสมาชิก

สมมติว่าข้อกำหนดด้านการอนุญาตระบุว่า ฝ่ายบัญชีสามารถดูได้เฉพาะหมายเลขสมาชิก ชื่อ และเพศ จากตารางสมาชิกเท่านั้น เพื่อให้บรรลุเป้าหมายนี้ คุณสามารถสร้าง VIEW ได้ –

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

ขั้นตอน 2) การขยายโหนดมุมมอง

ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ myflixdb และการขยายโหนดมุมมองในฐานข้อมูล explorer จะให้ผลลัพธ์ดังต่อไปนี้

สร้างมุมมองใน MySQL

โปรดทราบว่าขณะนี้อ็อบเจ็กต์ Accounts_v_members สามารถมองเห็นได้ในอ็อบเจ็กต์มุมมองฐานข้อมูล

ขั้นตอน 3) ดำเนินการคำสั่ง SELECT

ตอนนี้เรามาดำเนินการ a คำสั่ง SELECT ที่เลือกฟิลด์ทั้งหมดจากมุมมองดังแสดงด้านล่าง MySQL สร้างตัวอย่างมุมมอง

SELECT * FROM `accounts_v_members`;

ขั้นตอน 4) ดำเนินการสคริปต์

ดำเนินการสคริปต์ข้างต้นใน MySQL workbench กับ myflixdb ให้ผลลัพธ์ดังแสดงด้านล่างนี้

membership_number full_names gender
1 Janet Jones Female
2 Janet Smith Jones Female
3 Robert Phil Male
4 Gloria Williams Female
5 Leonard Hofstadter Male
6 Sheldon Cooper Male
7 Rajesh Koothrappali Male
8 Leslie Winkle Male
9 Howard Wolowitz Male

เฉพาะคอลัมน์ที่ได้รับอนุญาตสำหรับแผนกบัญชีเท่านั้นที่แสดงผล ส่วนรายละเอียดอื่นๆ ที่พบในตารางสมาชิกถูกซ่อนไว้

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

SHOW CREATE VIEW `accounts_v_members`;

การดำเนินการสคริปต์ข้างต้นจะทำให้คุณมีชื่อมุมมองและคำสั่ง SQL SELECT ที่ใช้ในการสร้างมุมมอง

เข้าร่วมและดูใน MySQL

มุมมองตารางเดียวเป็นกรณีที่ง่ายที่สุด มุมมองจะมีคุณค่ามากขึ้นเมื่อมันครอบคลุมการสืบค้นข้อมูลจากหลายตาราง

มาดูตัวอย่างที่ค่อนข้างซับซ้อนซึ่งเกี่ยวข้องกับตารางและการใช้งานหลายรายการกัน ร่วม.

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

CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date`
FROM `movierentals` AS mr
INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number`
INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;

การดำเนินการสคริปต์ข้างต้นจะสร้างมุมมองชื่อ General_v_movie_rentals ใน myflixdb ของเรา

ตอนนี้เรามาเลือกฟิลด์ทั้งหมดจากตารางชื่อ General_v_movie_rentals

SELECT * FROM `general_v_movie_rentals`;

ดำเนินการสคริปต์ข้างต้นใน MySQL ปรับแต่ง เมื่อเปรียบเทียบกับ myflixdb เราจะพบผลลัพธ์ดังแสดงข้างล่างนี้

membership_number full_names title transaction_date return_date
1 Janet Jones Pirates of the Caribean 4 20-06-2012 28-06-2012
1 Janet Jones Forgetting Sarah Marshal 22-06-2012 25-06-2012
3 Robert Phil Forgetting Sarah Marshal 22-06-2012 25-06-2012
2 Janet Smith Jones Forgetting Sarah Marshal 21-06-2012 24-06-2012
3 Robert Phil X-Men 23-06-2012 28-06-2012

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

หล่นping เข้าชมใน MySQL

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

DROP VIEW `general_v_movie_rentals`;

หล่นping การสร้างวิวจะลบเฉพาะคิวรีที่บันทึกไว้เท่านั้น ตารางและข้อมูลในตารางเหล่านั้นจะไม่ถูกแตะต้อง

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

บางครั้ง คำสั่ง INSERT, UPDATE และ DELETE จะใช้งานได้เฉพาะกับวิวแบบง่ายที่มีคอลัมน์ NOT NULL ทุกคอลัมน์ของตารางหลักเท่านั้น วิวที่สร้างจาก JON หรือฟังก์ชันรวมจะไม่สามารถอัปเดตได้

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

ไม่ การแสดงผล (view) จะเรียกใช้คำสั่ง SELECT ที่อยู่เบื้องหลังทุกครั้งที่มีการเรียกใช้ ดังนั้นประสิทธิภาพจึงเท่ากับคำสั่ง SQL ดั้งเดิม MySQL ไม่มีมุมมองแบบ Materialized Views และความเร็วยังคงขึ้นอยู่กับดัชนีของตารางหลัก

ใช่แล้ว ผู้ช่วย AI ในเครื่องมือต่างๆ เช่น MySQL ม้านั่งทำงานของช่างเครื่อง สามารถร่างคำสั่ง CREATE VIEW จากคำอธิบายได้ ตรวจสอบรายการคอลัมน์และคีย์การเชื่อมต่อก่อนเรียกใช้คำสั่ง

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

สรุปโพสต์นี้ด้วย: