Databaser och. SQL, utsökningar mot en tabell

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

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

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

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

Övningar i SQL. SQLAccess.doc Ove Lundgren

Structured Query Language (SQL)

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

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?

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

Grunderna i SQL del 1

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

Tentamen för DD1370 Databasteknik och informationssystem

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

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

Databaser. Vad du ska lära dig: Ordlista

Laboration SQL. Kom igång.

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

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

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

Starta MySQL Query Browser

Databasutveckling Introduktion till SQL och TSQL

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

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

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

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

1. PLSQL 2 2. Select into

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

TENTAMEN DATABASKUNSKAP ITEK12

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

Sökning i medlemsregistret

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

Databasspråket SQL - online.

Vad är SQL? Introduktion till SQL

Tentamen för DD1370 Databasteknik och informationssystem

Structured query language (SQL)

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

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

Se kurshemsidan för användbara länkar för att genomföra denna laboration.

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

FileMaker 14. SQL-referens

Databasspråket SQL - online.

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

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

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

Databasspråket SQL - online.

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

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?

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

Tentamen för DD1370 Databasteknik och informationssystem

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

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

Databasspråket SQL - online.

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

Databasspråket SQL - online.

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

Lösningsförslag, tentamen i Databaser

Tentamen för DD1370 Databasteknik och informationssystem

Sample exam questions. Database exam TIG058

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

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

WCMS-15, Webbutvecklare CMS

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

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

Funktionsbeskrivning

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

Det är fullt tillåtet att göra laborationen innan laborationstillfället.

Lösningar till tentamen i EDAF75

Tentamen i Databasteknik

Mobilus får inte användas under tiden uppdateringen genomförs.

Laboration 2, MS SQL. Observera. Tips. Förberedelse. Genomförande

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

Logisk databasdesign

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Tentamen i Databasteknik

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

Design och underhåll av databaser

3. Dynamiska webbplatser, 20 Yhp (4 v)

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

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

Trafla databasen vi hämtar data från (remote export) ligger på en godtycklig maskin i nätverket. Den här databasen är en MIMER databas.

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.

9. :new och :old -värden 10. Triggerns olika delar 11. Olika typer av triggrar 12. Kodexempel. Pär Douhan,

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

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

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

FileMaker 16. SQL-referens

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

Introduktion MySQL och MariaDB

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Introduktion till Winbas. excel till Winbas

Kompendium till databaser och informationssystem 10p för SY2 2000

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

Uppgifter till praktiska tentan, del A. (7 / 27)

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

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

732G16: Databaser - Design och programmering

Första databastillämpningen

Transkript:

Databaser och Informationssystem 5 hp IK008 Föreläsning 7 SQL, utsökningar mot en tabell Övningsuppgifter Övningstabell SQL> desc personal Name Null? Type ------------------------------------- -------- ------------ PNR NOT NULL NUMBER(3) FNAMN VARCHAR2(5) ENAMN VARCHAR2(5) AVDELNING VARCHAR2(0) LÖN NUMBER(6) BONUS NUMBER(4) ANSTDATUM DATE Om du skriver ut filen FÖ7_SQL_tabelldata.doc, så blir det lättare att följa med.

SELECT-satsen SQL, Data Retrivial Language = select Används när vi skall läsa data i databasen. selectsatsen = select statement select = vilka kolumner som skall vara med i resultatet. from = från vilken/vilka tabell/tabeller data skall hämtas. where = villkor för rader som skall uppfyllas. group by = grupperar kolumner som inte aggregatfunktioner jobbar med. having = villkor för kolumner som aggregatfunktioner jobbar med. order by = sortera resultatet stigande (a-ö) eller fallande (ö-a). Endast select och from är tvingande att vara med! E E: Visa alla rader, alla kolumner. select * ; -- * = alla kolumner, är inte optimalt! Datablocken "cashas" inte. select pnr,fnamn,enamn,avdelning,lön,bonus,anstdatum ; 2

E2 E2: Visa alla rader och kolumnerna fnamn, enamn, avdelning select fnamn,enamn,avdelning ; FNAMN ENAMN AVDELNING --------------- --------------- --------- Bo Ek Teknik Ewa Ek Teknik Rolf Svensson Teknik Raoul Ortiz Reklam lena Olsson Personal Arman Trebic Reklam Ola Ek Teknik Bosse Karlmats personal Lenita Ekström TEKNIK bo larsson ekonomi E3 E3: Samma som E2 men sortera efter avdelning fallande -- sortering, data i tabeller är alltid osorterad! asc = a-ö, -000, dvs stigande (är default) desc = ö-a, 000-, dvs fallande select fnamn,enamn,avdelning order by avdelning desc; FNAMN ENAMN AVDELNING --------------- --------------- --------- Bo Ek Teknik Ewa Ek Teknik Ola Ek Teknik Rolf Svensson Teknik Lenita Ekström TEKNIK Raoul Ortiz Reklam Arman Trebic Reklam Bosse Karlmats personal lena Olsson Personal bo larsson ekonomi T - E 3

E4 E4: Ta fram pnr,enamn,lön för alla som jobbar på "teknik". select pnr,enamn,lön where avdelning = 'Teknik'; -- Problem! Hur gör vi nu? funktionerna upper() eller lower() eller initcap() löser våra problem! select pnr,enamn,lön where lower(avdelning) = 'teknik'; PNR ENAMN LÖN --- --------------- ---------- Ek 22400 2 Ek 24400 3 Svensson 22400 7 Ek 22400 9 Ekström 29400 E5 E5: Visa fnamn ihopslaget med enamn med rubriken namn, stor begynnelsebokstav på namnen. Sortera på enamn stigande. select initcap(fnamn) ' ' initcap(enamn) as namn order by enamn asc; namn är kolumnalias för uttrycket till vänster. NAMN --------------- Bo Ek Ewa Ek Ola Ek Lenita Ekström Bosse Karlmats Bo Larsson Lena Olsson Raoul Ortiz Rolf Svensson Arman Trebic as är frivilligt att ha med. = konkateneringsoperator 'Kalle' 'Andersson' = 'KalleAndersson' 'Anna' ' ' 'Ekholm' = 'Anna Ekholm' = Alt Gr + (tangenten till vä. om Z) 4

E6 E6: Visa de avdelningar som finns med versaler, utan dubletter select distinct upper(avdelning) avdelningar ; distinct tar bort dubletter! AVDELNINGAR ---------- EKONOMI PERSONAL REKLAM TEKNIK Kolumnalias för 'distinct upper(avdelning)' utan as. E7 E7: visa fnamn, enamn, lön + bonus med rubriken Total lön för alla som tillhör teknikavdelningen, sortera så att den med högst lön kommer överst. select fnamn,enamn,lön + nvl(bonus,0) as "Total lön:" where upper(avdelning) = 'TEKNIK' order by lön + nvl(bonus,0) desc; nvl(bonus,0) = om kolumnen bonus innehåller ett null-värde, så ersätts detta med 0 (noll). "Alias" inom dubbelfnuttar ger exakt matchning av kolumnrubriken. FNAMN ENAMN Total lön: --------------- --------------- ---------- Lenita Ekström 30500 Ola Ek 2750 Ewa Ek 24400 Bo Ek 23700 Rolf Svensson 23700 5

E8 E8: visa alla rader och kolumner för de som saknar bonus. select * where bonus = null; where bonus is null; PNR FNAMN ENAMN AVDELNING LÖN BONUS ANSTDATUM --- --------- ------------ ---------- ----- ----- ---------- 2 Ewa Ek Teknik 24400 987-08-0 5 lena Olsson Personal 27540 99-02-25 6 Arman Trebic Reklam 9850 2005-06-0 8 Bosse Karlmats personal 23560 999-02-25 0 bo larsson ekonomi 25400 E9 E9: Visa fnamn, enamn, anstdatum. Om datum saknas skall 'saknas' skrivas ut. select fnamn,enamn, nvl(to_char(anstdatum,'yyyy-mm-dd'),'saknas') anstdatum ; för alias FNAMN ENAMN ANSTDATUM --------------- --------------- ---------- Bo Ek 99-02-25 Ewa Ek 987-08-0 Rolf Svensson 99-02-25 Raoul Ortiz 2002-0-0 lena Olsson 99-02-25 Arman Trebic 2005-06-0 Ola Ek 997-02-0 Bosse Karlmats 999-02-25 Lenita Ekström 99-02-25 bo larsson saknas 6

E0 E0: Visa pnr,fnamn,enamn på de i personalen som har pnr mellan 3 och 6.. select pnr,fnamn,enamn where pnr between 3 and 6; PNR FNAMN ENAMN --- --------------- -------- 3 Rolf Svensson 4 Raoul Ortiz 5 lena Olsson 6 Arman Trebic E E: Visa pnr för de i personalen som heter 'ek' i efternamn och som har mer än 24000 i lön. select pnr where lower(enamn) = 'ek' and lön > 24000; PNR --- 2 7

E2 E2: visa enamn för de i personalen som heter 'Rolf' eller 'Lena' eller 'Raoul' i förnamn. select enamn where initcap(fnamn) in('rolf','lena','raoul'); ENAMN -------- Svensson Ortiz Olsson E3 E3: visa avdelning, antal personal på varje avdelning under rubiken 'antal'. select initcap(avdelning) avdelning,count(pnr) antal group by initcap(avdelning); AVDELNING ANTAL ---------- ---------- Ekonomi Personal 2 Reklam 2 Teknik 5 8

Aggregatfunktioner Aggregatfunktioner eller gruppfunktioner, utför beräkningar. select initcap(avdelning) avdelning,count(pnr) antal group by initcap(avdelning); count = returnerar antalet rader. max = returnerar högsta värdet. min = returnerar lägsta värdet. avg = returnerar medelvärdet. sum = returnerar summan. AVDELNING ANTAL ---------- ---------- Aggregatfunktionerna returnerar Ekonomi ett värde. Personal 2 Personal select max(lön) Reklam 2 ; Reklam Teknik 5 Teknik Teknik 3200 Teknik Teknik E4 E4: samma som E3, men visa bara de avdelningar som har fler än 3 anställda. select initcap(avdelning) avdelning,count(pnr) antal group by initcap(avdelning) having count(pnr) > 3; Villkor för gruppfunktioner AVDELNING ANTAL ---------- ---------- Teknik 5 having 9

E5 E5: Visa hur många rader det finns i tabellen personal. select count(*) ; COUNT(*) --------- 0 E6 E6: Visa total lönekostnad per år och avdelning. select initcap(avdelning),sum(lön) * 2 group by initcap(avdelning); INITCAP(AVDELNING) SUM(LÖN)*2 ------------------ ----------- Ekonomi 304800 Personal 63200 Reklam 62600 Teknik 452000 0

E7 E7: visa fnamn,enamn,lön för den som har den högsta lönen av alla. Den nästlade (=inre) select-satsen kommer att exekveras först! select fnamn,enamn,lön where lön = (select max(lön) ); select fnamn,enamn,lön where lön = 3200; FNAMN ENAMN LÖN --------------- --------------- ---------- Raoul Ortiz 3200 E8 E8: Visa pnr,fnamn för de som har ett enamn som börjar med bokstaven 'e'och slutar på bokstaven 'k' och som blev anställda före år 2000. select pnr,fnamn where lower(enamn) like 'e%' and upper(enamn) like '%K' and anstdatum < to_date('200-0-0','yyyy-mm-dd'); PNR FNAMN --- ----- Bo 2 Ewa 7 Ola % = "wild card" operator används tillsammans med like Ω