Views ו-STORED PROCEDURES ב-MySQL

במאמר הקודם למדנו על MySQL subqueries. באופן תיאורטי יש לנו את כל היכולת לכתוב איזו שאילתא חדשה. במאמר הזה נלמד על VIEW – דרך נוחה לשמירת שאילתות מורכבות כטבלה משלהן.

VIEW

בדוגמאות הקודמות יצרנו שאילתא מסובכת למדי שנראית כך:


SELECT my_purchase.costumer_id, purchase_item, costumer_name,costumer_age FROM my_purchase INNER JOIN my_costumer ON my_purchase.costumer_id=my_costumer.costumer_id;

נניח שמדובר בשאילתא שרצה לא מעט פעמים, מדוע לא ליצור סוג של 'שאילתא קבועה'? זה בדיוק מה שה-view יוצר – טבלה חדשה, ממש כמו כל טבלה אחרת אך היא מכילה את נתוני השאילתא שקבענו. הסינטק של VIEW הוא מאד פשוט כמו כל דבר ב-MySQL. ראשית נכתוב CREATE VIEW ואז את שם מסד הנתונים שלנו, נקודה ואז את שם ה-VIEW. אחרי כן רושמים AS ואת ה-SELECT שלנו.

בלי דוגמא שמבהירה הכל אי אפשר:


CREATE VIEW internet_database.my_view AS 
SELECT my_purchase.costumer_id,purchase_item, costumer_name,costumer_age FROM my_purchase INNER JOIN my_costumer ON my_purchase.costumer_id=my_costumer.costumer_id;

ועכשיו, אם אסתכל ברשימת הטבלאות שיש במסד הנתונים internet_database, אני אראה שיש לי טבלה חדשה! אך הטבלה הזו היא טבלה דינמית שמתעדכנת כל הזמן בהתאם לשינויים בשאר הטבלאות. על הטבלה הזו אני יכול להריץ כמובן SELECT כאוות נפשי.

שינוי VIEW נעשה עם ALTER בדיוק כמו כל טבלה, גם מחיקה נעשית עם DROP בדומה לטבלה.

STORED PROCEDURE

STORED PROCEDURE הוא החלק המורכב ביותר שיש ב-MySQL. עם יד על הלב, אני לא מכיר הרבה מפתחי ווב שמשתמשים בזה, אך חשוב להכיר את הנושא הזה. מדובר בעצם בשפת התכנות של MySQL שבאמצעותה אנו יכולים להריץ פונקציות יותר מורכבות לביצוע פעולות שונות.

יצירת STORED PROCEDURE

בתחילה אנו נתמקד ב-STORED PROCEDURE פשוט יחסית. אחד שיעשה פעולת SELECT פשוטה על my_costumer. לא משהו שאנו לא מכירים. ראשית, כיוון שאנו הולכים לכתוב פונקציה שיש בה את הסימן ";" שבמקרה הוא גם הסימן שלנו להראות ל-MySQL שהפקודה שלנו הסתיימה, אנו צריכים להגדיר לו סימן אחר. הסימן הזה נקרא DELIMITER. אחרי שאנו מגדירים לו DELIMITER של '//', אנו צריכים לכתוב את הפונקציה ואז להגדיר חזרה את ה-DELIMITER ל: ';'.


DELIMITER //

כאן יש STORED PROCEDURE

DELIMITER ;

בין ה-DELIMITERים, אנו יכולים ליצור את ה-STORED PROCEDURE שלנו. ראשית אנו נפצח ב-CREATE PROCEDURE ואז את שם הפונקציה שלנו עם (). אחרי כן BEGIN ואחרי כן מה הפונקציה עושה. במקרה שלנו SELECT פשוט. ואז END. נשמע פשוט? זה באמת פשוט:


DELIMITER //
mysql> CREATE PROCEDURE myClients()
    -> BEGIN
    -> SELECT * FROM my_costumer
    -> ;
    -> END //

DELIMITER ;

והנה סרט הדרכה למי שרוצה לראות איך אני יוצר את זה ממש 'חי'.

קריאה ל-STORED PROCEDURE

הקריאה ל-STORED PROCEDURE היא פשוטה מאד והולכת כך:


CALL myClients();

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

מחיקת STORED PROCEDURE

מחיקה של STORED PROCEDURE נעשית עם DROP PROCEDURE ואז שם הפונקציה.


DROP PROCEDURE myClients;

צפייה בכל ה-STORED PROCEDURES

על מנת לראות את כל ה-STORED PROCEDURES שיש לנו על מסד הנתונים, כל מה שצריך לעשות זה להריץ את הפקודה הבאה:


SHOW PROCEDURE STATUS;

אפשר להשתמש בפילטר LIKE (שעליו למדנו במאמר קודם) כדי לסנן תוצאות.

לצפות ב-STORED PROCEDURE ספציפי

אם אנו רוצים לראות STORED PROCEDURE ספציפי, כל מה שעלינו לעשות זה להריץ SHOW CREATE PROCEDURE ואז את שם ה-STORED PROCEDURE. למשל:



SHOW CREATE PROCEDURE myClients;

במאמר הבא אנו נמשיך לדון ב-STORED PROCEDURE והפעם נכתוב פונקציות יותר מורכבות מ-SELECT פשוט.

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

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (1 הצבעות, ממוצע: 5.00 מתוך 5)

תגיות: פורסם בקטגוריה: לימוד MySQL

אל תשארו מאחור! יש עוד מה ללמוד!

הצטרפו לעדכונים!

העדכונים נשלחים אך ורק כאשר האתר מתעדכן.

רן בר-זיק

רן בר-זיק כותב כל המאמרים באינטרנט ישראל, מפתח אינטרנט מנוסה במגוון שפות ופלטפורמות.
ניתן ליצור איתי קשר באמצעות:
כתובת המייל שלי: info@internet-israel.com.
פרופיל הלינקדאין שלי
הטוויטר שלי
פרופיל הפייסבוק שלי
אני תמיד שמח לייעץ ולעזור, אך בשל עומס הפניות הרב, אני לא תמיד מצליח לענות במהירות.

מאמרים אחרונים