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

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

Databaser och. SQL, utsökningar mot en tabell

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

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

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

Grunderna i SQL del 1

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

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

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

Structured Query Language (SQL)

Grunderna i SQL del 1

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem

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

Databaser. Vad du ska lära dig: Ordlista

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

Databasspråket SQL - online.

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

Tentamen för DD1370 Databasteknik och informationssystem

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

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

Övningar i SQL. SQLAccess.doc Ove Lundgren

1. PLSQL 2 2. Select into

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

Databasspråket SQL - online.

Databasspråket SQL - online.

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

Vad är SQL? Introduktion till SQL

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

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

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

Laboration SQL. Kom igång.

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

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

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

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

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem

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

Sample exam questions. Database exam TIG058

Starta MySQL Query Browser

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

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

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

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

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

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

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

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?

Lösningar till tentamen i EDAF75

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

Tentamen för DD1370 Databasteknik och informationssystem

Structured query language (SQL)

Databasspråket SQL - online.

Databasspråket SQL - online.

Introduktion MySQL och MariaDB

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.

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

2. Redundans 3. Normalformer

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

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

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

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

Föreläsning 5: Relationsmodellen

Tentamen i Databasteknik

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

TENTAMEN DATABASKUNSKAP ITEK12

Tentamen för DD1370 Databasteknik och informationssystem

Exempel-Tentamen III

Lösningsförslag till Exempel tentamen

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

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

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

Algoritmer och datastrukturer. HI1029 8,0 hp Introduktion

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

Databaser - Design och programmering

WCMS-15, Webbutvecklare CMS

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

732G16: Databaser - Design och programmering

Funktionsbeskrivning

3. Dynamiska webbplatser, 20 Yhp (4 v)

Databasutveckling Introduktion till SQL och TSQL

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

Tentamen i Databasteknik

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

Kursanalys Programmeringsteknik och databaser, TIG058 VT2018

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

Lathund: Dokumentation i Ladok av bifallsbeslut om tillgodoräknande på grundnivå och avancerad nivå, hel kurs. Några exempel.

FileMaker 14. SQL-referens

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

Handbok för registervård. - Del 1

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

STOCKHOLMS UNIVERSITET. Handbok 2. Funktionaliteter moveon 4

Sid 1 (9) Tillämpad fysik och elektronik Karin Fahlquist. Laboration: Databasdesign & SQL

Lösningsförslag till Tentamen,

ÖVNING 14. (Primärnycklar är angivna med fetstil.)

tentaplugg.nu av studenter för studenter

Idag. 1. En enkel databas. 2. Prata med databaser (frågepsråket SQL)

Transkript:

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 * betyg # kursnr * kursnamn * nivå * ämne * poäng Om du skriver ut filen FÖ8_SQL_tabelldata.doc, så blir det lättare att följa med. 1

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" dvs visas utan dubletter. Inga sorteringar (order by) i nästlade satser. Join Kolumner från en eller fler tabeller kan visas. Resultatet visas med dubletter, måste "distinctas". 2

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 ------ ------------------------- --------- 1 niklas strömberg 2 arman dobitnik 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 ------ ------------------------- --------- 1 niklas strömberg 2 arman dobitnik 3

E3 E3: Gör samma sak som i E2 men använd Equi-Join utan tabellalias. select student.studnr,student.fnamn,student.enamn from student,tenta,kurs where lower(kurs.kursnamn) = 'beginning java' and student.studnr = tenta.studnr and tenta.kursnr = kurs.kursnr; -- Join villkor Utelämnas join-villkor, så får vi kartesisk produkt STUDNR FNAMN ------ ------------------------- --------- 1 niklas strömberg 2 arman dobitnik Kartesisk produkt En mängd är en oordnad uppsättning unika data En databastabell = en mängd. Mängd A Mängd B Den kartesiska produkten A x B är mängden av alla par (a,b) B E X 5 2 8 Glöm inte joinvillkoret! oet 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)} 4

E4 E4: Gör samma som i E3 men använd tabellalias. select s.studnr,s.fnamn,s.enamn from student s,tenta t,kurs k where lower(k.kursnamn) = 'beginning java' and s.studnr = t.studnr and t.kursnr = k.kursnr; funkar inte med as STUDNR FNAMN ------ ------------------------- --------- 1 niklas strömberg 2 arman dobitnik E5 E5: Visa fnamn, enamn för de studenter 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 5

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 order by enamn desc; -- Join villkor FNAMN ------------------------- --------- niklas strömberg niklas strömberg lena nordin anna larsson jörgen killing arman dobitnik arman dobitnik arman dobitnik E7 E7: Samma som E6, men UTAN dubletter. select distinct s.fnamn,s.enamn from student s,tenta t order by enamn desc; FNAMN ------------------------- --------- niklas strömberg lena nordin anna larsson jörgen killing arman dobitnik 6

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 ------------------------- --------- niklas strömberg lena nordin anna larsson jörgen killing arman dobitnik 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 7

E10 E10: Visa studnr,fnamn,enamn,antal kurser som studenterna har läst. select s.studnr,s.fnamn,s.enamn,count(t.radnr) antal_kurser from student s,tenta t group by s.studnr,s.fnamn,s.enamn; -- de kolumner som inte count jobbar med! STUDNR FNAMN ANTAL_KURSER ------ --------------- ---------------- ------------ 1 niklas strömberg 2 2 arman dobitnik 3 3 anna larsson 1 4 lena nordin 1 5 jörgen killing 1 E11 E11: Samma som i E10, men visa även de studenter som läst noll kurser(överkurs). 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 (+) group by s.studnr,s.fnamn,s.enamn; STUDNR FNAMN 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 8

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 and t.kursnr = k.kursnr group by s.studnr,s.fnamn,s.enamn; STUDNR FNAMN 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 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 and t.kursnr = k.kursnr group by s.studnr,s.fnamn,s.enamn order by sum(k.poäng) desc; STUDNR FNAMN 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 9

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 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 SUMMA_POÄNG ------ --------------- ----------------- ----------- 2 arman dobitnik 30 1 niklas strömberg 10 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 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 SUMMA_POÄNG ------ --------------- ----------------- ----------- 2 arman dobitnik 30 Ω 10