SQL SQL הינה השפה הדומיננטית לטיפול בבסיסי נתונים יחסיים, אך לא קיים סטנדרט SQL יחיד. ׁ(SQL92, SQL3 …) ניתן לחלק את פקודות SQL לארבע משפחות: פקודות להגדרת.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

ממיבחניםC שאלות ++.
מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
1 Formal Specifications for Complex Systems (236368) Tutorial #2 Z notation; Examples.
מתמטיקה בדידה תרגול 3.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
1 מבוא למדעי המחשב ביטויים. 2 ביטויים expressions ביטויים (expressions) הינם יצורים תחביריים בעלי טיפוס וערך. הגדרה אינדוקטיבית של ביטויים : קבועים הם.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
חורף תשס " ג DBMS , שפות שאילתה : SQL ( א ') 1 סכמה SQL: מושגים טבלה, רלציה שורה, רשומה, n- יה עמודה, תכונה, שדה, אטריביוט.
תחשיב הפסוקים חלק ג'. צורות נורמליות א. DF – Disjunctive Form – סכום של מכפלות. דוגמא: (P  ~Q  R)  (R  P)  (R  ~Q  ~P) הגדרה: נוסחה השקולה לנוסחה.
DBMS , שפות שאילתה: SQL (ב')
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
©Silberschatz, Korth and Sudarshan4.1Database System Concepts SQL n מבנה שאילתה n פונקציות צבירה.
אלכסנדר ברנגולץ דואר אלקטרוני: אלכסנדר ברנגולץ דואר אלקטרוני: פעולות מורפולוגיות.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
תחשיב היחסים (הפרדיקטים)
1 compute תנאים פשוטים בעזרת compute לוגי לדוגמא: compute q1 = w > 80. Freq var = q1.
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
מבוא לשפת C תרגול 4: ביטויים לוגיים ומשפטי תנאי מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב"
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
אביב תשס"גDBMS , שפות שאילתה: SQL1 סכמה SQL (Structured Query Language) : מושגים טבלה, רלציה שורה, רשומה, n- יה עמודה, תכונה, שדה, אטריביוט.
2003B Q5 Suppliers(sid, sname, city) Select sid from suppliers where city=‘jerusalem’ or sname like ‘%Smith’ Select sid from suppliers where city=‘jerusalem’
מחרוזות – הטיפוס String
© Keren Kalif JDBC קרן כליף.
Structured Query Language
Object Oriented Programming
Tirgul 12 Trees 1.
Object Oriented Programming
Structured Query Language
Structured Query Language (Data Manipulation Language)
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
Database Systems - Technion
Object Oriented Programming
XML מבוא כללי MCSD Doron Amir
אינדקסינג והשינג (indexing & hashing)
SQL בסיסי – הגדרה אינדוקטיבית
Structured Query Language
מודל היחסים (Relational Model)
מערכות בסיסי נתונים ספרות Database System Concepts/ Korth, Siberschatz
עבודה עם נתונים באמצעות ADO.NET
מודל היחסים (Relational Model)
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
בעיות נוספות ב-NPC.
תיכון בסיס-נתונים יחסי
תכנות מכוון עצמים ושפת JAVA
Based on the lecture notes of Prof. Sagiv
תיכון אהל שם, רמת גן קורס PHP – הרצאה מס' 10
מבוא למערכות מידע פרק 1.
בסיסי נתונים ושפת SQL הרצאה #6
טבלאות מדומות (Views).
Presentation transcript:

SQL SQL הינה השפה הדומיננטית לטיפול בבסיסי נתונים יחסיים, אך לא קיים סטנדרט SQL יחיד. ׁ(SQL92, SQL3 …) ניתן לחלק את פקודות SQL לארבע משפחות: פקודות להגדרת בסיס הנתונים (Data Definition) פקודות לטיפול בנתונים (Data Manipulation) פקודות בקרת גישה לבסיס הנתונים (Data Access Control) פקודות לטיפול בתנועות (Transaction Management)

שאילתות בסיסיות שאילתת SQL פועלת על יחסים, ותוצאתה היא יחס. השאילתה הבסיסית מורכבת משלושה רכיבים: פסוק select : מקביל לאופרטור ההטלה בא”י. פסוק from : מקביל למכפלה קרטזית בא”י. הפסוק מפרט את היחסים המשתתפים בהערכת הביטוי. פסוק where : מקביל לאופרטור הבחירה בא”י. select A1,A2,…An from r1,r2,…rm where P תכונות יחסים פרדיקט

פסוק זה שקול (כמעט) לשאילתת אלגברת היחסים A1,A2,…An(P (r1r2 ...  rm)) השמטת פסוק ה where שקולה להשמטת פעולת הבחירה ניתן להחליף את רשימת התכונות A1,A2,…An ב כוכבית (*) כדי להציג את כל התכונות ביחסים המופיעים בפסוק ה from . מצא את שמות כל הסניפים ביחס deposit select branch-name from deposit בשאילתת SQL זו אין אלימינציה של nיות חוזרות!! סילוק הnיות החוזרות מתקבל על ידי שימוש ב distinct select distinct branch-name from deposit

פרדיקטים מורכבים ב SQL משמשים המקשרים הלוגיים and, or או not במקום הסימנים המתמטיים , ו  של אלגברת יחסים. מצא את שמות הלקוחות שיש להם חשבון הלוואה בסניף כלשהו ואת ערי מגוריהם select distinct customer.customer-name,customer-city from borrow,customer where borrow.customer-name= customer.customer-name מצא את שמות הלקוחות שיש להם חשבון הלוואה בסניף merkazi ואת ערי מגוריהם select distinct customer.customer-name,customer-city from borrow,customer where branch_name = ‘merkazi’ and borrow.customer-name= customer.customer-name

משתני nיה - כינוי SQL שואלת את הסימון של משתני nיה מתחשיב יחסים לפי nיות. מצא את שמות הלקוחות שיש להם חשבון חיסכון בסניף כלשהו ואת ערי מגוריהם. select distinct T.customer-name,customer-city from deposit S, customer T where S.customer-name = T.customer-name scope בתת-שאילתה ניתן להשתמש רק במשתני nיה שהוגדרו בתת-השאילתה עצמה או בכל שאילתה שמכילה אותה. אם משתנה nיה מוגדר גם לוקלית בתת-שאילתה וגם גלובלית, תופסת ההגדרה הלוקלית.

התאמת מחרוזות תבניות תווים מתוארות בעזרת שני תווים מיוחדים: תו האחוזים (%) - מתאים לכל תת מחרוזת. קו תחתי ( _ ) - מתאים לכל תו בודד. תבניות תוים הן case sensitive. התאמת תבניות בSQL - בעזרת אופרטור ההשוואה like מצא את שמות הלקוחות הגרים ברחוב ששמו כולל את תת-המחרוזת ‘ha’. select customer-name from customer where street like ‘%ha%’

חישובים על עמודות ניתן לבצע חישובים נומריים על הערכים המופיעים ביחס. ניתן להציג תוצאה של חישוב כזה כ”עמודה מדומה”. הדפס לכל חשבון חסכון, שסכום החיסכון שלו הוא מעל 0.001 מסך נכסי הסניף, את מספר החשבון, הסניף בו מתנהל ואת היחס בין סכום החיסכון לסך הנכסים של הסניף. select account-number, deposit.branch_name, amount / assets from deposit, branch where deposit.branch-name = branch.branch-name and amount / assets > 0.001

צירוף של שאילתות בסיסיות פעולות minus, intersect, union שקולות ל , , - באלגברת יחסים. מצא את שמות הלקוחות שיש להם חשבון חיסכון או הלוואה או שניהם בסניף ‘aviv’ (select distinct customer-name from deposit where branch-name=‘aviv’) union from borrow מצא את שמות הלקוחות שיש להם גם חשבון חיסכון וגם הלוואה בסניף ‘aviv’ כנ”ל, אך במקום union צ”ל intersect

שאילתות עם תתי-שאילתות

שייכות לקבוצות האופרטור in בודק לשייכות לקבוצה. הקבוצה עשויה להיות קבועה, או תוצאה של תת-שאילתה. מצא את שמות הלקוחות שיש להם חשבון הלוואה וגם חשבון חיסכון בסניף ‘Aviv’. select distinct customer-name from borrow where branch-name=‘Aviv’ and customer-name in (select customer-name from deposit where branch-name=‘Aviv’) האופרטור not in פועל באופן דומה (למשל, מצא שמות הלקוחות שיש להם חשבון הלוואה אך לא חשבון חיסכון בסניף ‘Aviv’).

מצא את שמות הלקוחות שיש להם חשבון חיסכון באחד הסניפים שבהם חוסך ‘Morag’ select distinct T.customer-name from deposit T, deposit S where S.customer-name = ‘Morag’ and S.branch-name=T. branch-name

השוואה לקבוצות > some,  some, < some,  some, =some, some > all,  all, < all,  all, =all, all מצא את רשימת הסניפים שערך נכסיהם גדול מערך נכסיו של סניף כלשהו ב ‘Jaffa’ select branch-name from branch where assets > some (select assets where branch-city=‘Jaffa’)

הפסוקים contains ו not contains מבצעים בדיקת האם קבוצה של ערכים מכילה קבוצת ערכים אחרת. (בניגוד ל ודומיהם, המשווים ערך בודד לקבוצת ערכים) in, > some, > all מצא את שמות הלקוחות שיש להם חשבונות חיסכון בכל הסניפים הנמצאים בעיר ‘Jaffa’ . select distinct S.customer-name from deposit S where (select T.branch-name from deposit T where S.customer-name = T.customer-name) contains (select branch-name from branch where branch-city= ‘Jaffa’)

בדיקת יחסים ריקים SQL מאפשרת לבדוק האם התוצאה של תת-שאילתה כוללת (לא כוללת) nיות באמצעות האופרטור exists (בהתאמה not exists ) מצא את שמות הלקוחות שיש להם חשבון חיסכון וגם חשבון הלוואה בסניף ‘Aviv’. select customer-name from customer C where exists (select * from deposit where deposit.customer-name = C.customer-name and branch-name=‘Aviv’) and exists (select * from borrow where borrow.customer-name = C.customer-name and branch-name=‘Aviv’)

מצא את שמות הלקוחות שיש להם חשבונות חיסכון בכל הסניפים ב ‘Jaffa’. select distinct S.customer-name from deposit S where not exists ( (select branch-name from branch where branch-city = ‘Jaffa’) minus (select T. branch-name from deposit T where S.customer-name=T.customer-name) )

צירופים (Join) SQL מאפשרת לבצע צירופים טבעיים ופעולות צירוף (Join) אחרות לחילופין, במקרה שלעמודות עליהן מתבצע הצירוף שמות זהים, ניתן להשתמש בצירוף טבעי מצא את שמות הלקוחות שיש להם חשבון חיסכון בסניף כלשהו ואת ערי מגוריהם. select distinct customer-name,customer-city from deposit inner join customer on deposit.customer-name = customer.customer-name select distinct customer-name,customer-city from deposit natural inner join customer

סוגי צירופים (Join) inner join left outer join right outer join full outer join תנאי צירוף natural on <predicate> using (A1, A2, …An)

דוגמאות

מיון התצוגה [order by [asc/desc גורם למיון הnיות בתצוגה. רשימה של שמות הלקוחות שיש להם חשבונות הלוואה בסניף ‘Aviv’ ממוינת בסדר אלפביתי. select distinct customer-name from borrow where branch-name=‘Aviv’ order by customer-name ניתן לבצע מיון על שדות אחדים. select * from borrow order by amount desc, loan-number asc

הקבצה ופונקציות הקבצה פונקציות על קבוצות של nיות מתבצעות בעזרת פסוק group by . התכונה/תכונות המופיעות בפסוק group by מגדירות קבוצות של nיות שערכיהן זהים בתכונות המצוינות. פונקציות הקבצה: ממוצע: avg מינימום: min מקסימום: max סכום: sum ספירה: count פונקציות ההקבצה פועלות על קבוצה של nיות. תוצאת הפעולה היא מספר יחיד לכל קבוצה.

מצא את יתרת החיסכון הממוצעת בכל סניף select branch-name,avg(balance) from deposit group by branch-name מצא את מספר בעלי חשבונות החיסכון בכל סניף select branch-name,count( distinct customer-name) from deposit group by branch-name פסוק having מציין תנאי על קבוצות. מצא שמות הסניפים שממוצע יתרות החיסכון שלהם גדול מ1200 ואת ממוצע היתרות select branch-name,avg(balance) from deposit group by branch-name having avg(balance) > 1200

מצא את הסניפים שממוצע יתרות החיסכון שלהם מירבי אין לבצע הרכבה של פונקציות הקבצה!!! having(max(avg…)) select branch-name from deposit group by branch-name having avg(balance)  all (select avg(balance) group by branch-name) במקרה של השמטת פסוק group by , פונקצית ההקבצה תפעל על היחס כולו select avg(balance) from deposit ממוצע יתרות החיסכון של כל החשבונות

כאשר מופיעים פסוק where ופסוק having יחד סדר הביצוע הוא: where group by having מצא את ממוצע יתרות חשבונות החיסכון של כל החוסכים הגרים ב’Haifa’ ושיש להם לפחות 3 חשבונות חיסכון select avg(balance) from deposit,customer where deposit.customer-name=customer.customer-name and customer-city=‘Haifa’ group by deposit.customer-name having count(distinct account-number)>2

עדכונים בבסיס הנתונים 1. מחיקה מבנה פקודת המחיקה delete r where P פעולה זו מוחקת מהיחס r את הnיות שעבורן הפרדיקט P נותן ערך אמת. מחק את כל הnיות ביחס borrow delete borrow מחק את כל חשבונות החיסכון של ‘Tamir’ delete borrow where customer-name=‘Tamir’

2. הוספה ניתן להוסיף מידע ליחס בשתי צורות: הוספה של nיה מפורשת insert into deposit values (‘hamerkaz’,55,’Cohen’,1500) insert into deposit select branch-name,loan-number,customer-name,200 from borrow where branch-name=‘Aviv’

פקודת update מאפשרת לשנות חלק מהתכונות בnיה. 3. עדכון פקודת update מאפשרת לשנות חלק מהתכונות בnיה. ניתן לבחור את הnיות לעדכון כמו במחיקה ובהוספה. הוסף 5% לכל יתרות חשבונות החיסכון update deposit set balance=balance*1.05 הוסף 6% ליתרות חשבונות החיסכון מעל 1000 ו 5% ליתרות החיסכון בסכום מתחת ל 1000 update deposit set balance=balance*1.06 where balance>1000 set balance=balance*1.05 where balance1000

תצפיות פקודת create view מאפשרת להגדיר תצפיות. מבנה הפקודה הוא create view v as query query הוא ביטוי שאילתה חוקי. v הוא שם התצפית. תצפית של שמות כל הלקוחות והסניפים, בהם יש להם חשבונות. create view all-customer as (select branch-name,customer-name from deposit ) union from borrow )

עדכון בתצפית עלולה לגרום לאנומלית עדכון (update anomaly). create view loan-info as select branch-name,loan-number,customer-name from borrow מאפשרת לבצע הוספה של nיה Insert into loan-info values (‘Aviv’,89,’Levy’)

הגדרת תבניות יחסים SQL DDL מאפיינת את היחסים בבה”נ: התבנית של כל יחס. תחום הערכים המתאים לכל תכונה. אוסף של אינדקסים לכל יחס. הרשאות לכל יחס. אילוצי שלמות. מבנה האכסון הפיסי של כל יחס על הדיסק. create table r ( A1 D1, A2 D2 ….,An Dn) r הוא שם היחס ו Di הוא תחום התכונה Ai . מחיקת יחס מבה”נ מתבצעת באמצעות drop table drop table r