1 / 15

Introduktion til SQL

Forelæsninger 22/9 og 29/9. Introduktion til SQL. Datalogi 2VE E00 DIKU. 22/9 SQL92 - DDL Relationel Algebra SQL92 - DML. 29/9 SQL99 OQL. Plan for SQL forelæsninger. SQL92 Data Definition Language. CREATE TABLE ALTER TABLE DROP TABLE CREATE VIEW DROP VIEW CREATE INDEX

leola
Download Presentation

Introduktion til SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Forelæsninger22/9 og 29/9 Introduktion tilSQL Datalogi 2VE E00 DIKU 2VE/E00/RB

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

  3. SQL92Data Definition Language • CREATE TABLE • ALTER TABLE • DROP TABLE • CREATE VIEW • DROP VIEW • CREATE INDEX • DROP INDEX 2VE/E00/RB

  4. 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 2VE/E00/RB

  5. Data Manipulation LanguageOpdatering 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” 2VE/E00/RB

  6. Udvælgelse af dataRelational Operatorsdefined by Codd (70,72) • Union • Intersection • Difference • Cartesian product • Restrict • Project • Join • Divide 2VE/E00/RB

  7. Beskrivelse af de otte relationelle operatorer 2VE/E00/RB

  8. SQL92Data Manipulation LanguageForespø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 2VE/E00/RB

  9. 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)… 2VE/E00/RB

  10. 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ålanden Anders And 2VE/E00/RB

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

  12. 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 ) ) 2VE/E00/RB

  13. 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 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. 2VE/E00/RB

  14. 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; 2VE/E00/RB

  15. 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.) 2VE/E00/RB

More Related