Informationssystem och Databasteknik. Frågespråk mot relationsmodellen

Storlek: px
Starta visningen från sidan:

Download "Informationssystem och Databasteknik. Frågespråk mot relationsmodellen"

Transkript

1 Informationssystem och Databasteknik HUND Namn Ras Mindy Tax Ossi Tax Frågespråk mot relationsmodellen Relationsalgebra SQL 1

2 Relationsalgebra Primtiva operatorer projektion π selektion σ union differens - kryssprodukt X Med hjälp av dessa operatorer kan andra (icke-primitiva) operatorer definieras: Icke-primitiva operatorer theta-join θ ekvi-join naturlig join X snitt division Tilldelning := Relationsalgebran är sluten: R 1 op R 2 R 3 relation relation relation ((R 1 op R 2) op R 3 ) op R 4 Tar en eller två tabeller som argument (indata). Producerar en ny tabell som resultat! 2

3 Projektion π - Unär operator = tar en tabell som indata Vertikal delmängd av attribut, Man väljer ut ett antal kolumner - π A1, A2,...An (Relationsnamn) attribut - π Namn, Lön (Relationsnamn) Omordning av attribut möjligt via π attribut π Lön, Namn (ANSTÄLLD) Lön Namn Per Kvist Bo Gren Sten Rot Nils Hed Eva Berg 3

4 Selektion σ - Unär operator Horisontelll delmängd av rader Man väljer ut ett antal rader baserat på något villkor σ villkor (Relationsnamn) Enkelt villkor: Kolumn θ kolumnvärde Kolumn θ kolumn där θ {=,, <, >,, } σ 1. Chef= Eva Berg (ANSTÄLLD) kolumn kolumn-värde 2. σchef=namn(anställd) Namn Lön Chef Avd Per Kvist Eva Berg Parfym Bo Gren Eva Berg Parfym Nils Hed Eva Berg Skor Eva Berg Eva Berg Parfym kolumn kolumn Namn Lön Chef Avd Eva Berg Eva Berg Parfym Sammansatt villkor: villkor operator villkor där operator {NOT, AND, OR} 3. Chef= Eva Berg AND Lön>20000 ( ANSTÄLLD ) 3.σ Namn Lön Chef Avd Nils Hed Eva Berg Skor 4 Eva Berg Eva Berg Parfym

5 Kartesisk product A B (eller ibland A * B) ska tolkas som alla rader i A kombinerade med alla rader i B A B A B m n m n a b c x y a x a y b x b y c x c y 5

6 Kartesisk produkt, ett exempel till ANSTÄLLD ANSTÄLLD AVDELNING Namn Lön Chef Avd Anamn Våning Per Kvist Eva Berg Parfym Per Kvist Eva Berg Parfym Per Kvist Eva Berg Parfym Per Kvist Eva Berg Parfym Per Kvist Eva Berg Parfym Och så vidare på samma sätt... Eva Berg Eva Berg Parfym Eva Berg Eva Berg Parfym Eva Berg Eva Berg Parfym Eva Berg Eva Berg Parfym Eva Berg Eva Berg Parfym Leksaker Livsmedel Parfym Skor Trädgård Leksaker Livsmedel Parfym Skor Trädgård Totalt har ANSTÄLLD AVDELNING 25 st rader! (ANSTÄLLD har 5 rader och AVDELNING har 5 rader = totalt 5*5 st rader). 6

7 θ JOIN ( theta-join ) där θ {=,, <, >,, } ANSTÄLLD Namn Avd Pia 5 Mia 3 Ken 3 AVDELNING Avd ANamn 5 Bröd 1 Ost 3 Vin ANSTÄLLD X AVDELNING Anställd.Avd = Avdelning.Avd Namn Anst. Avd. Avd Avd Anamn Pia Mia Ken Bröd Vin Vin Här bildas den nya tabellen genom att matcha kolumnvärden (här kolumen Avd) från två tabeller. Om jämförelsevillkoret är = talar man om en equi-join. X Observation: σ θ-villkor (A B) Α θ-villkor B 7

8 NATURAL JOIN ANSTÄLLD AVDELNING ANSTÄLLD X AVDELNING Namn Avd Avd ANamn Namn Avd Anamn Pia 5 5 Bröd Pia 5 Bröd Mia 3 1 Ost Mia 3 Vin Ken 3 3 Vin Ken 3 Vin En NATURAL JOIN är en EQUI-JOIN där man projicerat bort ett av de ingående JOIN-attributen (här tar vi bort dupliceringen av JOINattributet Avd ). En NATURAL JOIN förutsätter att JOIN-attributet (attributen) heter likadant i det två tabeller som ska joinas. 8

9 NULL Null-värden kan ge problem vid join. ANSTÄLLDA AVDELNING Pnr Anst.nr Adress Avd.nr Avdelning Avd.nr A Byv. 3 3 Forskning B Solsv. 6 5 Försäljn AA Byv. 5 3 Admin B Byv X Solv. 7 NULL Y Byv. 11 NULL En join mellan anställda över Avd.nr kommer att resultera i att de två sista anställda inte kommer med. Beroende på omständigheterna kan detta vara vad som avsågs eller felaktigt. Pnr Anst.nr Adress Avd.nr Avdelning Avd.nr A Byv. 3 3 Forskning B Solsv. 6 5 Försäljn AA Byv. 5 3 Forskning B Byv.7 1 Admin 1 9

10 OUTER JOIN (s) A Aid Ossi Karo Mindy Ras Tax Pudel NULL B Bid Fido Emir Lady Ras Tax Kanintax NULL A X A.Ras=B.Ras B Aid A.Ras Bid B.Ras Ossi Tax Fido Tax A (LEFT) OUTER (EQUI-) JOIN ON Ras B Aid A.Ras Bid B.Ras Ossi Tax Fido Tax Karo Pudel NULL NULL Mindy NULL NULL NULL A (RIGHT) OUTER (EQUI-) JOIN ON Ras B Aid A.Ras Bid B.Ras Ossi Tax Fido Tax NULL NULL Emir Kanintax NULL NULL Lady NULL A (FULL) OUTER (EQUI-) JOIN ON Ras B Aid A.Ras Bid B.Ras Ossi Tax Fido Tax Karo Pudel NULL NULL Mindy NULL NULL NULL NULL NULL Emir Kanintax NULL NULL Lady NULL 10

11 Tilldelning eller inte tilldelning Skriv ett relationsalgebraiskt uttryck som ger namn och lön för de anställda som arbetar på andra våningen. ANSTÄLLD Metod I (flera steg): Rätt_avdelningar σ Våning=2 (AVDELNING) Rätt_anställda ANSTÄLLD X Avd=Anamn Rätt_avdelningar Rätt_uppgifter_om_anställda π Namn, Lön (Rätt_anställda) Metod II (ett enda långt relationsalgebraiskt uttryck): π Namn, Lön (ANSTÄLLD X Avd=Anamn (σ Våning=2 (AVDELNING))) 11

12 Union compatibility Somliga av de relationsalgebraiska operatorerna kräver att de tabeller som de opererar på ska vara unionskompatibla. Detta betyder att de två tabellerna måste ha: samma grad (lika många attribut/kolumner) attribut som motsvarar varandra måste ha samma domän ( attributen som motsvarar varandra måste heta likadant, viktigt inför SQL men även här med avseende på namngivning av kolumner) UNION, SNITT och DIFFERENS är unionskompatibla operatorer. Ska man ta unionen av två tabeller måste tabellerna ha lika många kolumner och de par av kolumner som svarar mot varandra måste vara av samma typ (ha samma domän). A A.a A.b a 1 a 2 b 2 A UNION B? B B.a B.b a x a y b x A UNION B? A A.a A.b a 1 a 2 b 2 B B.a B.b B.c a 1 a 2 b 2 m n o A UNION B! A A.a A.b a x a y b x B B.a B.b b x a m b x 12

13 UNION A Namn Fido Karo Mindy Ossi Ras Tax Tax Pudel Dvärgtax B Namn Fido Emir Lady Morris Ras Tax Tax Schäfer Welsh Corgie Alla rader som finns i A plus alla rader som finns i B A B Namn Fido Karo Mindy Ossi Emir Lady Morris Ras Tax Tax Pudel Dvärgtax Tax Schäfer Welsh Corgie Observation: A Β = Β Α 13

14 SNITT (INTERSECT) A Namn Fido Karo Mindy Ossi Ras Tax Tax Pudel Dvärgtax B Namn Fido Emir Lady Morris Ras Tax Tax Schäfer Welsh Corgie A B Namn Fido Ras Tax Alla rader som finns i både A och B Observation I : A Β = Β Α 14

15 DIFFERENCE (MINUS) A Namn Fido Karo Mindy Ossi Ras Tax Tax Pudel Dvärgtax B Namn Fido Emir Lady Morris Ras Tax Tax Schäfer Welsh Corgie A MINUS B Namn Karo Mindy Ossi Ras Tax Pudel Dvärgtax Alla tupler som finns i A men inte i B Observation: A - B B - A 15

16 CAR Licencenr Colour Owner ABC123 Blue Lisa AAA111 Red Lisa ABB222 Red Oscar MMM11 Yellow Ben Exempeldatabas PERSON Pname Weight PAddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB COMPANY CName Founded Homepage Telia AB Ramirent Oy

17 Differens fortsättning... Differens är användbart för frågor av typ: Ta fram alla som inte gjort ngt/helt saknar en viss egenskap etc. T ex Ta fram alla personer som inte har någon bil CAR Licencenr Colour Owner ABC123 Blue Lisa AAA111 Red Lisa ABB222 Red Oscar MMM11 Yellow Ben Notera att Owner utgör främmande nyckel mot PERSON tabellen PERSON. PName Weight Paddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 1. Skapa en relation som som innehåller alla personer som äger en bil: CAR_OWNER(Pname) := π Owner (CAR) 2. Dra sen bort denna mängd tupler från relationen PERSON (dvs mängden av alla personer): HAVE_NO_CAR := π PName (PERSON) - CAR_OWNER Observera att man måste projicera ut PName från PERSON och Owner Från CAR eftersom differens kräver att de ingående relationerna ska vara unionskompatibla! 17

18 Aggregat-funktioner i relationsalgebra: MIN, MAX, COUNT, SUM,... PERSON Pname Weight PAddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB Grupperande attribut G Aggregatfunktion(kolumn) (TABELL) Hur många anställda har varje företag? SVAR:= Company G COUNT(Person) (WORKS_AT) Hur många rader finns det i tabellen WORKS_AT? SVAR:= G COUNT(Person) (WORKS_AT) Hur många förtag har fler än 1 anställd? TEMP(Företag, Antal):= Company G COUNT(Person) (WORKS_AT)) SVAR := σ Antal > 1 (TEMP) 18

19 A B x m x n x o y m y n z m z n z o B m n o Kvot R S Vi har två relationer R och S. R S A x z För att förstå vad R KVOT S är kan man tänka på ungefär följande sätt: Vilka kolumner kommer resultatet att innehålla: Jo R - S dvs de kolumner som förekommer i R men inte i S. I vårt fall blir det kolumnen A i R. Vilka kolumn-värden kommer med i kolumnen A? Jo alla de A-värden i R som är relaterade till ALLA B- värden i S. I vårt fall är detta sant för A-värden x och z. Dvs x har ett B-värde för både m,n och o. Det samma gäller z. A-värdet y kommer inte med eftersom det saknar ett B-värde, nämligen o. 19

20 R S A 2 A 1 1 A 2 a A 3 1 a A a 2 a 2 1 a 3 a 3 2 a 1 2 a 2 Resultat Kvot, forts. R(A 1,..., A n, A n+1,..., A n+m) S(A n+1,..., A n+m) R S = Resultat(A 1,..., A n) Varje A 1,...A n - del av en R-tuppel ( huvudet ) har A n+1,...a n+m - del ( svansen ) som är lika med var och en av S-tupplerna, till vänster är n=1 och m=2. A 1 1 För att kunna ta kvoten mellan två relationer måste nämnarens kolumner uppfylla kraven på unionskompatibilitet med en delmängd av täljarens kolumner (mao nämnaren måste vara lika med svansen i täljaren) 20

21 R S A B x m x n x o y m y n z m z n z o Kandidatvärden A x y z B m n o Kvot kan skrivas om i termer av andra relationsalgebraiska operatorer: Kandidatvärden π A (R) Kombinering π A ((Kandidatvärden X S) - R) Kvoten Kandidatvärden - Kombinering Kandidatvärden X S A B x m x n x o y m y n y o z m z n z o Kombinering A y Kvoten A x z R S A x z 21

22 Kvot fortsättning... Kvot är användbart för frågor av typ: Ta fram alla som gjort allt/har alla egenskaperna. T ex Ta fram de företag som har alla personer anställda (egentligen lika med uppgiften att ta fram alla de kolumn-värden i tabellen WORKS_AT som är relaterade till (= förekommer i en rad som har en främmande nyckel mot) alla rader i tabellen PERSON ) PERSON Pname Weight PAddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB EMPLOYEES (Person) := π Pname (PERSON) HAVE_THEM_ALL := WORKS_AT EMPLOYEES COMPANY CName Founded Homepage Telia AB Ramirent Oy KVOT kallas även DIVISION 22

23 Kvot fortsättning... Lista alla företag som har samma anställda som Ramirent Oy har: PERSON Pname Weight PAddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB RAMIS := π (σ Person Company= Ramirent Oy (WORKS_AT)) ALMOST := WORKS_AT RAMIS NOTRAMIS:= π Person (WORKS_AT) - RAMIS TOOFAT := π Company (WORKS_AT X NOTRAMIS)) RESULT := ALMOST - TOOFAT NOTRAMIS.Person = WORKS_AT.Person COMPANY CName Founded Homepage Telia AB Ramirent Oy

24 Sammanfattning av några relationsalgebraiska operatorer UNION INTERSECT(= SNITT) DIFFERENCE projektion π selektion σ union differens - snitt A B Alla rader som förekommer i A eller B A A UNION B A INTERSECT B A DIFFERENCE B (A MINUS B) PROJECTION B Alla rader som förekommer i både A och B A B De rader som förekommer i A men inte i B SELECTION kryssprodukt X theta-join θ ekvi-join naturlig join X division 24

25 SQL - Structured Query Language SQL har funktioner för att hantera: databeskrivning, SQL-DDL (Data Definition Language) databearbetning, SQL-DML (Data Manipulation Language) behörighet, SQL-DCL (Data Control Language) 25

26 Icke procedurellt, dvs vad snarare än hur, dvs den som kodar anger vad som söks, (nästan) inte vilka operationer som ska utföras och inte heller i vilken ordning de ska utföras,avd AND AVDELNING.Avd = ANSTÄLLD.AVD JOIN SQL kan uttrycka allt som går att uttrycka i relationsalgebran - språket är relationally complete PLUS lite till, bland annat ORDER BY (DESC; ASC) 26

27 SQL-DML SELECT - läsning = sökning INSERT - nyskapande (vanligen av rader i en tabell) UPDATE - ändra DELETE - ta bort 27

28 SELECT SELECT Namn, Avd FROM ANSTÄLLD WHERE Lön > ANSTÄLLD Namn Lön Chef Avd Per Kvist Eva Berg Parfym Bo Gren Eva Berg Parfym Sten Rot Nils Hed Skor Nils Hed Eva Berg Skor Eva Berg Eva Berg Parfym Resultat: Namn Nils Hed Eva Berg Avd Skor Parfym 28

29 WHERE OCH JOIN Predikatet kan innehålla: Jämförelseoperatorer: = <>, >, >=, <, =< Logiska operatorer: AND, NOT, OR, Paranteser kan användas för att styra utvärderingen BETWEEN för att testa intervall ANSTÄLLD Namn Lön Chef Avd Per Kvist Eva Berg Parfym Bo Gren Eva Berg Parfym Sten Rot Nils Hed Skor Nils Hed Eva Berg Skor Eva Berg Eva Berg Parfym AVDELNING Anamn Våning Leksaker 2 Livsmedel 3 Parfym 3 Skor 2 Trädgård 1 SELECT Namn, Våning FROM ANSTÄLLD, AVDELNING WHERE Avd = Anamn AND Lön BETWEEN AND Resultat: Namn Våning Sten Rot 2 Nils Hed 2 29

30 Kvalificerade attributnamn Om ett attributnamn förekommer i flera av de berörda tabellerna måste det Kvalificeras med tabellnamnet: ANSTÄLLD Namn Lön Chef Anamn Per Kvist Eva Berg Parfym Bo Gren Eva Berg Parfym Sten Rot Nils Hed Skor Nils Hed Eva Berg Skor Eva Berg Eva Berg Parfym AVDELNING Anamn Våning Leksaker 2 Livsmedel 3 Parfym 3 Skor 2 Trädgård 1 SELECT Namn, Våning FROM ANSTÄLLD, AVDELNING WHERE ANSTÄLLD.Anamn = AVDELNING.Anamn AND Lön BETWEEN AND

31 Alias Om tabellnamnen är långa kan aliasnamn införas genom att ge en tabell ett alias utan att kommatecken skrivs i tabellen: SELECT A1.Namn, A2.Våning FROM ANSTÄLLD A1, AVDELNING A2 WHERE A1.Anamn = A2.Anamn AND Lön >

32 Alias, fortsättning Alias är även användbart när man vill joina en tabell med sig självt: Ta fram namn och lön på alla anställa som har en chef som tjänar mer än kronor: SELECT A1.Namn, A1.Lön FROM ANSTÄLLD A1, ANSTÄLLD A2 WHERE A1.Chef = A2.Namn AND A2.Lön > ANSTÄLLD Namn Lön Chef Anamn Per Kvist Eva Berg Parfym Bo Gren Eva Berg Parfym Sten Rot Nils Hed Skor Nils Hed Eva Berg Skor Eva Berg Eva Berg Parfym Resultat: Namn Lön Per Kvist Bo Gren Nils Hed Eva Berg

33 Nästlade frågor Ta fram namn och lön på alla anställda som har en chef som tjänar mer än kr: SELECT Namn, Lön FROM ANSTÄLLD WHERE Chef IN (SELECT Namn FROM ANSTÄLLD WHERE Lön > 30000) ANSTÄLLD(Namn, Lön, Chef, Anamn) AVDELNING(Anamn, Våning) Här använde vi nästling som ett alternativ till att joina en tabell med sig själv! Jämför med föregående fråga. 33

34 DIFFERENCE I SQL Ta fram namn på alla personer som aldrig ägt en röd bil: SELECT PName FROM PERSON WHERE PName NOT IN (SELECT Owner FROM CAR WHERE Colour = Red ) SELECT Owner FROM CAR WHERE Colour Red SELECT PName AS OWNER FROM PERSON EXCEPT SELECT Owner FROM CAR WHERE Colour = Red Alternativ CAR Licencenr Colour Owner ABC123 Blue Lisa AAA111 Red Lisa ABB222 Red Oscar MMM11 Yellow Ben Resultat: Owner Ben Eva PName Weight Paddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 Eva 60 Snög. 2 34

35 DIVISION i SQL Ta fram namn på de företag som har alla personer anställda: PERSON PName Weight PAddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 SELECT W.Company FROM WORKS_AT W WHERE NOT EXISTS (SELECT PName FROM Person WHERE PName NOT IN (SELECT Person FORM WORKS_AT WHERE Company = W.Company)) Det får inte existera någon person i PERSON som inte är anställd i det företag vi söker WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB Resultatmängd: Company Telia AB 35

36 Variant på DIVISION. Ta fram namn på alla företag som har samma personer anställda som Ramirent Oy : SELECT W.Company FROM WORKS_AT W WHERE NOT EXISTS (SELECT R.Person FROM WORKS_AT R WHERE R.Company = Ramirent Oy AND R.Person NOT IN (SELECT Person FROM WORKS_AT WHERE Company = W.Company)) PERSON PName Weight PAddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB Det får inte existera någon anställd som Ramirent har som inte det företag vi söker har. Hmm... Räcker detta? Resultatmängd: Company Telia AB Ramirent Oy 36

37 SELECT W.Company FROM WORKS_AT W WHERE NOT EXISTS (SELECT R.Person FROM WORKS_AT R WHERE R.Company = Ramirent Oy AND R.Person NOT IN (SELECT Person FROM WORKS_AT WHERE Company = W.Company)) AND NOT EXISTS (SELECT A.Person FROM WORKS_AT A WHERE A.Company = W.Company AND A.Person NOT IN (SELECT Person FROM WORKS_AT WHERE Company = Ramirent Oy )) Variant på DIVISION forts. Ta fram namnen på de företag som har samma anställda som Ramirent Oy : Det får inte existera någon anställd i Ramirent Oy som inte är anställd i det företag vi söker. Det får heller inte existera någon anställd i det företag vi söker som inte är anställd i Ramirent Oy. Resultatmängd: Company Ramirent Oy 37

38 DISTINCT SQL rensar inte duplikat automatiskt (vilket ju operatorerna i relationsalgebra gjorde). För att eliminera dubletter anges DISTINCT. SELECT DISTINCT(Company) FROM WORKS_AT SELECT Company From WORKS_AT Resultat: Company Telia AB Ramirent Oy Resultat: Company Telia AB Telia AB Ramirent Oy Telia AB 38

39 Inbyggda funktioner, aggregatfunktioner COUNT(*), räknar antalet rader i en tabell COUNT(kolumnnamn), räknar antalet värden i en kolumn SUM(kolumnnamn), summerar värdena i en kolumn AVG(kolumnnamn), tar genomsnittet av värdena i en kolumn MAX(kolumnnamn), ger största värdet i en kolumn MIN(kolumnnamn, ger minsta värdet i en kolumn 39

40 Exempel på aggregat-funktioner SELECT COUNT(*) FROM WORKS_AT Ger antalet rader i tabellen WORKS_AT Resultat: 4 SELECT COUNT(DISTINCT (Company)) FROM WORKS_AT Ger antalet (unika) företag i tabellen WORKS_AT Resultat: WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB 2 40

41 Order by En relation (tabell) saknar (ur teoretisk synvinkel åtminstone) ordning men man kan sortera ett sökresultat mot tabellen (görs ingen sortering kommer resultatet vanligen att presenteras i primärnyckelordning). SELECT DISTINCT Company FROM WORKS_AT ORDER BY Company Ger företagsnamnen sorterade i bokstavsordning WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB Resultat: Company Ramirent Oy Telia AB 41

42 GROUP BY Grupperar rader efter det kolumn-värde som anges Ta fram alla företag och hur många anställda varje företag har: SELECT Company, COUNT(Person) FROM WORKS_AT GROUP BY Company WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB Ger antalet anställda per företag i tabellen WORKS_AT Resultat: Company Telia AB 3 Ramirent Oy 1 42

43 GROUP BY med ny kolumnrubrik Ta fram alla företag och hur många anställda varje företag har: SELECT Company, COUNT(Person) AS Antal FROM WORKS_AT GROUP BY Company WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB Ger antalet anställda per företag i tabellen WORKS_AT Resultat: Company Antal Telia AB 3 Ramirent Oy 1 43

44 GROUP BY och HAVING HAVING fungerar på grupper som WHERE fungerar på rader, dvs eliminerar grupper. Ta fram alla företag och hur många anställda varje företag har för de företag som har mer än 2 anställda: SELECT Company, COUNT(Person) AS Antal FROM WORKS_AT GROUP BY Company HAVING COUNT(Person) > 2 WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB Ger antalet anställda per företag i tabellen WORKS_AT Resultat: Company Antal Telia AB 3 44

45 Mer om nästlade frågor (subselect) Vissa frågor kräver att man beräknar ett värde i databasen för att använda det i en WHERE-klausul. Detta kan endast lösas med en subselect (nåja en vy skulle också fungera). Ta fram alla företag som har fler anställda än Ramirent Oy har: SELECT Company, count(person) FROM WORKS_AT GROUP BY Company HAVING COUNT(Person)> (SELECT count(person) FROM WORKS_AT WHERE Company = Ramirent Oy ) Resultat: WORKS_AT Company Telia AB 3 WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB 45

46 UNION Lista alla personer som antingen väger mer än 60 kg eller äger en röd bil eller bådadera: CAR Licencenr Colour Owner ABC123 Blue Lisa AAA111 Red Lisa ABB222 Red Oscar MMM11 Yellow Ben SELECT Owner AS Pname FROM CAR WHERE Colour = Red UNION SELECT Pname FROM PERSON WHERE Weight > 60 PName Weight Paddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 Eva 65 Snög. 2 SELECT PName FROM CAR, PERSON WHERE Pname = Owner AND((Colour = Red ) OR (Weight > 60)) Varför är detta inte ett alternativ? 46

47 INTERSECT(SNITT) Lista alla personer som både äger en röd bil väger mer än 60 kg: Alternativ SELECT Owner FROM CAR WHERE Colour = Red INTERSECT SELECT Pname AS Owner FROM PERSON WHERE Weight > 60 SELECT Owner FROM CAR, PERSON WHERE Owner = Pname AND Weight > 60 AND Colour = Red 47

48 INSERT INTO PERSON VALUES( Eskil, 63, Isgränd 1 ) INSERT Används för att lägga till rader i redan existerande tabeller. Två sätt: antingen med specificerade värden eller via en SELECT-klausul: PERSON WORKS_AT PName Weight Paddress COMPANY Lisa 55 Solv. 2 Person Company CName Founded Homepage Oscar 65 Solv. 3 Lisa Telia AB Telia AB Ben 75 Bygatan 1 Oscar Telia AB Ramirent Oy Eva 65 Snög. 2 Ben Ramirent Oy Ben Telia AB PERSON PName Weight Paddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 Eva 65 Snög. 2 Eskil 63 Isgränd 1 INSERT INTO WORKS_AT (Person, Company) (SELECT DISTINCT(PName), DISTINCT(CName) FROM PERSON, COMPANY WHERE Paddress = Isgränd 1 AND CName = Telia AB ) WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB Eskil Telia AB 48

49 PERSON DELETE Används för att ta bort rader i redan existerande tabeller: PName Weight Paddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 Eva 65 Snög. 2 Eskil 63 Isgränd 1 Ta bort personen Eskil Ta bort alla rader i tabellen person WORKS_AT Person Company Lisa Telia AB Oscar Telia AB Ben Ramirent Oy Ben Telia AB DELETE FROM PERSON WHERE PName = Eskil DELETE FROM PERSON PERSON PName Weight Paddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 Eva 65 Snög. 2 PERSON PName Weight Paddress 49

50 PERSON UPDATE Används för att ädra innehållet i ett eller flera attribut: PName Weight Paddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 Eva 65 Snög. 2 Eskil 63 Isgränd 1 Öka en persons vikt med 5 kg: UPDATE PERSON SET Weight = Weight + 5 WHERE PName = Eva PERSON PName Weight Paddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 1 Eva 70 Snög. 2 Eskil 6 Isgränd 1 50

51 VYER (VIEWS) för logiskt dataoberoende En vy är en mall genom vilken man ser en databas. En vy är dynamisk, dvs varje gång Man läser en vy (gör SELECT på vyn) ser man aktuella värden. En vy är inte en tabell och dess innehåll kommer inte att lagras på sekundärminne. Det som lagras är definitionen av vyn. Kurs Student Resultat Grupp IS:4 Kalle VG A IS:4 Pelle G A IS:4 Olle G B IS:4 Lisa U B 2i1033 Kalle 5 1 2i1033 Lisa 4 1 2i1033 Oskar 3 2 2i1033 Eskil U 2 Schemaläggaren vill bara kunna läsa attributen Kurs och Student Studenterna får bara läsa attributen Kurs och Student Lärare och studierektor behöver både kunna läsa och skriva hela tabellen 51

52 Vyer för logiskt dataoberoende Vyer kan definieras på en eller flera bastabeller och eller andra vyer. CREATE VIEW Student_vy AS (SELECT Kurs, Student, Grupp FROM KURSTILLFÄLLE) CREATE VIEW Lärar_vy AS (SELECT * FROM KURSTILLFÄLLE) CREATE VIEW Schemaplanerings_vy AS (SELECT Kurs, Student FROM KURSTILLFÄLLE) Schemaläggaren vill bara kunna läsa attributen Kurs och Student Studenterna får bara läsa attributen Kurs, Student och Grupp Lärare och studierektor behöver både kunna läsa och skriva hela tabellen 52

53 Vyer för att förenkla långa SQL-satser Ta fram namn på alla personer som aldrig ägt en röd bil: SELECT PName FROM PERSON WHERE PName NOT IN (SELECT Owner FROM CAR WHERE Colour = Red ) SELECT PName FROM PERSON WHERE PName NOT IN (SELECT * FROM Röd_vy) CREATE VIEW Röd_vy AS SELECT PName FROM PERSON, CAR WHERE PName = Owner AND Colour = Red ) CAR Licencenr Colour Owner ABC123 Blue Lisa AAA111 Red Lisa ABB222 Red Oscar MMM11 Yellow Ben Resultat: PName Ben Eva PName Weight Paddress Lisa 55 Solv. 2 Oscar 65 Solv. 3 Ben 75 Bygatan 53 1 Eva 60 Snög. 2

IT i Organisationer och Databasteknik. Frågespråk mot relationsmodellen

IT i Organisationer och Databasteknik. Frågespråk mot relationsmodellen IT i Organisationer och Databasteknik HUND Namn Ras Mindy Ossi Frågespråk mot relationsmodellen Relationsalgebra SQL 1 Relationsalgebra Primtiva operatorer projektion π selektion σ union differens - kryssprodukt

Läs mer

Frågespråk mot relationsmodellen

Frågespråk mot relationsmodellen HUND Mindy Ossi Frågespråk mot relationsmodellen Relationsalgebra Relationsalgebra Primtiva operatorer projektion π selektion σ union differens - kryssprodukt X Med hjälp av dessa operatorer kan andra

Läs mer

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3. Primtiva operatorer projektion π selektion σ union differens - kryssprodukt X Relationsalgebra Tilldelning := Relationsalgebran är sluten: Med hjälp av dessa operatorer kan andra (icke-primitiva) operatorer

Läs mer

Relationsdatabasdesign 2I-4067 HT99. Relationsalgebra. som resultat!

Relationsdatabasdesign 2I-4067 HT99. Relationsalgebra. som resultat! Relationsalgebra Relationsalgebra Relationsalgebran r ett formellt sprâk fˆr att extrahera data ur relationer. SprÂket r uppbyggt av ett litet antal operatorer. Tar en eller två tabeller De primitiva operatorerna

Läs mer

MODELLER OCH SPRÅK FÖR RELATIONSDATABASER: Relationsalgebra, Relationskalkyl (Tuple calculus) & SQL

MODELLER OCH SPRÅK FÖR RELATIONSDATABASER: Relationsalgebra, Relationskalkyl (Tuple calculus) & SQL MODELLER OCH SPRÅK FÖR RELATIONSDATABASER: Relationsalgebra, Relationskalkyl (Tuple calculus) & SQL Ted Codd 970 - klassisk artikel: The relational model of data - DATASTRUKTUR - OPERATIONER - INTEGRITY

Läs mer

IT i organisationer och Databasteknik, 2I-1033 HT2002. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

IT i organisationer och Databasteknik, 2I-1033 HT2002. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3. Primtiva operatorer projektion π selektion σ union differens - kryssprodukt X Relationsalgebra Tilldelning := Relationsalgebran är sluten: Med hjälp av dessa operatorer kan andra (icke-primitiva) operatorer

Läs mer

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14 Övningar i SQL Övningar i SQL Använd Access för att öva SQL (= Structured Query Language) Skapa tabeller med SQL 1. Ny databas: SQLÖVNING Klicka: Frågor > Ny > Design > OK >Stäng > SQL Radera ordet SELECT.

Läs mer

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL) Idag 1. Från modell till databasstruktur 2. Prata med databaser (frågepsråket SQL) DD1370 (Föreläsning 3) Databasteknik och informationssystem 7,5 hp Hösten 2008 1 / 22 Från verklighet via modell till

Läs mer

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas Idag 1. Från modell till databasstruktur Från verklighet via modell till databas När vi analyserat den värld vi vill representera i en databas har vi tagit med alla möjliga kopplingar och beskrivit dem

Läs mer

Grunderna i SQL del 1

Grunderna i SQL del 1 Grunderna i SQL del 1 1. SELECT-frågor 2. SELECT 3. WHERE 4. ORDER BY 5. Inre join 6. Yttre join 7. Andra typer av join 8. Union 9. Aggregatfunktioner 10. Gruppera och summera Kap. 3 Kap. 4 Kap. 5 utom

Läs mer

Structured Query Language (SQL)

Structured Query Language (SQL) Structured Query Language (SQL) Christer Stuxberg christer.stuxberg@im.uu.se Institutionen för Informatik och Media Översikt Introduktion Enkla frågor (queries) Hämta en specifik kolumn Sök Sammanfattning

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Databaser, design och programmering Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Databaser, design och programmering Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company

Läs mer

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation SQL Structured Query Language Frågespråk för att används för data åtkomst data manipulation Kommandon Lägga in ny data, INSERT Ändra data, UPDATE Radera data, DELETE Hämta data, SELECT mfl 2005-10-13 Gk/ÖK:ITO,

Läs mer

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

Föreläsning 5: Relationsmodellen

Föreläsning 5: Relationsmodellen Föreläsning 5: Relationsmodellen DVA234 Databaser IDT Akademin för Innovation, Design och Teknik Innehåll Föreläsningens mål: Att ge en överblick över hur relationsmodellen fungerar Relationsmodellen Relationsalgebra

Läs mer

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar:

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar: DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL r s använder vi för att uttrycka frågor där ordet alla figurerar: Ex. Vilka personer har stamkundskort vid ALLA klädesbutiker i stad X? Vilka personer har bankkonto

Läs mer

Introduktion till frågespråket SQL (v0.91)

Introduktion till frågespråket SQL (v0.91) DD1370: Databaser och Informationssystem Hösten 2014 Petter Ögren Introduktion till frågespråket SQL (v0.91) 13:e November Disclaimer: Dessa anteckningar har producerats under viss tidspress, och kan därför

Läs mer

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post SQL Structured Query Language Frågespråk för att används för data åtkomst data manipulation Kommandon Lägga in ny data, INSERT Ändra data, UPDATE Radera data, DELETE Hämta data, SELECT mfl Rader Tabeller

Läs mer

Frågespråk och SQL. nikos dimitrakas rum 2423

Frågespråk och SQL. nikos dimitrakas rum 2423 Frågespråk och SQL nikosd@kth.se 08-161295 rum 2423 Connolly/Begg (3rd edition) Kapitel 5, 6 (och lite överallt) (4.1, 4.2) (4th edition) Kapitel 5, 6 (och lite överallt) (4.1, 4.2) (5th edition) Kapitel

Läs mer

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Databasföreläsning Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Tabeller Personer Databas Nummer Namn Födelseår 1 Tina 1950 2 Siv 1965 3 Olle 1980 Platt databas: all information

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Databaser, design och programmering Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company

Läs mer

07/11/14. Databasteknik och informationssystem DD1370 F2. Allmänna frågor. Är Lab0 svårbegriplig? Nu: Clickers. Är Kurswebben svårbegriplig?

07/11/14. Databasteknik och informationssystem DD1370 F2. Allmänna frågor. Är Lab0 svårbegriplig? Nu: Clickers. Är Kurswebben svårbegriplig? Allmänna frågor Databasteknik och informationssystem DD1370 F2 Petter Ögren Är Kurswebben svårbegriplig? Är lab0 svårbegriplig? Är bonus-poängen tydliga? Har ni lyckats installera Open Office? Fungerar

Läs mer

Databaser - Design och programmering. Operationer i relationsalgebra. Att söka ut data. Exempel DBschema. Att plocka ut data, forts

Databaser - Design och programmering. Operationer i relationsalgebra. Att söka ut data. Exempel DBschema. Att plocka ut data, forts Databaser Design och programmering Relationsalgebra den matematiska grunden för att bearbeta data representerad i relationsmodellen Operationer i relationsalgebra Två typer av operationer: Operationer

Läs mer

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar FÖ 8: Databaskursen 1. SQL 2. Utsökningar mot en tabell 3. Od Order by 4. Funktionerna upper, lower och initcap 5. Konkatenering 6. Kolumnalias 7. Distinct 8. Hantera nullvärden med nvl-funktionen 9. Between

Läs mer

Tentamen i Databasteknik

Tentamen i Databasteknik Tentamen i Lördagen den 21 oktober 2006 Tillåtna hjälpmedel: Allt skrivet material Använd bara framsidan på varje blad. Skriv max en uppgift per blad. Motivera allt, dokumentera egna antaganden. Oläslig/obegriplig

Läs mer

Databaser och. SQL, utsökningar mot en tabell

Databaser och. SQL, utsökningar mot en tabell Databaser och Informationssystem 5 hp IK008 Föreläsning 7 SQL, utsökningar mot en tabell Övningsuppgifter Övningstabell SQL> desc personal Name Null? Type ------------------------------------- --------

Läs mer

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 2013 kl. 9-13

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 2013 kl. 9-13 Institutionen för Data- och Systemvetenskap IT-universitetet Maria Bergholtz Tentamen DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 203 kl. 9-3 Inga hjälpmedel tillåtna (syntaxsammanställning

Läs mer

Databasutveckling Introduktion till SQL och TSQL

Databasutveckling Introduktion till SQL och TSQL Databasutveckling Introduktion till SQL och TSQL Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Introduktion till SQL SELECT satsen, enkla frågor Hämta specifika kolumner Alias

Läs mer

EMPS(NAME, SALARY, DEPT)

EMPS(NAME, SALARY, DEPT) Databaser Design och programmering Relationsalgebra den matematiska grunden för att bearbeta data representerad i relationsmodellen Operationer i relationsalgebra Två typer av operationer: Operationer

Läs mer

Karlstads Universitet, Datavetenskap 1

Karlstads Universitet, Datavetenskap 1 2003-01-20 DAV B04 - Databasteknik 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 26 Relationsmodellen En formell teori som baserar sig på (främst) mängdlära predikatlogik Föreslogs av E.F Codd 1970 i

Läs mer

Databaser och. SQL, utsökningar mot flera tabeller TENTA. # radnr (#) studnr (#) kursnr * tentadatum * betyg

Databaser och. SQL, utsökningar mot flera tabeller TENTA. # radnr (#) studnr (#) kursnr * tentadatum * betyg Databaser och Informationssystem 15 hp IK1008 Föreläsning 8 SQL, utsökningar mot flera tabeller Övningsuppgifter STUDENT TENTA KURS # studnr * fnamn * enamn o regdatum # radnr (#) studnr (#) kursnr * tentadatum

Läs mer

Grunderna i SQL del 1

Grunderna i SQL del 1 Grunderna i SQL del 1 1. SELECT-frågor 2. SELECT 3. WHERE Kap. 3 4. ORDER BY 5. Inre join 6. Yttre join 7. Andra typer av join Kap. 4 8. Union 9. Aggregatfunktioner 10. Gruppera och summera Kap. 5 utom

Läs mer

08/11/13. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Deadline på tisdag

08/11/13. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Deadline på tisdag Påminnelse: Deadline på tisdag Databasteknik och informationssystem DD1370 F3 Petter Ögren Inlämningsuppgift 1 - Skall mailas in senast 23:59 på tisdag. - Redovisas på övningen på onsdag - Inspireras av

Läs mer

Idag. Exempel. Exempel modellen (1) Exempel...

Idag. Exempel. Exempel modellen (1) Exempel... Idag Exempel Knyta ihop säcken Repetition av hela processen från värld till databas Kontroll av resultatet Exempel på frågor mot varuhusdatabasen Man börjar alltid med att bestämma vad man måste hålla

Läs mer

Databaser. Vad du ska lära dig: Ordlista

Databaser. Vad du ska lära dig: Ordlista Databaser Vad du ska lära dig: Ordlista Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda en

Läs mer

Relationsalgebra. Varför behöver jag lära mig relationsalgebra?!

Relationsalgebra. Varför behöver jag lära mig relationsalgebra?! Relationsalgebra 1 Varför behöver jag lära mig relationsalgebra?! Relationsmodellen är den datamodell som används i de flesta moderna databassystemen Data beskrivs och lagras som relationer, dvs. som ett

Läs mer

Tentamen. Databasmetodik Lördag 27 september 2014 kl

Tentamen. Databasmetodik Lördag 27 september 2014 kl Inst. för Data- och Systemvetenskap SU/KTH Tentamen EIT:DB, SP:DB, DVK:DB, ATD:DB, FK:DB, DSK:DB Ska även användas av äldre kurstillfällen, t ex för IV1018, IV1003, ITK3:DB, ITK1:DB, DSV1:DB mfl. Databasmetodik

Läs mer

1. SQL 2. Utsökningar mot flera tabeller. 4. IN-operatorn 5. Join 6. Kartesisk produkt 7. Tabellalias

1. SQL 2. Utsökningar mot flera tabeller. 4. IN-operatorn 5. Join 6. Kartesisk produkt 7. Tabellalias FÖ 9: Databaskursen 1. SQL 2. Utsökningar mot flera tabeller 3. Nästlad sökning eller sub queries 4. IN-operatorn 5. Join 6. Kartesisk produkt 7. Tabellalias 8. Distincti 9. Group by 10. Having 11. In

Läs mer

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion.

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion. Databaser Design och programmering Relationsmodellen definitioner ER-modell -> relationsmodell nycklar, olika varianter Programdesign, databasdesign Databasdesign Konceptuell design Förstudie, behovsanalys

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Webprogrammering och databaser Fö 5 Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company.

Läs mer

SQL, nästlade delfrågor 3-19. Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

SQL, nästlade delfrågor 3-19. Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga. SQL, nästlade delfrågor 3-19 Nästlade delfrågor SQL har en mekanism för nästling av delfrågor: En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga. Delfrågor används

Läs mer

Tentamen i Databasteknik

Tentamen i Databasteknik Tentamen i Databasteknik Tisdagen den 15 mars 2010 Tillåtna hjälpmedel: Allt skrivet material och räknedosa Använd bara framsidan på varje blad. Skriv max en uppgift per blad. Motivera allt, dokumentera

Läs mer

Informationssystem och Databasteknik

Informationssystem och Databasteknik Informationssystem och Databasteknik Föreläsning 4 Relationsmodellen Från konceptuell modell till relationsdatabasschema Inför projektarbetet: - sammansmältning av flera överlappande modeller av samma

Läs mer

Structured query language (SQL)

Structured query language (SQL) Structured query language SQL) Varför SQL? SQL är ett standardspråk som är oberoende av databashanteringssystemen som finns på marknaden. Med andra ord kommer du kunna arbeta mot nästan alla sorters relationsdatabaser

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Webprogrammering och databaser Fö 5 Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company.

Läs mer

Föreläsning 2: Översikt över ett databassystem

Föreläsning 2: Översikt över ett databassystem Föreläsning 2: Översikt över ett databassystem DVA234 Databaser IDT Akademin för Innovation, Design och Teknik Innehåll Föreläsningens mål: Att ge en överblick över databassystemets arkitektur, delar och

Läs mer

Relationsmodellen och syntetisk databasdesign

Relationsmodellen och syntetisk databasdesign Relationsmodellen och syntetisk databasdesign Den teoretiska grunden för relationsdatabaser Från konceptuellt schema till databas Relationsmodellen Bil Ägare En relationsdatabas är en databas som uppfattas

Läs mer

Lösningar till tentamen i EDAF75

Lösningar till tentamen i EDAF75 Lösningar till tentamen i EDAF75 4 april 2018 Lösning 1 (a) Här är ett förslag till E/R-modell: Det finns flera rimliga alternativa sätt att modellera, så du behöver inte vara orolig bara för att du inte

Läs mer

Lösningsförslag till Tentamen,

Lösningsförslag till Tentamen, Institutionen för Data- och Systemvetenskap SU/KTH Maria Bergholtz och Paul Johannesson Lösningsförslag till Tentamen, 022 2I-00 Informationssystem och databasteknik För att erhålla betyget tre räcker

Läs mer

WCMS-15, Webbutvecklare CMS

WCMS-15, Webbutvecklare CMS WCMS-15, Webbutvecklare CMS Övningstentamen, delkurs Dynamiska webbplatser (20 YH-poäng) Plats: Medieinstitutet, Malmö Tid: 25 november 2015, kl. 13.00-16.00 Tillåtna hjälpmedel: Papper, penna, suddgummi,

Läs mer

Laboration SQL. Kom igång. http://www.tfe.umu.se/courses/systemteknik/webbkurser/d&w/laborationer/sql.ht...

Laboration SQL. Kom igång. http://www.tfe.umu.se/courses/systemteknik/webbkurser/d&w/laborationer/sql.ht... Page 1 of 5 Laboration SQL Syfte: Under denna laboration skall du bekanta dig med SQL. När laborationen är genomförd skall du klara av att själv formulera enklare SQL-frågor för att kunna ta fram information

Läs mer

13/11/14. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Vad är en Databas?

13/11/14. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Vad är en Databas? Påminnelse: Vad är en Databas? Databasteknik och informationssystem DD1370 F3 Petter Ögren Ett antal tabeller Referenser (pilar) mellan tabellerna Ex: register abc123 BMW 830101-0000 def100 Volvo 830101-0000

Läs mer

Tentamen i Databasteknik

Tentamen i Databasteknik Tentamen i Onsdagen den 7 mars 2007 Tillåtna hjälpmedel: Allt skrivet material Använd bara framsidan på varje blad. Skriv max en uppgift per blad. Motivera allt, dokumentera egna antaganden. Oläslig/obegriplig

Läs mer

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14 Labb LIVE Exempelkod från föreläsningen Plushögskolan Frågeutveckling inom MSSQL - SU14 Här kommer exempelkoden jag använde under föreläsningen Exemplen Constraints... 2 Transactions... 4 Views... 5 Functions...

Läs mer

SQL del 2. Christer Stuxberg Institutionen för Informatik och Media

SQL del 2. Christer Stuxberg Institutionen för Informatik och Media SQL del 2 Christer Stuxberg christer.stuxberg@im.uu.se Institutionen för Informatik och Media Översikt Repetition SELECT INSERT Mer SELECT Null sökning Gruppering (GROUP BY) Begränsad gruppering (HAVING)

Läs mer

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information. Vad är en databas? Exempel på databaser: Kortregister på kontor Sjukvårdsjournal Bokregister på bibliotek Medlemsregister i en förening Kundregister på företag Telefonkatalogen Databas = Organiserad samling

Läs mer

Relationskalkyl (RK)

Relationskalkyl (RK) 1 Relationskalkyl (RK) Formellt frågespråk som är baserad på predikatkalkyl (logik) En formel i RK är icke-procedurell (deklarativ), dvs den specificerar vad som ska hämtas och inte hur Jämför med relationsalgebran

Läs mer

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

SQLs delar. Idag. Att utplåna en databas. Skapa en databas Idag SQLs delar Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? Index? Vad är det och varför behövs de? Behöver

Läs mer

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema Databaser Design och programmering Relationsmodellen definitioner ER-modell -> relationsmodell nycklar, olika varianter Relationsmodellen Introducerades av Edward Codd 970 Mycket vanlig Stödjer kraftfulla

Läs mer

3. Dynamiska webbplatser, 20 Yhp (4 v)

3. Dynamiska webbplatser, 20 Yhp (4 v) Webbutvecklare CMS, Yh-utbildning, 2 år, 400 Yhp, Medieinstitutet, www.m Webbutvecklare CMS, Yh-utbildning, 2 år, 400 Yhp, Medieinstitutet, www.medieinstitutet.se, sida 3/12 3. Dynamiska webbplatser, 20

Läs mer

Tentamen. i Databasteknik. lördagen den 13 mars 2004. Tillåtna hjälpmedel: Allt upptänkligt material

Tentamen. i Databasteknik. lördagen den 13 mars 2004. Tillåtna hjälpmedel: Allt upptänkligt material Tentamen i lördagen den 13 mars 2004 Tillåtna hjälpmedel: Allt upptänkligt material Använd bara framsidan på varje blad. Skriv max en uppgift per blad. Motivera allt, dokumentera egna antaganden. Oläslig/obegriplig

Läs mer

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem Tentamen för DD1370 Databasteknik och informationssystem 16 Januari 2015 Hjälpmedel: Inga hjälpmedel utom papper och penna Tänk på: Skriv högst en uppgift på varje blad. Använd endast framsidan på varje

Läs mer

Tentamen EIT:DB Databastmetodik 11/1 2013 kl. 13 17 + Lösningsförslag

Tentamen EIT:DB Databastmetodik 11/1 2013 kl. 13 17 + Lösningsförslag Tentamen EIT:DB Databastmetodik 11/1 2013 kl. 13 17 + Lösningsförslag Inga hjälpmedel är tillåtna (annat än ordbok). Kort syntaxsamling för delar av SQL samt lista med symboler för relationsalgebraiska

Läs mer

Databaser och Datamodellering Foreläsning IV

Databaser och Datamodellering Foreläsning IV Webbprogrammering - 725G54 Databaser och Datamodellering Foreläsning IV Agenda Databaser ERD SQL MySQL phpmyadmin Labb 4 Databaser Databas - samling med data Databashanterare Enkelt Kraftfullt Flexibelt

Läs mer

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem Tentamen för DD1370 Databasteknik och informationssystem 24 Augusti 2015 Hjälpmedel: Inga hjälpmedel utom papper och penna Tänk på: Skriv högst en uppgift på varje blad. Använd endast framsidan på varje

Läs mer

732G16: Databaser - Design och programmering

732G16: Databaser - Design och programmering 732G16: Databaser - Design och programmering Eva L. Ragnemalm, IDA (eva.ragnemalm@liu.se) Johan Falkenjack, IDA (johan.falkenjack@liu.se) Fö 1 Introduktion 2 Kursöversikt Teori och praktik Kursbok, lektionshäfte,

Läs mer

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem Tentamen för DD1370 Databasteknik och informationssystem Exempeltenta för kursen ht2013 Hjälpmedel: Inga hjälpmedel utom papper och penna Tänk på: Skriv högst en uppgift på varje blad. Använd endast framsidan

Läs mer

Exempel-Tentamen III

Exempel-Tentamen III Institutionen för Data- och Systemvetenskap IT-universitetet Maria Bergholtz Exempel-Tentamen III Inga hjälpmedel tillåtna (syntaxsammanställning behövs inte på denna tentamen) Skriv bara på en sida av

Läs mer

Vad är SQL? Introduktion till SQL

Vad är SQL? Introduktion till SQL Introduktion till SQL Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Vad är SQL? Structured Query Language (SQL) är ett standardiserat frågespråk för att hämta och modifiera data i en

Läs mer

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20 Idag Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 1 / 20 Idag Hur skapar vi och underhåller en databas? Hur skapar man tabeller?

Läs mer

Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem

Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem Hösten 2011 1. a) Jag följer kokboken (förel 3, bild 34) a. Regeln säger att alla objektklasser med e-termer ska bilda

Läs mer

Lösningsförslag, tentamen i Databaser

Lösningsförslag, tentamen i Databaser LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Lösningsförslag, tentamen i Databaser 2004-04-20 1. ER-diagram: Matsedel år vecka serveras 1..5 lagas-med Maträtt Ingrediens dag mängd Allergi

Läs mer

Inst. för Data- och Systemvetenskap SU Maria Bergholtz. Tentamen. 21/ kl Inga hjälpmedel är tillåtna (annat än ordbok).

Inst. för Data- och Systemvetenskap SU Maria Bergholtz. Tentamen. 21/ kl Inga hjälpmedel är tillåtna (annat än ordbok). Inst. för Data- och Systemvetenskap SU Maria Bergholtz Tentamen 2/3 205 kl. 4 8 Inga hjälpmedel är tillåtna (annat än ordbok). Skall även användas som omtentamen för DB:EIT/DSK/FK samt äldre databaskurser.

Läs mer

Föreläsning 5 Dagens föreläsning går igenom

Föreläsning 5 Dagens föreläsning går igenom Databasbaserad publicering Föreläsning 5 1 Föreläsning 5 Dagens föreläsning går igenom SQL-sammanfattning Komplett exempel, från E/R till tabeller och SQL Databasbaserad publicering Föreläsning 5 2 SQL

Läs mer

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Fiktiv tentamen för DD1370 Databasteknik och informationssystem Fiktiv tentamen för 1370 atabasteknik och informationssystem Hösten 2011 Hjälpmedel: Allt man kan tänka sig, men ingen kontakt med hjälpsamma kamrater och inga elektroniska hjälpmedel. Tänk på: Skriv högst

Läs mer

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen Lördag 8 juni kl

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen Lördag 8 juni kl Institutionen för Data- och Systemvetenskap IT-universitetet Maria Bergholtz Tentamen DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen Lördag 8 juni kl. 10-14 Inga hjälpmedel tillåtna (syntaxsammanställning

Läs mer

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Fiktiv tentamen för DD1370 Databasteknik och informationssystem Fiktiv tentamen för DD1370 Databasteknik och informationssystem Torsdag 4 dec 2008 Hjälpmedel: Allt inklusive kursbok, försläsningsanteckningar, gamla tentor och egna anteckningar, men inte tentalösningar

Läs mer

Vyer, Prepared Statements, Triggers

Vyer, Prepared Statements, Triggers Vyer, Prepared Statements, Triggers Vyer En vy är en virtuell tabell, som ej behöver existera fysiskt, en namngiven fråga En vy är inte snabbare än SELECT satsen som definierar vyn Det är möjligt att ställa

Läs mer

Databasteknik. Vad är. Vad är databaser bra till? data? föreläsare: Kjell Lindqvist. och NADA. databaser? och. vad är de bra för?

Databasteknik. Vad är. Vad är databaser bra till? data? föreläsare: Kjell Lindqvist. och NADA. databaser? och. vad är de bra för? Databasteknik Vad är data? föreläsare: Kjell Lindqvist och NADA databaser? och vad är de bra för? och varför ska ni kunna något om dem? Copyright c NADA, KTH DBT, bild 1 Copyright c NADA, KTH DBT, bild

Läs mer

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser? Databaser Design och programmering! Diverse praktiskt! Varför databaser?! Vad är en databas?! Andra viktiga begrepp Kursöversikt! Teori och praktik! Samläsning! Olika projekt! Examination (tenta, labb

Läs mer

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU Databaser Design och programmering, IDA Kursen, diverse praktiskt Varför databaser? Vad är en databas? Andra viktiga begrepp Kursöversikt Teori och praktik Fö och bok lektioner, labbar i projekt (3,5hp=100h)

Läs mer

25/11/14. Databasteknik och informationssystem DD1370. Påminnelse inför Lab 1 redovisningen. Repetition: ER modellering (gammalt + nytt)

25/11/14. Databasteknik och informationssystem DD1370. Påminnelse inför Lab 1 redovisningen. Repetition: ER modellering (gammalt + nytt) 25//4 Påminnelse inför Lab redovisningen Databasteknik och informationssystem DD370 Föreläsning 5: ER-modellenà Databas Påminnelse: Kursens mål. Förklara ett databashanteringssystems funktioner och uppbyggnad

Läs mer

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö. Laboration 2, Databashantering med MySQL Av: Marcus Rejås I denna laboration skall vi jobba vidare på bildatabasen som vi började på förra gången. Vi skall ändra fält och lära oss att

Läs mer

Sample exam questions. Database exam TIG058

Sample exam questions. Database exam TIG058 Sample exam questions Database exam TIG058 Distribution of topics covered 1. Grundläggande om Databaser och Databashanterare (5p) 2. SQLite-databashanteraren (5p) 3. SQL - SELECT, ORDER BY, WHERE, LIMIT

Läs mer

Dagens föreläsning. KTH & SU, CSC Databasteknik Föreläsning 10 sid 1

Dagens föreläsning. KTH & SU, CSC Databasteknik Föreläsning 10 sid 1 Dagens föreläsning Vad du skall komma ihåg från tidigare föreläsningar Optimering av frågor Algebraisk omformulering Kostnadsberäkningar Evaluering av frågor Algoritmer för relationsoperatorer Beräkning

Läs mer

Databaser - Design och programmering

Databaser - Design och programmering Databaser - Design och programmering Eva L. Ragnemalm, IDA (eva.ragnemalm@liu.se) Fö 1; introduktion Kursen, diverse praktiskt Varför databaser? Vad är en databas? Andra viktiga begrepp 2 Kursöversikt

Läs mer

Lösningsförslag till Exempel tentamen

Lösningsförslag till Exempel tentamen Inst. för Data- och Systemvetenskap SU/KTH Maria Bergholtz, Paul Johannesson Lösningsförslag till Exempel tentamen 2I-1033 IT i Organisationer och Databasteknik Tentamenstiden är 5 timmar Skriv bara på

Läs mer

Grunderna för relationsmodellen!

Grunderna för relationsmodellen! Grunderna för relationsmodellen! 1 Varför behöver jag lära mig relationsmodellen?! Relationsmodellen är den totalt dominerande datamodellen i moderna databassystem Beskriver databaser som en mängd tabeller

Läs mer

Föreläsning 4 Dagens föreläsning går igenom

Föreläsning 4 Dagens föreläsning går igenom Databasbaserad publicering Föreläsning 4 1 Föreläsning 4 Dagens föreläsning går igenom E/R-modellen, fortsättning Frågor till flera tabeller samtidigt Många-till-många-relationer Läs om E/R-diagram i kapitel

Läs mer

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner Databasföreläsning Del 2 lagrade procedurer, vyer och transaktioner Lagrade procedurer (Stored procedures) En stored procedure är en procedur (funktion) lagrad i en databas, och exekveras direkt på databasservern

Läs mer

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata Innehåll MySQL Intro Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata 1 Lagrad procedur / Stored Procedure Lagrad procedur har många namn, förkortningen

Läs mer

Analytisk relationsdatabasdesign

Analytisk relationsdatabasdesign Analytisk relationsdatabasdesign Att förbättra kvaliteten i databaser Presenter s Name Organization name www.horton.com Domän-regler och främmande nyckel regler via DDL Datatyp! Datatyp! Maxvärde! Maxvärde!

Läs mer

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14 Labb LABB 1 Databassagan och en rundtur i databasers märkliga värld Plushögskolan Frågeutveckling inom MSSQL - SU14 I Microsoft SQL-Server Management Studio kan man arbeta på olika sätt. Antingen via användargränssnittet

Läs mer

Tentamen i. Databasteknik

Tentamen i. Databasteknik Tentamen i Databasteknik Torsdagen den 10/3 2005 14.00-19.00 Tillåtna hjälpmedel: Allt tänkbart material Använd bara framsidan på varje blad Skriv max en uppgift per blad. Skriv tydligt. Motivera allt.

Läs mer

IT i organisationer och databasteknik

IT i organisationer och databasteknik IT i organisationer och databasteknik Föreläsning 4 Relationsmodellen Från konceptuell modell till relationsdatabasschema Regler i ER-scheman eller UMLklass diagram? I Som klasser: RABATT KlassArabatt:

Läs mer

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor TENTAMEN För kursen DATUM: 2015-11-06 TID: 14 19 Ansvarig för tentamen: Anna Palmquist Förfrågningar: 0734-612003 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p,

Läs mer

Vad du skall komma ihåg från tidigare föreläsningar. Dagens föreläsning. Evaluering av frågor. Data dictionary

Vad du skall komma ihåg från tidigare föreläsningar. Dagens föreläsning. Evaluering av frågor. Data dictionary Dagens föreläsning Vad du skall komma ihåg från tidigare föreläsningar Vad du skall komma ihåg från tidigare föreläsningar Optimering av frågor Algebraisk omformulering Kostnadsberäkningar Evaluering av

Läs mer

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem Tentamen för DD1370 Databasteknik och informationssystem 10 April 2015 Hjälpmedel: Inga hjälpmedel utom papper och penna Tänk på: Skriv högst en uppgift på varje blad. Använd endast framsidan på varje

Läs mer