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

Like dokumenter
Tilkobling og Triggere

Integritetsregler i SQL

Integritetsregler i SQL. Primærnøkler

Integritetsregler i SQL

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

SQL: SELECT-spørringer

SQL 3: Opprette tabeller, datainnsetting og utsnitt

SQL: Integritetsregler, triggere og views

Oppgave 1 (Opprett en database og en tabell)

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

Datamodellering og databaser SQL, del 2

1. SQL datadefinisjon og manipulering

Repetisjon: Normalformer og SQL

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

INF3100 V2018 Obligatorisk oppgave nr. 2

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

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

INF1300 Introduksjon til databaser

IN2090 Databaser og datamodellering. 08 Typer og skranker

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

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

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Eksamen i IBE102 Webutvikling Våren 2017.

Ekstramateriale: Eksempel på PostgreSQL 8.4 og SQL:1999 (ikke pensum 2012)

Alle attributter har NULL som mulig verdi. mulige verdier for integer: NULL, 0, 1, 2, 3...

Å programmere databasetjeneren JavaDB. Programkoden ligger i databasen

Metaspråket for å beskrive grammatikk

SVARFORSLAG : Eksamen i IBE102 Webutvikling Våren 2017.

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

Miniverden og ER- modell

ORDBMS og OODBMS i praksis

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

IN2090 Databaser og datamodellering 07 Datamanipulering

Indre select-setninger Nestede select-setninger

Databaser & objektorientering.

Databaser kort intro. Tom Heine Nätt

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

Applikasjonsutvikling med databaser

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

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

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor.

INF1300 Introduksjon til databaser

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

IN2090 Introduksjon til databaser

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

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

SQL: Systemaspekter. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Systemaspekter V18 1 / 21

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

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

Bruke SQL fra Python. Med Psycopg2

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

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

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

Videregående programmering 6

INF1300 Introduksjon til databaser

Oppgaver Oppgave a: Sett opp mulige relasjoner

INF1300 Introduksjon til databaser

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

1. Innføring i bruk av MySQL Query Browser

SQL Structured Query Language

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Isolasjon i postgres og mysql

Spørsmålskompilering del 1

IN2090 Databaser og datamodellering 07 Datamanipulering

SQL Structured Query Language. Repetisjon av select spørringer Nestede select spørringer Mengdeoperasjoner Views Flere operatorer

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

INF1300 Introduksjon til databaser

Øvingsoppgave uke 3. Fanger i fengsel

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

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

Utvikling fra kjernen og ut

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

EKSAMEN 6102 / 6102N DATABASER

MySQL-database, php. Innhold. 8 MySQL-database, php. 8.1 Databasen MySQL

UNIVERSITETET SQL-99. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Løsningsforslag maskindatabasen på Ifi SQL og normalisering

Relasjoner terminologi

HØGSKOLEN I SØR-TRØNDELAG

Utvikling fra kjernen og ut

I denne leksjonen skal se på hvordan vi bruker innebygde og brukerdefinerte funksjoner.

1. Introduksjon til Oracle Express Edition

Obligatorisk oppgave 3 i Databaseadministrasjon.

Komplisert eksempel. IN2090 Databaser og datamodellering 07 Datamanipulering. Flere eksempler: Kombinere aggregater. Komplisert eksempel med WITH

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

SQL: SELECT-spørringer

SQL-omgivelser. SQL-omgivelse

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

XML enabled database. support for XML in Microsoft SQL Server 2000 & Martin Malý

Problemer med Indre joins. Inner joins og manglende verdier med aggregater. Left Outer Join. Outer Joins. Hvor mange har kjøpt hvert produkt?

INF1300 Introduksjon til databaser

Bruke SQL fra Java. Med JDBC (Java Database Connec/vity)

Vedlegg 2 Dokumentasjon fra TVM leverandør

EKSAMEN EKSAMENSDATO: KLASSE: TID: ANTALL SIDER UTLEVERT: 5. TILLATTE HJELPEMIDLER: Alle trykte og skrevne

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

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

IN2090 Databaser og datamodellering. 09 Aggregering og sortering

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

Transkript:

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

Datatyper, kort om mye Vi går en rask ekskursjon i manualen, Kap. 8. https://www.postgresql.org/docs/9.2/sql.html Evgenij Thorstensen SQL: Datatyper m.m. V18 2 / 12

Datatyper, tips Universell regel: Premature optimization is the root of all evil (Knuth) Strenger: Ikke sett vilkårlige limits Numerisk: Eksakte vs. ikke eksakte typer Tid: Timestamps or intervaller FTW; tidssoner er komplisert. Enums: Ikke SQL-standard, krever oppdatering hvis krav endres. Binary blobs: Små er greit, større filer bør ligge direkte på disk hvis de ikke er super-viktige (OBS: delte meninger). See also https://wiki.postgresql.org/wiki/don%27t_do_this Evgenij Thorstensen SQL: Datatyper m.m. V18 3 / 12

Manipulering av datatyper Ekskursjon til Kap. 9. https://www.postgresql.org/docs/9.2/sql.html Evgenij Thorstensen SQL: Datatyper m.m. V18 4 / 12

Mye vil ha mer: Arrays SQL støtter arrays som datatype. Egentlig lister. CREATE TABLE sal_emp ( name text, pay_by_quarter integer[4], schedule text[][] ); Til herligheten medfølger en haug operasjoner. Arrays kan også brukes i spørringer, array(x, Y, 3) lager en array. Evgenij Thorstensen SQL: Datatyper m.m. V18 5 / 12

Array-operasjoner Plukke ut et element: SELECT kodon[2] FROM genomsekvens... Konkatenering: g1.kodon ACU, g1.kodon g2.kodon Finne antall elementer:.. WHERE cardinality(kodon) > 100.. Sammenlikne eksakt innhold: g1.kodon = g2.kodon, g1.kodon <> g2. kodon Sammenlikne med hvert element i en array: any, all. For eksempel WHERE kodon[3] = ANY(array[ GGU, UGG, UAA ])... Flate ut en array: SELECT kromosomnr, unnest(kodon) FROM genomsekvens; https://www.postgresql.org/docs/9.2/static/ functions-array.html Evgenij Thorstensen SQL: Datatyper m.m. V18 6 / 12

Views Lagrede spørringer, til senere bruk. Kan nøstes et view kan bruke andre views. Kan bli spaghetti av det hvis ustrukturert og udokumentert. Evgenij Thorstensen SQL: Datatyper m.m. V18 7 / 12

Triggere En trigger er noe som eksekveres når en event skjer i en tabell. Tenk listeners og slike ting. Når knappen trykkes på, eksekver... Events er insert/update/delete. Veldig fleksibel mekanisme for å gjøre mye bra og potensielt mye fælt. Evgenij Thorstensen SQL: Datatyper m.m. V18 8 / 12

Triggere, eksempelcase CREATE TABLE employees( id int4 serial primary key, first_name varchar(40) NOT NULL, last_name varchar(40) NOT NULL ); CREATE TABLE employee_audits ( id int4 serial primary key, employee_id int4 NOT NULL, last_name varchar(40) NOT NULL, changed_on timestamp(6) NOT NULL ) Evgenij Thorstensen SQL: Datatyper m.m. V18 9 / 12

CREATE TRIGGER last_name_changes BEFORE UPDATE ON employees Evgenij FORThorstensen EACH ROW SQL: Datatyper m.m. V18 10 / 12 Eksempeltrigger CREATE OR REPLACE FUNCTION log_last_name_changes () RETURNS trigger AS $llnc$ BEGIN IF NEW.last_name <> OLD.last_name THEN INSERT INTO employee_audits(employee_id, last_name,changed_on) VALUES(OLD.id,OLD.last_name,now()); END IF; RETURN NEW; END; $llnc$ language plpgsql;

Trigger, generell form CREATE [ CONSTRAINT ] TRIGGER name { BEFORE AFTER INSTEAD OF } { event [ OR... ] } ON table_name [ FROM referenced_table_name ] [ NOT DEFERRABLE [ DEFERRABLE ] { INITIALLY IMMEDIATE INITIALLY DEFERRED } ] [ FOR [ EACH ] { ROW STATEMENT } ] [ WHEN ( condition ) ] EXECUTE PROCEDURE function_name ( arguments ) Evgenij Thorstensen SQL: Datatyper m.m. V18 11 / 12

Triggere, tips Nyttig for logging, kompliserte constraints, diverse bokholderi. Kan bli uoversiktlig med mange triggere med komplisert logikk. Spesielt hvis det blir en kaskade (trigger endrer annen tabell som har sine triggere). Trigger hell er et begrep. Evgenij Thorstensen SQL: Datatyper m.m. V18 12 / 12