610 likes | 781 Views
פקודות לטיפול בנתונים (Data Manipulation ). הפקודה : SELECT. 2 המשפטים הראשונים הינם חובה וארבעת הנוספים-רשות. משפט ה SELECT -. מגדיר את שמות העמודות שיש לשלוף ולהציג שמות של עמודות מטבלה אחת או יותר ניתן להגדיר חישובים על עמודות
E N D
הפקודה: SELECT • 2 המשפטים הראשונים הינם חובה וארבעת הנוספים-רשות
משפט הSELECT - • מגדיר את שמות העמודות שיש לשלוף ולהציג • שמות של עמודות מטבלה אחת או יותר • ניתן להגדיר חישובים על עמודות • ניתן להגדיר פונקציות הפועלות על עמודה (חישוב ממוצע של גיל) • ניתן להגדיר שם נוסף לעמודה • הסדר שבו שמות העמודות רשומות הוא הסדר שבו הן תוצגנה
משפט WHERE • הגדרת תנאי לוגי לשליפת שורות • מכיל אופרטורים השוואתיים: =, >, <, <>, =<, => • מכיל אופרטורים לוגיים: NOT, OR, AND • בדיקת קיום ערך בתוך קבוצה סגורה של ערכים ע”י שימוש ב IN - • בדיקת קיום ערך בתוך טווח ערכים ע”י שימוש ב- BETWEEN • בדיקת קיום מחרוזת תווים בתוך ערכים של עמודה ע”י שימוש ב- LIKE
משפטים נוספים בפקודת ה- SELECT • משפט GROUPED BY - מאפשר הקבצת שורות שבהם מופיעים בעמודה/ות מסוימת/ות ערכים זהים • משפט HAVING - מגדיר תנאי לוגי אותו יקיימו השורות המקובצות בלבד • משפט ORDER BY - מגדיר סדר המיון שבו תוצגנה השורות הנשלפות
הפקודה Select של שפת SQLמול פקודת Select של האלגברה הטבלאית • הפקודה Select של שפת SQL מכילה בתוכה את 3 האופרטורים של האלגברה הטבלאית: • ?
הפקודה Select של שפת SQLמול פקודת Select של האלגברה הטבלאית • Join, Project, Select
שליפת כל העמודות וכל השורות - טבלה אחת
שליפת שורות ללא הצגת שורות כפולות
בחירת שורות - בדיקת השוואה עם תנאי בוליאני
בחירת שורות - בדיקת קיום ערך בתוך קבוצת ערכים
עמודות מחושבות (Calculated columns) 2008 ‘AUT2008’
הוספת כיתוב קבוע 2008 ‘AUT2008’
פונקציות מובנות (Build-In Function) • פועלות על עמודה כל שהיא ומחזירות ערך יחיד • אם רוצים שהפונקציה תתעלם מערכים כפולים בעמודה נשתמש ב- Distinctלפני שם העמודה • רשימת הפונקציות הינה:
דוגמאות 2007 ‘SUM2007’
שאילתות מקובצות- Grouped Queries • מאפשר הקבצה של שורות בעלות ערך זהה • הצגת שורה אחת עבור אוסף של שורות המכילות אותו ערך בעמודות מסוימות • משפט ה- Having מגדיר תנאי על השורות המקובצות • כל שם עמודה המופיע במשפט Group By חייב להופיע קודם במשפט ה- Select ובאותו הסדר
שאילתות עם מספר טבלאות • מתבסס על הקשרים הלוגיים בין הטבלאות • הצירוף (Join) מתבצע ע”י הגדרת תנאי כל שהוא בין העמודות של הטבלאות • התנאי יכול להיות: שוויון (Equi Join) או תנאי לוגי אחר (Theta Join) • מערכות מסחריות קובעות מגבלות לגבי מספר הטבלאות המשתתפות - 8
דוגמא • הצג את שמות הסטודנטים ואת עיר מגוריהם עבור כל הסטודנטים שלמדו בקורס c-200
שאילתות עם מספר טבלאות INNER
סטודנטים בקורסים עם ציון ממוצע גבוה מציון הממוצע של הקורס • SELECT • course_name,student_id,student_name,c_avg.course_avg,avg(grade) as student_avg • FROM grades g, students s, courses c, (SELECT course_id, avg(grade) as course_avg FROM grades GROUP BY course_id) c_avg • WHERE s.student_id = g.student_id • and c.course_id = g.course_id • and c_avg.course_id = g.course_id • GROUP BY course_name,student_id,student_name,c_avg.course_avg • HAVING avg(grade) > c_avg.course_avg • ORDER BY s.student_id,student_name
צירוף טבלאות ע”י Outer Join • הצירוף הרגיל הנקרא גם Inner Joinמעביר לטבלת התוצאה רק זוגות של שורות מ- 2 טבלאות עבורן מתקיים תנאי הצירוף • הצירוף החיצוני Outer Join מעביר אל טבלת התוצאה את כל השורות של אחת או שתי הטבלאות המשתתפות בצירוף:
צירוף טבלאות ע”י Outer Join • Left Outer Join - לטבלת התוצאה עוברות כל השורות מהטבלההשמאלית • Right Outer Join- לטבלה התוצאה עוברות כל השורות מהטבלה הימנית • Full Outer Join- לטבלת התוצאה עוברות כל השורות מ- 2 הטבלאות
צירוף טבלאות ע”י Outer Join - דוגמא: • הצג את רשימת ראשי המחלקה, שם המחלקה שבראשם הם עומדים ושמות הקורסים המוצעים ע”י אותה מחלקה
צירוף טבלה אל עצמה (Reflexive Join, Self Join) • מאפשר התייחסות מספר פעמים אל אותה טבלה
תת שאילתא • יכולת הקינון מאפשרת לשפת SQL להיקרא שפה מובנית • סדר ביצוע השאילתות הוא מתת השאילתא הפנימית ביותר ועד לשאילתא הראשית • תת השאילתא מוקפת בסוגריים ומופיעה בתוך משפט WHERE של השאילתא הראשית • תת השאילתא יוצרת טבלת תוצאה המכילה עמודה אחת בלבד או ערך בודד • תת השאילתא אינה יכולה להכיל מיון • משפט WHEREשל תת-שאילתא יכול להכיל בעצמו תת שאילתא נוספת - מבנה מקונן
תת שאילתא • כאשר תת שאילתא מחזירה קבוצת ערכים ניתן לבדוק אם הערכים של עמודה מהשאילתא הראשית מופיעים בתוך קבוצת הערכים המוחזרים ע”י תת השאילתא באמצעות האופרטור IN
תת שאילתא - דוגמאות ומספר הקורס
תת שאילתא - דוגמאות NAME, CITY
סטודנטים שלא לקחו קורסים עם 4 נקודות והציונים שלהם מעל 75 • SELECT student_id, student_name, course_name, points, grade • FROM students s, grades g, courses c • WHERE g.student_id=s.student_id • and c.course_id =g.course_id • and not exist (SELECT * from courses WHERE points=4) • and grade > 75