1 / 22

Databaser – SQL, Structured Query Language

Databaser – SQL, Structured Query Language. 1. SQL. Grundlæggende om SQL select-udtryk syntaks og semantik SQL og relationel algebra mængdeoperationer (forenings-, fælles- og differensmængde) natural join tupel-variabler opdateringer Goodies ordning aggregeringsfunktioner DDL.

leane
Download Presentation

Databaser – SQL, Structured Query Language

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. Databaser– SQL, Structured Query Language

  2. 1. SQL • Grundlæggende om SQL • select-udtryk • syntaks og semantik • SQL og relationel algebra • mængdeoperationer (forenings-, fælles- og differensmængde) • natural join • tupel-variabler • opdateringer • Goodies • ordning • aggregeringsfunktioner • DDL

  3. : project : kartesisk produkt : selection predicate Select-statement SQL’s select-statement ser typisk ud som følger: selectA1, A2, ..., An fromr1, r2, ..., rm whereP hvor (for alle i, 1  i  n): Ai : attribut ri : relation P : prædikat

  4. select distinctA1, A2, ..., An fromr1, r2, ..., rm whereP  A1, A2, ..., An (P(r1  r2  ...  rm))  Syntaks og semantik SelectStatement ::= ”select” [ ”distinct” | ”all” ] ( AttributeList | ”*” ) ”from” RelationList [ ”where” Predicate ] 3. 1. 2.

  5. Eksempel-relation Populære amerikanske Broadway Musicals (PABM)

  6. En eksempel-relation Musical-skabere (MC)

  7. Eksempel,  (1) (PABM, Perfs > 2000) select * fromPABM wherePerfs > 2000

  8. Eksempel,  (2) (PABM, Theater = Forty-Sixth St.) select * fromPABM whereTheater = ”Forty-Sixth St.”

  9. Eksempel,  ((PABM, Theater = Forty-Sixth St.), Title, Perfs) selectTitle, Perfs fromPABM whereTheater = ”Forty-Sixth St.”

  10. Mængdeoperationer I SQL er det muligt at udtrykke de tre mængdeoperationer union (): SelectStmtunionSelectStmt intersect (): SelectStmtintersectSelectStmt difference (): SelectStmtminusSelectStmt Eksempler select * fromPABM wherePerfs > 2000 union select * fromPABM whereMonth = 3 selectTitle fromPABM wherePerfs > 2000 intersect selectTitle fromMC whereBook = Lyrics

  11. Test for ”membership” () SQL trækker på elementer fra relationskalkylen til at teste på om en tupel er element i en relation. Eksempel: Vi er interesseret i alle show, opført efter 1960, hvor bogen og lyrikken er skrevet af de samme forfattere. select distinctTitle fromPABM whereYear >= 1960 and Title in ( selectTitle fromMC whereLyrics = Book )

  12. ... i småbidder • selectTitle • fromMC • whereLyrics = Book

  13. ... i småbidder • select distinctTitle • fromPABM • whereYear >= 1960 and • Title in (x)

  14. ’all’, ’some’ og ’exists’ I SQL er det muligt i et prædikat at skrive A allRA  someRexistsR hvor  betegner en af de relationelle operatorer <, >, , , , =,  . Betydningen er A allR  ( x | x  R : A  x) A someR  ( x | x  R : A  x) existsR  R  Ø Specialtilfældet ’= some’ har vi set før. Hvor?

  15. Natural join I SQL er det ikke muligt direkte at udtrykke natural join, men da natural join er defineret i termer af kartesisk produkt, select og project, er det en smal sag at realisere join i SQL. r s =  RS (r.A1 = s.A1  r.A2 = s.A2  ...  r.An = s.An (r  s)) Ovenstående er under antagelse af at vi opererer med relationer r og s med respektive skema R og S hvor R  S = { A1, A2, ..., An }.

  16. Eksempel,  Where Author selectTitle, Theater, Book fromWhere, Author whereWhere.Title = Author.Title Where  Author

  17. Tupel-variabler SQL har lånt idéen om tupel-variabler fra tupel-relationskalkylen. Tupel-variabler er specielt nyttige til at sammenligne tupler fra samme relation. I den situation benytter den relationelle algebra sig af omdøbning (rename). Eksempel: Vi er interesseret i alle show der har været opført samme sted som My Fair Lady. select distinctT.Title fromPABMS, PABMT whereS.Title = ”MyFair Lady” and S.Theater = T.Theater

  18. Opdateringer Sletning delete r whereP Indsættelse insert intor values (a1, a2, ..., an) (null) insert intor SelectStmt Opdatering updater setA = Exp whereP

  19. Goodies I SQL er det muligt at ordne resultatet af en forespørgsel, ligesom det er muligt at benytte såkaldte aggregeringsfunktioner. Mulighe-derne er sammenfattet i følgende syntaksdefinition: SelectStatement ::= ”select” [ ”distinct” | ”all” ] ( AttributeList | ”*” ) ”from” RelationList [ ”where” Predicate ] ( [ ”order by” (AttributeOrder)+ ] | [ ”group by” AttributeList [ ”having”Predicate ] ] ) Order ::= ”asc” | ”desc”

  20. Ordning Eksempel selectTitle, Month, Day, Year fromPABM whereYear >= 1960 order byYeardesc, Monthdesc, Daydesc

  21. Aggregeringsfunktioner I SQL er det muligt at beregne funktioner over grupper af tupler ved hjælp af ’group by’. Tupler med samme værdi på attributter opremset i ’group by’, grupperes sammen. Der kan udvælges på gruppeniveau med ’having’. Følgende aggregeringsfunktioner er tilgængelige i SQL: avg average sum sum min minimum count tæller max maximum Eksempel selectTheater, avg (Perfs), count (Title) fromPABM group byTheater havingavg (Perfs) > 100

  22. DDL Relationer oprettes, slettes og ændres som følger: Opretcreate table r (A1D1, A2D2, ..., AnDn) Sletdrop tabler Ændralter tableraddAD hvor (for alle i, 1  i  n): Ai : attribut Di : domæne

More Related