Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Mer om SQL-spørringer og funksjoner

Liknende presentasjoner


Presentasjon om: "Mer om SQL-spørringer og funksjoner"— Utskrift av presentasjonen:

1 Mer om SQL-spørringer og funksjoner
In 135 Datamodellering og Databaser

2 Logisk utføring av spørringer
Produktet av alle tabeller i FROM dannes WHERE blir utført for å eliminere rader som ikke fyller vilkåret Radene grupperes ved hjelp av kolonnene i GROUP BY Grupper som ikke tilfredsstiller having blir eliminert Uttrykkene i SELECT beregnes Dersom vi har SELECT DISTINCT blir duplikatrader eliminert UNION gjøres etter at hver sub-select er beregnet Radene sorteres i følge ORDER by (I virkeligheten optimaliseres det ved at en annen rekkefølge (2 før 1) blir brukt, men virkningen skal være den samme)

3 Formatering av tall to_char omdanner tall til streng. Du kontrollerer formatet med en formatstring to_char(1234) gir '1234' to_char(0.1415,'9.00') gir '.14' to_char(0.1415,'00.00) gir '00.14') to_char(3120)

4 Å legge inn dato i et date-felt
Dato-format Betydning MM Månednr MON JAN D ukedagnr DD måneddagnr DDD årdagnr DY TUE YY Siste to siffer i år YYYY År med fire siffer HH24 Time på dagen 0-23 MI Minutt SS Sekunder Du kan enten bruke en dato-litteral UPDATE EXAMPLE SET BDAY=DATE ' ' Eller du kan bruke to_date funksjonen to_date tolker datoen som angitt i en format-string, se til høyre UPDATE EXAMPLE SET BDAY= TO_DATE(12.1,'DD.MM'); SELECT BDAY FROM EXAMPLE; BDAY Når bare dag og måned er oppgitt, brukes årets år

5 Å få ut dato med ønsket format
Dato-format Betydning MM Månednr MON JAN D ukedagnr DD måneddagnr DDD årdagnr DY TUE YY Siste to siffer i år YYYY År med fire siffer HH24 Time på dagen 0-23 MI Minutt SS Sekunder SELECT TO_CHAR(BDAY,'DD/MM/YY') FROM EXAMPLE; 24/04/05 SELECT TO_CHAR (BDAY,'MON DD. YYYY') FROM EXAMPLE; APR Hvordan får du vist datoen som år med fire siffer, ukenummer og ukedag? 17/SØNDAG Bruk fantasien! SELECT TO_CHAR(BDAY,'WW/DAY') FROM EXAMPLE;

6 Numeriske funksjoner +-*/ abs(x) absoluttverdi ceil(x)
avrunding oppover floor(x) avrunding nedover mod(x,y) rest ved divisjon av x med y power(x,y) xy sqrt(x) kvadratrota av x

7 Aggregat- og listefunksjoner
min(tallkollonne) max(tallkollonne) sum(tallkollonne) avg(tallkollonne) least(x,y,z,..) minste av verdiene i lista greatest(x,y,z,..) største av ...

8 Datofunksjoner + - Legge til (trekke fra) dager til dato
eller d2-d1=dager mellom d1 og d2 sysdate Nåværende klokkeslett og dato. next_day(d,day) Gir dato til første tirsdag etter dato next_day(dato, 'tirsdag') add_months(d,antall) Gir dato antall måneder seinere last_day(d) Siste dato i måneden for d months_between(d2,d1) Antall måneder mellom datoene d1 og d2 trunc(d) Runder ned til midnatt least(d1,d2,d3,..) Første av datoene

9 Eksempler Å finne første dato i en kollonne
SELECT MIN(<kollonne>) FROM <table>; Å finne dager mellom to datoer SELECT dato2-dato1 AS varighet FROM ... Å finne en dato 15 dager etter en dato SELECT fakturadato+15 AS betalingsfrist ... Å finne antall dager siden en hendelse SELECT TRUNC(sysdate)-FDATO AS dager

10 Strengfunksjoner x||y
Setter sammen to strenger xy (Konkatenering som & i VB) substr(’Per’,1,2) Henter ut en substring som starter i bokstav 1 og har en lengde på to tegn ’Pe’ lower(’Per’) Gjør om strengen til små bokstaver. ’per’ Motsatt upper() instr(name, ' '), Finner forekomst av en streng x i en annen streng y. Returnerer posisjon for hvor x begynner i y round(x,2) Runder av x til to desimaler coalesce(x,’ikke registrert’) Hva sier vi hvis x er null? Hvis x er null vises ’ikke registrert’ ellers vises x CASE WHEN poeng>8.5 THEN ‘Supert' ELSE ‘Brukbart' Viser ’Supert’ hvis poeng er større enn 8.5. Ellers vises ’Brukbart’

11 Underspørringer (subquery)
Tre typer underspørringer: Verdispørring gir én verdi som resultat SELECT MAX(PRIS) FROM.. brukes i stedet for en verdi i WHERE-delen Kolonnespørring Gir én kolonne av verdier som resultat SELECT AKSJEKODE FROM AKSJE WHERE... Kan brukes i stedet for en liste i WHERE-delen Tabellspørring Gir én tabell som resultat Kan brukes i stedet for en tabell i FROM-delen SELECT AKSJEKODE, AKSJENAVN FROM AKSJE WHERE PE>12 Bruk av underspørringer Spørringer som slår sammen resultater UNION: Tabellspørring UNION Tabellspørring krever at tabellene har samme kolonner og viser radene fra de to spørringene i én tabell. Underspørring er et trinn på veien SELECT X,Y, Z FROM <Tabellspørring> WHERE ... SELECT X,Y,Z FROM <tabell> WHERE X in <Kolonnespørring> SELECT X,Y,Z FROM <tabell> WHERE X=<Verdispørring>

12 Underspørringer (Subquery)
Underspørringer gjør det mulig å dele opp kompliserte spørringer i flere enkle spørringer (Splitt og behersk) Arbeidet blir lettere med underspørringer Med underspørringer, kan man arbeide trinnvis Det er forskjell mellom databasemotorer når det gjelder mulighet for underspørring Har du ikke underspørringer blir det vanskeligere å formulere kompliserte spørringer View er et alternativ til underspørringer Temporære tabeller er et annet alternativ til underspørring


Laste ned ppt "Mer om SQL-spørringer og funksjoner"

Liknende presentasjoner


Annonser fra Google