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 จะให้ผลลัพธ์ดังต่อไปนี้
โปรดทราบว่าขณะนี้อ็อบเจ็กต์ 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 สำหรับการอัปเดต