1 / 71

Inleiding Databanken: oefeningen

Inleiding Databanken: oefeningen. Sven Casteleyn Lokaal: 6G319 Email: Sven.Casteleyn@vub.ac.be HomePage: te bereiken via http://wise.vub.ac.be/. Inleiding Databanken: leerstof. SQL DDL & DML: syntax en toepassingen Relationeel model en relationele algebra Domein & tuple calculus

vance-ball
Download Presentation

Inleiding Databanken: oefeningen

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. Inleiding Databanken: oefeningen • Sven Casteleyn • Lokaal: 6G319 • Email: Sven.Casteleyn@vub.ac.be • HomePage: te bereiken via http://wise.vub.ac.be/

  2. Inleiding Databanken: leerstof • SQL • DDL & DML: syntax en toepassingen • Relationeel model en relationele algebra • Domein & tuple calculus • Entity Relationship modeling • FA’s & Normalisatie

  3. Relational model:overzicht

  4. Relational model Herhaling terminologie

  5. Relatie (tabel) Een relatie is een tabel met kolommen en rijen.

  6. Attribuut Een attribuut is een kolom van een relatie

  7. Tupel Een tupel is een rij van een relatie.

  8. Domein Een domein is een verzameling van toegelaten waarden voor 1 of meerdere attributen. Voorbeelden (informeel) van domeinen voor attributen zijn “integers”, “strings”, “datum”, …

  9. Relationele databank Een relationele databank is een collectie van relaties (tabellen)

  10. Relational model:overzicht

  11. Relational model:overzicht

  12. Relational model:overzicht

  13. Relational model:overzicht

  14. Superkey Een attribuut of een verzameling van attributen die elk tuple uniek identificeert binnen een relatie.

  15. Candidate key • Een superkey {K} zodanig dat geen enkele echte deelverzameling van K een superkey is. • Elk tuple van R wordt door de waarde van K uniek geidentificeerd (uniciteit). • Geen enkele echte deelverzameling van K heeft de uniciteit eigenschap.

  16. Primary key De candidate key die gekozen werd om tuples uniek te identificeren in een relatie

  17. Foreign key Een attribuut of een verzameling van attributen binnen een relatie die overeenkomt met een candidate key van een andere relatie.

  18. 2 vb. van mogelijke superkeys Relational model: keys

  19. Relational model: keys

  20. Relational model: keys

  21. Relational model: keys

  22. Structured Query Language (SQL)

  23. SQL: doel • Een database taal moet de gebruiker 3 zaken toelaten: - de relationele databank creeren - de relationele databank populeren - (simpele en minder simpele) queries uitvoeren • 2 delen: - DDL voor het definieren van de databank struktuur - DML voor het opvragen en updaten van tupels

  24. SQL: kenmerken • SQL bevat geen control flow commando’s. • SQL is een “non-procedural language”, d.w.z. dat je specificeert wat je wil, in plaats van hoe je het wil bekomen.

  25. Algemene SQL Statement SELECT [DISTINCT | ALL] {* | attribuut (-expressie) [AS new_name] [,...] } FROM relatie [alias_name] [, ...] [WHERE conditie] [GROUP BY column_list] [HAVING condition] [ORDER BY column_list]

  26. Algemene SQL Statement SELECT [DISTINCT | ALL] {* | attribuut (-expressie) [AS new_name] [,...] } FROM relatie [alias_name] [, ...] [WHERE conditie] [GROUP BY column_list] [HAVING condition] [ORDER BY column_list]

  27. Algemene SQL Statement SELECT [DISTINCT | ALL] {* | attribuut (-expressie) [AS new_name] [,...] } FROM relatie [alias_name] [, ...] [WHERE conditie] [GROUP BY column_list] [HAVING condition] [ORDER BY column_list]

  28. Algemene SQL Statement SELECT [DISTINCT | ALL] {* | attribuut (-expressie) [AS new_name] [,...] } FROMrelatie [alias_name] [, ...] [WHEREconditie] [GROUP BY column_list] [HAVING condition] [ORDER BY column_list]

  29. De basis SELECT statement • SELECT: specificeert welke attributen (kolommen) in het resultaat moeten verschijnen • FROM: specificeert de te gebruiken relatie(s) • WHERE: filtert de tupels in het resultaat door test van een bepaalde conditie

  30. De basis SELECT statement: simpel voorbeeld • Vind naam en voornaam van alle studenten die in het derde jaar zitten

  31. De basis SELECT statement: simpel voorbeeld • SELECT StudentSecondname, StudentFirstname FROM Student WHERE StudentGrade = 3 • Vind naam en voornaam van alle studenten die in het derde jaar zitten

  32. De basis SELECT statement: simpel voorbeeld • SELECT StudentSecondname, StudentFirstname FROM Student WHERE StudentGrade = 3 Relatie

  33. De basis SELECT statement: simpel voorbeeld • SELECT StudentSecondname, StudentFirstname FROM Student WHERE StudentGrade = 3 Attribuut Attribuut Relatie

  34. De basis SELECT statement: simpel voorbeeld • SELECT StudentSecondname, StudentFirstname FROM Student WHERE StudentGrade = 3 Attribuut Attribuut Conditie Relatie

  35. SQL Data Manupilation Language: Specificatie

  36. SQL: alle attributen en tupels teruggeven • SELECT StudentFirstname, StudentSecondname, StudentID, StudentDateOfBirth,StudentGradeFROM Student

  37. SQL: alle attributen en tupels teruggeven • SELECT StudentFirstname, StudentSecondname, StudentID, StudentDateOfBirth,StudentGradeFROM Student • Equivalent: SELECT * FROM Student

  38. Specifiek attribuut, alle tupels teruggeven • Geef alle voornamen van studenten terug • SELECT StudentFirstnameFROM Student • Geef alle voor- en familienamen van studenten terug • SELECT StudentFirstname, StudentSecondnameFROM Student

  39. DISTINCT • Elimineert dubbels

  40. DISTINCT • Elimineert dubbels • Geef alle verschillende voornamen van studenten • SELECT DISTINCT StudentFirstname FROM Student

  41. Hernoemen van kolommen: AS • Gebruik AS om kolommen te hernoemen • SELECT DISTINCT StudentFirstname AS VoornamenZonderDubbelsFROM Student

  42. Tupel selectie • Gebruik WHERE (conditie) • Geef naam en voornaam van alle studenten die in het 3de jaar zitten • SELECT StudentSecondname, StudentFirstnameFROM StudentWHERE StudentGrade = 3;

  43. Toegelaten in de WHERE clause • = , < , > , <= , >= , < > • Logische operatoren: OR, AND, NOT • Volgorde van evaluatie: • van links naar rechts • subexpressies tussen haakjes eerst geevalueerd • NOT wordt vóór AND en OR geevalueerd • AND wordt geevalueerd voor OR

  44. Range conditie: BETWEEN/ NOT BETWEEN • Waarden binnen een bepaald interval • Geef voor- en familienaam terug van alle studenten die geboren zijn in 1979 • SELECT StudentFirstname, StudentDateOfBirthFROM StudentWHERE StudentDateOfBirth BETWEEN #01-01-1979# AND #01-01-1980#;

  45. Pattern matching: LIKE • % doet dienst al wildcard (nul of meer characters) • _ (underscore) stelt exact 1 character voor • SELECT StudentFirstnameFROM StudentWHERE StudentFirstname LIKE '%an%';

  46. Testen op NULL: IS NULL / IS NOT NULL • NULL stelt een onbekende waarde voor in een tabel • Geef voornaam en studiejaar terug van alle studenten waarvan de geboortedatum gekend is • SELECT StudentFirstname, StudentGradeFROM StudentWHERE StudentDateOfBirth IS NOT NULL

  47. Resultaten sorteren: ORDER BY • ORDER BY wordt gebruikt om het resultaat van een query te sorteren • ORDER BY kan stijgend (ASC) of dalend (DESC)

  48. Resultaten sorteren (ORDER BY) • ORDER BY wordt gebruikt om het resultaat van een query te sorteren • ORDER BY kan stijgend (ASC) of dalend (DESC) • Geef de voornamen terug van alle studenten gerangschikt per jaar (laagste jaar eerst) • SELECT StudentFirstname, StudentGradeFROM StudentORDER BY StudentGrade ASC

  49. Ordenen naar meerdere kolommen • Geef alle voornamen van studenten gerangschikt per jaar en alfabetisch gerangschikt (per jaar)

  50. Ordenen naar meerdere kolommen • Geef alle voornamen van studenten gerangschikt per jaar en alfabetisch gerangschikt (per jaar) • SELECT StudentFirstname, StudentGradeFROM StudentORDER BY StudentGrade, StudentFirstname

More Related