logo

תצוגות SQL

תצוגה ב-SQL היא שאילתת SQL שמורה הפועלת כטבלה וירטואלית. בניגוד לטבלאות רגילות, תצוגות אינן מאחסנות נתונים בעצמן. במקום זאת, הם יוצרים נתונים באופן דינמי על ידי ביצוע שאילתת SQL המוגדרת בתצוגה בכל פעם שניגשים אליה.

זה יכול להביא נתונים מטבלה אחת או יותר ולהציג אותם בפורמט מותאם אישית המאפשר למפתחים:

  • פשט שאילתות מורכבות: הכנס חיבורים ותנאים מורכבים לאובייקט בודד.
  • שפר את האבטחה: הגבל גישה לעמודות או שורות ספציפיות.
  • הצג נתונים בצורה גמישה: ספק תצוגות נתונים מותאמות עבור משתמשים שונים.

אנו נשתמש בשתי טבלאות SQL אלה כדוגמאות.



פרטי סטודנט:

-- Create StudentDetails table  
CREATE TABLE StudentDetails (
S_ID INT PRIMARY KEY
NAME VARCHAR(255)
ADDRESS VARCHAR(255)
);

INSERT INTO StudentDetails (S_ID NAME ADDRESS)
VALUES
(1 'Harsh' 'Kolkata')
(2 'Ashish' 'Durgapur')
(3 'Pratik' 'Delhi')
(4 'Dhanraj' 'Bihar')
(5 'Ram' 'Rajasthan');

תְפוּקָה:

S_ID

שֵׁם

כְּתוֹבֶת

1

קָשֶׁה

קולקטה

2

אשיש

דורגאפור

3

לְתַרְגֵל

דלהי

4

דהנראג'

ביהאר

5

אַיִל

רג'סטאן

ציוני סטודנטים:

-- Create StudentMarks table  
CREATE TABLE StudentMarks (
ID INT PRIMARY KEY
NAME VARCHAR(255)
Marks INT
Age INT
);

INSERT INTO StudentMarks (ID NAME Marks Age)
VALUES
(1 'Harsh' 90 19)
(2 'Suresh' 50 20)
(3 'Pratik' 80 19)
(4 'Dhanraj' 95 21)
(5 'Ram' 85 18);

תְפוּקָה:

תְעוּדַת זֶהוּת

שֵׁם

סימנים

גִיל

1

קָשֶׁה

90

19

2

בטח

50

20

3

לְתַרְגֵל

80

19

4

דהנראג'

95

21

5

אַיִל

85

18

צור תצוגות ב-SQL

אנו יכולים ליצור תצוגה באמצעות הצהרת CREATE VIEW. ניתן ליצור תצוגה מטבלה בודדת או טבלאות מרובות.

תַחבִּיר:

CREATE VIEW view_name AS  
SELECT column1 column2.....
FROM table_name
WHERE condition;

מונחי מפתח:

  • view_name : שם לתצוגה
  • table_name : שם הטבלה
  • מַצָב : תנאי לבחירת שורות

דוגמה 1: יצירת תצוגה פשוטה מטבלה בודדת

דוגמה 1.1: בדוגמה זו ניצור תצוגה בשם DetailsView מהטבלה Student Details.

שְׁאֵלָה:

CREATE VIEW DetailsView AS  
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;

השתמש בשאילתה למטה כדי לאחזר את הנתונים מתצוגה זו

SELECT * FROM DetailsView;

תְפוּקָה: 

שֵׁם

כְּתוֹבֶת

קָשֶׁה

קולקטה

אשיש

דורגאפור

לְתַרְגֵל

דלהי

דהנראג'

ביהאר

דוגמה 1.2: כאן ניצור תצוגה בשם StudentNames מהטבלה StudentDetails.

שְׁאֵלָה:

CREATE VIEW StudentNames AS  
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;

אם נשאל כעת את התצוגה כ

    SELECT    *     FROM    StudentNames;

תְפוּקָה: 

S_ID

שֵׁם

2

אשיש

4

דהנראג'

1

קָשֶׁה

3

לְתַרְגֵל

5

אַיִל

יישר תמונה עם css

דוגמה 2: יצירת תצוגה ממספר טבלאות

בדוגמה זו ניצור View MarksView המשלב נתונים משני הטבלאות StudentDetails ו- StudentMarks. כדי ליצור תצוגה ממספר טבלאות נוכל פשוט לכלול טבלאות מרובות ב- לִבחוֹר הַצהָרָה.

שְׁאֵלָה:

CREATE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

כדי להציג נתונים של View MarksView:

SELECT * FROM MarksView;

תְפוּקָה:

שֵׁם

כְּתוֹבֶת

סימנים

קָשֶׁה

קולקטה

90

לְתַרְגֵל

דלהי

80

דהנראג'

ביהאר

95

אַיִל

רג'סטאן

85

ניהול תצוגות: עדכון ומחיקה של רישום

1. פירוט כל התצוגות במסד נתונים

אנו יכולים לרשום את כל התצוגות במסד נתונים באמצעות המשפט SHOW FULL TABLES או על ידי שאילתה בטבלאות information_schema.

USE 'database_name';  
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';

שימוש ב-information_schema

SELECT table_name  
FROM information_schema.views
WHERE table_schema = 'database_name';

OR

SELECT table_schema table_name view_definition
FROM information_schema.views
WHERE table_schema = 'database_name';

2. מחיקת תצוגה

SQL מאפשר לנו למחוק תצוגה קיימת. אנחנו יכולים לִמְחוֹק או שחרר את View באמצעות הצהרת DROP.

תַחבִּיר:

DROP VIEW view_name;

דוּגמָה: בדוגמה זו אנו מוחקים את View MarksView.

DROP VIEW MarksView;

3. עדכון הגדרת תצוגה

אם ברצוננו לעדכן את הנתונים הקיימים בתצוגה, השתמש ב-  לְעַדְכֵּן  הַצהָרָה.

UPDATE view_name  
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];

אם ברצונך לעדכן את הגדרת התצוגה מבלי להשפיע על הנתונים, השתמש במשפט CREATE OR REPLACE VIEW. לדוגמה, בואו נוסיף אתAgeעמודה לMarksView:

CREATE OR REPLACE VIEW view_name AS  
SELECT column1 column2 ...
FROM table_name
WHERE condition;

פֶּתֶק: לא ניתן לעדכן את כל התצוגות באמצעות הצהרת UPDATE.

כללים לעדכון תצוגות ב-SQL:

יש לעמוד בתנאים מסוימים כדי לעדכן תצוגה. אם אחד מהתנאים הללו הוא לֹא לא ניתן לעדכן את התצוגה.

  1. משפט SELECT המשמש ליצירת התצוגה לא אמור לכלול משפט GROUP BY או הזמנה לפי סָעִיף.
  2. הצהרת SELECT לא צריכה לכלול את מוּבהָק מילת מפתח.
  3. התצוגה צריכה לכלול את כל ערכי NOT NULL.
  4. אין ליצור את התצוגה באמצעות שאילתות מקוננות או שאילתות מורכבות.
  5. התצוגה צריכה להיווצר מטבלה אחת. אם התצוגה נוצרת באמצעות טבלאות מרובות, לא נוכל לעדכן את התצוגה.

טכניקות מתקדמות עם תצוגות

1. עדכון נתונים באמצעות תצוגות

אנו יכולים להשתמש במשפט CREATE OR REPLACE VIEW כדי להוסיף או להחליף שדות מתצוגה אם ברצוננו לעדכן את התצוגה MarksView ולהוסיף את השדה AGE לתצוגה זו מ- StudentMarks Table, נוכל לעשות זאת על ידי:

דוּגמָה:

CREATE OR REPLACE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS StudentMarks.AGE
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

אם נביא את כל הנתונים מ-MarksView עכשיו בתור:

SELECT * FROM MarksView;

תְפוּקָה:

שֵׁם

כְּתוֹבֶת

סימנים

גִיל

קָשֶׁה

קולקטה

90

19

לְתַרְגֵל

דלהי

80

19

דהנראג'

ביהאר

95

21

אַיִל

רג'סטאן

85

18

אנחנו יכולים להוסיף שורה ב-View באותו אופן כמו שאנחנו עושים בטבלה. אנחנו יכולים להשתמש ב INSERT INTO הצהרה של SQL כדי להוסיף שורה ב-View. בדוגמה למטה נכניס שורה חדשה ב-View DetailsView שיצרנו למעלה בדוגמה של 'יצירת תצוגות מטבלה בודדת'.

דוּגמָה:

INSERT INTO DetailsView(NAME ADDRESS)  
VALUES('Suresh''Gurgaon');

אם נביא את כל הנתונים מ-DetailsView עכשיו כ

SELECT * FROM DetailsView;

תְפוּקָה:

שֵׁם

כְּתוֹבֶת

קָשֶׁה

קולקטה

אשיש

דורגאפור

לְתַרְגֵל

דלהי

דהנראג'

ביהאר

בטח

גורגאון

3. מחיקת שורה מתצוגה

מחיקת שורות מתצוגה היא גם פשוטה כמו מחיקת שורות מטבלה. אנו יכולים להשתמש במשפט DELETE של SQL כדי למחוק שורות מתצוגה. גם מחיקת שורה מתצוגה מוחקת תחילה את השורה מהטבלה בפועל והשינוי משתקף לאחר מכן בתצוגה. בדוגמה זו נמחק את השורה האחרונה מהתצוגה DetailsView שזה עתה הוספנו בדוגמה לעיל של הוספת שורות.

דוּגמָה:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

אם נביא את כל הנתונים מ- DetailsView עכשיו כ

SELECT * FROM DetailsView;

תְפוּקָה: 

שֵׁם

השוואה בין אריה לנמר

כְּתוֹבֶת

קָשֶׁה

קולקטה

אשיש

דורגאפור

לְתַרְגֵל

דלהי

דהנראג'

ביהאר

4. עם אפשרות בדיקה סעיף

הסעיף WITH CHECK OPTION ב-SQL הוא משפט שימושי מאוד עבור תצוגות. זה חל על תצוגה הניתנת לעדכון. הוא משמש למניעת שינוי נתונים (באמצעות INSERT או UPDATE) אם התנאי במשפט WHERE במשפט CREATE VIEW אינו מתקיים.

אם השתמשנו בסעיף WITH CHECK OPTION במשפט CREATE VIEW ואם פסקת UPDATE או INSERT לא עומדים בתנאים אז הם יחזירו שגיאה. בדוגמה למטה אנו יוצרים View SampleView מטבלת StudentDetails עם סעיף WITH CHECK OPTION.

דוּגמָה:

CREATE VIEW SampleView AS  
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;

בתצוגה זו אם ננסה כעת להכניס שורה חדשה עם ערך null בעמודה NAME אז זה ייתן שגיאה כי התצוגה נוצרת עם התנאי לעמודת NAME בתור NOT NULL. לדוגמה, למרות שהתצוגה ניתנת לעדכון, גם השאילתה שלהלן עבור תצוגה זו אינה חוקית:

INSERT INTO SampleView(S_ID)  
VALUES(6);
צור חידון