Structured Query Language (SQL)



Vergelijkbare documenten
11. Het selecteren van gegevens deel II

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

Gekoppelde tabellen: de JOIN

Les S-02: Meer geavanceerde SQL-instructies

Miniles gegevensbanken bevragen met SQL

= > >= < <= BETWEEN IS NULL IS NOT NULL

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

12. Meer dan één tabel gebruiken en sub-queries

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

oefeningen TOP2000 antwoorden

Les 2 Eenvoudige queries

Introductie (relationele) databases

oefeningen eredivisie antwoorden

Data Manipulation Language

Structured Query Language

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

Relationele database. Het relationele model

Databases SQL - meerdere tabellen

Computerclub Volwassenen, Jeugd en Informatica vzw

Het omzetten van een ER-diagram naar SQL

Query SQL Boekje. Fredrik Hamer

Les S-01: De basisbeginselen van SQL

SQL & Relationele datamodellen in interactieve media

1. Inleiding Inleiding SQL Inleiding Database, databaseserver en databasetaal Het relationele model...

Les S-01: De basisbeginselen van SQL

SQL: query taal met. woorden. ISO SQL: Structured Query Language. de SQL basis query structuur. voorbeeld: doel: intuitieve query taal

ISO Query By Example

ISO SQL: Structured Query Language

Relationele databases

databases & SQL - antwoorden

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

Data Manipulatie. Query Talen. / Informatica

Databases - Inleiding

SQL opgaven. Relationele model: Opgaven:

SQL & Datamodelleren

Gebruikers Handleiding

[TOETS SQL INLEIDING]

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Anatomie van een databank

Hoofdstuk: 1 Principes van databases

Inleiding Databases en Data Base Management Systems Tabellen Wat is SQL?... 5

Zelftest SQL Workshop

SQL: oefenen queries

Moderne Naamkunde - Access practicum <David Onland en Gerrit Bloothooft juni 2008> 1. Databases

Zelftest SQL. Document: n0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Les 11 : Basis SQL (deel2).

Zelftest SQL Workshop

Van een ER-diagram naar een database specificatie in SQL

Puzzelen met SQL 38. De Muzieklijst, deel 2 PUZZELEN MET SQL

INSTRUCT Samenvatting Praktijk Access 2010, H2 SAMENVATTING HOOFDSTUK 2

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Proeftentamen ISO (2R290), query-gedeelte, Oktober 2006

Correctievoorschrift HAVO Informatica. Tijdvak 1 Woensdag 24 mei uur. College-examen schriftelijk.

6.8 Lijsten: oefeningen

Koppeling met een database

5. Excel als database

Informatie verwerking en databases RDBMS en tabellen... 8 SQL SELECT... 8 SQL WHERE SQL INSERT SQL UPDATE SQL DELETE...

Informatica toets vwo 6 Databases

7. Het selecteren van gegevens

9 H. Flits Zwanenveld Nijmegen Jeugd1 10 L. Willemsen Kasteel 4 Wychen Jeugd1 12 M.E.P. Graag Broerdijk 234 Nijmegen Heren 12/8/89 19/8/89 36

1. Exporteren Verschil Xls en Csv Het maken van een Csv bestand Sorteren in Excel Sorteren in Excel

Antwoorden Informatica Hoofdstuk 7

Databases en SQL Foundation (DBSQLF.NL)

Access voor Beginners - Hoofdstuk 7

ExpertHandboek Business Intelligence met Power BI in Excel Wim de Groot

9. Het wijzigen van gegevens

1. * Database worden vaak gebruikt in Client-Server architectuur.

Van CaseTalk naar een database in SQLite studio

Informatie & Databases

Excel Controller. Handleiding Excel Controller Wizard

SQL.

Antwoorden door een scholier 1990 woorden 3 maart keer beoordeeld. Informatica INFORMATICA HOOFDSTUK 4

SQL / Systeemanalyse

Propositielogica Het maken van een waarheidstabel

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

Relationele databases en SQL

1. Exporteren Verschil Xls en Csv Het maken van een Csv bestand Sorteren Filteren...11

1. Exporteren Verschil Xls en Csv Het maken van een Csv bestand Sorteren Filteren...11

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010

Excellerend Kwartaaltip

7.8 Lijsten oefeningen

Zorg ervoor dat je een database hebt aangevraagd op Open daarna het volgende adres in je browser:

Sorteren, groeperen en totaliseren

Een introductie tot gegevensbanken

Rapportage voor Unit4 Multivers. Eindhoven, 22 juni 2017

3. Informatie overzichtelijk maken

PROGRAMMA Vak: informatica..

DATABASEBEHEER IN EXCEL

Digitaal Staatsexamen VWO 2010

Tentamen Databases voor ica

EXIN Databases en SQL Foundation

Errata en opmerkingen Relationele Databases en SQL 1e druk

Spoedcursus SQL met MS-Access

Normaliseren van tabellen Praktische oefeningen

Tentamen Databases voor iku

voorbeeldexamen I-Tracks Databases and SQL Foundation Voorbeeldexamen DBSQLF Uitgave juni 2006

Correctievoorschrift HAVO Informatica. Tijdvak 1 Woensdag 9 mei uur. College-examen schriftelijk.

Inhoudsopgave. Theorie Praktijk Gegevens uit Database halen DML commando s... 14

Een functie is een kant en klare formule. Via de knop Som in de groep Bewerken van het tabblad Start kun je een aantal veelgebruikte functies kiezen:

Cursus MS Excel 2007 (N), Introductie (1) Mei 2009

Transcriptie:

Structured Query Language (SQL) Huub de Beer Eindhoven, 4 juni 2011

Database: in essentie 0 of meer tabellen elke tabel nul of meer kolommen (of velden) elke tabel nul of meer unieke rijen elke query werkt op tabellen elke query levert een nieuwe tabel op een lege tabel is ook een tabel Je hebt altijd te maken met tabellen. Die kunnen leeg zijn

Ik leer SQL en neem mee... SQL is door mensen bedacht en zit logisch in elkaar Een oplossing zien = een oplossing begrijpen begrijpen hoe je zelf tot die oplossing komt Leren door oefenen Boek en de presentaties: veel voorbeelden en (nieuwe) SQL code. Probeer de voorbeelden uit (zeker als je ze niet begrijpt) Databases zijn op eckartnet te vinden Tijdens de presentatie gebruik ik de school database (van gisteren)

Informatie opzoeken: voer een query uit SQL Query Op zijn NLs Maak een nieuwe tabel met daarin de SELECT veld_a, veld_b,... kolommen veld_a, veld_b, enzovoorts. FROM tabelnaam WHERE conditie ORDER BY veld_b; Haal de waarden uit de tabel met naam tabelnaam. Kopieer alleen die rijen die aan de conditie voldoen. Sorteer de resultaattabel op veld_b.

Informatie opzoeken: voer een query uit SQL Query Op zijn NLs Maak een nieuwe tabel met daarin de SELECT veld_a, veld_b,... kolommen veld_a, veld_b, enzovoorts. FROM tabelnaam WHERE conditie ORDER BY veld_b; Haal de waarden uit de tabel met naam tabelnaam. Kopieer alleen die rijen die aan de conditie voldoen. Sorteer de resultaattabel op veld_b.

Eenvoudige queries: namen van leerlingen Selecteer de namen van alle leerlingen SELECT achternaam FROM leerling; Achternamen komen vaker voor: haal de dubbelen weg Selecteer de namen van alle leerlingen; elke naam komt maar een keer voor; sorteer op alfabet (a-z) SELECT DISTINCT achternaam FROM leerling ORDER BY achternaam; DISTINCT voor een veldnaam in de SELECT clausule verwijdert dubbelen in de resultaattabel.

Eenvoudige queries: namen van leerlingen Selecteer de namen van alle leerlingen SELECT achternaam FROM leerling; Achternamen komen vaker voor: haal de dubbelen weg Selecteer de namen van alle leerlingen; elke naam komt maar een keer voor; sorteer op alfabet (a-z) SELECT DISTINCT achternaam FROM leerling ORDER BY achternaam; DISTINCT voor een veldnaam in de SELECT clausule verwijdert dubbelen in de resultaattabel.

Eenvoudige queries: namen en leeftijden van leerlingen Selecteer de namen en leeftijden van alle leerlingen van 16 jaar en ouder, gesorteerd van oud naar jong SELECT achternaam, 2010 YEAR(geboorte_datum) AS leeftijd FROM leerling WHERE 2010 YEAR(geboorte_datum) >= 16 ORDER BY leeftijd DESC; Je kunt eenvoudige rekensommen met velden maken. Hernoem een veldnaam met AS (werkt ook met tabellen). YEAR (datum) levert het jaar van een datum op. DESC en ASC in de ORDER BY clausule sorteert respectievelijk aflopend of oplopend.

Eenvoudige queries: samengestelde condities Selecteer de voornaam, achternaam en woonplaats van alle leerlingen die jonger zijn dan 16 en wiens achternaam met een V begint SELECT voornaam, achternaam, woonplaats FROM leerling WHERE achternaam LIKE V% AND 2010 YEAR(geboorte_datum) < 16; LIKE voor patroonherkenning: % voor 0 of meer tekens; _ voor precies een teken. De conditie is een Booleaanse expressie.

Eenvoudige queries: samengestelde condities Selecteer alle gegevens van alle leerlingen die jonger zijn dan 16 en wiens achternaam met een V begint of de woonplaats met een e eindigt SELECT FROM leerling WHERE ( achternaam LIKE V% OR woonplaats LIKE %e ) AND 2010 YEAR(geboorte_datum) < 16; * in de SELECT clausule betekent alle kolommen. Let op de haakjes!

Aggregatiefuncies: samennemen van waarden in een kolom Naast uitspraken en berekeningen met waarden in een rij kun je ook uitspraken doen over een hele kolom. Je gebruikt dan zogenaamde aggregatiefuncties. Deze komen alleen in de SELECT en HAVING clausule voor! COUNT( achternaam ): tel het aantal achternamen COUNT( DISTINCT achternaam ): tel het aantal achternamen, neem dubbelen niet mee. DISTINCT werk op alle aggregatiefuncties. MAX( geboorte_datum ): geef de jongste datum (= grootste waarde). Veld moet sorteerbaar zijn MIN( geboorte_datum ): geef de oudste datum (= kleinste waarde). Veld moet sorteerbaar zijn AVG( ll_nr ): geef de gemiddelde datum (veld moet rekenbaar zijn, niet altijd zinnig...) SUM( ll_nr ): tel alle prijzen op (veld moet rekenbaar zijn) Vooral handig bij GROUP BY

Volledige SQL query SQL Query Op zijn NLs Maak een nieuwe tabel met daarin de SELECT veld_a, veld_b,... kolommen veld_a, veld_b, enzovoorts. FROM tabelnaam WHERE conditie_w GROUP BY veld_g HAVING conditie_h ORDER BY veld_b; Haal de waarden uit de tabel met naam tabelnaam. Kopieer alleen die rijen die aan de conditie_w voldoen. Groepeer de resultaten per veld_g en neem alleen die groepen op die voldoen aan conditie_h. Sorteer de resultaattabel op veld_b.

Volledige SQL query SQL Query Op zijn NLs Maak een nieuwe tabel met daarin de SELECT veld_a, veld_b,... kolommen veld_a, veld_b, enzovoorts. FROM tabelnaam WHERE conditie_w GROUP BY veld_g HAVING conditie_h ORDER BY veld_b; Haal de waarden uit de tabel met naam tabelnaam. Kopieer alleen die rijen die aan de conditie_w voldoen. Groepeer de resultaten per veld_g en neem alleen die groepen op die voldoen aan conditie_h. Sorteer de resultaattabel op veld_b.

Eenvoudige queries: geef het aantal leerlingen per klas Het aantal leerlingen per klas SELECT klas_nr, COUNT(ll_nr) AS aantal FROM leerling GROUP BY klas_nr; Elke leerling zit in een klas (vreemde sleutel klas_nr). Tel het aantal leerlingen en geef dat aantal en het klas_nr. Groepeer per klas_nr. Het effect: tel het aantal leerlingen per groep, dus per klas(nummer) De resultaattabel bevat rijen die over groepen gaan, niet meer over losse rijen... (probeer dit zelf uit, zorg dat je het verschil begrijpt)

Eenvoudige queries: welke leerling(en) is het oudst? Het aantal leerlingen per klas SELECT, MIN(geboorte_datum) FROM leerling; Let op, er kunnen meerdere leerlingen zijn met dezelfde kleinste geboortedatum. Er zit er maar een in de resultaattabel (onbekend welke). BTW onderstaande oplossing werkt niet, waarom niet? Het aantal leerlingen per klas SELECT FROM leerling WHERE geboorte_datum = MIN(geboorte_datum); Oplossing?

Eenvoudige queries: welke leerling(en) is het oudst? Het aantal leerlingen per klas SELECT, MIN(geboorte_datum) FROM leerling; Let op, er kunnen meerdere leerlingen zijn met dezelfde kleinste geboortedatum. Er zit er maar een in de resultaattabel (onbekend welke). BTW onderstaande oplossing werkt niet, waarom niet? Het aantal leerlingen per klas SELECT FROM leerling WHERE geboorte_datum = MIN(geboorte_datum); Oplossing?

Eenvoudige queries: geef het aantal leerlingen per klas, maar alleen van die klassen die minder dan 5 leerlingen hebben Het aantal leerlingen per klas SELECT klas_nr, COUNT(ll_nr) AS aantal FROM leerling GROUP BY klas_nr HAVING COUNT(ll_nr) < 5 ORDER BY aantal; De HAVING clausule werkt alleen op groepen (de WHERE van GROUP BY, als het ware). Je mag er aggregatiefuncties gebruiken. De groepen worden gesorteerd van klein naar groot (de kleinste klas staat bovenaan).

Hoe leer ik SQL? In principe zijn de meeste queries/opgaven niet overdreven moeilijk. Heel veel informatie: lastig te verwerken/onthouden/reproduceren uit het hoofd Oefen: probeer voorbeelden uit en maak opgaven Voorbeelddatabases beschikbaar: download, XAMPP, phpmyadmin, importeer en je kunt aan de gang Het is handig om XAMPP thuis eens te installeren Zorg dat je het effect van een query begrijpt Zorg dat je zelf een query kunt schrijven: Geen trial-and-error Maar: de opgaven worden steeds moeilijker. Zonder goede basis ga je onzin opschrijven en dat levert niets op (ook geen punten voor het proberen...)