SQL / Systeemanalyse
Wie ben ik Hans de Wit 44 jaar HBO BI in deeltijd gedaan Sinds 2008 werkzaam met BI / DWH med.hro.nl/wihan
SQL De gegevens in een database vormen de grondstof voor informatie De informatie wordt opgevraagd in de taal met de naam: Structured Query Language
SQL SQL SQL is een taal voor invoeren wijzigen verwijderen raadplegen beveiligen }muteren van gegevens
SQL SQL zegt alleen WAT er moet gebeuren, niet HOE het moet gebeuren SQL is niet-procedureel; het zegt immers niet hoe iets moet gebeuren SQL is 4GL (vierde generatie)
De rol van een dbms Database Database Management Systeem Applicatie 1 Applicatie 3 Applicatie 2
DBMS DATABASE DBMS APPLICATIE APPLICATIE APPLICATIE
Meer over SQL SQL is geschikt voor INTERACTIEF gebruik, dus voor rechtstreekse communicatie tussen gebruiker en DBMS SQL kan in een groot aantal programmeertalen worden aangeroepen (EMBEDDED SQL) De mogelijkheid om informatie op te vragen leidt tot intensief gebruik in oa Business Intelligence programma s
Meer over SQL SQL is geschikt voor INTERACTIEF gebruik, dus voor rechtstreekse communicatie tussen gebruiker en DBMS SQL kan in een groot aantal programmeertalen worden aangeroepen (EMBEDDED SQL) De mogelijkheid om informatie op te vragen leidt tot intensief gebruik in oa Business Intelligence programma s
Kiezen voor een DBMS Het maakt vor deze cursus niet zoveel uit welk DBMS we gebruiken Bekende DBMS'sen zijn ORACLE, SQL Server, Informix, Sybase, Gupta, DB2, Interbase, MS JetSQL Het dbms MySQL is populair maar minder geschikt voor ons doel
Enkele veelgebruikte datatypen getal datum tekst
Datatypen in Microsoft JetSQL numeriek gegeven 26 26.33 tekstueel gegeven 'aap' 'broodje aap' datum #5-9-2003# #11 october 2007# Engelstalig eigenwijs
Manipulaties op één tabel Onze database beschikt voorlopig over één tabel die BOEKEN heet. De eenvoudigste SQL-instructie luidt: SELECT * FROM boeken; Betekenis: laat alles uit de tabel BOEKEN zien
BOEKEN numeriek type BOEKNR TITEL UITGEVER PRIJS 2.111.1 Word in twaalf dagen MEU 22,50 2.111.2 WordPerfect 9 BB 29,50 2.111.4 Xtal Reports de luxe MEU 32,90 2.111.6 Access voor dummies BB 32,90 2.112.0 Haal het onderste uit Excel AS 39,50 2.112.1 Brieven schrijven in Word AS 35,00 2.112.3 Quicksmith 2.0 BB 79,50 2.112.4 Inleiding in databases MEU 89,90 2.112.5 SQL en Access KLW 72,50 --- --- --- --- tekstuele typen
Projectie SELECT titel FROM boeken; titel Word in twaalf dagen WordPerfect 9 Xtal Reports de luxe Access voor dummies Haal het onderste uit Excel Brieven schrijven in Word ---
Kolomopschriften (1) SELECT * FROM boeken; BOEKNR TITEL UITGEVER PRIJS 2.111.1 Word in twaalf dagen MEU 22,50 --- --- --- --- SELECT titel FROM boeken; titel Word in twaalf dagen ---
Kolomopschriften (2) SELECT TiTel FROM boeken; TiTel Word in twaalf dagen ---
Meerdere kolommen selecteren SELECT boeknr, titel, prijs FROM boeken; boeknr titel prijs 2.111.1 Word in twaalf dagen 22,50 2.111.2 WordPerfect 9 29,50 2.111.4 Xtal Reports de luxe 32,90 2.111.6 Access voor dummies 32,90 2.112.0 Haal het onderste uit Excel 39,50 --- --- ---
Kolomalias SELECT boeknr, boeknr FROM boeken; Expr1000 boeknr 2.111.1 2.111.1 --- --- SELECT boeknr AS piet, boeknr FROM boeken; piet boeknr 2.111.1 2.111.1 --- --- De naam van de kolommen is onbelangrijk; het gaat om de gegevens zelf!
Selectie (1) SELECT * FROM boeken WHERE uitgever = 'MEU'; BOEKNR TITEL UITGEVER PRIJS 2.111.1 Word in twaalf dagen MEU 22,50 2.111.4 Xtal Reports de luxe MEU 32,90 2.112.4 Inleiding in databases MEU 89,90 2.112.6 SPSS voor schoolgebruik MEU 35,00 2.113.0 Delphi unleashed MEU 89,50 2.113.2 Visual Cobol MEU 51,40
Selectie (2) SELECT boeknr, prijs FROM boeken WHERE prijs = 35; boeknr prijs 2.112.1 35,00 2.112.6 35,00
Selectie (3) SELECT titel FROM boeken WHERE titel > 'Quiz'; titel Word in twaalf dagen WordPerfect 9 Xtal Reports de luxe SQL en Access SPSS voor schoolgebruik Visual Cobol
De operator LIKE (1) SELECT * FROM boeken WHERE titel LIKE 'A%'; BOEKNR TITEL UITGEVER PRIJS 2.111.6 Access voor dummies BB 32,90 2.113.3 Alles over het Internet BB 49,00 Betekenis: eerste letter is de letter A en dan een willekeurig aantal letters (mag ook geen letters zijn)
De operator LIKE (2) SELECT titel FROM boeken WHERE titel LIKE '%s'; titel Access voor dummies Inleiding in databases SQL en Access Fractal graphics Betekenis: willekeurig aantal letters (mag ook geen letters zijn) en als laatste letter een s
De operator LIKE (3) SELECT titel FROM boeken WHERE titel LIKE '%oo%'; titel Access voor dummies SPSS voor schoolgebruik Powertools voor dbase IV Betekenis: twee aaneengesloten o-tjes
De operator LIKE (4) SELECT titel FROM boeken WHERE titel LIKE '%o%o%'; titel Access voor dummies SPSS voor schoolgebruik Powertools voor dbase IV Visual Cobol Betekenis: twee o-tjes is voldoende (hoeven niet aaneengesloten te zijn maar mag wel)
De operator LIKE (5) SELECT * FROM boeken WHERE titel LIKE ' l%'; BOEKNR TITEL UITGEVER PRIJS 2.112.4 Inleiding in databases MEU 89,90 2.112.5 SQL en Access KLW 72,50 2.113.0 Delphi unleashed MEU 89,50 2.113.3 Alles over het Internet BB 49,00 Betekenis: derde letter van de titel moet de letter l zijn
De operator LIKE (6) SELECT * FROM boeken WHERE titel LIKE '%e_'; BOEKNR TITEL UITGEVER PRIJS 2.111.1 Word in twaalf dagen MEU 22,50 2.111.6 Access voor dummies BB 32,90 2.112.0 Haal het onderste uit Excel AS 39,50 2.112.4 Inleiding in databases MEU 89,90 2.113.0 Delphi unleashed MEU 89,50 2.113.3 Alles over het Internet BB 49,00 Betekenis: de op één na laatste letter moet de letter e zijn
Formuleren van queries (1) Langzaam maar zeker groeit het aantal lettertekens van de query. Vooral bij langere queries is het zinvol om de query over meerdere regels te verdelen. Dat is overzichtelijker.
Formuleren van queries (2) In plaats van SELECT titel FROM boeken WHERE uitgever = 'AS'; schrijven we SELECT titel FROM boeken WHERE uitgever = 'AS'; De layout is totaal onbelangrijk; net zo min als het gebruik van hoofd- of kleine letters.
Formuleren van queries (3) SELECT titel FROM boeken WHERE uitgever = 'AS'; select Titel from BOEKEN WHEre uitgever = 'AS'; select Titel from BOEKEN WHEre uitgever = 'AS';
De logische operator AND SELECT * FROM boeken WHERE uitgever = 'AS' AND prijs > 50; BOEKNR TITEL UITGEVER PRIJS 2.112.9 Fractal graphics AS 56,90 2.113.1 Powertools voor dbase IV AS 65,90 Betekenis van AND: aan beide voorwaarden moet voldaan zijn
De logische operator OR SELECT * FROM boeken WHERE uitgever = 'AS' OR uitgever = 'MEU'; BOEKNR TITEL UITGEVER PRIJS 2.111.1 Word in twaalf dagen MEU 22,50 2.111.4 Xtal Reports de luxe MEU 32,90 2.112.0 Haal het onderste uit Excel AS 39,50 2.112.1 Brieven schrijven in Word AS 35,00 2.112.4 Inleiding in databases MEU 89,90 2.112.6 SPSS voor schoolgebruik MEU 35,00 --- --- --- Betekenis van OR: aan minstens één --- van beide voorwaarden moet voldaan zijn (aan allebei mag ook)
De logische operator NOT SELECT * FROM boeken WHERE NOT uitgever = 'AS'; BOEKNR TITEL UITGEVER PRIJS 2.111.1 Word in twaalf dagen MEU 22,50 2.111.2 WordPerfect 9 BB 29,50 2.111.4 Xtal Reports de luxe MEU 32,90 2.111.6 Access voor dummies BB 32,90 2.112.3 Quicksmith 2.0 BB 79,50 --- --- --- --- Betekenis van NOT: aan de geformuleerde voorwaarde moet juist níet voldaan zijn
Combinaties van operatoren SELECT * FROM boeken WHERE NOT prijs > 40 AND prijs < 60; SELECT * FROM boeken WHERE NOT (prijs > 40 AND prijs < 60); De queries hebben een verschillend resultaat! Gebruik in geval van twijfel altijd haakjes om de voorrang te regelen.
De operator IN SELECT * FROM boeken WHERE uitgever IN ('AS', 'BB'); Is hetzelfde als SELECT * FROM boeken WHERE uitgever='as' OR uitgever= 'BB'; Biedt vooral voordelen bij méér waarden in de verzameling.
De operator BETWEEN SELECT * FROM boeken WHERE prijs BETWEEN 30 AND 40; Is hetzelfde als SELECT * FROM boeken WHERE prijs>=30 AND prijs<=40; Formuleert alleen 'lekkerder'.