Presentation is loading. Please wait.

Presentation is loading. Please wait.

בסיסי נתונים ושפת SQL הרצאה #8

Similar presentations


Presentation on theme: "בסיסי נתונים ושפת SQL הרצאה #8"— Presentation transcript:

1 בסיסי נתונים ושפת SQL הרצאה #8
אורן דבוסקין

2 מפגש #8 חזרה - פקודות לעדכון בסיס הנתונים. שלבים בעיצוב בסיס הנתונים.
תרגול ב Access.

3 insert - הוספה הוספת שורה (בודדת) לבסיס הנתונים:
רישום הטבלה אליה יש להוסיף את השורה החדשה, ואת הערכים שיתווספו לשורה. מבנה כללי: INSERT INTO [table-name] {( [column-name, … ] )} VALUES ( [value, …. ] ) value = constant * אין צורך בשימוש ב values אם מכניסים ערכים לכל העמודות בטבלה.

4 insert – הוספה מרובת שורות
הוספת מרובת שורות לבסיס הנתונים. מאפשר העתקת נתונים מטבלה אחת והכנסה לטבלה אחרת. INSERT INTO [table-name] {( [column-name, … ] )} [QUERY]

5 Insert - דוגמאות insert into customers (customer_id, customer_name) values ( 4, ‘Oren’ ); insert into purchases values ( 1,1,now(), 5 ); (customer_id, product_id) values (5,1);

6 multi row insert - דוגמא
insert into purchases_backup select * from purchases where purchase_date between ‘1/1/2011’ and ’31/12/2011’; insert into products (product_id, product_name, category, price ) select product_id, ‘2012_’+product_name, category, price*2 from products

7 update - עדכון עדכון ערכים בשורה בודדת, או בו-זמנית במספר שורות המקיימות תנאי לוגי מסויים. מבנה כללי: זהירות לא לעדכן בטעות את כל הטבלה! UPDATE [table-name] [SET column-name = expression, … ] { WHERE [condition] }

8 update - דוגמאות עדכון מבצע.... update products set discount = 0.95; נניח והוספנו ללקוחות עמודה חדשה: מספר רכישות. אפשר לעדכן את מספר הרכישות לכל לקוח. update customers c set num_purchases = ( select count(*) from purchases p where c.customer_id = p.customer_id )

9 delete - מחיקה מחיקת שורה בודדת, או מחיקה בו-זמנית של מספר שורות המקיימות תנאי לוגי מסויים. מבנה כללי: זהירות לא למחוק בטעות את כל הטבלה! DELETE FROM [table-name] { WHERE [condition] }

10 delete - דוגמאות מחיקת לקוחות לא נאמנים...
delete customers where num_purchases = 0; מחיקת מכירות שאין להם לקוח (תיקון בסיס הנתונים): delete purchases where customer_id not in ( select customer_id from customers) delete purchases p where not exists ( select 1 from customers c where c.customer_id = p.customer_id)

11 עדכונים - דגשים פעולת העדכון צריכה לעמוד בחוקיות:
שדות חובה מפתח ראשי מפתח זר חוקיות אחרת שנקבעה עמודות שאינן נכללות בהוספה יקבלו: ערך ריק null ערך ברירת מחדל

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

13 נרמול בסיס הנתונים תהליך שמטרתו יצירת אוסף טבלאות המייצגות את המודל הלוגי בצורה מדויקת ואמינה, והורדת כפילות נתונים. התהליך: פירוק ישויות לטבלאות. הסרת כפילויות. הגדרת הקשרים/יחסים בין הטבלאות.

14 יחסים בין הטבלאות הגדרת יחסים בין הטבלאות (relationships):
שמירה על תקינות המידע מאפשר לבצע פעולות אוטומטיות בעדכון/מחיקה (מחיקת שורות "בנים", עדכון ערך בשדות, וכו).

15 דוגמא לכפילות טבלת הרוכבים riders UCInum fullname birthdate team
nation height weight 100 Alberto Contador 1/1/1980 Saxo Bank Spain 176 62 200 Lance Armstrong 5/1/1973 Radio Shack USA 178 63 300 Miguel Indurain 1/20/1968 Banesto 185 70 400 Bjran Riis 1/1/1968 Telekon Germany 190 74 450 Robbie McEwen 8/20/1985 Lotto Australia 175 65

16 דוגמא לכפילות riders UCInum fullname birthdate team nation height
weight 100 Alberto Contador 1/1/1980 Saxo Bank Spain 176 62 200 Lance Armstrong 5/1/1973 Radio Shack USA 178 63 300 Miguel Indurain 1/20/1968 Banesto 185 70 400 Bjran Riis 1/1/1968 Telekon Germany 190 74 450 Robbie McEwen 8/20/1985 Lotto Australia 175 65

17 דוגמא לכפילות riders UCInum fullname birthdate team nation height
weight 100 Alberto Contador 1/1/1980 Saxo Bank Spain 176 62 200 Lance Armstrong 5/1/1973 Radio Shack USA 178 63 300 Miguel Indurain 1/20/1968 Banesto 185 70 400 Bjran Riis 1/1/1968 Telekon Germany 190 74 450 Robbie McEwen 8/20/1985 Lotto Australia 175 65

18 פתרון: יצירת טבלאות משנה
פתרון כל כפילות על ידי יצירת טבלאות משנה

19 דוגמא 2: טבלת התוצאות results UCInum racename racedate place points
100 Tour de France 7/1/2010 1 Giro D' Italia 5/1/2010 95 Paris Nice 4/1/2010 2 50 200 7/1/1999 7/1/2000 7/1/2001 7/1/2002 7/1/2003 7/1/2004 7/1/2005 Amstel Gold Race 4/1/2003 4 20 4/1/2004 70 Olympics 10/1/2000 3 300 5/1/1994 400 Tour De France 7/1/1996 Tour De FRANCE 7/1/1995 75

20 תרגיל כיתה פקודות עדכון, נרמול בסיס נתונים

21 שיעור הבא פקודות DDL. נושאים מתקדמים.

22 תרגיל בית #5 תרגול נרמול בסיס הנתונים. הגשה: 22/1


Download ppt "בסיסי נתונים ושפת SQL הרצאה #8"

Similar presentations


Ads by Google