MySQL มุมมอง: วิธีสร้างมุมมองจากตาราง
⚡ สรุปอย่างชาญฉลาด
MySQL วิว (Views) คือตารางเสมือนที่ไม่เก็บข้อมูลใดๆ แต่จะแสดงผลลัพธ์จากคำสั่ง SELECT ที่จัดเก็บไว้ เอกสารนี้จะอธิบายวิธีการสร้าง เรียกดูข้อมูล เชื่อมต่อ และลบวิว พร้อมตัวอย่างที่สามารถใช้งานได้จริงจากฐานข้อมูล myflixdb
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 จะให้ผลลัพธ์ดังต่อไปนี้
โปรดทราบว่าขณะนี้อ็อบเจ็กต์ 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 การสร้างวิวจะลบเฉพาะคิวรีที่บันทึกไว้เท่านั้น ตารางและข้อมูลในตารางเหล่านั้นจะไม่ถูกแตะต้อง


