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 ที่สามารถประกอบด้วยข้อมูลจากตารางเดียวหรือหลายตารางก็ได้

วิธีสร้างมุมมองใน 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

ลดจำนวนการดูลง MySQL

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

DROP VIEW ` general_v_movie_rentals `;

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

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

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

สรุป

  • มุมมองเป็นตารางเสมือน ไม่มีข้อมูลที่ส่งคืน ข้อมูลจะถูกเก็บไว้ในตารางที่อ้างอิงในคำสั่ง SELECT
  • มุมมองช่วยเพิ่มความปลอดภัยของฐานข้อมูลโดยแสดงเฉพาะข้อมูลที่ต้องการให้ผู้ใช้ที่ได้รับอนุญาตดูเท่านั้น มุมมองเหล่านี้จะช่วยซ่อนข้อมูลที่ละเอียดอ่อน
  • มุมมองช่วยให้ชีวิตง่ายขึ้นเนื่องจากคุณไม่ต้องเขียนแบบสอบถามที่ซับซ้อนซ้ำแล้วซ้ำเล่า
  • คุณสามารถใช้คำสั่ง INSERT, UPDATE และ DELETE กับ VIEW ได้ การดำเนินการเหล่านี้จะเปลี่ยนตารางพื้นฐานของ VIEW ข้อควรพิจารณาเพียงอย่างเดียวคือ VIEW ควรมีคอลัมน์ NOT NULL ทั้งหมดของตารางที่อ้างอิงถึง โดยหลักการแล้ว คุณไม่ควรใช้ VIEWS สำหรับการอัปเดต