SQL The questing beast Sir Thomas Mallory. Codds krav 5.Krav om omfattende språk for datahåndtering Det må finnes et relasjonelt språk som støtter datadefinisjon,

Slides:



Advertisements
Liknende presentasjoner
Hans Olav Norheim
Advertisements

Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Progress ”Transparent Data Encryption”
Mange til mange sammenhengen
Java database persistence framework.  SELECT by FROM postnr AS p WHERE ( SELECT DISTINCT postnr FROM addr AS a WHERE user.adrId = a.Id ) = p.postnr;
Java Teknologi Teknikker Økosystem Johannes Brodwall
LC238D Datamodellering og databaser Introduksjon til fagfeltet Else Lervik, august 2012Forelesning 1, uke 34 Datafilerside.
Normalisering og andre modelleringsmetoder
Avansert SQL og problemløsning
1 Objektorienterte databaser - 6 Arne Maus. 2 Problemstillinger, hvorfor OO- databaser ?  dagens relasjonsdatabaser (RDB) passer ikke for alle anvendelser.
Terje Hjerpbakk Oppgave 2 Vår ING. Problemstilling  Designe en database og lage et program som gjør det mulig å lage fleksible spesifikasjoner/rapporter.
Webprogrammering SQL og databaser del 2.
Databaser Verktøybok om Access med innslag av Frontpage: Snarveien til Access.
Datamodellering og databaser Else Lervik, oktober 2011 Forelesning 9, uke 41 SQL, del 2 Eksempelbaseside 2 Virtuelle.
LC238D Datamodellering og databaser Else Lervik, november 2012 Forelesning 12, uke 45 Transaksjoner og flerbrukerproblematikk.
SQLHiA Data-integritet. SQLHiA Data integritet Påkrevde data:Noen kolonner i en database-tabell må ha en eller annen verdi. Dette gjøres ved å sette NOT.
Inge Os Sales Consulting Manager Oracle 10 g Server.
Programmering av dynamiske websider i C# - hva er det, og hvordan undervise? Tom Heine Nätt.
© UNIVERSITETETS SENTER FOR INFORMASJONSTEKNOLOGI UNIVERSITETET I OSLO USIT Side 1 Lasso ved UiO Erlend Garåsen, USIT 2003.
Databasehåndtering med MySQL
1 Øvingsforelesning 7 Kai Olav Ellefsen. 2 I dag… Databaser: Databasedesign og SQL JSP: Koble databasen til nettsiden Kai Olav Ellefsen, NTNU, 2010.
Kommentarer til dataingenørstudiet ved HiØ Februar 2011.
Relasjonsmodellen og relasjonsalgebra
Data Integrity Integrity without knowledge is weak and useless, and knowledge without integrity is dangerous Samuel Johnson, 1759.
Datamodellering og databaser Else Lervik, oktober 2012 Forelesning 11, uke 44 Å programmere databasetjeneren – JavaDB.
Relasjonsmodellen, del II
Datamodellering og databaser Else Lervik, oktober 2011 Forelesning 9, uke 41 SQL, del 2 Eksempelbaseside 2 Virtuelle.
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
In 135 Datamodellering og databaser Introduksjon, Enkeltentiteten, Informasjon Ola Bø.
LC238D Datamodellering og databaser Else Lervik, september 2011 Forelesning 6, Uke 38 Objektorientering i ER-modeller.
Sqlite Et lite eksempel på en SQL- database. SQL kan startes på ulike måter Kommandolinjeversjon or Windows –Programmet må innstalleres Hentes fra
Standard databasespråk
DAT 202 Databaser Del 1.
PayEx Logistics Hovedprosjekt - Gruppe 16 Thomas Siavash Glenn Viktorija.
DAG HOFTUN KNUTSEN Bruk og misbruk av SQL DAG HOFTUN KNUTSEN
SQLHiA Transaksjoner. SQLHiA TransaksjonDefinisjon En transaksjon er en serie av en eller flere SQL-statement som til sammen danner en logisk enhet. Med.
Programmering i ActionScript - hva er det, og hvordan undervise?
Structured Query Language Kræsj-kurs
Triggere Mutasjoner i basen. Triggers Triggers are stored procedures that execute automatically when something (event) happens in the database: : data.
Eksempel på SQL ”SQL-setninger” har en struktur som likner på ”naturlig språk”, med ”verb, subjekter og adjektiver”. SQL-setningene begynner alltid med.
Introduksjon I126 Databaser og datamodellering Høsten 2000 Institutt for informatikk Universitet i Bergen.
Fødselsdato (dmå) er født har lønn Ansatt (ansnr) Beløp (NKr)+ Telefon
Linq To SQL Fagdag 20. November DataContext  DataContexten er mappingen mot databasen –Generer objekter for alle entiteter (tabeller), med properties.
Praktiske erfaringer med Objektorientert Progress og.NET Jan Kolstad PUG Norway, Lillehammer 2005.
Termbaser Lars Nygaard. Termbaser Database over begreper Innhold –Definisjoner –Oversettelser –Leksikalske relasjoner –Eksempler.
.NET og Progress Samspill og styrker, GUI og forretningslogikk.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Virksomhedens informationsbehandling
Avansert tekstbehandling
Web-grensesnitt Øyvind A. Bratne - April 2004.
HOVEDPROSJEKT 28e HiST2003/2004. Om oss Tor Arne Hammervik, 21 år Tor Arne Hammervik, 21 år Thomas Lund, 24 år Thomas Lund, 24 år Geir Magne Nilsen, 24.
Trondheim Lytte- og Læresenter. Sammendrag Prosjektet ble iverksatt fordi Trondheim Lytte- og Læresenter så behovet i å ha et elektronisk kundearkiv i.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
FUNKSJONSBESKRIVELSE En detaljert forklaring for kunden hvordan en funksjon er tiltenkt å virke Viktig for å sette forventningsstyring, begrensninger og.
Oversikt Access Hva en bør beherske så langt. Tabeller Felt Typer (heltall, desimaltall, tekst, Boolean) Primary Key.
INF1300 Introduksjon til databaser
Digital arkivdanning og -bevaring
Табела величина табеле је одређена бројем колона и редова
Ә.Тәжібаев “Сырдария ” өлеңі ашық сабақ 7-сынып
Titteloppsett Undertittel.
Жоба «Сын тұрғысынан ойлау технологиясы арқылы оқушылардың
Қарсылықты бағыныңқы сабақтас
Екпетал мектеп – балабақшасы Ана тілі 2 класс Өткізген: Г
Objektorientert programmering i Java
Ашық сабақ Тақырыбы: Отан туралы М.Мақатаев
“Сыни тұрғыдан ойлауға оқыту” модулі сабақтар топтамасында орындаған: бастауыш сынып мұғалімі:Алимбаева Алмаш Иренгалиевна санаты ІІ.
Database.
Коучинг тақырыбы: “Оқыту мен оқудағы жаңа әдіс-тәсілдер”
Model til tekst transformasjoner med MOFScript
URI-pattern Geographical data in Norway
Utskrift av presentasjonen:

SQL The questing beast Sir Thomas Mallory

Codds krav 5.Krav om omfattende språk for datahåndtering Det må finnes et relasjonelt språk som støtter datadefinisjon, datamanipulering, sikkerhet integritetsbeskrankninger (constraints) transaksjonshåndteringsoperasjoner.

SQL En standard ANSI ISO SQL kompetanse er etterspurt Utviklet av IBM Objektorienterte utvidelser (extensions)

SQL Et komplett databasespråk Datadefinisjon Definisjon av tabeller og view Datamanipulasjon Spesifikasjon av spørringer Vedlikehold av databasen INSERT UPDATE DELETE

SQL Ikke et komplett programmeringsspråk Brukes sammen med fullstendige programmeringsspråk For eksempel, COBOL, vb.net, C++ og Java Embedded SQL

Datadefinisjon Tabeller, viewer og indekser kan defineres mens systemet er i drift Basistabell En frittstående, navngitt tabell CREATE TABLE

Beskrankninger (Constraints) Primary key CONSTRAINT pk_stock PRIMARY KEY(stkcode); Foreign key CONSTRAINT fk_stock_nation FOREIGN KEY(natcode) REFERENCES nation; Unique CONSTRAINT unq_stock_stkname UNIQUE(stkname);

Check constraint Tabell og kolonne Tabell CREATE TABLE item ( itemcode INTEGER, CONSTRAINT chk_item_itemcode CHECK(itemcode <500)); Kolonne CREATE TABLE item ( itemcode INTEGER CONSTRAINT chk_item_itemcode CHECK(itemcode <500), itemcolor VARCHAR(10));

Check constraint Domene CREATE DOMAIN valid_color AS CHAR(10) CONSTRAINT chk_qitem_color CHECK( VALUE IN ('Bamboo',’Black',’Brown',Green', 'Khaki',’White')); CREATE TABLE item ( itemcode INTEGER, itemcolor VALID_COLOR);

Datatyper

BOOLEAN INTEGER 31 binary digits SMALLINT 15 binary digits FLOAT Naturvitenskapelig- og ingeniørarbeid DECIMAL Kommersielle anvendelser CHAR and VARCHAR Character strings DATE, TIME, TIMESTAMP, and INTERVAL BLOB and CLOB I Oracle: NUMBER for INTEGER, SMALLINT, FLOAT og DECIMAL

Endre en tabell DROP TABLE Sletter en tabell ALTER TABLE Legge til én ny kolonne av gangen Legge til eller slette en constraint Kan ikke brukes for å Endre en kolonnes lagringsformat Slette en uønsket kolonne

Beskrankninger (Constraints) ALTER TABLE dept ADD CONSTRAINT fk_dept_emp FOREIGN KEY(empno) REFERENCES emp; ALTER TABLE dept DROP CONSTRAINT fk_dept_emp;

Et view CREATE VIEW DROP VIEW

An index CREATE INDEX DROP INDEX CREATE [UNIQUE] INDEX indexname ON base-table(column[order] [,column [order]]...) [CLUSTER];

Datamanipuleringssetninger INSERT UPDATE DELETE SELECT

INSERT En rad Mange rader Med subquery – som kopiering INSERT INTO STOCK (stkcode, stkfirm, stkprice, stkdiv, stkpe) SELECT code, firm, price, div, pe FROM download WHERE code IN ('FC','PT','AR','SLG','ILZ','BE','BS','NG', 'CS','ROF');

UPDATE En rad Mange rader Alle rader UPDATE table SET column=expression [,column=expression] [WHERE condition]

DELETE En rad Mange rader Alle rader Ikke det samme som DROP TABLE

Produkt Alle rader fra den første tabellen kombinert med alle mulige rader av den andre tabellen. Å lage produktet mellom aksje og nasjon: SELECT * FROM stock, nation;

Produkt Finn prosentandelen av Australske aksjer i porteføljent CREATE VIEW austotal (auscount) AS SELECT COUNT(*) FROM stock WHERE natcode = 'AUS'; CREATE VIEW TOTAL (totalcount) AS SELECT COUNT(*) FROM stock; SELECT DECIMAL((FLOAT(auscount)/ FLOAT(totalcount)*100),5,2) AS percentage FROM austotal, total; 18.75

Join Join lager en ny tabell fra to eksisterende tabeller ved å matche på en kolonne som er felles for begge tabellene Equijoin Den nye tabellen inneholder to identiske kolonner SELECT * FROM stock, nation WHERE stock.natcode = nation.natcode;

Variasjoner av Join SELECT * FROM stock INNER JOIN nation USING (natcode); SELECT * FROM stock NATURAL JOIN nation;

Outer join Left outer join En indre join pluss radene fra t1 som ikke er inkludert i den indre joinen. SELECT * FROM t1 LEFT JOIN t2 USING (id); t1t2 idcol1idcol2 1a1x 2b3y 3c5z t1.idcol1t2.idcol2 1a1x 2bnull 3c3y

Right outer join En indre join pluss de radene fra t2 som ikke er inkludert i den indre joinen. SELECT * FROM t1 RIGHT JOIN t2 USING (id); t1.idcol1t2.idcol2 1a1x 3c3y null 5z t1t2 idcol1idcol2 1a1x 2b3y 3c5z

Outer join Full outer join En indre join pluss alle radene i t1 og t2 som ikke deltar i joinen. SELECT * FROM t1 FULL JOIN t2 USING (id); t1t2 idcol1idcol2 1a1x 2b3y 3c5z t1.idcol1t2.idcol2 1a1x 2bnull 3c3y 5z

Theta join En join er et produkt med et vilkår Vilkåret er ikke avgrenset til likhet.. En theta join er den generelle versjonen Theta er en variabel som kan ta en hvilket som helst verdi fra mengden [=, <>, >, ≥, <, ≤]

Korrelert underspørring Den indre spørringen er evaluert mange ganger heller enn en. Finn alle aksjer hvor antallet er større enn gjennomsnittet for det aktuelle landet. SELECT natname, stkfirm, stkqty FROM stock, nation WHERE stock.natcode = nation.natcode AND stkqty > (SELECT AVG(stkqty) FROM stock WHERE stock.natcode = nation.natcode);

Korrelert underspørring Clue Behovet for å sammenlikne hver rad av tabellen med en funksjon (for eksempel avg eller count) for noen rader av en kolonne. Må brukes sammen med EXISTS eller NOT EXISTS

Aggregatfunksjoner COUNT SUM AVG MAX MIN

SQL Routines Functions Procedures Introdusert med SQL-99 Ikke alle leverandører følger standarden Forbedre fleksibilitet, produktivitet og håndheving av forretningsregler.

SQL function Samme hensikt som innebygde funksjoner CREATE FUNCTION km_to_miles() RETURNS FLOAT CONTAINS SQL RETURN ; Bruk i SQL SELECT distance*km_to_miles FROM travel;

SQL prosedyre En lagret prosedyre (stored procedure) er SQL kode som dynamisk lastes og utføres ved et CALL statement Regnskapseksempel

SQL procedure CREATE PROCEDURE overfør ( IN betkonto INTEGER, IN motkonto INTEGER, IN beløp DECIMAL(9,2), IN transnr INTEGER) LANGUAGE SQL BEGIN INSERT INTO transaksjon VALUES (transno, amt, current date); UPDATE konto SET kontobalanse = kontobalanse + beløp WHERE kontonr = motkonto; INSERT INTO bevegelse VALUES(transnr, motkonto, ’inn'); UPDATE konto SET kontobalanse=kontobalanse-beløp WHERE kontonr = betkonto; INSERT INTO bevegelse VALUES (transno, betkonto, ’ut'); END;

SQL procedure Utføre (Execute) CALL transfer(cracct, dbacct, amt, transno); Eksempel Transaksjon 1005 overfører $100 fra konto 1 (betalerens konto) til konto 2 (mottakerens konto) CALL transfer(1,2,100,1005);

Trigger A set of actions set off by an SQL statement that changes the state of the database UPDATE INSERT DELETE

Trigger Automatically log all updates to a log file Create a table for storing log rows Create a trigger CREATE TABLE stock_log ( stkcodeCHAR(3), old_stkpriceDECIMAL(6,2), new_stkpriceDECIMAL(6,2), old_stkqtyDECIMAL(8), new_stkqtyDECIMAL(8), update_stktimeTIMESTAMP NOT NULL, user_nameVARCHAR2(30) PRIMARY KEY(update_stktime));

Trigger CREATE TRIGGER stock_update AFTER UPDATE ON stock REFERENCING old AS old_row new AS new_row FOR EACH ROW MODE db2sq1 INSERT INTO stock_log VALUES (old_row.stkcode, old_row.stkprice, new_row.stkprice, old_row.stkqty, new_row.stkqty, CURRENT TIMESTAMP, USER);

Nulls Ikke bland sammen med blank eller O Mange betydninger Ukjente data (bevisstløs pasient) Data som ikke passer i denne raden (gravid for mann) Data ikke oppgitt Verdien er ikke definert (skadesum før takst er holdt) Nuller skaper forvirring fordi man ikke vet hva de innebærer Date foreslår at NOT NULL brukes på alle kolonner for å unngå forvirring. Er dette et godt råd?

Sikkerhet Data er verdifulle ressurser Hvorfor Tilgang bør kontrolleres SQL sikkerhetsprosedyrer CREATE VIEW Autoriseringskommandoer

Autorisering Basert på privilegie-konseptet Du kan ikke gjennomføre en operasjon i databasehåndteringssystemet uten de nødvendige privilegier. DBA (databaseadministrator) har ALLE privilegier

GRANT Definerer en brukers privilegier Format GRANT privilegier ON objekt TO brukere [WITH GRANT OPTION]; Et objekt er en basetabell eller et view Privilegiet kan være ALL PRIVILEGES eller valgt fra SELECT UPDATE DELETE INSERT Privilegier kan gis til alle ved hjelp av nøkkelordet PUBLIC eller til utvalgte brukere ved å oppgi deres brukeridentifikator.

GRANT UPDATE privilegiet kan spesifisere hvilke kolonner som kan oppdateres i en basistabell eller et view Noe privilegier gjelder bare for basistabeller ALTER INDEX WITH GRANT OPTION Tillater en bruker å gi privilegier videre til en annen bruker

Å bruke GRANT Gi Alice alle rettigheter til AKSJE-tabellen GRANT ALL PRIVILEGES ON AKSJE TO alice; Tillate regnskapspersonalet, Todd og Nancy, to å oppdatere en aksjepris GRANT UPDATE (stkprice) ON stock TO todd, nancy; Gi hele staben privilegiet til å hente rader fra VARE. GRANT SELECT ON VARE TO PUBLIC; Gi Alice alle rettigheter til viewet STK. GRANT SELECT, UPDATE, DELETE, INSERT ON stk TO alice;

REVOKE Trekker tilbake rettigheter Format REVOKE privilegier ON objekt FROM brukere; Cascading REVOKE Tilbakestiller bruk av WITH GRANT OPTION Når en brukers rettigheter trekkes tilbake, taper alle brukere som har fått rettigheter via WITH GRANT OPTION sine rettigheter

Bruke REVOKE Trekke tilbake Sofies mulighet til å se en VARE. REVOKE SELECT ON VARE FROM sophie; Nancy har ikke lenger rett til å oppdatere aksjepriser. REVOKE UPDATE ON stock FROM nancy;

Beskyttelse koster Å vedlikeholde privilegier tar tid og innsats Begrensninger gjør arbeid mer tungvint Må spørre noen som har tilgang

Katalogen En relasjonsdatabase som inneholder definisjonene av tabeller, viewer osv. Kan utspørres ved hjelp av SQL Kalles systemtabeller heller enn basistabeller Hovedtabeller er syscatalog syscolumns Sysindexes For Oracle-spesifikk informasjon, se

Utspørring av katalogen Finne tabellen med flest kolonner. SELECT tname FROM system.syscatalog WHERE ncols = (SELECT MAX(ncols) FROM system.syscatalog); Hvilke kolonner i hvilke tabeller lagrer dato? SELECT tname, cname FROM system.syscolumns WHERE coltype = 'date';

Spørringer fra naturlig språk

Open Database Connectivity (ODBC) Application ODBC API ODBC driver manager Service provide API Driver for DBMS server DBMS server

Embedded SQL SQL er ikke et frittstående programmeringsspråk SQL setninger kan bygges inn i applikasjonsprogrammer som deretter prekompileres (noe som oversetter den innebygde SQLen til prosedyrekall mot et databasebibliotek) Gammel teknologi, aktuell for noen systemer som fortsatt kjører, spesielt COBOL Inkompatibiliteten mellom tabellprosesseringen til SQL og en post av gangen prosesseringen til COBOL håndteres ved hjelp av en cursor

MS Access vs SQL Styrker Grensesnitt SQL DML Referanseintegritet Rask eksekvering Viewer (spørringer) Oppdaterbare viewer Svakheter Ikke støtte for GRANT og REVOKE Domener Ikke støtte for COMMIT og ROLLBACK Begrenset kontroll over samtidige transaksjoner

SQLs framtid En av de mest suksessrike standardiseringene Svært portabel Objekter har ført til vansker med standardiseringen ettersom leverandørene av databasemotorer har lagt til utvidelser før standarden ble satt

SQL-99 Bedre støtte for Java og andre objektorienterte språk Støtte for multimedia utvidelser Opprettholder portabiliteten ved å fastlegge standarder for objektorienterte utvidelser av relasjonsmodellen Utvidelsene øker funksjonalitet på bekostning av enkelhet.

Brukerdefinerte datatyper Kan brukes på samme måte som innebygde datatyper En brukerdefinert datatype er definert ved å Spesifisere deklarasjoner av de lagrede attributtene som represneterer verdien av UDTen Spesifisere operasjoner som definerer likhet og rekkefølgesammenhenger i UDTen Spesifisere operasjoner og deriverte attributter som representerer oppførselen til UDTen

SQLJ og JDBC SQLJ er embedded SQL for java SQLJ er en ANSI standard SQLJ-integrasjonen mellom SQL og Java styrker Java som alternativ for dataintensive virksomhetsapplikasjoner SQLJ har enkel syntaks for statiske SQL- programmeringsoppgaver. SQLJ tillater sjekk av syntaks og semantikk på SQL-setningene før kjøring. SQLJ krever oversettelse før java-kompilering Bruk JDBC for å løse dynamiske oppgaver.