Presentation laddar. Vänta.

Presentation laddar. Vänta.

DATABASHANTERING för programmerare Lektion 5 Mahmud Al Hakim

Liknande presentationer


En presentation över ämnet: "DATABASHANTERING för programmerare Lektion 5 Mahmud Al Hakim"— Presentationens avskrift:

1 DATABASHANTERING för programmerare Lektion 5 Mahmud Al Hakim mahmud@hakimdata.se www.hakimdata.se

2 2 Repetition Svara på följande frågor från Northwind databasen som finns på w3schools: http://www.w3schools.com/sql/sql_tryit.asp http://www.w3schools.com/sql/sql_tryit.asp  Visa en lista på alla kontaktpersoner?  Visa en sorterad lista (A-Ö) på kontaktpersoner?  Från vilka länder kommer kunderna?  Hur många kunder finns det i databasen?  Hur många kunder finns det i USA?  Hur många kunder finns det i varje land?  Visa en lista på alla kunder som har kontor i tyskland?  Visa information om kunden som har ”Berglund” som efternamn?  Visa en lista på kunder som inte kommer från USA?  Lista land och antal kunder för länder som har mer än en kund?

3 3 Idag Avancerade frågor i MySQL  Koppla samman två tabeller  Underfrågor (nästlade frågor)

4 4 En Fråga? Hämta de anställdas namn och namnen på de avdelningar där de arbetar?

5 5 Personal Avdelning personalIDnamnbefattningavdelningID 7513 Nina Larsson Programmerare128 9842 Bengt Svensson DBA42 6651 Arne Persson Programmerare128 9006 Camilla Blom Systemadminist ratör 128 avdelningIDnamn42Ekonomi 128FoU

6 6 Enkla frågor Select namn From personal;

7 7 Enkla frågor Select namn From avdelning;

8 8 Koppla samman två tabeller Kartesiska produkten   Kartesiska produkten = kryssprodukt R X S Den kartesiska produkten av två relationer är kombinationen av alla rader i den första med alla rader i den andra. Select personal.namn, avdelning.namn From personal, avdelning; From personal, avdelning;

9 9 Personal Avdelning personalIDnamnbefattningavdelningID 7513 Nina Larsson Programmerare128 9842 Bengt Svensson DBA42 6651 Arne Persson Programmerare128 9006 Camilla Blom Systemadminist ratör 128 avdelningIDnamn42Ekonomi 128FoU

10 10

11 11 Koppla samman två tabeller JOIN Select personal.namn, avdelning.namn From personal, avdelning Where personal.avdelningID = avdelning.avdelningID; avdelning.avdelningID;

12 12 Personal Avdelning personalIDnamnbefattningavdelningID 7513 Nina Larsson Programmerare128 9842 Bengt Svensson DBA42 6651 Arne Persson Programmerare128 9006 Camilla Blom Systemadminist ratör 128 avdelningIDnamn42Ekonomi 128FoU

13 13

14 14 Använd alias ! Select personal.namn as personalnamn, avdelning.namn as avdelningnamn avdelning.namn as avdelningnamn From personal, avdelning Where personal.avdelningID = avdelning.avdelningID; avdelning.avdelningID;

15 15

16 16 Använd mer alias ! Select p.namn as personalnamn, a.namn as avdelningnamn From personal p, avdelning a Where p.avdelningID =a.avdelningID;

17 17 JOIN (INNER JOIN) Select p.namn, a.namn From personal p JOIN avdelning a Where p.avdelningID =a.avdelningID; Select p.namn, a.namn From personal p JOIN avdelning a ON p.avdelningID =a.avdelningID;

18 18 Mer JOIN  Vad händer i de fall då vi vill hitta rader i en tabell som inte har någon motsvarande rad i den andra tabellen?  Exempel: Sök efter anställda som inte ännu har haft några externa uppdrag. Alltså anställda som inte finns med i tabellen uppdrag.

19 19 Select namn from personal, uppdrag Where personal.personalid=uppdrag.personalid;

20 20 LEFT JOIN Select personal.namn From personal LEFT JOIN uppdrag ON personal.personalID=uppdrag.personalID;

21 21 LEFT JOIN Select personal.namn, klientID From personal LEFT JOIN uppdrag ON personal.personalID=uppdrag.personalID;

22 22 IS NULL Select personal.namn From personal LEFT JOIN uppdrag ON personal.personalID=uppdrag.personalID Where klientID IS NULL;

23 23 Underfrågor (nästlade frågor)  Vilka programmerare har haft externa uppdrag?  Steg 1 Skapa en härledd tabell Select personalID, namn From personal From personal Where befattning = ”Programmerare”; Where befattning = ”Programmerare”;

24 24

25 25 Underfrågor med härledda tabeller  Steg 2 Skapa ett alias för tabellen och använd den i en annan sats precis som vilken annan tabell. SELECT programmerare.namn FROM (Select personalID, namn From personal Where befattning = ”Programmerare”) AS programmerare, uppdrag Whereprogrammerare.personalID=uppdrag.personalID;

26 26

27 27 Underfrågor för enskilda värden  Vilken anställd har arbetat flest antal timmar på ett uppdrag under en viss dag?  Steg 1 SELECT MAX(timmar) from uppdrag;

28 28  Steg 2 SELECT p.namn FROM personal p, uppdrag u WHERE p.personalID = u.personalID AND u.timmar= (SELECT MAX(timmar) from uppdrag);

29 29 VTC - Querying Your Data  Gå till adressen: http://www.alhakim.org http://www.alhakim.org  Ladda ner VTC filmer  Gå igenom på ”Querying Your Data” filmer: -Sorting Retrieved Data -Specifying Numbers of Results -Joining Tables -More On Joining Tables -Data Aggregation -Queries Syntax Recap

30 30 Övningar  Gå till adressen: http://www.w3schools.com/sql/ http://www.w3schools.com/sql/ Läs ”SQL Advanced” kapitlet. Läs ”SQL Advanced” kapitlet.


Ladda ner ppt "DATABASHANTERING för programmerare Lektion 5 Mahmud Al Hakim"

Liknande presentationer


Google-annonser