En liten rekap. Spørrespråk. I dag SELECT

Like dokumenter
Dagens program. Kunnskapsorganisasjon og gjenfinning 1. Spørring mot databaser: SQL 2 - Spørring mot flere tabeller

SELECT DISTINCT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D. SELECT Tilgjengelighet FROM Program

Kunnskapsorganisasjon og gjenfinning 1

Kunnskapsorganisasjon og gjenfinning 1. Relasjonsmodellen og -databaser

2 of :19 1 of :19 [Kurssidene] [ ABI - fagsider bibin ]

while-økker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

Introduksjon til beslutningsstrukturer

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

Avansert bruk av SQL. Avanserte spørringer Valguttrykk Spørring på spørring Unionspørringer Delspørringer, vekselvirkende delspørringer Kvantorer

Metaspråket for å beskrive grammatikk

1. SQL spørringer mot flere tabeller

Tabeller og enkle spørringer

Romlig datamanipulering

1. SQL datadefinisjon og manipulering

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Verdier, variabler og forms

Utviklingssak/ID Resume Endring (g2) Rettet i versjon (g1) Rettet i versjon

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ragnar Normann 1

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

En enkel while-løkke. 1 of :28. 2 of :28. while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt

SQL, del 1 - select. Hva er SQL?

Oppgave 1 Datamodellering 25 %

INF1300 Relasjonsalgebra. Et matematisk fundament for å forstå SQL-setninger

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

INF1300 Relasjonsalgebra og SQL, mengder og bager. Lysark for forelesning v. 2.1

Klasser. Webprogrammering høsten Objekter. Eksempelklasser og -objekter. 2 of :56. 1 of :56

Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt. klikker på submit-knappen

Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models

Andre sett obligatoriske oppgaver i INF3100 V2013

Kenneth Torstveit, løsningsarkitekt EVRY P7 - Browser for HR

Systemutvikling fra kjernen og ut, fra skallet og inn

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) INF Ellen Munthe-Kaas 1. Institutt for Informatikk

Relasjonsalgebra. Hva?

while-løkker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

SQL og Mengdelære. Oracle, MySQL, Access, bruker forskjellige syntaks.

Repetisjon: Normalformer og SQL

Oppgave 3 - normalisering

SQL, del 1 - select. Hva er SQL?

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Utvikling fra kjernen og ut

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

LC238D Datamodellering og databaser SQL, del 1 - SELECT

Oppgave 1 (Opprett en database og en tabell)

SQL Introduksjonskurs. Oversikt

INFO122 Innføring i databaser. Oblig 2. av Frode H. Pedersen, Kjartan B. Michalsen og Kristin Breivik

Oppgave: Finn navn og tittel på alle som har arbeidet på prosjektet «Vintersalg»

DBS18 - Strategier for Query-prosessering

INF1300 Introduksjon til databaser

Introduksjon til fagfeltet

Utplukk og sortering. Innhold

Institutt for datateknikk. Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

HØGSKOLEN I SØR-TRØNDELAG

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Kunnskapsorganisasjon og gjenfinning sider (inklusive forside og vedlegg)

Del 3: Noark 5-basert databasestruktur

Spørsmålskompilering del 1

1. Mer om oppbyning av XML-dokument

Spørsmålskompilering del 1

Controller Brukerstøttedatabase Ottar Holstad/Cantor 09.

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

EKSAMEN DATABASER

Utnytt browsermulighetene i Unit4 Lønn og Personal Kenneth Torstveit Sjefskonsulent EVRY

Tilgjegelighet av XHTML-forms

Det gjenstår nå kun å definere hva som skal være primærnøkkel i rolle rabellen.

SQL Structured Query Language

Innhold Forord Innledning Kapittel 1 Introduksjon til databaser og databasesystem

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

En lett innføring i foreninger (JOINs) i SQL

$antall_maaneder =12; Variablene $pris og $antall_maaneder i eksemplet ovenfor har

Kurskategori 3: Utvikling av IKT- systemer. høsten

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Obligatorisk oppgave nr. 3 i INF1300 høsten 2009

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

ITGK - H2010, Matlab. Dagens tema : Teori - Databaser

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

infotorg Enkel brukermanual

Relasjoner terminologi. Kopi av lysark fra forelesningen 13. oktober. Legges ut inntil notatet som samler alt om SQL kommer...

Etternavn Fornavn Født Død Annet Felt

SØKETIPS til Norart. Høgskolen i Gjøvik, Biblioteket, mai

Redd verden. Steg 1: Legg til Ronny og søppelet. Sjekkliste. Introduksjon

SQL: SELECT-spørringer

RUTEPLANLEGGINGSSYSTEM BRUKERVEILEDNING

INF1300 SQL Structured Query Language del 1. Stoff som blir/ble forelest i oktober 2013

Relasjonsalgebra Kopi av lysark om relasjonsalgebra. Vi går igjennom denne for å lage et matematisk fundament for forståelsen av hvordan

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

EKSAMEN 6102 / 6102N DATABASER

SQL: SELECT-spørringer

Kunnskapsorganisasjon og gjenfinning 1.1. Introduksjon til databaseteori. Tine L. Frost, Jørn Helge B. Dahl og Kim Tallerås

Utvikling fra kjernen og ut

Betinget eksekvering og logiske tester i shell

Labquality/NKK ELEKTRONISK RESULTATSKJEMA VIA INTERNET. Åpning av skjemaet. Logg inn på Participant services. Velg resultatskjemaet

Spørringer mot flere tabeller

Løsningsforlag for oblig 1, databaser 2010

Et forsøk på definisjon

Transkript:

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hioa.no) 06/11-15 Databaser høsten 2015 En liten rekap ER-diagram - vi modellerer dataene våre til danne best mulig grunnlag for informasjonen vi trenger entitetstyper sammenhenger Logisk Nivå - Vi omsetter modellen i relasjoner(tabeller) som kan implementeres i en relasjonsdatabasesystem. Normalisering - vi sjekker at databasen er passelig normalisert, slik at vi unngår anomalier. Behovet for normalisering avveies ofte mot andre behov (for eksempel effektivitet). Spørrespråk Spørrespråk er formelle uttrykk av informasjonsbehov som stilles til systemer. Mange slike språk i dataverdenen, tilpasset forskjellige typer informasjonssystemer. SQL er konstruert med tanke på søk i relasjonsdatabaser. Bygget på Codds relasjonsalgebra. Deles i to: DDL Data Description Language, brukes for å opprette og vedlikeholde databaseskjema Beksrivelse of struktur av tabeller DML Data Manipulation Language: Brukes for å legge inn, finne igjen og vedlikeholde data. Vi ser på DML, nærmere bestemt SELECT - delen: finne igjen data. I dag Spørringer mot en tabell Spørringer mot to eller flere tabeller SELECT Generell form Henter ut data og presenterer dem som en (midlertidig) tabell SELECT [DISTINCT] kolonner FROM tabeller [WHERE betingelser] [GROUP BY kolonner] [ORDER BY kolonner] ; Vanlig å skrive de reserverte ordene (nøkkelordene SELECT, DISTINCT osv. med store bokstaver. Avslutte med semikolon. Med "midlertidig" menes at en SELECT gir tabellens status der og da. Har man gjort en endring etter spørringen - må man evt. spørre på nytt. 1 of 13 06.11.2015 14:31 2 of 13 06.11.2015 14:31

Vi spør mot NRK-databasen Spørringer mot èn tabell Typiske eksempler Betrakt tabellen program. Hent ut alle kolonnene i tabellen SELECT * FROM Program Program (ProgramID, Programtittel, Programinfo, Kategori, Varighet, Aldersgrense, Tilgjengelighet, Teksting, Episodenr, sesongid) Innslag(InnslagID, Innslagtittel) Sesong (SesongID, Sesongnavn, Episodeantall, SerieID) Serie(SerieID, Serietittel, Seriebeskrivelse) Medvirkende(MedvirkendeID, Fornavn, Etternavn) Sendetidspunkt (TidspunktID, Kanal, Sendedato, Klokkeslett, ProgramID) Programinnhold (InnslagID, ProgramID, Nummer, Tidskode) Deltagelse (ProgramID, MedvirkendeID, Rolle) En annen måte å oppnå det samme på, er å si SELECT ProgramID, Programtittel, Kategori, Programinfo, Varighet, Aldersgrense,Tilgjengelighet, Teksting, Episodenr, SesongID FROM Program Spør etter noen av kolonnene: SELECT Programtittel, Kategori FROM Program Dette kalles også en "Projeksjon". 3 of 13 06.11.2015 14:31 4 of 13 06.11.2015 14:31

Betingelser: Nøkkeldrdet WHERE Sammenlikningsoperatorer Større enn (> operatoren) Større enn eller lik (>=) Nøkkelordet WHERE. Her med nøyaktig likhet. Neste spørring søker etter Sjokoladesuget i tittelen. SELECT Programtittel, Programinfo, Kategori FROM Program WHERE Programtittel = 'Sjokoladesuget' Sortering: kommandoen Order By Stigende sortering ASC ( Ascending) ORDER BY Varighet ASC; Når vi bruker en tekstverdi i søket, må den omsluttes med apostrofer ('' - fnutter 'Sjokoladesuget') eller doble anførselstegn ("" hermetegn "Sjokoladesuget") Mindre enn (< operatoren) Synkende sortering DESC ( Descending) ORDER BY Varighet DESC Legg merke til at tallverdier angis uten fnutter (38, ikke '38'). Mindre enn eller lik(<= operatoren) 5 of 13 06.11.2015 14:31 6 of 13 06.11.2015 14:31

Mønsterlikhet: ordet LIKE Trunkering: Neste spørring søker etter programmer som begynner på S, og sorterer dem synkende på varighet. WHERE Programtittel LIKE 'S%' Betingelser med boolske operatorer: AND, OR og NOT Vi kombinerer ofte to eller flere betingelser med de boolske operatoreneand, OR og NOT. AND operatoren, den mest brukte. AND betyr egentlig semantisk sett "samtidig som". En kombinert betingelse med "AND", stemmer bare når alle leddene stemmer samtidig. List opp programmene som starter med 'S%' samtidig som de handler om sport. SELECT Programtittel, Kategori FROM Program WHERE Programtittel LIKE 'S%' AND Kategori = 'Sport' Og en ting til: Trenger ikke VISE alt vi spør om. Hvis vi vet at alt vi får er i kategori sport, er kanskje ikke så viktig å vise kategorien: bruker heller plassen på varigheten. WHERE Programtittel LIKE 'S%' AND Kategori = 'Sport' 7 of 13 06.11.2015 14:31 8 of 13 06.11.2015 14:31

Spørring mot flere tabeller Nærmere titt: Rader med forskjellige program-id er feil!!! Vi vil hente ut en liste over alle programmer og deres sendetidspunkter: Trenger data fra to tabeller: Program (ProgramID, Programtittel, Programinfo, Kategori, Varighet, Aldersgrense, Tilgjengelighet, Teksting, Episodenr, sesongid) Sendetidspunkt (TidspunktID, Kanal, Sendedato, Klokkeslett, ProgramID) SQL lar oss formulere søk mor flere tabeller, ved at vi oppgir tabellnavnene i etter FROM, separert med komma. Første forsøk. SELECT TidspunktID, Kanal, Sendedato, Klokkeslett, ProgramID, ProgramID, Programtittel FROM Program, Sendetidspunkt Går ikke, gir en feilmelding. Dette går ikke, da ProgramID finnes i begge tabellene, og må derfor kvalifiseres: Annet forsøk SELECT TidspunktID, Kanal, Sendedato, Klokkeslett, Sendetidspunkt.ProgramID, Program.ProgramID, Programtittel De rader som egentlig hører sammen er de hvor Program-id'ene er like. Hvordan vise bare de? Tredje forsøk: SELECT TidspunktID, Kanal, Sendedato, Klokkeslett, Sendetidspunkt.ProgramID, Program.ProgramID, Programtittel Siste linje kaller vi en JOIN-betingelse Den siler vekk irrelevante linjer fra det kartesiske produktet. Kolonner som har likt navn i begge tabeller må kvalifiseres: Sendetidspunkt.ProgramID, Program.ProgramID Unngå å vise surrogatnøkler Surrogatnøkler er egentlig ikke "nyttige" data for en bruker. De brukes i spørringer (ofte i join-betingelser), men vises som regel ikke. "Alle mot alle" Alle rader i Program-tabellen mot alle rader i Sendetidspunkttabellen. Det kartesiske produkt SELECT Kanal, Sendedato, Klokkeslett, Programtittel Litt mer sammensatte søk 9 of 13 06.11.2015 14:31 10 of 13 06.11.2015 14:31

JOIN betingelser kombineres ofte med andre betingelser med AND Gi meg bare programmene som ble sendt på NRK3 SELECT Kanal, Sendedato, Klokkeslett, Programtittel Flere enn to tabeller Hvilke medvirkende har deltatt i de forskjellige programmene? trenger tre tabeller. Program (ProgramID, Programtittel, Programinfo, Kategori, Varighet, Aldersgrense, Tilgjengelighet, Teksting, Episodenr, sesongid) Medvirkende(MedvirkendeID, Fornavn, Etternavn) Deltagelse (ProgramID, MedvirkendeID, Rolle) AND Kanal = 'NRK3' Gi meg sportsrelaterte programmer sendt på NRK1 SELECT Kanal, Sendedato, Klokkeslett, Programtittel AND Kategori = 'sport' AND Kanal = 'NRK1' SELECT Fornavn, Etternavn, Programtittel FROM Program, Medvirkende, Deltagelse WHERE Program.ProgramID= Deltagelse.ProgramID AND Medvirkende.MedvirkendeID= Deltagelse.MedvirkendeID; 11 of 13 06.11.2015 14:31 12 of 13 06.11.2015 14:31

Aliaser For å gjøre søk litt lettere å tyde, bruker vi forkortelser, gjerne èn bokstav, på tabellnavn. Samme søk (med samme resultat) SELECT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D WHERE P.ProgramID= D.ProgramID AND M.MedvirkendeID= D.MedvirkendeID; Og et lite søk til Hvilke medvirkende har deltatt i Sportsrevyen? SELECT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D WHERE P.ProgramID= D.ProgramID AND M.MedvirkendeID= D.MedvirkendeID AND Programtittel="Sportsrevyen" ; Sist oppdatert 06/11-15 av Michael Preminger, michaelp@hioa.no 13 of 13 06.11.2015 14:31