Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afAugust Mølgaard Redigeret for ca. et år siden
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.)
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.