Kursus/workshop: SQL

Relaterede dokumenter
1. Basal select med (stjerne)

Opgave 1 Basal select med (stjerne)

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Introduktion til SQL queries

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

SQL for MySQL-begyndere

PICTURE formater. Klog på SAS 15. marts 2012

DB undervisning 01-01

Databaseadgang fra Java

Trin 1 INSERT INTO Debitor (DebitorNr, KundeKategori, KreditMax, SidstRykket, Sælger ) VALUES (20121, 10, 40000, NULL, "Bjarne Larsen");

Import af rekursivt (parent-child) hierarki i Palo

En Kort Introduktion til Oracle

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Introduktion til programmering

Database programmerings tips

Introduktion til SQL

Database optimering - Indeks

Relationel Algebra og SQL

Anne Randorff Højen

En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk

Databasesystemer. IT Universitetet i København 8. juni 2006

Skriftlig opgave. Designtanker i database-nære systemer

Vigtigste funktionstaster Microsoft Dynamics C / NAV 2013

Manglende konsistens i datamodellen og upræcise SQLsætninger er årsagen til, at mange IT-systemer fejler.

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Databasesystemer. IT Universitetet i København 7. juni 2005

MsSQL: Basal performance tuning, part 1

Begrænsninger i SQL. Databaser, efterår Troels Andreasen

Eksamen, DSDS, efterår 2007

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Sidste forelæsning. Jacob Aae Mikkelsen. 28. april 2013 IMADA. Jacob Aae Mikkelsen (IMADA) Sidste forelæsning 28.

Views etc. Databaser

Skriftlig eksamen i Databaser, Vinter 2001/2002. Pa opfordring har jeg udarbejdet mulige lsninger pa eksamensopgaverne, men

Data lagring. 2. iteration (implement backend)

Database-sproget SQL. SELECT A1,, Ar FROM R1,, Rk WHERE B med. SQL ~ SEQUEL ~ Structered English QUEry Language SQL-forespørgsel, generel form

Database-sproget SQL. SELECT A1,, Ar FROM R1,, Rk WHERE B med. SQL ~ SEQUEL ~ Structered English QUEry Language SQL-forespørgsel, generel form

Databasesystemer. IT Universitetet i København 16. januar 2006

Views. Et view er en relation defined ud fra gemte tabeller ( base tables ) og andre views To typer:

The Boerboel Pedigree

Grundlæggende Matematik

Matematik. 1 Matematiske symboler. Hayati Balo,AAMS. August, 2014

SQL-opgaver 5 løsning

SQL Server 2008 Spatiale eksempler. Plan & Miljø, GIS

Eksempel på en database: studenter, kurser, eksamener

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Grundlæggende Matematik

Introduktion til SQL

OPC Access 3.0 opdatering via Stored Procedure

Information Integration

Opdatering i tabellen

Måske kender du nogle af de tips og tricks, guiden indeholder, men så bliver du blot bekræftet i, at du gør det rigtige.

Eksamen, DSDS, efterår 2008

SQL Server 2016 Data Adgang

FORCE Inspect Online Manual v FORCE Inspect Online Manual. 1 af 18

Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning..

ALMINDELIGT ANVENDTE FUNKTIONER

Skriftlig eksamen i kurset. Informationssystemer

Databasesystemer fra forskellige synsvinkler

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

MODUL 2 ASSIGNMENT 3 PHP/DB SYSTEM 9. OKTOBER 2016

Grænseflade til indberetning af institutionsmæssige stamoplysninger til EfterUddannelse.dk

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4

Få sin querystring til at fungere. (Nybegyndere)

Database kursus Forår 2013

Hvad er en relationsdatabase? Odense, den 19. januar Version 1.0

Databasesystemer. IT Universitetet i København 8. juni 2006

vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0

Design Visual Analytics-rapporter for bedst mulig performance

Database "opbygning"

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret

Tredje undervisningsgang. Database

Database. Pr jekt. Hold CLmul-a14e Gruppe 3 3. semester Vejledere: Tue Becher Ivan R. Frederiksen

Brugervejledning. Sådan laves et opslag med avanc. søgning. December 2010

IT SUMMER CAMP Dato for arr. og. dato for seneste tilmelding. bliver offentliggjort i maj. Ubuntu-Linux, Web-Server, Anvendte Web-Teknologier

Database. lv/

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125

Eksamen, DSDS, forår 2009

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Screening af forureningsrisiko. Data- og GIS-udfordringer ved kompleks datasammenstilling PB Insights, den 19. september 2013 John Pedersen / Orbicon

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Tips og tricks til Proc Means. Per Andersen

Programmering for begyndere Lektion 2. Opsamling mm

JAR Øvelse nr. 2. JAR-Manual, Version 1.0. Avanceret søgning. Regionsvejledning

Databaser. Område / Specialefag nr Database, design og programmering Datatekniker Infra & Prog IT-Supporter AMU Kursister

3. semester, 2. projekt: Database

MapBasic brugergruppe. Geografiske objekter. Peter Horsbøll Møller Senior Systems Engineer April 2013

Ferieregnskab (Rapport-ID: 74)

Reeksamen, DSDS, forår 2008

Databaser Obligatorisk opgave 2 Vejledende løsning

Yderligere fire personer er tildelt brugernavn og adgangskode og kan foretage uploadning og andre ændringer af hjemmesiden

Database design for begyndere

IBM DB2 Universal Database. KomgodtigangmedSQL. Version 7 S

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Ratingsystem i PHP og MySQL

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008

Vejledning til Borgeronline Statistikmodul

Transkript:

Kursus/workshop: SQL En workshop - med fokus på workshop. En workshop arrangeret af PROSA Palle Nygaard Hansen Frank Jensen

Indledning Gennemgang af alle basale SQL-sætninger Forløb for alle 3 aftener: Kort indføring om en SQLsætning Øvelser i samme Og forfra igen Forudsætning er, at ingen kender til SQL på forhånd Øvrige forudsætninger: Kunne basale engelske udtryk Basal programmeringserfaring

Indhold for de 3 aftener Aften 1: Basale select sætninger - listning fra tabeller Sortering af udtræk fra tabeller Selektiv søgning - udtræk af udvalgte rækker fra tabeller Statistik-udtræk - antal af forekomster i søgningerne Summationer Aften 2: Beregnede udtræk Grupperede udtræk funktions-søgninger Søgninger på strenge og datoer Aften 3: Kombinationssøgninger på flere tabeller Insert - indsættelse af rækker i tabeller Update - editere i rækker i tabeller Delete - sletning af rækker i tabeller

Teori: Hvad er en database? Et databasesystem skal stille følgende faciliteter til rådighed: Atomare transaktioner, hvilket betyder, at en ændring enten skal gennemføres helt eller også skal der ryddes så godt op, at det ser ud som om ændringen ikke er forsøgt gennemført. Konsistens De atomare transaktioner skal føre databasen fra en sammenhængende tilstand til en anden. Dette kræver, at de enkelte transaktioner er designet korrekt og hænger ikke kun på databasesystemet. Isolation To eller flere programmer, der bruger samme database, må ikke kunne se hinandens ændringer, før de er helt gennemførte. Der anvendes dog forskellige grader af isolation. Varighed Det skal sikres, at data ikke bare forsvinder. Det stiller krav til den anvendte hardware og krav om at skrivninger til disk laves, så data ikke kun lander i en cache undervejs. På engelsk kaldes disse krav om bestemte egenskaber for ACID-properties efter forbogstaverne i de engelske betegnelser atomicy, consistency, isolation og durability.

Teori: Tabel-begrebet I en relationel tabel er data indeholdt i tabeller En tabel er en liste (hver forekomst kaldes en række) Hver række indeholder et antal felter (kaldes kolonner) Eks: I bryggeri-tabellen er der i dette tilfælde vist 7 rækker og 4 kolonner

Eller sagt på en anden måde

Teori: Kolonner Kolonnerne i en tabel kan have forskellige formater Numerisk felt Karakterfelt Datofelt Og andre I bryggeri-tabellen er der 2 numeriske felter, 1 karakter-felt og 1 dato-felt.

Tabeller i workshoppen Tabellerne som bruges til øvelserne i denne workshop er bygget op om temaet øl Tabellerne hedder: bryggeri ol_maerker oltyper bydrikkeri posttabel

Tabeller i workshoppen

SQLkommando-programmerne MySQL Workbench

Aften 1 Basale select sætninger (listning fra tabeller) Sortering af udtræk fra tabeller Selektiv søgning (udtræk af udvalgte rækker fra tabeller) Statistik-udtræk (antal af forekomster i søgningerne

Basale select sætninger 1 Listning af rækker fra tabeller Select * from tabel Eks.: Select * from cpr_tabel Cprnr Navn By Skostørrelse Feltxx -----> 0907761442 Birgitte Birgittesen Humble 46 yy 2412851567 Børge Børgesen Svanneke 35 zz Opgaver

Basale select sætninger 2 Listning af udvalgte kolonner fra tabeller Select felt1,felt2 from tabel Eks.: Select cprnr,navn from cpr_tabel Cprnr Navn 0907761442 Birgitte Birgittesen 2412851567 Børge Børgesen Opgaver

Sorterede select sætninger Listning af udvalgte kolonner fra tabeller Select felt1,felt2 from tabel order by felt1 Eks.: A) Select cprnr,navn from cpr_tabel order by cprnr B) Select cprnr,navn from cpr_tabel order by navn desc A Cprnr Navn B Cprnr Navn 0907761442 Birgitte Birgittesen 1703661678 Sofie Sofiesen 1703661678 Sofie Sofiesen 2412851567 Børge Børgesen 2412851567 Børge Børgesen 0907761442 Birgitte Birgittesen Opgaver

Selektiv søgning Listning af udvalgte rækker fra tabeller Select felt1,felt2 from tabel where felt1 = xyz Eks.: A) Select cprnr,navn from cpr_tabel where cprnr = 1703661678 B) Select cprnr,navn from cpr_tabel where navn = Børge Børgesen A Cprnr Navn B Cprnr Navn 1703661678 Sofie Sofiesen 2412851567 Børge Børgesen Opgaver

Selektiv søgning med andre operatorer Operatorer > større end < mindre end Eks.: <= og >= mindre end/ligmed og større end/lig med between a and b mellem værdien a og b (inklusive) in (xx,yy,zz,.) blandt værdierne xx, yy eller zz. not in (xx,yy,zz ) ikke blandt værdierne xx, yy eller zz.!= - ikke lig med A) Select cprnr,navn,postnr from cpr_tabel where postnr > 9000 B) Select cprnr,navn,postnr from cpr_tabel where postnr <= 1200 C) select cprnr,navn,postnr from cpr_tabel where postnr between 5000 and 5300 D) select cprnr,navn,landsdel from cpr_tabel where landsdel in ( Fyn, Jylland ) E) select cprnr,navn,mand_kvinde_mk from cprtabel where mand_kvinde_mk!= M

Selektiv søgning med andre operatorer (A) Listning af udvalgte rækker fra tabeller Operatorer: > større end < mindre end <= og >= mindre end/lig med og større end/lig med between a and b mellem værdien a og b (inklusive) in (xx,yy,zz,.) blandt værdierne xx, yy eller zz. not in (xx,yy,zz ) ikke blandt værdierne xx, yy eller zz.!= - ikke lig med Eks.: A) Select cprnr,navn,postnr from cpr_tabel where postnr > 9000 Cprnr Navn Postnr 0907761442 Birgitte Birgittesen 9350 2412851567 Børge Børgesen 9780 1703661678 Sofie Sofiesen 9200

Selektiv søgning med andre operatorer (B) Listning af udvalgte rækker fra tabeller Operatorer: > større end < mindre end <= og >= mindre end/lig med og større end/lig med between a and b mellem værdien a og b (inklusive) in (xx,yy,zz,.) blandt værdierne xx, yy eller zz. not in (xx,yy,zz ) ikke blandt værdierne xx, yy eller zz.!= - ikke lig med Eks.: B) Select cprnr,navn,postnr from cpr_tabel where postnr <= 1200 Cprnr Navn Postnr 0907761442 Birgitte Birgittesen 1080 2412851567 Børge Børgesen 1200 1703661678 Sofie Sofiesen 1150

Selektiv søgning med andre operatorer (C) Listning af udvalgte rækker fra tabeller Operatorer: > større end < mindre end <= og >= mindre end/ligmed og større end/lig med between a and b mellem værdien a og b (inklusive) in (xx,yy,zz,.) blandt værdierne xx, yy eller zz. not in (xx,yy,zz ) ikke blandt værdierne xx, yy eller zz.!= - ikke lig med Eks.: C) select cprnr,navn,postnr from cpr_tabel where postnr between 5000 and 5300 Cprnr Navn Postnr 0907761442 Birgitte Birgittesen 5300 2412851567 Børge Børgesen 5000 1703661678 Sofie Sofiesen 5260

Selektiv søgning med andre operatorer (D) Listning af udvalgte rækker fra tabeller Operatorer: > større end < mindre end <= og >= mindre end/ligmed og større end/lig med between a and b mellem værdien a og b (inklusive) in (xx,yy,zz,.) blandt værdierne xx, yy eller zz. not in (xx,yy,zz ) ikke blandt værdierne xx, yy eller zz.!= - ikke lig med Eks.: D) select cprnr,navn,landsdel from cpr_tabel where landsdel in ( Fyn, Jylland ) Cprnr Navn Landsdel 0907761442 Birgitte Birgittesen Fyn 2412851567 Børge Børgesen Jylland 1703661678 Sofie Sofiesen Fyn

Selektiv søgning med andre operatorer (E) Listning af udvalgte rækker fra tabeller Operatorer: > større end < mindre end <= og >= mindre end/ligmed og større end/lig med between a and b mellem værdien a og b (inklusive) in (xx,yy,zz,.) blandt værdierne xx, yy eller zz. not in (xx,yy,zz ) ikke blandt værdierne xx, yy eller zz.!= - ikke lig med Eks.: E) select cprnr,navn,mand_kvinde_mk from cprtabel where mand_kvinde_mk!= M Cprnr Navn Mand_kvinde_mk 0907761442 Birgitte Birgittesen K 1703661678 Sofie Sofiesen K Opgaver

Syntaks-opsamling på select-sætninger Syntaks for en select sætning Select felt1,felt2, from tabel where feltx <operator> xxx order by feltx,felty (desc/asc) Eks.: Select cprnr,navn,postnr from cpr_tabel where postnr > 9000 order by postnr Select cprnr,navn from cpr_tabel where postnr <= 1200 order by postnr,cprnr select cprnr,,postnr from cpr_tabel where postnr between 5000 and 5300 order by postnr desc,cprnr asc Opgaver

Selektiv søgning med flere valg Where kombinationer and flere af de nævnte betingelser skal gælde samtidig or én af de nævnte betingelser skal være sande or/and kan kombineres og der kan benyttes paranteser Eks.: A) Select cprnr,landsdel,postnr from cpr_tabel where postnr > 9000 and landsdel= Sjælland B) Select cprnr,navn,postnr from cpr_tabel where postnr <= 1200 or postnr > 9500 C) select cprnr,postnr from cpr_tabel where landsdel = Fyn and (postnr = 5000 or postnr = 5260) A Cprnr Landsdel Postnr B Cprnr Navn Postnr 0907761442 Sjælland 9750 0907761442 Birgitte Birgittesen 9750 1703661678 Sjælland 9400 2412851567 Børge Børgesen 1100 Opgaver

Simpel kombinationssøgning (join) Listning af felter fra flere tabeller Select tabel1.felt1,tabel2.felt2 from tabel1,tabel2 where tabel1.id1 = tabel2.id1 Eks.: Select cpr_tabel.cprnr,cpr_tabel.navn,cpr_tabel.postnr,posttabel.by from cpr_tabel,posttabel where cpr_tabel.postnr=posttabel.postnr A Cpr_tabel.cprnr Cpr_tabel.navn Cpr_tabel.postnr posttabel.by 0907761442 Børge Hansen 5000 Odense C 1703661678 Anders Jensen 7000 Fredericia Opgaver

Wildcard søgning Listning af udvalgte rækker fra tabeller Select felt1,felt2.. from tabel where felt1 like xxx% Select felt1,felt2.. from tabel where felt1 like y_yy_yy Eks.: A) Select cprnr,navn,postnr from cpr_tabel where navn like Peter Ni% B) Select cprnr,navn,postnr from cpr_tabel where navn like Peter Pe_ersen A Cprnr Navn Postnr B Cprnr Navn Postnr 0907761442 Peter Nielsen 9750 0907761442 Peter Petersen 9750 1703661678 Peter Nicolaysen 9400 2412851567 Peter Pedersen 1100 Opgaver

Statistik på søgninger Listning af de eentydige rækker og antallet af rækker fra tabeller Select count(*) from tabel <where felt1 = xxx > Select distinct(felt1) from tabel <where felt1 = xxx > Eks.: A1) Select count(*) from cpr_tabel A2) Select count(*) from cpr_tabel where postnr = 5000 B1) Select distinct(postnr) from cpr_tabel B2) Select distinct(postnr) from cpr_tabel where bynavn like borg A Antal B Postnr 50098 5800 (Nyborg) 7000 (Viborg) Opgaver

Aften 2 Summationer Beregnede udtræk Funktions-søgninger Grupperede udtræk Søgninger på strenge (og datoer) Performance (evt. overskride tiden?)

Opsamling aften 1 Select alle felter Select udvalgte felter Select rækker på sorteret form (baseret på udvalgte felter) Select udvalgte rækker vha. betingelse (where sætning) Select med wildcard (%) (_) Select med statistik med count(*) Select fra mere end 1 tabel (detaljer 3. aften)

Opsamling syntaks - SELECT sætninger Select felt1,felt2 from tabel

Opsamling syntaks - SELECT sætninger Select felt1,felt2 from tabel

Opsamling syntaks - SELECT sætninger Select felt1,felt2 from tabel1,tabel2,tabel3.

Opsamling syntaks - SELECT sætninger Select felt1,felt2 from tabel Select * from tabel Minimums select sætning

Opsamling syntaks - SELECT sætninger Felt præsentation flere tabeller Select felt7,felt12,felt7 from tabel1,tabel2 Select felt7,felt12,felt7 from tabel1,tabel2 Select tabel1.felt7,tabel2.felt12,tabel2.felt7 from tabel1,tabel2

Opsamling syntaks - SELECT sætninger Sortering Select felt1,felt2 from tabel order by felt3 Select felt1,felt2 from tabel order by felt1,felt3 Select felt1,felt2 from tabel order by felt1 desc,felt3 (asc)

Opsamling syntaks - SELECT sætninger Betingelse Select felt1,felt2 from tabel where felt3 = 9999 Select felt1,felt2 from tabel where felt3 = xxxxyyyzzz Select felt1,felt2 from tabel where felt3 = xxxx and felt2 = 999 Select felt1,felt2 from tabel where felt3 = xxxx or felt2 = 999 Select felt1 from tabel where felt1 = 22 and (felt3 = 43 or felt4=55)

Opsamling syntaks - SELECT sætninger Andre betingelser Select felt1,felt2 from tabel where felt3 > 9999 Select felt1,felt2 from tabel where felt3 <= 9000 Select felt1,felt2 from tabel where felt3 between 200 and 299 Select felt1,felt2 from tabel where felt3 in ( xx, yy, zz ) Select felt1,felt2 from tabel where felt1!= xxx Select felt1,felt2 from tabel where felt1 is not null > større end < mindre end <= og >= mindre end/ligmed og større end/lig med between a and b mellem værdien a og b (inklusive) in (xx,yy,zz,.) blandt værdierne xx, yy eller zz. not in (xx,yy,zz ) ikke blandt værdierne xx, yy eller zz.!= - ikke lig med is not null ikke null værdien (dvs. ingenting )

Opsamling syntaks - SELECT sætninger Wildcard søgning Select felt1,felt2 from tabel where felt3 like xxx% Select felt1,felt2 from tabel where felt3 like %xx%y%zzz Select felt1,felt2 from tabel where felt3 like xx_y Select felt1,felt2 from tabel where felt3 like _xx y_ Select felt1,felt2 from tabel where felt3 like xx_yy%zz

Opsamling syntaks - SELECT sætninger Rækkeantal/distinkte værdier Select count(*) from tabel Select count(*) from tabel where felt3 > 700 Select distinct(felt1) from tabel Select distinct(felt1) from tabel where felt1 like x%

Opsamling syntaks - SELECT sætninger Rækkefølge Select felt1 from tabel Select felt1 from tabel where felt3 > 700 Select felt1 from tabel order by felt2,felt3 Select felt1 from tabel where felt3 > 700 order by felt2,felt3

Opsamling syntaks - SELECT sætninger Opgaver Opsummering aften 1

Summationer Summering af kolonner fra tabel Select sum(felt1) from tabel Select sum(felt2) from tabel where felt1 = xxx Eks.: A) Select sum(solgte_bananer) from solgt_frugt_tabel B) Select sum(købte_is) from is_indkøbs_tabel where isnavn= Magnum A Solgte bananer B Købte is 298 37 Opgaver

Beregnede udtræk (matematiske udtryk) Beregning på en rækkes felter (enkelt-række-baseret) Select felt1,felt2,felt1+felt2 from tabel Select felt1,felt5/felt6 from tabel Eks.: Select frugt_navn,ant_frugt,stk_pris,ant_frugt*stk_pris from frugt_omsaetning frugt_navn ant_frugt stk_pris ant_frugt*stk_pris Banan 60 3 180 Æble 203 2 406 Citron 450 4 1800

Beregnede udtræk - operatorer Multiplikation * Divistion / Addition + Subtraktion - Eks.: Select frugt,ant_frugt,stk_pris,ant_banan*stk_pris from frugt_omsaetning Select antal_piger+antal_drenge from klasse_tabel where klasse = 5A Select højeste_pris-laveste_pris from pris_tabel Select antal_piger/antal_skole_klasser from skole_tabel Opgaver

Beregnede udtræk andre operatorer Beregning på en rækkes felter (enkelt-række-baseret) Select operator(x,y) from tabel Eks.: Select ant_øjne,ant_terninger,power(ant_øjne,ant_terninger) from terninge_kast_tabel where ant_øjne in (2,3,6) Ant_øjne Ant_terninger Power(.) 3 3 27 6 3 216 3 1 3 2 3 8 2 6 64

Beregnede udtræk andre operatorer ABS(x) SIGN(x) Returnerer den absolutte værdi af x (værdi uden fortegn) Returnerer (for)tegnet for x (negativ=-1,nul=0,positiv=1) Mod(x,y) Returnerer resten (heltal) ved en divison (x divideret med y) Floor(x) Ceil(x) Power(x,y) Round(x,y) Sqrt(x) Returnerer den største hele værdi, som er mindre end eller lig med x Returnerer den mindste hele værdi, som er større end eller lig med x Returnerer værdien for x opløftet y gange Returnerer den afrundede værdi af x (evt. med y antal decimaler) Returnerer kvadratroden af x Eks.: Select floor(ant_is/ant_børn) from is_spiseri_tabel Select mod(ant_is,ant_børn) from is_spiseri_tabel Opgaver

Funktions-søgninger Beregning på et antal rækkers felter (mange-række-baseret) Select funktion(felt1) from tabel Select funktion(felt2) from tabel where felt1 = xxx Eks.: Select max(ant_spiste_is) from klasse_spiseri_tabel Select max(ant_spiste_is) from klasse_spiseri_tabel where klasse_navn like 5% Max(ant_spiste_is) 160

Funktions-søgninger (funktioner) MIN MAX SUM AVG COUNT COUNT(*) Returnerer den mindste værdi for et felt blandt en gruppe af rækker Returnerer den største værdi for et felt blandt en gruppe af rækker Returnerer summen af et felt blandt en gruppe af rækker Returnerer gennemsnitsværdien for et felt blandt en gruppe af rækker Returnerer antallet af rækker med en værdi for et felt blandt en gruppe af rækker Returnerer antallet af rækker blandt en gruppe af rækker Eks.: Select min(ant_børn) from skoleklasse_tabel Select avg(ant_børn) from skoleklasse_tabel where klasse_navn in ( 5A, 5B, 6A, 6B )

Funktions-søgninger - gennemsnit Listning af gennemsnittet for kolonne blandt et antal rækker Eks.: Select avg(felt1) from tabel Select avg(felt2) from tabel where felt2 > 8888 A) Select avg(alder) from cpr_tabel B) Select avg(alder) from cpr_tabel where alder > 40 A alder B alder 45 65

Funktions-søgninger minimum/maximum Listning af største/mindste forekomst af en kolonne blandt et antal rækker Select min(felt1) from tabel Select max(felt2) from tabel where felt2 < 666 Eks.: A) Select max(alder) from cpr_tabel B) Select min(alder) from cpr_tabel where alder > 40 A alder B alder 115 41 Opgaver

Grupperede udtræk med funktioner Beregning på et antal rækkers felter (gruppe-baseret) Select felt2,funktion(felt1) from tabel group by felt2 Select felt1,funktion(felt2) from tabel where felt9 = xxx group by felt1 Eks.: Select postnr,avg(alder) from cpr_tabel group by postnr Select postnr,avg(alder) from cpr_tabel group by postnr where postnr between 5000 and 5210 postnr Avg(alder) 5000 42 5100 43 5210 47 Opgaver

Strenge præsentation og søgning Listning af dele af kolonner og søgning på dele af kolonner Select substr(felt10,1,6) from tabel Select felt1,felt2.. from tabel where substr(felt2,1,8) = abcdefgh Eks.: A) Select cprnr,substr(navn,1,14) from cpr_tabel where navn like Peter Ni% B) Select cprnr,navn from cpr_tabel where substr(navn,1,8) = Peter Pe A Cprnr Navn B Cprnr Navn 0907761442 Peter Nielsen 0907761442 Peter Petersen 1703661678 Peter Nicolays 2412851567 Peter Pedersen Opgaver

Aften 3 Dato præsentation og søgning Kombinationssøgninger på flere tabeller Insert - indsættelse af rækker i tabeller Update - editere i rækker i tabeller Delete - sletning af rækker i tabeller

Oplysninger ifm. aftenens indhold Ny tabel: KARAKTER. 3 kolonner: Ølnr, Kursist, Karakter Der er på forhånd indsat nogle rækker, som foregiver, hvad andre kursister på holdet har tildelt af karakterer til nogle øl Er-diagram mangler 3 felter: OPRETTID i bryggeri-tabel TRANSAKTIONS_TID i ol_maerker-tabel BY hedder BYNAVN i posttabel

Dato behandling i SQL Hvert system sine funktioner MySQL date_format() Oracle to_char() MS SQL server convert() DB2 varchar_format() Se evt. mere på http://www.w3schools.com/sql/sql_dates.asp

Datoer præsentation og søgning Listning af dato-felter og søgning på datoer Eks.: Select date_format(dato1, %d-%b-%y ) from tabel Select felt1,felt2.. from tabel where datofelt = date_format( 20070931, %Y%m%d ) A) Select cprnr, date_format(fødselsdato, %d-%b-%y ) from cpr_tabel where navn= Peter B) Select cprnr,navn from cpr_tabel where fødselsdato = date_format ( 2412, %m%y ) A Cprnr Date_format(føds e.. B Cprnr Navn 0907761442 09-jul-1976 2412761443 Peter Jul 1703661678 17-mar-1966 2412851567 Julius Hansen

Datoer date_format (MySQL) Specifier Description %a Abbreviated weekday name (Sun..Sat) %b Abbreviated month name (Jan..Dec) %c Month, numeric (0..12) %d Day of the month, numeric (00..31) %e Day of the month, numeric (0..31) %f Microseconds (000000..999999) %H Hour (00..23) %h Hour (01..12) %i Minutes, numeric (00..59) %j Day of year (001..366) %k Hour (0..23) %l Hour (1..12) %M Month name (January..December) %m Month, numeric (00..12) %r Time, 12-hour (hh:mm:ss followed by AM or PM) %S Seconds (00..59) %s Seconds (00..59) %T Time, 24-hour (hh:mm:ss) %u Week (00..53), where Monday is the first day of the week; WEEK() mode 1 %W Weekday name (Sunday..Saturday) %w Day of the week (0=Sunday..6=Saturday) %Y Year, numeric, four digits %y Year, numeric (two digits) %% A literal % character Opgaver

Kombinations-søgninger flere tabeller Kombinere felter fra flere tabeller Er-diagrammet viser relationerne mellem tabellerne

Kombinations-søgninger flere tabeller Kombinere felter fra flere tabeller Er-diagrammet viser relationerne mellem tabellerne Eksempel: Bryggeri-tabellen indeholder ikke bynavn Men bryggeri-tabellen indeholder postnr. Postnr kan bruges til at hente bynavnet fra posttabellen (Se eksempel næste side) Eksempel: Oel-maerker-tabellen og bryggeri-tabellen indeholder bryggerinr Man kan finde hvilket bryggeri (bryggerinavn) hvorpå en øl er produceret

Joins SELECT bryggerinavn,postnr FROM bryggeri SELECT postnr,bynavn FROM posttabel SELECT bryggerinavn, bynavn FROM bryggeri JOIN posttabel ON posttabel.postnr = bryggeri.postnr

Joins Listning af felter fra flere tabeller SELECT tabel1.felt1,tabel2.felt2 FROM tabel1, tabel2 WHERE tabel1.id1 = tabel2.id1 Eller SELECT tabel1.felt1,tabel2.felt2 FROM tabel1 JOIN tabel2 on tabel1.id1 = tabel2.id1 WHERE Eksempel SELECT cprnr, navn, cpr_tabel.postnr, by FROM cpr_tabel, posttabel WHERE cpr_tabel.postnr = posttabel.postnr eller SELECT cprnr, navn, cpr_tabel.postnr, by FROM cpr_tabel JOIN posttabel ON cpr_tabel.postnr=posttabel.postnr A Cpr_tabel.cprnr Cpr_tabel.navn Cpr_tabel.postnr posttabel.by 0907761442 Børge Hansen 5000 Odense C 1703661678 Anders Jensen 7000 Fredericia

Joins JOIN tabel ON Giver kun de rækker, der opfylder kriteriet der står i ON-clausen

Andre JOIN-typer

Opgaver i Joins Listning af felter fra flere tabeller SELECT tabel1.felt1,tabel2.felt2 FROM tabel1, tabel2 WHERE tabel1.id1 = tabel2.id1 Eller SELECT tabel1.felt1,tabel2.felt2 FROM tabel1 JOIN tabel2 on tabel1.id1 = tabel2.id1 WHERE Eksempel SELECT cprnr, navn, cpr_tabel.postnr, by FROM cpr_tabel, posttabel WHERE cpr_tabel.postnr = posttabel.postnr eller SELECT cprnr, navn, cpr_tabel.postnr, by FROM cpr_tabel JOIN posttabel ON cpr_tabel.postnr=posttabel.postnr A Cpr_tabel.cprnr Cpr_tabel.navn Cpr_tabel.postnr posttabel.by 0907761442 Børge Hansen 5000 Odense C 1703661678 Anders Jensen 7000 Fredericia

Insert Indsætte rækker i tabeller Indsæt en (eller flere) række(r) INSERT INTO table_name VALUES (value1, value2,...) INSERT INTO table_name select felt1,felt2 from table_name2 Eks.: insert into cpr_tabel values (241220061345, Peter Juliusen,5000, Overgade 18 ) insert into cpr_tabel values (241220051346, Sofie Juliusen,5000, Overgade 18 ) commit Insert into cpr_tabel select cprnr,navn,postnr,adresse from grønlandsk_cpr_tabel commit A Cprnr Navn Postnr Adresse 241220061345 Peter Juliusen 5000 Overgade 18 241220051346 Sofie Juliusen 5000 Overgade 18

Commit og Rollback Opdateringer i en tabel kan fortrydes eller godkendes En insert, update eller delete på rækker er ikke fuldendt inden der afgives enten en commit eller en rollback Commit: Godkender den eller de opdateringer, som er sket mod tabellerne Rollback: Fortryder alle opdateringer, som er sket mod tabellerne Eks.: insert into cpr_tabel values (9999998888, Peter Juliusen,5000, Overgade 18 ) insert into cpr_tabel values (1111112222, Sofie Juliusen,5000, Overgade 18 ) rollback insert into cpr_tabel values (241220061345, Peter Juliusen,5000, Overgade 18 ) insert into cpr_tabel values (241220051346, Sofie Juliusen,5000, Overgade 18 ) commit A Cprnr Navn Postnr Adresse 241220061345 Peter Juliusen 5000 Overgade 18 241220051346 Sofie Juliusen 5000 Overgade 18

Insert af rækker med rollback Insert into oltyper values (145, Julebryg ) select * from oltyper where oltypenr >142 rollback select * from oltyper where oltypenr >142

Insert af rækker med commit Insert into oltyper values (145, Julebryg ) select * from oltyper where oltypenr >142 commit select * from oltyper where oltypenr >142 Opgaver

Delete Slette rækker i tabeller Slette én (eller flere) række(r) Delete from table_name Delete from table_name where felt1 = værdi Delete from table_name where felt1 in ( xx, yy, zz, vv ) Delete from table_name1 where felt1 in (select felt1 from table_name2) Eks.: delete from cpr_tabel rollback delete from cpr_tabel where status = Flyttet til udlandet commit Cprnr Navn Bynavn Status 0907761442 Peter Nielsen 0907761442 Bosiddende 1703661678 Peter Nicolaysen 2412851567 Flyttet til udlandet Cprnr Navn Bynavn Status 0907761445 Peter Nielsen 0907761442 Bosiddende Opgaver

Update Opdatere rækker i tabeller Opdatere en (eller flere) række(r) update table_name set felt1= nyværdi, felt2= nyværdi2 update table_name set felt1= nyværdi where felt2 = værdi Eks.: update cpr_tabel set nationalitet= DK, A Cprnr Navn Bynavn MK Nationalitet 0907761443 Rasmus Nielsen Odense M DK 1703661677 Rasmus Lüberth Nuuk DK update cpr_tabel set nationalitet= GR,MK=M where bynavn = Nuuk and navn like Rasmus% commit A Cprnr Navn Bynavn MK Nationalitet 0907761443 Rasmus Nielsen Odense M DK 1703661677 Rasmus Lüberth Nuuk M GR Opgaver

Link-liste http://www.1keydata.com/sql/sql.html http://www.w3schools.com/sql/ Kommer på siden www.prosa.dk/pio ------------------------------------------------------------------------------------------------------ Evaluering

Opsummering Almindelig select med søge-kriterier og sortering Funktions-søgning Gruppebaseret visning og søgning Kombinations-søgninger med flere tabeller Opgaver