Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Relevanta dokument
SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Idag. Hur skapar vi och underhåller en databas? Index? Vad är det och varför behövs de? Behöver jag bry mig om index?

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem

Lösningsförslag till tentamen för DD1370 Databasteknik och informationssystem

Idag. Modellering. Varför modellera? Konceptuell modell Modelleringsverktyg Objektklasser Sambandsklasser Knepiga attribut Modelleringsprocessen

Idag. Varför modellera? Modellering. Modelleringsverktygets egenskaper. Modelleringsverktyget

Idag. Modellering. Varför modellera? Konceptuell modell Modelleringsverktyg Objektklasser Sambandsklasser Knepiga attribut Modelleringsprocessen

Idag. Exempel. Exempel modellen (1) Exempel...

Övningar i SQL. SQLAccess.doc Ove Lundgren

Idag. Varför modellera? Modellering. Modelleringsverktygets egenskaper. Modelleringsverktyget

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Design och underhåll av databaser

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Databaser - Design och programmering

732G16: Databaser - Design och programmering

Skapa exempeldatabasen

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

Tentamen. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

Databasutveckling Introduktion till SQL och TSQL

Databaser och Datamodellering Foreläsning IV

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Idag. Databaskvalitet(??) Databaskvalitet... Databaskvalitet...

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Relationsmodellen och syntetisk databasdesign

Föreläsning 2: Översikt över ett databassystem

Tentamen i Databasteknik

729G28 Webprogrammering och databaser. Föreläsning 1: Diverse praktiskt om kursen Webprogrammering Databaser, terminologi

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Analytisk relationsdatabasdesign

Tentamen i Databasteknik

Kort handledning för Databassystemet Ingres och gränssnittsprogrammet isql

WCMS-15, Webbutvecklare CMS

Webbprogrammering, grundkurs 725G54

Databasspråket SQL - online.

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

1. Treskiktsarkitektur 2. Applika1onsprogramvara 3. Teknisk programvara. Kapitel 6 sid

Databasspråket SQL - online.

Vad är en databas? Databasutveckling Med MySQL/MariaDB

Webprogrammering och 729G28 databaser Webprogrammering och databaser Kursöversikt Webprogrammering Designprocessen Lösningsförslag

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

Klientprogrammering mot databaser

1.Lär känna MS SQL Observera. Tips. Förberedelse

Inga hjälpmedel är tillåtna

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Labb 1. prompt> mysql -h db-und.ida.liu.se -u [liuid] -p Enter password. mysql --host=db-und.ida.liu.se --user=[liuid] --password=[lösen]

Databaser och SQL - en kort introduktion

08/12/14. Databasteknik och informationssystem DD1370. Behövs Föreläsning 8? Kursens (återstående) mål Dagens föreläsning

Webprogrammering och databaser. 729G28 Webprogrammering och databaser. Kursöversikt. Praktisk info. Webprogrammering. Ändringar mot förra året

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Skapa en databas. Skapa en tabell. Gör man antingen genom kommandot

02/12/14. Databasteknik och informationssystem DD1370. Behövs Föreläsning 8? Dagens föreläsning. Om Lab 1. De 11 Stegen (Kokbok)

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Lösningsförslag, tentamen i Databaser

Informationssystem och Databasteknik

Structured query language (SQL)

Konceptuella datamodeller

Tentamen för 1E1601. Måndag 10 mars 2003, kl Alla hjälpmedel tillåtna

Föreläsning 6 Databaser och säkerhet

Introduktion MySQL och MariaDB

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

NORMALISERING. Mahmud Al Hakim

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Labb 1. prompt> mysql --host=db-und.ida.liu.se --user=[liuid] -- password=[lösenord] [liuid]

Karlstads Universitet, Datavetenskap 1

Det finns även möjlighet att göra "Java - kopplingar" mot DB2 enligt diverse standarder som ODBC, SQLj mm.

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

Filbeskrivningar Eller på särskild CD skiva

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Tentamen för DD1370 Databasteknik och informationssystem

ÖVERVAKNING AV SQL SERVER

Tentamen i Databasteknik

Structured Query Language (SQL)

Tentamen DATABASTEKNIK - 1DL116

Informa5onsmodellering

Starta MySQL Query Browser

Databasspråket SQL - online.

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

LOTTA MANUAL. t.o.m. version Cederlund

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

TENTAMEN TDDB77 Databaser och Bioinformatik 19 april 2002, kl 14-18

Transkript:

Idag Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 1 / 20

Idag Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 1 / 20

Idag Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? Index? Vad är det och varför behövs de? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 1 / 20

Idag Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? Index? Vad är det och varför behövs de? Behöver jag bry mig om index? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 1 / 20

SQLs delar Den del av SQL som vi gått igenom kallas SQL DML (SQL Data Manipulation Language). En annan viktig del är SQL DDL (SQL Data Definition Language) som används för att skapa databaser och databastabeller, skapa regler för vem som får göra vad i databaserna och skapa index för att snabba upp sökningar. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 2 / 20

SQLs delar Den del av SQL som vi gått igenom kallas SQL DML (SQL Data Manipulation Language). En annan viktig del är SQL DDL (SQL Data Definition Language) som används för att skapa databaser och databastabeller, skapa regler för vem som får göra vad i databaserna och skapa index för att snabba upp sökningar. Senaste versionen av SQL, SQL 3, är mer komplicerad med möjligheter att starta program då vissa händelser inträffar (s.k. triggers) och med omfattande programmeringsmöjligheter DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 2 / 20

Skapa en databas I många böcker och om man söker på internet används kommandot CREATE DATABASE databasnamn; men det är inte standardiserat. Olika databashanterare har olika metoder för att skapa en databas även om fler och fler tillhandahåller ett SQL-kommando. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 3 / 20

Skapa en databas I många böcker och om man söker på internet används kommandot CREATE DATABASE databasnamn; men det är inte standardiserat. Olika databashanterare har olika metoder för att skapa en databas även om fler och fler tillhandahåller ett SQL-kommando. Eftersom det inte finns en standard måste man läsa den aktuella databashanterarens manualer noga. Det förekommer stora skillnader. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 3 / 20

Skapa en databas I många böcker och om man söker på internet används kommandot CREATE DATABASE databasnamn; men det är inte standardiserat. Olika databashanterare har olika metoder för att skapa en databas även om fler och fler tillhandahåller ett SQL-kommando. Eftersom det inte finns en standard måste man läsa den aktuella databashanterarens manualer noga. Det förekommer stora skillnader. I postgresql, som vi använder mycket på KTH, finns dels ett SQL-kommando och dels ett kommando man kan skriva i ett terminalfönster. Har man utfört kommandot psql så att man hamnar i postgresql:s kommandotolk så går det utmärkt att skriva t.ex. CREATE DATABASE serafimsdb; DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 3 / 20

Skapa en databas I många böcker och om man söker på internet används kommandot CREATE DATABASE databasnamn; men det är inte standardiserat. Olika databashanterare har olika metoder för att skapa en databas även om fler och fler tillhandahåller ett SQL-kommando. Eftersom det inte finns en standard måste man läsa den aktuella databashanterarens manualer noga. Det förekommer stora skillnader. I postgresql, som vi använder mycket på KTH, finns dels ett SQL-kommando och dels ett kommando man kan skriva i ett terminalfönster. Har man utfört kommandot psql så att man hamnar i postgresql:s kommandotolk så går det utmärkt att skriva t.ex. CREATE DATABASE serafimsdb; men i ett terminalfönster använder man kommandot createdb serafimsdb DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 3 / 20

Skapa en databas I många böcker och om man söker på internet används kommandot CREATE DATABASE databasnamn; men det är inte standardiserat. Olika databashanterare har olika metoder för att skapa en databas även om fler och fler tillhandahåller ett SQL-kommando. Eftersom det inte finns en standard måste man läsa den aktuella databashanterarens manualer noga. Det förekommer stora skillnader. I postgresql, som vi använder mycket på KTH, finns dels ett SQL-kommando och dels ett kommando man kan skriva i ett terminalfönster. Har man utfört kommandot psql så att man hamnar i postgresql:s kommandotolk så går det utmärkt att skriva t.ex. CREATE DATABASE serafimsdb; men i ett terminalfönster använder man kommandot createdb serafimsdb Liknande möjligheter finns i alla DBMS men kommandona kan se annorlunda ut DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 3 / 20

Skapa en databas I många böcker och om man söker på internet används kommandot CREATE DATABASE databasnamn; men det är inte standardiserat. Olika databashanterare har olika metoder för att skapa en databas även om fler och fler tillhandahåller ett SQL-kommando. Eftersom det inte finns en standard måste man läsa den aktuella databashanterarens manualer noga. Det förekommer stora skillnader. I postgresql, som vi använder mycket på KTH, finns dels ett SQL-kommando och dels ett kommando man kan skriva i ett terminalfönster. Har man utfört kommandot psql så att man hamnar i postgresql:s kommandotolk så går det utmärkt att skriva t.ex. CREATE DATABASE serafimsdb; men i ett terminalfönster använder man kommandot createdb serafimsdb Liknande möjligheter finns i alla DBMS men kommandona kan se annorlunda ut Man kan vara säker på att olika leverantörer har sina egna (ibland väldigt egna) idéer så det är bra att åtminstone läsa igenom aktuellt DBMS manual. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 3 / 20

Att utplåna en databas Är inte heller standardiserat. Ofta kan man tillhandahålla SQL-kommandot: DROP DATABASE serafimsdb; DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 4 / 20

Att utplåna en databas Är inte heller standardiserat. Ofta kan man tillhandahålla SQL-kommandot: DROP DATABASE serafimsdb; men lika ofta får man slå i manualer för att hitta rätt kommando. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 4 / 20

Att utplåna en databas Är inte heller standardiserat. Ofta kan man tillhandahålla SQL-kommandot: DROP DATABASE serafimsdb; men lika ofta får man slå i manualer för att hitta rätt kommando. Orsaken till att varken CREATE DATABASE eller DROP DATABASE finns som standard är att de flesta organisationer som använder databaser har speciella anställda, s.k. databasadministratörer (DBA) som sköter företagets bestånd av databaser och att det är bra om ingen får kasta bort (eller skapa) en databas utan DBA:s medverkan. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 4 / 20

Att utplåna en databas Är inte heller standardiserat. Ofta kan man tillhandahålla SQL-kommandot: DROP DATABASE serafimsdb; men lika ofta får man slå i manualer för att hitta rätt kommando. Orsaken till att varken CREATE DATABASE eller DROP DATABASE finns som standard är att de flesta organisationer som använder databaser har speciella anställda, s.k. databasadministratörer (DBA) som sköter företagets bestånd av databaser och att det är bra om ingen får kasta bort (eller skapa) en databas utan DBA:s medverkan. På OS-nivå skulle jag kunnat använda postgresql kommandot dropdb serafimsdb DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 4 / 20

Tabeller (1) När man väl skapat sin databas är det dags att skapa tabellerna. Det finns många sätt och kanske det allra mest eleganta är att använda ett grafiskt gränssnitt i en webbläsare, för Postgresql finns phppgadmin som man kan använda på nestor via URL:en http://nestor.nada.kth.se/phppgadmin men det är viktigt att kunna bygga databaser via SQL-kommandon också. Vi ska titta på hur man gör för att realisera den varuhusdatabas som jag gjorde en modell till: Anställd Leverantör Anställning Lager Avdelning Försäljning Vara DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 5 / 20

Tabeller... (2) Den hade egenskapsmatrisen: Typ Namn I-termer E-termer Obj Vara varunr typ Avdelning avd våning Anställd namn lön, chef Leverantör företag adress Samb Försäljning avd, varunr volym Anställd namn, avd Lager företag, avd, varunr volym DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 6 / 20

Tabeller... (3) och vi fick fram en databasstruktur: Vara Avdelning Anställd Leverantör Lager Försäljning (varunr, typ) (avd, våning) (namn, lön, chef, avd) (företag, adress) (företag, avd, varunr, volym) (avd, varunr, volym) DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 7 / 20

Tabeller... (4) Kommentar: Har man startat postgresql med kommandot psql kan man använda kommandot \h för att få hjälp med SQL-kommandon DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 8 / 20

Tabeller... (4) Kommentar: Har man startat postgresql med kommandot psql kan man använda kommandot \h för att få hjälp med SQL-kommandon Eftersom jag vill markera alla främmande nycklar så måste jag mata in i en viss ordning, annars klagar DBMS. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 8 / 20

Tabeller... (4) Kommentar: Har man startat postgresql med kommandot psql kan man använda kommandot \h för att få hjälp med SQL-kommandon Eftersom jag vill markera alla främmande nycklar så måste jag mata in i en viss ordning, annars klagar DBMS. Ordningen bestäms av de främmande nycklarna. Jag börjar med tabeller som inte har några sådana. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 8 / 20

Tabeller... (4) Kommentar: Har man startat postgresql med kommandot psql kan man använda kommandot \h för att få hjälp med SQL-kommandon Eftersom jag vill markera alla främmande nycklar så måste jag mata in i en viss ordning, annars klagar DBMS. Ordningen bestäms av de främmande nycklarna. Jag börjar med tabeller som inte har några sådana. CREATE TABLE vara ( varunr int2 NOT NULL, typ character varying(20), PRIMARY KEY (varunr) ); DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 8 / 20

Tabeller... (5) CREATE TABLE avdelning ( avd character varying(20) NOT NULL, våning int2, PRIMARY KEY (avd) ); DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 9 / 20

Tabeller... (5) CREATE TABLE avdelning ( avd character varying(20) NOT NULL, våning int2, PRIMARY KEY (avd) ); CREATE TABLE leverantör ( företag character varying(30) NOT NULL, adress character varying(50), PRIMARY KEY (företag) ); DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 9 / 20

Tabeller... (6) CREATE TABLE anställd ( namn character varying(30) NOT NULL, lön int4, chef character varying(30), avd character varying(20), PRIMARY KEY (namn), FOREIGN KEY (chef) REFERENCES anställd, FOREIGN KEY (avd) REFERENCES avdelning ); DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 10 / 20

Tabeller... (7) CREATE TABLE försäljning ( avd character varying(20) NOT NULL, varunr int2 NOT NULL, volym int4, PRIMARY KEY (avd, varunr), FOREIGN KEY (avd) REFERENCES avdelning, FOREIGN KEY (varunr) REFERENCES vara ); DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 11 / 20

Tabeller... (8) CREATE TABLE lager ( avd character varying(20) NOT NULL, varunr int2 NOT NULL, företag character varying(30) NOT NULL, volym int4, PRIMARY KEY (avd, varunr, företag), FOREIGN KEY (avd) REFERENCES avdelning, FOREIGN KEY (varunr) REFERENCES vara, FOREIGN KEY (företag) REFERENCES leverantör ); DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 12 / 20

Ändra i tabelldefinitioner Man kan ändra en tabelldefinition när tabellen har skapats ALTER TABLE tillåter att man lägger till eller tar bort kolumner DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 13 / 20

Ändra i tabelldefinitioner Man kan ändra en tabelldefinition när tabellen har skapats ALTER TABLE tillåter att man lägger till eller tar bort kolumner Man kan ta bort en kolumn så länge som kolumnen inte innehåller data men finns det ett enda värde i en kolumn så kan den inte tas bort DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 13 / 20

Ändra i tabelldefinitioner Man kan ändra en tabelldefinition när tabellen har skapats ALTER TABLE tillåter att man lägger till eller tar bort kolumner Man kan ta bort en kolumn så länge som kolumnen inte innehåller data men finns det ett enda värde i en kolumn så kan den inte tas bort Många andra saker kan ställas in samtidigt. Se den långa utskriften vid kommandot \h ALTER TABLE när man är i postgresqls kommandogränssnitt DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 13 / 20

Mata in nya data i en tabell Kommandot INSERT INTO används för att lägga till data till en tabell. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 14 / 20

Mata in nya data i en tabell Kommandot INSERT INTO används för att lägga till data till en tabell. Man kan välja att stoppa in allt som går på en rad. Då slipper man räkna upp kolumnerna. Ex.: INSERT INTO anställd VALUES ( Karlsson K, 23540, Svensson S, sport ); om man matar in värdena i rätt ordning DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 14 / 20

Mata in nya data i en tabell Kommandot INSERT INTO används för att lägga till data till en tabell. Man kan välja att stoppa in allt som går på en rad. Då slipper man räkna upp kolumnerna. Ex.: INSERT INTO anställd VALUES ( Karlsson K, 23540, Svensson S, sport ); om man matar in värdena i rätt ordning Annars måste man räkna upp kolumnerna. Ex.: INSERT INTO anställd (lön, namn, avd) VALUES (23540, Karlsson K, sport ); varvid utelämnade kolumner fylls på med null i den inmatade raden. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 14 / 20

Mata in nya data i en tabell Kommandot INSERT INTO används för att lägga till data till en tabell. Man kan välja att stoppa in allt som går på en rad. Då slipper man räkna upp kolumnerna. Ex.: INSERT INTO anställd VALUES ( Karlsson K, 23540, Svensson S, sport ); om man matar in värdena i rätt ordning Annars måste man räkna upp kolumnerna. Ex.: INSERT INTO anställd (lön, namn, avd) VALUES (23540, Karlsson K, sport ); varvid utelämnade kolumner fylls på med null i den inmatade raden. Skulle man ha angivit ett defaultvärde används det i ställer för null DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 14 / 20

Ta bort rader ur en tabell Kommandot DELETE FROM används för att ta bort data från en tabell. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 15 / 20

Ta bort rader ur en tabell Kommandot DELETE FROM används för att ta bort data från en tabell. Ex.: DELETE FROM anställd WHERE namn = Karlsson K ; DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 15 / 20

Ta bort rader ur en tabell Kommandot DELETE FROM används för att ta bort data från en tabell. Ex.: DELETE FROM anställd WHERE namn = Karlsson K ; VARNING! DELETE FROM anställd; tar bort alla rader från anställd. Inga frågor i stil med är du säker? eller något annat. Alla rader försvinner utom om det finns främmande-nyckel-beroenden. Då vägrar DBMS. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 15 / 20

Ta bort rader ur en tabell Kommandot DELETE FROM används för att ta bort data från en tabell. Ex.: DELETE FROM anställd WHERE namn = Karlsson K ; VARNING! DELETE FROM anställd; tar bort alla rader från anställd. Inga frågor i stil med är du säker? eller något annat. Alla rader försvinner utom om det finns främmande-nyckel-beroenden. Då vägrar DBMS. Lägger man till DELETE FROM anställd CASCADE; så tas alla rader bort från anställd och också alla rader i andra tabeller som är beroende av någon av raderna som tagits bort ur anställd DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 15 / 20

Uppdatera rader Kommandot UPDATE används för att ändra data i en tabell. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 16 / 20

Uppdatera rader Kommandot UPDATE används för att ändra data i en tabell. Ex.: UPDATE anställd SET lön = 32400 WHERE namn = Karlsson K ; DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 16 / 20

Uppdatera rader Kommandot UPDATE används för att ändra data i en tabell. Ex.: UPDATE anställd SET lön = 32400 WHERE namn = Karlsson K ; UPDATE anställd SET (lön=32400, chef= Näsström C ) WHERE namn = Karlsson K ; DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 16 / 20

Uppdatera rader Kommandot UPDATE används för att ändra data i en tabell. Ex.: UPDATE anställd SET lön = 32400 WHERE namn = Karlsson K ; UPDATE anställd SET (lön=32400, chef= Näsström C ) WHERE namn = Karlsson K ; UPDATE anställd SET lön = 2*lön WHERE chef IS NOT NULL; DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 16 / 20

Ladda data från fil / Spara data på fil Man kan hämta kommandon direkt från en fil, t.ex. skapas varuhusdatabasen genom kommandot \i vhdump DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 17 / 20

Ladda data från fil / Spara data på fil Man kan hämta kommandon direkt från en fil, t.ex. skapas varuhusdatabasen genom kommandot \i vhdump där filen vhdump innehåller alla kommandon för att både bygga tabellerna och för att fylla dem med data DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 17 / 20

Ladda data från fil / Spara data på fil Man kan hämta kommandon direkt från en fil, t.ex. skapas varuhusdatabasen genom kommandot \i vhdump där filen vhdump innehåller alla kommandon för att både bygga tabellerna och för att fylla dem med data Kopiera data till en enskild tabell går också bra på det viset men också med kommandot COPY. Ex.: COPY avdelning (avd, våning) FROM /home/serafim/avd.sql WITH DELIMITER DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 17 / 20

Ladda data från fil / Spara data på fil Man kan hämta kommandon direkt från en fil, t.ex. skapas varuhusdatabasen genom kommandot \i vhdump där filen vhdump innehåller alla kommandon för att både bygga tabellerna och för att fylla dem med data Kopiera data till en enskild tabell går också bra på det viset men också med kommandot COPY. Ex.: COPY avdelning (avd, våning) FROM /home/serafim/avd.sql WITH DELIMITER Kopiera data till en fil går också bra med kommandot COPY. Ex.: COPY avdelning TO /home/serafim/avd.sql DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 17 / 20

Ladda data från fil / Spara data på fil Man kan hämta kommandon direkt från en fil, t.ex. skapas varuhusdatabasen genom kommandot \i vhdump där filen vhdump innehåller alla kommandon för att både bygga tabellerna och för att fylla dem med data Kopiera data till en enskild tabell går också bra på det viset men också med kommandot COPY. Ex.: COPY avdelning (avd, våning) FROM /home/serafim/avd.sql WITH DELIMITER Kopiera data till en fil går också bra med kommandot COPY. Ex.: COPY avdelning TO /home/serafim/avd.sql dumpa hela databasen med OS-kommandot pg_dump databasnamn DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 17 / 20

Ladda data från fil / Spara data på fil Man kan hämta kommandon direkt från en fil, t.ex. skapas varuhusdatabasen genom kommandot \i vhdump där filen vhdump innehåller alla kommandon för att både bygga tabellerna och för att fylla dem med data Kopiera data till en enskild tabell går också bra på det viset men också med kommandot COPY. Ex.: COPY avdelning (avd, våning) FROM /home/serafim/avd.sql WITH DELIMITER Kopiera data till en fil går också bra med kommandot COPY. Ex.: COPY avdelning TO /home/serafim/avd.sql dumpa hela databasen med OS-kommandot pg_dump databasnamn dumpa alla databaser med OS-kommandot pg_dumpall DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 17 / 20

Index vad är det? Ett index är en datastruktur som används för att snabba upp sökningar i en tabell DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 18 / 20

Index vad är det? Ett index är en datastruktur som används för att snabba upp sökningar i en tabell Antag att vårt OS hanterar block som är 4096 byte stora. Det betyder att 4096 byte läses i varje enskild läsoperation. Varken mer eller mindre DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 18 / 20

Index vad är det? Ett index är en datastruktur som används för att snabba upp sökningar i en tabell Antag att vårt OS hanterar block som är 4096 byte stora. Det betyder att 4096 byte läses i varje enskild läsoperation. Varken mer eller mindre Antag att vi har en tabell med 1000000 rader där raderna är så att vi kan packa 5 rader/block. Resten av blocket består av en header och lite oanvänt utrymme DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 18 / 20

Index vad är det? Ett index är en datastruktur som används för att snabba upp sökningar i en tabell Antag att vårt OS hanterar block som är 4096 byte stora. Det betyder att 4096 byte läses i varje enskild läsoperation. Varken mer eller mindre Antag att vi har en tabell med 1000000 rader där raderna är så att vi kan packa 5 rader/block. Resten av blocket består av en header och lite oanvänt utrymme Då kommer filen som innehåller tabellen att vara knappt 820 MB. Inte många primärminnen klarar av att hålla en sådan fil i minnet och ändå ha utrymme för annat. DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 18 / 20

Index vad är det? Ett index är en datastruktur som används för att snabba upp sökningar i en tabell Antag att vårt OS hanterar block som är 4096 byte stora. Det betyder att 4096 byte läses i varje enskild läsoperation. Varken mer eller mindre Antag att vi har en tabell med 1000000 rader där raderna är så att vi kan packa 5 rader/block. Resten av blocket består av en header och lite oanvänt utrymme Då kommer filen som innehåller tabellen att vara knappt 820 MB. Inte många primärminnen klarar av att hålla en sådan fil i minnet och ändå ha utrymme för annat. Antag också att en nyckel är 30 byte och en pekare 8 byte. Då får vi rum med 100 par <nyckel,pekare> i varje block. En sån fil blir 10000 block stor (41MB) DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 18 / 20

Index... Det får rum i minnet och om vi använder binärsökning i filen + linjär sökning i blocken så tar det 2 log 10000 = 14 läsningar i block för att hitta det rätta blocket DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 19 / 20

Index... Det får rum i minnet och om vi använder binärsökning i filen + linjär sökning i blocken så tar det 2 log 10000 = 14 läsningar i block för att hitta det rätta blocket Även om det inte får rum i minnet kan vi behålla några block i minnet hela tiden. Väljer vi de på avståndet 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8... av filens längd, kommer vi att kunna hitta vilken post som helst av de 1000000 med väsentligt färre läsningar från sekundärminnet än 14 DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 19 / 20

Index... Det får rum i minnet och om vi använder binärsökning i filen + linjär sökning i blocken så tar det 2 log 10000 = 14 läsningar i block för att hitta det rätta blocket Även om det inte får rum i minnet kan vi behålla några block i minnet hela tiden. Väljer vi de på avståndet 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8... av filens längd, kommer vi att kunna hitta vilken post som helst av de 1000000 med väsentligt färre läsningar från sekundärminnet än 14 Så trots den stora mängden kopior av nycklar (= redundans) så snabbar det upp systemet avsevärt DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 19 / 20

Index... Det får rum i minnet och om vi använder binärsökning i filen + linjär sökning i blocken så tar det 2 log 10000 = 14 läsningar i block för att hitta det rätta blocket Även om det inte får rum i minnet kan vi behålla några block i minnet hela tiden. Väljer vi de på avståndet 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8... av filens längd, kommer vi att kunna hitta vilken post som helst av de 1000000 med väsentligt färre läsningar från sekundärminnet än 14 Så trots den stora mängden kopior av nycklar (= redundans) så snabbar det upp systemet avsevärt Det finns en mängd olika typer av index, alltid med stora tidsvinster som bonus DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 19 / 20

Index... DBMS genererar alltid (om man inte stänger av den faciliteten) ett s.k. B-träds-index för alla tabeller som har en primärnyckel angiven DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 20 / 20

Index... DBMS genererar alltid (om man inte stänger av den faciliteten) ett s.k. B-träds-index för alla tabeller som har en primärnyckel angiven Ibland kan det finnas anledning att göra fler index men oftast inte. Man kan för det mesta helt enkelt låta DBMS välja när index ska skapas och vilken sorts index som ska användas DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 20 / 20