Presentation is loading. Please wait.

Presentation is loading. Please wait.

Summary SQL DML.

Similar presentations


Presentation on theme: "Summary SQL DML."— Presentation transcript:

1 Summary SQL DML

2 SELECT הצורה הבסיסית של שאילתא ב- SQL היא בעלת המבנה: SELECT / FROM / WHERE SELECT - מפרט את העמודות שיופיעו בתוצאה. FROM - מפרט את הטבלאות מתוכן יש ללקט את המידע. WHERE - מפרט את השורות שיופיעו בתוצאה.

3 SELECT נתונה לנו טבלת האומנים, שמכילה מידע על אומנים שונים.
ListOfArtists ArtistID LastName FirstName Nationality DateOfBirth DateDeceased 1 Miro Joan Spanish 1983 1893 2 Kandinsky Wassily Russian 1944 1866 3 Klee Paul German 1940 1879 4 Matisse Henri French 1954 1869 5 Chagall Marc 1985 1887 11 Sargent John Singer American 1925 1856 17 Tobey Mark 1976 1890 18 Horiuchi 1999 1906 19 Graves Morris 1920 20 Dali Salvador 1989 1904 21 Rodin Auguste 1917 1840

4 SELECT * FROM ListofArtists WHERE Nationality='American';
ArtistID LastName FirstName Nationality DateofBirth DateDeceased 11 Sargent John Singer American 1856 1925 17 Tobey Mark 1890 1976 18 Horiuchi Paul 1906 1999 19 Graves Morris 1920

5 SELECT * FROM ListOfArtists ORDER BY Nationality;
השאילתא הבאה תציג את האומנים ממוינים על-פי ארץ מוצאם. כל האומנים האמריקאיים יופיעו בהתחלה והספרדים בסוף. SELECT * FROM ListOfArtists ORDER BY Nationality; ברירת המחדל של Order by היא למיין בסדר עולה. כדי לשנות זאת עלינו להשתמש במילת המפתח Desc לציין שאנו רוצים סדר יורד. Asc מציין סדר עולה

6 SELECT * FROM ListofArtists ORDER BY Nationality;
ArtistID LastName FirstName Nationality DateofBirth DateDeceased 11 Sargent John Singer American 1856 1925 19 Graves Morris 1920 1999 18 Horiuchi Paul 1906 17 Tobey Mark 1890 1976 21 Rodin Auguste French 1840 1917 5 Chagall Marc 1887 1985 4 Matisse Henri 1869 1954 3 Klee German 1879 1940 2 Kandinsky Wassily Russian 1866 1944 20 Dali Salvador Spanish 1904 1989 1 Miro Joan 1893 1983

7 SELECT LastName,FirstName, Nationality,
DateDeceased - DateOfBirth AS Age FROM ListofArtists WHERE DateDeceased-DateOfBirth >=80 ORDER BY Nationality ; Display the artists who lived more than 80 years LastName FirstName Nationality Age Tobey Mark American 86 Horiuchi Paul 93 Matisse Henri French 85 Chagall Marc 98 Miro Joan Spanish 90 Dali Salvador

8 DISTINCT אם נרצה לקבל את רשימת ארצות מוצאם של האומנים, אם נקליד:
SELECT Nationality FROM ListOfArtists; נקבל טבלה עם כפילויות. כדי לדאוג שכל ערך יופיע פעם אחת בלבד ניתן להשתמש במילת המפתח DISTINCT שתופיע לפני העמודה בה אנו מעונינים. השאילתא הבאה תציג את חמשת ארצות מוצאם של האומנים ללא כפילויות. SELECT DISTINCT Nationality FROM ListOfArtists;

9 SELECT DISTINCT Nationality FROM ListOfArtists;
Spanish Russian German French American

10 IN, NOT IN, BETWEEN ניתן לשלב את מילות המפתח, IN, NOT IN, BETWEEN ב-WHERE CLAUSES כך למשל, השאילתא הבאה תציג רק את האומנים הספרדים והאמריקאים ממוינים על- פי ארץ מוצאם ושמות משפחתם. SELECT * FROM ListofArtists WHERE Nationality IN ('American', 'Spanish') ORDER BY Nationality, lastname; המפתח הראשון, ארץ מוצא, הוא מפתח המיון הראשי. כך שנקבל בהתחלה את כל האומנים האמריקאים ממוינם על-פי שם משפחתם וכו".

11 ORDER BY Nationality, lastname;
SELECT * FROM ListofArtists WHERE Nationality IN ('American', 'Spanish') ORDER BY Nationality, lastname; Display American & Spanish Artists sorted both by their nationality and their last names ArtistID LastName FirstName Nationality DateofBirth DateDeceased 19 Graves Morris American 1920 1999 18 Horiuchi Paul 1906 11 Sargent John Singer 1856 1925 17 Tobey Mark 1890 1976 20 Dali Salvador Spanish 1904 1989 1 Miro Joan 1893 1983

12 ניתן להשתמש במילת המפתח LIKE כדי להתאים תת-מחרוזות.
השאילתא הבאה תציג בפנינו את כל האומנים ששמות משפחתם מכילים את האות a SELECT * FROM ListofArtists WHERE LastName LIKE '%a%' ; % Any number of characters ‘a%’ Displays strings that start with a ‘%a’ Displays strings that end with a ‘%a%’ Displays strings that include a

13 SELECT * FROM ListofArtists WHERE LastName LIKE '%a%' ;
ArtistID LastName FirstName Nationality DateofBirth DateDeceased 2 Kandinsky Wassily Russian 1866 1944 4 Matisse Henri French 1869 1954 5 Chagall Marc 1887 1985 11 Sargent John Singer American 1856 1925 19 Graves Morris 1920 1999 20 Dali Salvador Spanish 1904 1989

14 שימוש בפונקציות ספריה פונקציות ספריה ב- :SQL סכום SUM ממוצע AVG
מינימום MIN מקסימום MAX מניה COUNT ניתן להשתמש בפונקציות האלה וכן להוסיף שימוש במילת המפתח AS כדי להציג תוצאה אלגנטית יותר. השאילתא הבאה, תציג את האומנים שחיו יותר מ-80 שנה ממוינים על-פי ארצות מוצאם. SELECT LastName,FirstName, Nationality, DateDeceased - DateOfBirth AS Age FROM ListofArtists WHERE DateDeceased-DateOfBirth >=80 ORDER BY Nationality ;

15 SELECT MIN(DateDeceased-DateOfBirth) AS MinAge,
MAX(DateDeceased-DateOfBirth) AS MaxAge, Round(AVG(DateDeceased-DateOfBirth) )AS AvgAge FROM ListOfArtists; MinAge MaxAge AvgAge 61 98 82

16 COUNT, GROUP BY השאילתא הבאה תציג בפנינו את מספר האומנים על-פי ארצות מוצאם. SELECT Nationality,COUNT(*) AS NumberOfArtists FROM ListOfArtists GROUP BY Nationality HAVING count(*) > 1; HAVING מגביל את הקבוצות שמופיעות בתוצאה. GROUP BY מבצע הקבצה של ערכים משותפים כך שהתוצאות תהיינה מחולקות על-פי ארץ המוצא. COUNT סופר את מספר השורות.

17 SELECT Nationality,COUNT(*) AS NumberOfArtists
FROM ListOfArtists GROUP BY Nationality HAVING count(*) > 1; Nationality NumberOfArtists American 4 French 3 Spanish 2

18 SELECT CONCAT(firstName,' ',lastName) as Name FROM listOfArtists
Joan Miro Wassily Kandinsky Paul Klee Henri Matisse Marc Chagall John Singer Sargent Mark Tobey Paul Horiuchi Morris Graves Salvador Dali Auguste Rodin

19 Inner Join נניח שנרצה לאחד את השורות של שתי הטבלאות, כלומר לקבל את פרטי העבודות שיש לגלריה ביחד עם שמות האומנים שיצרו אותם. נוכל לכתוב, SELECT LastName, FirstName, Title, Copy, Medium FROM ListOfArtists, Work WHERE ListOfArtists.ArtistID = Work.ArtistID;

20 ListOfArtists Work WorkID Title Copy Medium [Description] ArtistID 500
LastName FirstName Nationality DateOfBirth DateDeceased 1 Miro Joan Spanish 1983 1893 2 Kandinsky Wassily Russian 1944 1866 3 Klee Paul German 1940 1879 4 Matisse Henri French 1954 1869 5 Chagall Marc 1985 1887 11 Sargent John Singer American 1925 1856 17 Tobey Mark 1976 1890 18 Horiuchi 1999 1906 19 Graves Morris 1920 20 Dali Salvador 1989 1904 21 Rodin Auguste 1917 1840 ListOfArtists Work WorkID Title Copy Medium [Description] ArtistID 500 Memories 4 Unique Casein rice paper collage 31 X 24.8 in. 18 511 Surf and Bird 142/500 High Quality Limited Print NorthWest School Expressionist style 19 521 The Tilled Field 788/1000 Early Surrealist style 1 522 La Lecon de Ski 353/500 Surrealist style 524 Woman With A Hat 596/750 A very colourful impressionist piece 4 548 Night Bird Watercolour on paper 50X72.5 cm. - Signed 553 The Dance 734/1000 An Impressionist masterpiece 586 Spanish Dancer 588/750 American Realist style-From work in Spain 11 590 Blue Interior unique Tempera on card 43.9 X 28 in. 17

21 SELECT lastName, FirstName, Title,Copy, Medium
FROM listofartists,work WHERE listofartists.artistid = work.artistid; lastName FirstName Title Copy Medium Horiuchi Paul Memories 4 Unique Casein rice paper collage Graves Morris Surf and Bird 142/500 High Quality Limited Print Miro Joan The Tilled Field 788/1000 La Lecon de Ski 353/500 Matisse Henri Woman With A Hat 596/750 Night Bird Watercolour on paper The Dance 734/1000 Sargent John Singer Spanish Dancer 588/750 Tobey Mark Blue Interior unique Tempera on card

22 תקציר פקודות

23 SELECT : SELECT * FROM listOfArtists; תציג בפנינו את כל ערכי העמודות בטבלת listOfartists WHERE: SELECT * FROM listOfArtists WHERE Nationality = ‘American’; תציג בפנינו רק את פרטיהם של האומנים האמריקאים SELECT * FROM listOfArtists WHERE Nationality = ‘American’AND DateDeceased >= 1950; ייתן את האומנים האמריקאיים שנפטרו לאחר שנת 1950. ORDER BY: SELECT * FROM ListOfArtists ORDER BY Nationality; נקבל את פרטי האומנים ממוינים על-פי ארץ מוצאם. SELECT * FROM ListofArtists ORDER BY Nationality ASC , DateDeceased DESC ; נקבל את האומנים ממוינים על-פי ארץ מוצאם בסדר עולה, ובכל תת-קבוצה המיון המשני יתבצע על-פי שנת פטירתם בסדר יורד. DISTINCT : SELECT DISTINCT Nationality FROM ListOfArtists; נקבל את ארצות מוצאם של האומנים ללא כפילויות.

24 IN: SELECT * FROM ListofArtists WHERE Nationality IN ('American', 'Spanish') ORDER BY Nationality, lastname; נקבל רק את פרטי האומנים הספרדים והאמריקאים ממוינים על- פי ארץ מוצאם ושמות משפחתם. BETWEEN : SELECT * FROM listOfArtists WHERE DateOfBirth BETWEEN 1870 AND 1900; נקבל את פרטי האומנים שנולדו בין השנים 1870 לבין 1900 LIKE: SELECT * FROM ListofArtists WHERE LastName LIKE '%a%' ; נקבל את פרטי כל האומנים ששמות משפחתם מכילים את האות a MIN: SELECT LastName, FirstName, Nationality, DateDeceased-DateOfBirth AS Age FROM ListOfArtists WHERE (SELECT MIN(DateDeceased-DateOfBirth) FROM ListOfArtists) = DateDeceased-DateOfBirth; נקבל את פרטי האומן שחי הכי פחות זמן. COUNT(*), GROUP BY : SELECT Nationality, COUNT(*) AS NumberOfArtists FROM ListOfArtists GROUP BY Nationality; נקבל את מספר האומנים מכל ארץ מוצא (ההקבצה תתבצע על-פי ארצות מוצאם.)

25 HAVING: SELECT (DateDeceased-DateOfBirth) AS Age, COUNT(*) AS NumberOfArtists FROM ListOfArtists GROUP BY Age HAVING Age > 70; נקבל את מספרי האומנים בכל שכבת גיל מעל גיל 70 , מקובצים על-פי גילם. ALLIAS : SELECT MAX(Origins) FROM (SELECT DISTINCT count(*) AS Origins FROM listofartists GROUP BY Nationality) AS MaxOrigins; נקבל את המספר המקסימלי של מספר אומנים מארץ מוצא מסוים INNER JOIN: SELECT LastName, FirstName, Title, Copy, Medium FROM ListOfArtists, Work WHERE ListOfArtists.ArtistID = Work.ArtistID; נקבל את פרטי העבודות שיש לגלריה ביחד עם שמות האומנים שיצרו אותם.

26 יציג רשימה של כל שמות המשפחה של האומנים והלקוחות. EXISTS:
UNION: (SELECT lastname FROM ListOfArtists) UNION (SELECT lastname FROM Customer) ; יציג רשימה של כל שמות המשפחה של האומנים והלקוחות. EXISTS: SELECT LastName FROM ListOfArtists AS a WHERE EXISTS(SELECT LastName FROM Customer AS c WHERE a.LastName=c.LastName); מבצע חיתוך בין טבלאות: יציג את שמות המשפחה של האומנים שהם גם לקוחות LIMIT, OFFSET: SELECT * FROM listOfArtists LIMIT 3 OFFSET 4; יציג 3 שורות מהטבלה החל מהשורה ה-5


Download ppt "Summary SQL DML."

Similar presentations


Ads by Google