Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

6. SQL1 Standardiseret spørge-sprog mv. til relationsdatabaser.

Lignende præsentationer


Præsentationer af emnet: "6. SQL1 Standardiseret spørge-sprog mv. til relationsdatabaser."— Præsentationens transcript:

1 6. SQL1 Standardiseret spørge-sprog mv. til relationsdatabaser

2 6. SQL2 SQL, 239 SQL = Structured Query Language –Standardiseret af ANSI senest SQL-99/SQL3 –inkl. objekt-relationelle features –Standard overholdes næste af DBMS'er DBMS'er tilføjer ofte noget til standarden. Hold dig til standarden, hvis du vil være uafhængig af en leverandør. –SQL = DDL + DML DDL Data Definition Language –create table osv. DML Data Manipulation Language –select, insert, update, delete

3 6. SQL3 Datatyper, 292 Hver attribut skal have en datatype. Typer nævnt i bogen –char(n) tekster af fast længde (n tegn) –varchar(n) tekster af varierende længde (max n tegn) –booleantrue / false –int / integerhel-tal –float / realdecimal-tal –date + time

4 6. SQL4 Data-typer i Oracle, tekster varchar2 (max_length) –tekster af variende længde f.eks. navne og adresser char (fixed_length) –tekster af fast længde f.eks. cpr og telefon nchar (fixed_length) –som char, men bruger 2 bytes pr. tegn varchar2 er OK mht. æ, ø, å long –tekster op til 2 gigabytes

5 6. SQL5 Data-typer i Oracle, tal Tal-typer –number (cifre, decimaler) fast antal decimaler f.eks. pris, løn –number (digits)hel-tal –numberfloating point (mange decimaler, til matemarik)

6 6. SQL6 Andre data-typer i Oracle CLOBcharacter large object –tekster op til 4 gigabytes BLOBbinary large object –op til 4 gigabytes, billeder, lyd, film NCLOB –som CLOB, men bruger 2 bytes pr. tegn BFILEbinary file –reference til en binær file uden for DBMS'en boolean –findes ikke i Oracle! date –indeholder både dato og klokkeslæt

7 6. SQL7 Opret, slet og modificer tabeller, 293 create table tabelNavn (att1 datatype1, …, attN datatypeN) –opretter en ny tabel –hvis en attribut ikke gives værdi, så bruges NULL –attribut kan erklæres med eksplicit default værdi attN datatypeN default værdi, eksempel side 295 drop tableName –Fjerner tabellen, inkl. data. Pas på! alter table tabelNavn ændring –Ændring bl.a. tilføj / slet attribut. –Eksempel side 294

8 6. SQL8 Opdatering, 286 3 typer opdatering –insert –update –delete Ændrer tilstanden i databasen.

9 6. SQL9 insert, 286 2 varianter af insert –insert into tabelNavn values (v1, v2, v3) Attributter skal komme i samme rækkefølge som da tabellen blev oprettet. –insert into tabelNavn (att1, att2, att3) values (v1, v2, v3) Man kan tage attributterne i sin egen rækkefølge. Man kan udelade enkelte attributter. –begge: indsætter 1 ny række ind i 1 tabel.

10 6. SQL10 insert II, 287 insert into tabelnavn (att) select-sætning –resultaterne fra select-sætningen sættes ind i tabellen (ren redundans) –kan indsætte flere rækker samtidigt (alt efter hvor mange række select-sætningen producerer).

11 6. SQL11 delete, 288 delete from tabelNavn where betingelse –slette alle rækker, der opfylder betingelse. –ingen betingelse  alle rækker slettes!! –eksempel side 289

12 6. SQL12 update, 289 update tabelNavn set att = værdi where betingelse –Giver ny værdi til att i alle rækker, der opfylder betingelse –Ingen betingelse  alle rækker opdateres. –Eksempel side 290

13 6. SQL13 Forespørgsler, simpel select, 240 select att1, att2 from tabel –Resultat: alle rækker fra tabel, men kun att1 og att2. –Resultatet er ikke en mængde, men en bag med mulighed for flere ens rækker (hvis primærnøglen ikke er med i de udpegede attributter). –Rel. algebra: π att1, att2 (tabel) select * from tabel – alle attributter fra tabellen

14 6. SQL14 select … where, 240 select att1, att2 from tabel where betingelse –Resultat: Kun rækker, der opfylder betingelse –Rel. algebra: π att1, att2 ( σ betingelse ( tabel)) – Eksempel 6.1, side 240 select * from tabel where betingelse – Rel. algebra: σ betingelse ( tabel) betingelse opbygges af –,= osv. – AND, OR, NOT

15 6. SQL15 Omnavngive attributter, 242 select att1 as a1, att2 as a2 from … select att1 a1, att2 a2 from … –a1 og a2 er nye navne for attributter i output –Eksempel 6.5, side 243

16 6. SQL16 Sammenligning af tekster, 246 select … where att operator 'tekst' –'…' om tekster, ikke "…". –sammenligning med =, > osv. –att LIKE 'and%' alt hvad der starter med and % 0 - mange vilkårlige tegn –att LIKE 'and_rs' _ præcis 1 tegn –OBS atomerne er slået i stykker!!

17 6. SQL17 Date og time, 247 Forskellige DBMS'er har forskellig syntaks for dato og tid. Problem: Datoer og tidspunkter må ikke forveksles med tekster '…' –Oracle har mange funktioner til konvertering bl.a. to_date ( '22/02/2003', 'DD/MM/YYYY') to_date ( datostreng, datoformat)

18 6. SQL18 Sammenligning med null, 248 Alle sammenligninger att = noget –false, hvis att har værdien null. Speciel syntaks –select … where att is null

19 6. SQL19 Ordning af output, 251 select … order by att1 asc, att2 desc –primær ordning: att1, stigende (ascending) –sekundær ordning: att2 faldende (descending) –default: ascending –tabeller ikke er mængder ingen ordning i mængder

20 6. SQL20 Select fra flere tabeller, 254 select * from A, B –kartesiansk produkt: alle kombinationer af rækker fra tabel A og B. –sjældent ønskeligt select a1, a2 from A, B where betingelse –join –betingelse kan indeholde join-betingelsen og evt. ekstra betingelser. –eksempel side 255

21 6. SQL21 Navnesammenfald, 256 Problem –2 attributter med sammen navn (fra 2 tabeller) i samme select-sætning Løsning –Eksplicit navngivning: tabel.attribut –Eksempel 6.13, side 256

22 6. SQL22 "Selv-join", side 257 Problem –Hvordan adskiller man 2 instanser af samme tabel select navn, boss_navn from ansat where …??? Løsning –Omnavngivning af tabeller select ansat.navn, boss.navn from ansat, ansat boss where ansat.boss_cpr = boss.cpr AS ikke tilladt ved omnavngivning af tabeller –som ved omnavngivning af attributter

23 6. SQL23 Semantik, 258 Hvad er semantikken (betydningen) af select med flere tabeller? 3 ækvivalente semantikker –Løkker inden i hinanden Løkker (1 pr. tabel) kører inden i hinanden, inderst checkes betingelsen –Parallelle assignments Lav alle kombinationer af rækker fra tabellerne, og check betingelsen –Konverter til relationel algebra –Alle tilfælde: Hvis en af tabellerne er tom (ingen rækker), så er output tomt. Eksempel side 260

24 6. SQL24 Mængde-operatorer, 260 Mængde-operatorer (men på bags) –(select …) union (select …) –(select …) intersect (select …) –(select …) except (select …) –eksempel side 261 –resultatet af de 2 under-select skal være "union-kompatible". sammen attributter, i sammen rækkefølge

25 6. SQL25 Sub-queries, 264 select med under-select i where-betingelsen –select … where att operator (select …) select med under-select i from-delen –select from (select …) where … 2 typer sub-queries –Simpel: Sub-query returnerer 1 værdi (1 række, 1 attribut)kaldes en skalar –Avanceret: Sub-query returnerer en alm. tabel med flere rækker og attributter.

26 6. SQL26 Simple sub-queries, 264 SQL programmør ved, at sub-query giver præcis 1 række –ellers (0 eller mange) er en runtime-fejl Operatorer: =,>,< osv. Eksempel 6.19, side 265

27 6. SQL27 Avancerede sub-queries, 266 Sub-query returnerer en hel tabel Operatorer –EXISTS sub-query sand, hvis sub-query leverer et ikke-tomt resultat –att IN sub-query sand, hvis værdien af att findes i resultatet af sub-query –att >ALL sub-query sand, hvis værdien af att er større end alle værdier i resultatet af sub-query –att>ANY sub-query sand, hvis værdien af att er større end en af værdierne i resultatet af sub-query –2 sidste operatorer findes også med < osv. –Eksempel side 267, læses inde fra

28 6. SQL28 Correlated sub-queries, 268 Indre select-sætninger kan bruge attributter fra ydre select-sætninger. –Eksempel side 269 –Indre select-sætning kan ikke "beregnes" en gang for alle, men må gentages for hver række i den ydre select-sætning løkker i løkker

29 6. SQL29 Sub-queries i from, 270 Sub-queries kan også bruges i from-delen –Eksempel side 270 –Der dannes en midlertidig, unavngiven tabel. –Ligner et view, afsnit 6.7 side 301

30 6. SQL30 SQL join, 270 Join variationer –natural joinsammenlign med = –theta joinsammenlign med alt muligt –outer joinshensyn til ikke matchende tupler Normal join i SQL –select … from A, B where A.att1 = B.att2 SQL har speciel syntaks til join –select … from A join B on att1 = att2

31 6. SQL31 SQL join II, 272 select … from A natural join B where … –A og B må have attribut af samme navn og type select … from A natural full/left/right outer join B where … –full outer join: ikke-matchende rækker også med i resultatet. select … from A full/left/right outer join B on att1 = att2 where … –theta join (i modsætning til natural join)

32 6. SQL32 distinct, 277 Alm. select producerer en bag af rækker –Muligvis flere ens select distinct … –producerer en mængde af rækker –ingen ens –det tager tid for DBMS'en at filtrere ens rækker ud, så brug det varsomt.

33 6. SQL33 Gruppering og aggregering, 279 Beregning på data –min, max, sum, avg, count –select funk(att) … Beregninger på grupper af data –select att1, funk(att2) … group by att1 –Eksempel 6.31, side 281 –select att1, funk(att2) … group by att1 having betingelse –kun grupper, der opfylder betingelse er med. –Eksempel side 283

34 6. SQL34 Indekser, 295 En alm. fagbog har 2 indekser –indholdsfortegnelse (foran) –ordliste (bag) –fordel: hurtigere opslag En database kan have indekser på attributter –fordel: hurtigere opslag (select) –ulemper: fylder (redundant data, opretholdes af DBMS) langsommere insert, delete, update (indeks skal også vedligeholdes)

35 6. SQL35 Indekser i SQL, 296 Ikke længere en del af SQL standarden Syntaks –create index navn on tabelNavn (att) –create index navn on tabelNavn (att1, att2) –drop index navn Mere om indekser i afsnit 7.1.3, side 318

36 6. SQL36 Views, 301 2 typer tabeller –Base tables Findes fysisk på disken –Views = virtuelle tabeller = navngivne select- sætninger Findes ikke fysisk på disken Defineres på baggrund af base tables.

37 6. SQL37 Views i SQL, 302 create view navn as select-sætning –Eksempel 6.45, side 302 create view navn (att1,..., attN) as select- sætning –Eksempel side 305 select … from navn –Ingen kan se om "navn" er en rigtig tabel eller et view. –DBMS oversætter til select fra underliggende base tables. drop view navn

38 6. SQL38 Opdatering af data i views, 305 Opdatering af view skal konverteres til opdatering af underliggende base tables. Nogle views kan opdateres - andre ikke! Ikke opdaterbare –aggregerings-funktioner (min, max osv.) –mange flere Opdaterbare –select attributter fra 1 tabel inkl. primærnøgle.

39 6. SQL39 Views, Oracle syntaks create [or replace] [force / noforce] view vName [column aliases] as select query [with check option [constraint cName]] [with read only] Syntax syntax: […] betyder frivillig. "or replace" –kan erstatte et eksisterende view med det samme navn. "force / noforce" –noforce: view skabes ikke, hvis de underliggende base tables ikke findes.

40 6. SQL40 Views, Oracle syntaks II "column aliases" –kolonnerne i view kan have andre navne end kolonner i base tables. "with check option" –DBMS checker om insert og update på view'et bliver "inde i view'et". "with read only" –Data kan ikke opdateres via view'et - kun via base tables.

41 6. SQL41 Views og sub-queries i from-delen, 270 Sub-query i from-delen af en select- sætning –select … from (select …) where … –Sub-query i from er en slags unavngivet / midlertidigt view. –Eksempel 6.22, side 270

42 6. SQL42 Formål med views Beskyttelse af data –Visse brugere må kun se en del af data create view lidt as select få_attributter from tabel Ofte brugte joins –Joine tabeller, der er blevet adskilt pga. normalisering create view helPerson as select person.*, bynavn from person, postby where person.postnr = postby.postnr Dække over senere normalisering –Applikation kan køre videre med de gamle definitioner, der nu ikke længere er tabeller men views.


Download ppt "6. SQL1 Standardiseret spørge-sprog mv. til relationsdatabaser."

Lignende præsentationer


Annoncer fra Google