בסיסי נתונים ושפת SQL הרצאה #4 אורן דבוסקין telhaidb@cielago.com
מפגש #4 חזרה משיעור קודם – פקודת Select המשך - פקודת SQL select המודל הטבלאי תרגול ב SQL Server
דרישת שלום מ Contador
ומסלול הרכיבה
שאילתת SQL - מבנה בסיסי פקודת ה - SELECT : שאילתה לשליפת מידע מטבלה FROM [ טבלאות ] WHERE [ תנאי ] [ אפשרויות נוספות : order by, group by, having… ]
בחירת עמודות SELECT [distinct] [ * | columns [alias] ] FROM [ טבלאות ] WHERE [ תנאי ] [ אפשרויות נוספות : order by, group by, having… ] distinct רשימת פריטים ייחודיים * בחירת כל העמודות alias שינוי שם העמודה
תנאי SELECT [ עמודות ] FROM [ טבלאות ] WHERE [ תנאי ] [ אפשרויות נוספות : order by, group by, having… ] תנאי לוגי כבכל שפת תכנות. מילים מיוחדות : not, between, or, and, is null, is not null, like, in השוואות: <>, >, < , >=, <= פונקציות , לדוגמא: now()
פונקציות סקלר - דוגמא SELECT [ עמודות ] FROM [ טבלאות ] WHERE upper(city) = ‘TEL-AVIV’
פונקציות קבוצה - דוגמא SELECT count(*) FROM [ טבלאות ] WHERE upper(city) = ‘TEL-AVIV’
סקירת פונקציות עזרה של MS-SQL. W3Schools: http://www.w3schools.com/sql/sql_functions.asp בעברית: http://webmaster.org.il/articles/sql-system-functions
מיון SELECT [ עמודות ] FROM [ עמודות ] WHERE [ תנאי ] ORDER BY [ columns [asc|desc] ] מיון לפי עמודות בסדר עולה, יורד ברירת מחדל : מיון בסדר עולה
מיון - דוגמא SELECT [ עמודות ] FROM [ עמודות ] WHERE [ תנאי ] ORDER BY last_name desc, first_name
Aggregation SELECT [ עמודות ] FROM [ עמודות ] WHERE [ תנאי ] GROUP BY [ columns ] קיבוץ נתונים לפי עמודות
Aggregation - דוגמא SELECT [ עמודות ] FROM [ עמודות ] WHERE [ תנאי ] GROUP BY city
Aggregation SELECT [ עמודות ] FROM [ עמודות ] WHERE [ תנאי ] GROUP BY [ columns ] HAVING [ condition ] הפעלת תנאי על הקבוצה
Aggregation - דוגמא SELECT [ עמודות ] FROM [ עמודות ] WHERE [ תנאי ] GROUP BY city HAVING count(*) > 1
הכל ביחד SELECT * FROM users WHERE birthdate between ‘1/1/1973’ and ‘1/1/1983’ ORDER BY birthdate DESC
שלבים בעיצוב בסיס נתונים בניית המבנה התפישתי: הייצוג הלוגי של בסיס הנתונים. לרוב באמצעות תרשים. בניית המבנה הלוגי: תרגום המבנה הלוגי להגדרות עבור סכמת DBMS. המבנה הפיזי: פריסת הטבלאות, אופן שמירת בסיס הנתונים.
המודל התפישתי תאור הישויות/אובייקטים בבסיס הנתונים תאור הקשרים בין האובייקטים מתואר בתרשים ERD : Entity Relationship Diagram תרשים ישויות קשרים
ישות Entity אובייקט במודל שקיים במציאות, והוא בעל משמעות (טבלה) לדוגמא: סטודנט, ציונים, מרצים, כיתות לימוד ישות חזקה / חלשה: ישות עם קיום עצמאי / בעלת תלות בישות אחרת. מופע Instance: פריט מידע בישות (שורה בטבלה).
תכונה Attribute מאפיין של הישות (שדה בטבלה). כל תכונה מוגדרת על ידי: טיפוס נתונים Datatype: סוג הנתון (מספר, תאריך, מחרוזת וכו') מרחב ערכים Domain: מרחב ערכים חוקיים לתכונה (טווח מספרים, האם חובה?) ערך Value: פריט המידע הקיים בתכונה ברגע נתון.
מפתח Key מזהה עבור הישות: תכונה אחת או יותר המהווה זיהוי חד-ערכי למופע ביישות. מפתח ראשי Primary Key: קבוצת התכונות המהוות זיהוי חד-ערכי למופע בישות. מפתח זר/חיצוני Foreign key: תכונה/קבוצת תכונות בישות המהווה מפתח ראשי לישות אחרת.
תאור בתרשים Entity Name Attribute (PK) Attribute …
תרשים - דוגמא users user_id user_name birthday hometown …
קשרים Relationship יחס בעל משמעות בין ישויות שונות. פונקציית / קרדינליות הקשר: דרגת היחס בין הישויות 1:1 קשר חד-חד ערכי (אחד לאחד) 1:N קשר חד-רב ערכי (אחד לרבים) M:N קשר רב-רב ערכי (רבים לרבים)
קשרים - דוגמאות טבלת עובדים – פרטי חשבון טבלת מחלקות – עובדים טבלת עובדים – פרוייקטים דוגמאות נוספות...
תרשים ERD 1:1 1:N N:M
מפתחות ראשיים/זרים? 1:1 1:N N:M האם יש לנו ישות ללא מפתח ראשי?
SQL Web Admin ממשק ניהול Web עבור SQL-Server TOAD: כלי נוספים: http://sqlwebadmin.codeplex.com TOAD: http://www.quest.com/toad-for-sql-server/ כלי נוספים: http://www.sqlmaestro.com/products/mssql http://www.mylittleadmin.com/zip/mla_sql_3.7.zip
שאילתות על טבלאות משתמשים יצירת קשרים טבלאות פייסבוק: תרגיל כיתה שאילתות על טבלאות משתמשים יצירת קשרים טבלאות פייסבוק: https://developers.facebook.com/docs/reference/fql/
טבלת החברים uid bigint NOT NULL display_name varchar(50) NULL Type Allow null? uid bigint NOT NULL display_name varchar(50) NULL alternate_name username password email birthdate date gender interested_in relationship picture_link friends_count int שם טבלה: user
דגשים – תרגילי בית דרישת קדם למבחן מסכם: הגשה של 50% מהתרגילים סימולציית ציונים בקורס:
שיעור הבא המשך המודל התפישתי. המודל הטבלאי.