Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

22/092VE/E00/RB1 Introduktion til SQL Datalogi 2VE E00 DIKU Forelæsninger 22/9 og 29/9.

Lignende præsentationer


Præsentationer af emnet: "22/092VE/E00/RB1 Introduktion til SQL Datalogi 2VE E00 DIKU Forelæsninger 22/9 og 29/9."— Præsentationens transcript:

1 22/092VE/E00/RB1 Introduktion til SQL Datalogi 2VE E00 DIKU Forelæsninger 22/9 og 29/9

2 22/092VE/E00/RB2 Plan for SQL forelæsninger 22/9 SQL92 - DDL Relationel Algebra SQL92 - DML 29/9 SQL99 OQL

3 22/092VE/E00/RB3 SQL92 Data Definition Language CREATE TABLE ALTER TABLE DROP TABLE CREATE VIEW DROP VIEW CREATE INDEX DROP INDEX

4 22/092VE/E00/RB4 Tabel behandling CREATE TABLE person (cpr CHAR(10) NOT NULL, navn VARCHAR(50) NOT NULL, vej VARCHAR(80), husnr SMALLINT, by VARCHAR(30), PRIMARY KEY (cpr) ) ALTER TABLE person ADD COLUMN tlf CHAR(8) DROP TABLE person

5 22/092VE/E00/RB5 Data Manipulation Language Opdatering af data INSERT INTO person (cpr, navn, adr, husnr, by) VALUES (”0101501234”,”Anders And”, ”Paradisæblevej”,14, ”Andeby”) UPDATE person SET husnr=13 WHERE cpr=”0101501234” DELETE FROM person WHERE navn like ”Kla%” AND by=”Andeby”

6 22/092VE/E00/RB6 Udvælgelse af data Relational Operators defined by Codd (70,72) Union Intersection Difference Cartesian product Restrict Project Join Divide

7 22/092VE/E00/RB7 Beskrivelse af de otte relationelle operatorer

8 22/092VE/E00/RB8 SQL92 Data Manipulation Language Forespørgsler Forespørgsel (find cpr og navn på alle i Andeby, sorteret efter navn): SELECT DISTINCT navn, by FROM person WHERE by=”Andeby” ORDER BY navn Resultat: navn by ------------------- ---------- Anders And Andeby Fætter Højben Andeby Joakim Von And Andeby

9 22/092VE/E00/RB9 Kolonnefunktioner Forespørgsel (list antallet af indbyggere i Andeby): SELECT COUNT(*) FROM person WHERE by=”Andeby” Resultat: COUNT(*) -------- 42 Øvrige funktioner: SELECT SUM(kolonnenavn)… SELECT AVG(kolonnenavn)… SELECT MIN(kolonnenavn)… SELECT MAX(kolonnenavn)…

10 22/092VE/E00/RB10 Join CREATE TABLE superhelt (navn CHAR(80) NOT NULL, hem_id CHAR(10) NOT NULL, hjemby CHAR(30), PRIMARY KEY (navn,hem_id), FOREIGN KEY (hem_id) REFERENCES person(cpr) ) Forespørgsel (list alle superhelte og deres hemmelige identiteter): SELECT S.navn, P.navn FROM superhelt S, person P WHERE hem_id=cpr Resultat: S.navn P.navn -------------- StålandenAnders And

11 22/092VE/E00/RB11 Gruppering Forespørgsel (list antal superhelte grupperet efter hjemby): SELECT hjemby, count(*) FROM superhelte GROUP BY hjemby Resultat: hjemby count(*) ------------------- -------- Andeby 1 Metropolis 28

12 22/092VE/E00/RB12 Nested forespørgsler og Al-kvantorer Forespørgsel (list superhelte som har samtlige evner): SELECT navn FROM superhelt H WHERE NOT EXISTS ( SELECT * FROM superevne E WHERE NOT EXIST ( SELECT * FROM helteevne HE WHERE H.navn = HE.heltenavn AND H.hem_id = HE.hem_id AND E.navn = HE.evnenavn )

13 22/092VE/E00/RB13 NULL NULL betyder ”værdi ukendt” X = NULL; X <> NULL  X IS NULL; X IS NOT NULL X er NULL; X = 10? X og Y er NULL; X = Y? SANDT, FALSK, UKENDT Kun ”SANDT” medtages i resultater, så foreningsmængden af resultaterne SELECT * FROM T WHERE X =5 giver ikke hele tabellen T. Det vil kræve at SELECT * FROM T WHERE X IS NULL også medtages.

14 22/092VE/E00/RB14 Embedded SQL Pre-compiled EXEC SQL DECLARE … EXEC SQL SELECT x,y INTO :x, :y FROM … Indikator variable for NULL Cursors: EXEC SQL DECLARE C CURSOR FOR SELECT x, y FROM … EXEC SQL OPEN C; while (sqlcode == 0) { EXEC SQL FETCH C INTO :x, :y; } EXEC SQL CLOSE C;

15 22/092VE/E00/RB15 Optimering af SQL SQL er ”selvoptimerende” Benytter –Indekser –Statistikker Explain/showplan/queryplan/... Masser af standardafvigende optimeringer –Tvungen brug af bestemte indeks –Parallel udførsel –Kreativ brug af indeks (MDAM) –Server optimering (memory etc.)


Download ppt "22/092VE/E00/RB1 Introduktion til SQL Datalogi 2VE E00 DIKU Forelæsninger 22/9 og 29/9."

Lignende præsentationer


Annoncer fra Google