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

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

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

Databaser och. SQL, utsökningar mot en tabell

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

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

Grunderna i SQL del 1

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

Structured Query Language (SQL)

1. PLSQL 2 2. Select into

1. SQL DDL (Data Definition Language) 2. Skapa tabell

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

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

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

Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5

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

Databaser. Vad du ska lära dig: Ordlista

Tentamen 4,5 hp Delkurs: Databaser och databasdesign 7,5hp Tentander: VIP2, MMD2, INF 31-60, ASP

Övningar i SQL. SQLAccess.doc Ove Lundgren

2. Redundans 3. Normalformer

Grunderna i SQL del 1

INNEHÅLL SQL DEL 2. Funktioner inbyggda Aggregatfunktioner Skalärfunktioner. Chapter 11. Beginning SQL Server 2008 for Developers

Databasspråket SQL - online.

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

Databasutveckling Tabeller. tinyint 1 byte (0-255) Upp till 8 bytes

Tentamen för DD1370 Databasteknik och informationssystem

Databasspråket SQL - online.

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

Tentamen för DD1370 Databasteknik och informationssystem

Databasspråket SQL - online.

16/12/14. Databasteknik och informationssystem DD1370. Dagens föreläsning (den sista!) Motivera med kokbok! Idag: Inga knappar L. Dagens föreläsning

Tentamen för DD1370 Databasteknik och informationssystem

Structured query language (SQL)

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

Starta MySQL Query Browser

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

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

Vad är SQL? Introduktion till SQL

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

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Lösningar till tentamen i EDAF75

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

9. Anonyma block 10. Clean code och läsbarhet 11. Variabeltyper och variabeldeklaration 12. Olika loopar: Basic, while och for loop

1.Lär känna MS SQL Observera. Tips. Förberedelse

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

Sample exam questions. Database exam TIG058

Laboration SQL. Kom igång.

Labb LABB 15. XML användande i praktiken. Plushögskolan Frågeutveckling inom MSSQL - SU14

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.

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

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Introduktion MySQL och MariaDB

Databasspråket SQL - online.

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

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

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

Databasspråket SQL - online.

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

Innehåll MySQL Intro. Ex på ett index Index typer ISAM Balanserat träd Pk och Fk i MySQL Eget index För o nackdelar med index

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

TENTAMEN DATABASKUNSKAP ITEK12

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?

Tentamen i Databasteknik

Databasutveckling Introduktion till SQL och TSQL

Tentamen för DD1370 Databasteknik och informationssystem

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

Exempel-Tentamen III

Lösningsförslag till Exempel tentamen

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen i Databasteknik

Databaser. Jan Erik Moström, Department of Computing Science, Umeå University - jem@cs.umu.se

732G16: Databaser - Design och programmering

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

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

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

2. Säkerhet 3. Autentisering. 5. Dataintegritet 6. Data privacy 7. PuL 8. Personuppgifter 9. Säkerhetspolicy. Pär Douhan,

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

Extra övningar i SQL. Följande SQL-satser bygger på exemplen (och databasen) i föreläsningsbilderna från föreläsningen om relationsalgebra.

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

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

3. Dynamiska webbplatser, 20 Yhp (4 v)

tentaplugg.nu av studenter för studenter

Tentamen för 1E1601. Måndag 10 mars 2003, kl Alla hjälpmedel tillåtna

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

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

2. Objekt, operatorer och integritetsregler 3. Databasobjekt

Databaser - Design och programmering

Tentamen för DD1370 Databasteknik och informationssystem

Kursanalys Programmeringsteknik och databaser, TIG058 VT2018

Webprogrammering och 729G28 databaser Webprogrammering och databaser Kursöversikt Webprogrammering Designprocessen Lösningsförslag

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

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

Tentamen i. Databasteknik

Funktionsbeskrivning

INNEHÅLL. Historik Vad är SQL Språkuppbyggnad SELECT Operatorer Logiska/Jämförelse SELECT med Alias och JOIN INSERT UPDATE DELETE

FileMaker 14. SQL-referens

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Algoritmer och datastrukturer. HI1029 8,0 hp Introduktion

Transkript:

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 Line View 12. Order by 13. Pseudokolumnen: rownum 1 Pär Douhan, pdo@du.se

Övningsuppgifter ift STUDENT # studnr * fnamn * enamn o regdatum TENTA KURS # radnr # kursnr (#) studnr * kursnamn (#) kursnr * nivå * tentadatum * ämne * betyg * poäng Om du skriver ut filen: Fö 09 - Databas (SQL 2, utsökningar mot flera tabeller) Övning.docx så blir det lättare att hänga med! 2

Innehåll i övningstabellen kurs KURSNR KURSNAMN NIVÅ ÄMNE POÄNG ------ ----------------------- ---- ------------- ----- 1 beginning java A informatik 5 2 java with oracle B informatik 5 3 AI for masters D datateknik 5 4 software architecture C informatik 5 5 ångesthantering A psykologi 10 6 den sociala människan A sociologi 20 student STUDNR FNAMN ENAMN REGDATUM ------ ----------- -------------- ---------- 1 niklas strömberg 2002-08-28 2 arman dobitnik 2002-08-28 3 anna larsson 2001-08-28 4 lena nordin 2003-09-12 09 5 jörgen killing 2000-08-19 6 hans dalros 2005-09-01 tenta RADNR STUDNR KURSNR TENTADATUM BETYG ----- ------ ------ ---------- ----- 1 1 1 2002-10-23 3 2 1 2 2003-10-23 4 3 2 1 2002-10-23 5 4 2 2 2003-10-23 23 5 5 2 6 2003-01-23 VG 6 3 3 2003-01-23 4 7 4 3 2004-01-23 3 8 5 4 2001-10-25 G 3

Nästlad sökning När kolumner skall visas från bara en tabell. IN-operatorn används när den nästlade SQL-satsen kan returnera fler än en rad. Den nästlade satsen måste vara inom (parentes). De nästlade satserna exekveras, i en viss given ordning, inifrån och ut. Resultatet "distinctas" d.v.s. visas utan dubbletter. Inga sorteringar (order by) i nästlade satser. 4

Join Kolumner från en eller fler tabeller kan visas. Resultatet visas med dubletter, måste "distinctas". 5

E1 E1: Visa studnr, fnamn, enamn på de studenter som läst kurs nr 1. Använd nästlad sökning. select studnr,fnamn,enamn from student where studnr in(select studnr from tenta where kursnr = 1); exekveras först 1 2 STUDNR FNAMN ENAMN ------ ------------------------- --------- 1 niklas strömberg 2 arman dobitnik 6

E2 E2: Visa studnr,fnamn,enamn på de studenter som läst en kurs med namnet 'beginning java'. Använd nästlad sökning. select studnr,fnamn,enamn from student where studnr in(select studnr from tenta 1 where kursnr in (select kursnr from kurs where lower(kursnamn) = 'beginning java')); 1 2 STUDNR FNAMN ENAMN ------ ------------------------- --------- 1 niklas strömberg 2 arman dobitnik 7

E3 E3: Gör samma sak som i E2 men använd Equi-Join i utan tabellalias. li select student.studnr,student.fnamn,student.enamn from student,tenta,kurs where lower(kurs.kursnamn) = 'beginning java' and student.studnr studnr = tenta.studnr and tenta.kursnr = kurs.kursnr; -- Join villkor Utelämnas join-villkor, så får vi kartesisk produkt! STUDNR FNAMN ENAMN ------ ------------------------- --------- 1 niklas strömberg 2 arman dobitnik 8

Kartesisk produkt En mängd är en oordnad d uppsättning unika data En databastabell är en mängd. Mängd A Mängd B Den kartesiska produkten A x B är mängden av alla par (a, b) B X 5 2 E 8 A x B = {B,X,E} x {5,2,8} = {(B,5),(B,2),(B,8),(X,5),(X,2),(X,8),(E,5),(E,2),(E,8)} 9

E4 E4: Gör samma som i E3 men använd tabellalias. li select s.studnr,s.fnamn,s.enamn from student s,tenta t,kurs k where lower(k.kursnamn) = 'beginning java' and s.studnr studnr = t.studnr and t.kursnr = k.kursnr; funkar inte med as STUDNR FNAMN ENAMN ------ ------------------------- --------- 1 niklas strömberg 2 arman dobitnik 10

E5 E5: Visa fnamn, enamn för de studenter t som inte läst någon kurs. select initcap(fnamn ' ' enamn) "Har inte läst någon kurs:" from student where studnr not in (select studnr from tenta); Har inte läst någon kurs: ------------------------- Hans Dalros 11

E6 E6: Visa fnamn, enamn på de studenter som läst någon kurs, sortera fallande på enamn. Använd join. select s.fnamn,s.enamn from student s,tenta t where s.studnr = t.studnr order by enamn desc; -- Join villkor FNAMN ENAMN ------------------------- --------- niklas strömberg niklas strömberg lena nordin anna larsson jörgen killing arman dobitnik arman dobitnik arman dobitnik 12

E7 E7: Samma som E6, men utan dubbletter. select distinct t s.fnamn,s.enamn from student s,tenta t where s.studnr = t.studnr order by enamn desc; FNAMN ENAMN ------------------------- --------- niklas strömberg lena nordin anna larsson jörgen killing arman dobitnik 13

E8 E8: Samma som E7, men använd nästlad sökning. select fnamn,enamn from student where studnr in (select studnr from tenta) order by enamn desc; -- ingen sortering i den nästlade satsen! FNAMN ENAMN ------------------------- --------- niklas strömberg lena nordin anna larsson jörgen killing arman dobitnik 14

E9 E9: Visa studnr för de studenter som inte läst kursen 'AI for masters'. Join eller nästlad sökning? Nästling, med negationen i den yttre satsen. select studnr from student where studnr not in (select studnr from tenta where kursnr in (select kursnr from kurs where upper(kursnamn) = 'AI FOR MASTERS')); STUDNR ------ 1 2 5 6 15

E10 E10: Visa studnr, fnamn, enamn,antalantal kurser som studenterna har läst. select s.studnr,s.fnamn,s.enamn,count(t.radnr) antal_kurser from student s,tenta t where s.studnr = t.studnr group by s.studnr,s.fnamn,s.enamn; -- de kolumner som inte count jobbar med! STUDNR FNAMN ENAMN ANTAL_ KURSER ------ --------------- ---------------- ------------ 1 niklas strömberg 2 2 arman dobitnik 3 3 anna larsson 1 4 lena nordin 1 5 jörgen killing 1 16

E11 E11: Samma som i E10, men visa även de studenter som läst noll kurser. Outer Join visar NULL-värden. select s.studnr,s.fnamn,s.enamn,nvl(count(t.radnr),0) antal_kurser from student s,tenta t where s.studnr = t.studnr(+) group by s.studnr,s.fnamn,s.enamn; STUDNR FNAMN ENAMN ANTAL_KURSER ------ -------------------------------------------- 1 niklas strömberg 2 2 arman dobitnik 3 3 anna larsson 1 4 lena nordin 1 5 jörgen killing 1 6 hans dalros 0 17

E12 E12: Visa studnr, fnamn, enamn, antal poäng som varje student har läst. select s.studnr,s.fnamn,s.enamn,sum(k.poäng) summa_poäng from student s,tenta t,kurs k where e s.studnr = t.studnr and t.kursnr = k.kursnr group by s.studnr,s.fnamn,s.enamn; STUDNR FNAMN ENAMN SUMMA_POÄNG ------ --------------- --------------- ----------- 1 niklas strömberg 10 2 arman dobitnik 30 3 anna larsson 5 4 lena nordin 5 5 jörgen killing 5 18

E13 E13: Samma som E12, men sortera så att den med mest poäng kommer överst. select s.studnr,s.fnamn,s.enamn,sum(k.poäng) summa_poäng from student s,tenta t,kurs k where s.studnr = t.studnr and t.kursnr = k.kursnr group by s.studnr,s.fnamn,s.enamn order by sum(k.poäng) desc; STUDNR FNAMN ENAMN SUMMA_POÄNG ------ --------------- --------------- ----------- 2 arman dobitnik 30 1 niklas strömberg 10 3 anna larsson 5 4 lena nordin 5 5 jörgen killing 5 19

E14 E14: Samma som E13, men visa bara de som har 10 poäng eller mer. select s.studnr,s.fnamn,s.enamn,sum(k.poäng) summa_poäng from student s,tenta t,kurs k where s.studnr = t.studnr and t.kursnr = k.kursnr group by s.studnr,s.fnamn,s.enamn having sum(k.poäng) >= 10 -- villkor för gruppfunktioner order by sum(k.poäng) desc; STUDNR FNAMN ENAMN SUMMA_POÄNG ------ --------------- ----------------- ----------- 2 arman dobitnik 30 1 niklas strömberg 10 20

E15 E15: Samma som E14, men visa bara den översta posten. Använd så kallad 'in line view' för att lösa uppgiften: select * from ( -- in line view börjar select s.studnr,s.fnamn,s.enamn,sum(k.poäng) summa_poäng from student s,tenta t,kurs k where s.studnr = t.studnr and t.kursnr = k.kursnr group by s.studnr,s.fnamn,s.enamn having sum(k.poäng) >= 10 order by sum(k.poäng) desc ) -- in line view slutar where rownum = 1; -- använder pseudokolumnen rownum STUDNR FNAMN ENAMN SUMMA_POÄNG ------ --------------- ----------------- ----------- 2 arman dobitnik 30 21

The End 22