SQL 3: Opprette tabeller, datainnsetting og utsnitt

Like dokumenter
Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

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

1. SQL datadefinisjon og manipulering

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring:

Oppgaver Oppgave a: Sett opp mulige relasjoner

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

Metaspråket for å beskrive grammatikk

Miniverden og ER- modell

Integritetsregler i SQL. Primærnøkler

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

Integritetsregler i SQL

Tilkobling og Triggere

Integritetsregler i SQL

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

Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

SQL, del 1 - select. Hva er SQL?

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

Utvikling fra kjernen og ut

SQL: Integritetsregler, triggere og views

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

Databaser kort intro. Tom Heine Nätt

Repetisjon: Normalformer og SQL

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

SQL, del 1 - select. Hva er SQL?

Videregående programmering 6

Oppgave 1 (Opprett en database og en tabell)

UNIVERSITETET. triggere og views. Institutt for Informatikk. INF Arne Maus 1

LC238D Datamodellering og databaser SQL, del 1 - SELECT

SQL SELECT-FROM-WHERE. Skjemadefinisjon og datainnsetting i SQL. Semantikk bak ein-relasjons-spørring

Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado

EKSAMEN 6102 / 6102N DATABASER

Øvingsoppgave uke 3. Fanger i fengsel

Systemutvikling fra kjernen og ut, fra skallet og inn

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

1. Innføring i bruk av MySQL Query Browser

Delinnlevering 2. INF1050, våren Inge Svale Hauger Handagard (ishandag) Tor Hildrum (thildru)

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

HØGSKOLEN I SØR-TRØNDELAG

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Fag TDT4145 Datamodellering og databasesystemer Øving 3: Relasjonsalgebra og SQL

Utvikling fra kjernen og ut

Normalisering. Hva er normalisering?

Dette er vår første obligatoriske oppgave i kurset Moderne Databaseteknologi.

Utvikling fra kjernen og ut

INF 329: Web-Teknologier. Dataimplementasjon. Fra Kapittel 11 i «Designing Data-Intensive Web Applications» Presentasjonsdato: 17/10/2004

Sikkerhet og tilgangskontroll i RDBMS-er

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

Databaser: Relasjonsmodellen, del I

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

INF1300 Introduksjon til databaser

Bruke SQL fra Python. Med Psycopg2

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

1. Introduksjon til Oracle Express Edition

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

Normalisering. Hva er normalisering?

SQL Introduksjonskurs. Oversikt

ORDBMS og OODBMS i praksis

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Utvikling fra kjernen og ut

10. ASP og SQL Innledning Recordset-objektet. Innhold. Referanse til læreboka Kapittel Se detaljer nedenfor.

Eksamen i IBE102 Webutvikling Våren 2017.

EKSAMEN DATABASER

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

HØGSKOLEN I SØR-TRØNDELAG

EKSAMEN. Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene.

IN2090 Databaser og datamodellering 07 Datamanipulering

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

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

Applikasjonsutvikling med databaser

Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen

Relasjoner terminologi

Database med OpenOffice og MySQL

Notater: INF1300. Veronika Heimsbakk 8. januar 2013

Utvikling fra kjernen og ut

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning mandag 14.

Løsningsforlag for oblig 1, databaser 2010

Løsningsforslag matoppskrifter modellering

HØGSKOLEN I SØR-TRØNDELAG

INF3100 V2018 Obligatorisk oppgave nr. 2

Skranker og avledninger

Løsningsforslag maskindatabasen på Ifi SQL og normalisering

SQL. ISO SQL-standardene. Structured Query Language. Bruk av SQL. En innledende kommentar SQL-89 SQL-92 SQL:1999

Skranker og avledninger

SQL Structured Query Language

IN2090 Databaser og datamodellering 07 Datamanipulering

HØGSKOLEN I SØR-TRØNDELAG

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

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

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning onsdag 22.

Munik sin hjemmeside BRUKERMANUAL LITAL ROZENTAL-EIDE

Eksamen i Internetteknologi Fagkode: IVA1379

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Etternavn Fornavn Født Død Annet Felt

HØGSKOLEN I SØR-TRØNDELAG

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Ekvivalente stier (Equivalence of Path, EOP) i storm

IN2090 Databaser og datamodellering. 08 Typer og skranker

Databasers typesystem. IN2090 Databaser og datamodellering. 08 Typer og skranker. SQL-standarden vs. RDBMSer. Hvilke datatyper har vi

Transkript:

SQL 3: Opprette tabeller, datainnsetting og utsnitt Læreboka kap. 4 03.11.2008 Kjell Toft Hansen 1

Datainnsetting Legg til en ny leverandor i tabellen leverandor INSERT INTO leverandor (lev_nr, lev_navn, klasse, lev_by) VALUES(21, 'Åseby', 20, 'Oslo'); eller INSERT INTO leverandor VALUES(21, 'Åseby', 20, 'Oslo'); lev_nr lev_navn klasse lev_by 1 Svendsen 20 Lillehammer 2 Jensen 10 Porsgrunn 3 Bø 30 Porsgrunn 4 Christiansen 20 Lillehammer 5 Andersen 30 Arendal 21 Åseby 20 Oslo 03.11.2008 Kjell Toft Hansen 2

Kopiere data fra én tabell til en annen Legg inn dårlige leverandører (leverandører med lavere klassifisering enn 30) i en egen tabell. CREATE TABLE darlig_leverandor AS SELECT * FROM leverandor WHERE klasse < 30; lev_nr lev_navn klasse lev_by 1 Svendsen 20 Lillehammer 2 Jensen 10 Porsgrunn 4 Christiansen 20 Lillehammer 21 Åseby 20 Oslo 03.11.2008 Kjell Toft Hansen 3

Endre verdier Produkt 2 skal skifte til fargen gul og vekten skal økes med 3. UPDATE produkt SET kode = 'gul', vekt = vekt + 3 WHERE prod_nr = 2; prod_nr prod_navn kode vekt prod_by 1 synåler rød 12 Lillehammer 2 binders gul 20 Porsgrunn 3 skruer blå 17 Risør 4 skruer rød 14 Lillehammer 5 knapper blå 12 Porsgrunn 6 spiker rød 19 Lillehammer 03.11.2008 Kjell Toft Hansen 4

Endre verdier Nullstill antall leverte produkt for alle leverandører i Porsgrunn. UPDATE leveranse SET ANTALL = 0 WHERE lev_nr IN ( SELECT lev_nr FROM leverandor WHERE lev_by = 'Porsgrunn' ); lev_nr prod_nr antall 1 1 300 1 2 200 1 3 400 1 4 200 1 5 100 1 6 40 2 1 0 2 2 0 3 2 0 4 2 200 4 4 300 4 5 400 03.11.2008 Kjell Toft Hansen 5

Slette tabell/verdier Slett alle radene i tabellen Leveranse DELETE FROM leveranse; Slett en leverandor i tabellen Leverandor DELETE FROM leverandor WHERE lev_nr = 21; Slett hele tabellen Leveranse DROP TABLE IF EXISTS leveranse; 03.11.2008 Kjell Toft Hansen 6

Opprette tabeller Relasjonsskjema: ANSATT(ans_id, etternavn, fornavn, avd_id*) AVDELING(avd_id, avdnavn, ans_id*) 03.11.2008 Kjell Toft Hansen 7

Opprette tabeller CREATE TABLE tbl_avdeling ( avd_id CHAR(4) NOT NULL, avdnavn VARCHAR(15) NOT NULL, alternativ nøkkel ans_id INT NOT NULL, fremmednøkkel, eksistensavhengighet PRIMARY KEY(avd_id), UNIQUE(avdnavn) tillater nullverdi )TYPE=INNODB; 03.11.2008 Kjell Toft Hansen 8

Opprette tabeller CREATE TABLE tbl_ansatt ( ans_id INT NOT NULL, etternavn VARCHAR(30) NOT NULL, fornavn VARCHAR(25), avd_id CHAR(4) NOT NULL, fremmednøkkel, eksistensavhengighet PRIMARY KEY(ans_id) )TYPE=INNODB; 03.11.2008 Kjell Toft Hansen 9

Opprette tabeller : referanseintegritet ALTER TABLE tbl_ansatt ADD FOREIGN KEY(avd_id)REFERENCES tbl_avdeling(avd_id); Hvis vi ønsker å slette en avdeling fra tabellen Avdeling, får vi ikke lov til det hvis det finnes en ansatt som er registrert i samme avdeling vi kan ikke slette ved en feiltagelse. ALTER TABLE tbl_ansatt ADD FOREIGN KEY(avd_id)REFERENCES tbl_avdeling(avd_id) ON DELETE CASCADE; Hvis vi ønsker å slette en avdeling fra tabellen Avdeling og det finnes ansatte som er registrert i samme avdeling, vil også alle ansatte i denne avdelingen bli slettet svært uheldig. 03.11.2008 Kjell Toft Hansen 10

Opprette tabeller : referanseintegritet ALTER TABLE tbl_avdeling ADD FOREIGN KEY(ans_id)REFERENCES tbl_ansatt(ans_id); Hvis vi ønsker å slette en ansatt fra tabellen Ansatt og den samme ansatte er registrert som leder i tabellen Avdeling, får vi ikke slette den ansatte vi kan ikke slette ved en feiltagelse og får ikke morløse. ALTER TABLE tbl_avdeling ADD FOREIGN KEY(ans_id)REFERENCES tbl_ansatt(ans_id); ON DELETE CASCADE; Hvis vi ønsker å slette en ansatt fra tabellen ansatt og den ansatte er registrert som leder i tabellen Avdeling, vil den ansatte bli slettet og det samme vil avdelingen bli svært uheldig. 03.11.2008 Kjell Toft Hansen 11

Virtuelle tabeller (utsnitt, eng. views) Opprett et utsnitt som inneholder leverandører med lavere klassifisering enn 30 CREATE VIEW darlig_leverandor_utsnitt (lnr, lnavn, kl) AS SELECT lev_nr, lev_navn, klasse FROM leverandor WHERE klasse < 30; SELECT * FROM darlig_leverandor_utsnitt; LEV_NR LEV_NAVN KLASSE ---------- --------------- ---------- 1 Svendsen 20 2 Jensen 10 4 Christiansen 20 21 Åseby 20 03.11.2008 Kjell Toft Hansen 12

Virtuelle tabeller Vi ønsker å se hvilke utsnitt vi har opprettet SELECT VIEW_NAME FROM USER_VIEWS; VIEW_NAME ------------------------------ ANTALL1 ANTALL2 DAARLIGE_LEVERANDORER DAARLIGE_LEVERANDORER2 DARLIG_LEVERANDOR_UTSNITT KAN_LEVERE_HELE_ORDREN KAN_LEVERE_TIL_ORDREN LEV_INFO LEV_VINDU NOEN_FORFATTERE 03.11.2008 Kjell Toft Hansen 13

Virtuelle tabeller med CHECK OPTION Hindre at rader som ikke passer inn i utsnittet blir lagret ved innsetting/endring CREATE VIEW darlig_leverandor_utsnitt2 AS SELECT lev_nr, lev_navn, klasse FROM leverandor WHERE klasse < 30 WITH CHECK OPTION; INSERT INTO darlig_leverandor_utsnitt2 VALUES(9, 'Rød', 50); INSERT INTO darlig_leverandor_utsnitt2 VALUES(9, 'Rød', 50) * FEIL på linje 1: ORA-01402: brudd på WITH CHECK OPTION-skranke for WHERE-ledd i utsnitt 03.11.2008 Kjell Toft Hansen 14

Virtuelle tabeller med CHECK OPTION Hindre at rader som ikke passer inn i utsnittet blir lagret ved innsetting/endring UPDATE darlig_leverandor_utsnitt2 SET klasse = 60 WHERE lev_nr = 1; UPDATE darlig_leverandor_utsnitt2 * FEIL på linje 1: ORA-01402: brudd på WITH CHECK OPTION-skranke for WHERE-ledd i utsnitt 03.11.2008 Kjell Toft Hansen 15