Querytraining Eppo Drenth, CFB SIS HvA | Mark van der Molen, CFB SIS UvA 7 maart 2013.

Slides:



Advertisements
Verwante presentaties
SQL deel 2: datamodel ontwerp
Advertisements

Computervaardigheden
Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Meerdere tabellen: Relaties en Joins
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Relationele databases en
Databases Informatica Ga verder met een muisklik. SQL FCO DBMS NE FA
Oranje is inspelen op Louise Meijer, Manager Marcom ING
Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.
Databank van een restaurant Download op Twee tabellen: Klanten: Alle klanten die minstens.
MySQL-acties Klassikaal: Wijnen.sql. 1.Toon alle wijnen die er zijn. Toon de naam, kleur en prijs. SELECT `naam`,`kleur`,`prijs` FROM `wijnen`
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Het selecteren van data uit meerdere gekoppelde tabellen
SQL Les 01 & 02. SELECT Weergeven van alle gegevens uit een tabel: SELECT * FROM tlbPersonen; Weergeven van alle personen die uit Aruba komen: SELECT.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Normaliseren Datamodellering 2006.
Relationele Databases Hoofdstuk 10
Databases.
<Mdl01 hoorcollege 1>
Sites.google.com/site/rekenbewustvakonderwijs Tabellen, grafieken en formules VMBO 6 juni 2013 Monica Wijers, FreudenthaI Instituut.
W ORD P RESS TECHNISCHE ACHTERGROND Kris Cardinaels 26 maart 2013.
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica
Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Databanken by Steven Stinis.
Download en installeer de gereedschappen
Download en installeer de gereedschappen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Vorige week: Referentiele integriteit
SQL (structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) Ontwerp databaseBevraag database.
Workshop PHP Een productencatalogus Met database.
Hoofdstuk 16 en 19 PHP en MYSQL
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
SQL ( SERVER ) Les #02: T-SQL. A GENDA Herhaling les 4 Views SELECT…INTO Beheren van tabellen: CREATE ALTER DROP Opdracht voor de volgende les.
LauwersCollege Buitenpost Informatica
7 Databases. SAMENGESTELDE VOORWAARDEN 1 Wat is het adres van Odile Goossens? SELECT adres, woonplaats FROM leden WHERE naam = ‘Goossens’ AND voornaam.
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
7 Databases. STRUCTURED QUERY LANGUAGE Bij het relationele model hoort een programmeertaal waarmee de database benaderd kan worden. In de praktijk wordt.
24/04/2015IT-Assurance1 IT-Assurance deeltijd 4. Inleiding SQL Introductie in de basisfuncties Bijbehorend lesmateriaal: -AIV-boek van Derksen en Crins.
Hoofdstuk 11 Databasemanagementsystem. hoofdstuk 112 STROKENDIAGRAMMEN llnrvoornaamtussenvachternaamstraathuisnummerpostcodeplaatstelefoongeslachtgebdatumklas.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
BIMAIV03 Les A1 BIMAIV03 Les A1 Databases. De gegevens in een database vormen de grondstof voor informatie De informatie wordt opgevraagd in de taal met.
ANALYSE 3 INFANL01-3 WEEK 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
Week 6 BIMAIV03 les B1. DML en DDL ata D anipulation M anguage L ata D efinition D anguage L.
Week 1 BIMAIV03 Les B2 BIMAIV03 Les B2. Uit het voorgaande... CREATE TABLE... Opdracht om een nieuwe tabel binnen de database te creëren. Aandachtspunten.
ANALYSE 3 INFANL01-3 WEEK 6 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Subqueries met correlaties ▸ Subqueries zonder correlaties ▸ Views ▸
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
– Software development fundamentals
SQL Cursus deel
LauwersCollege Buitenpost Informatica
Informatie-analyse 1: Er zijn veel manieren om een database te vullen
SQL Les February 2019.
SQL Les 3 17 February 2019.
SQL Les 3 23 February 2019.
SQL Les 7 24 February 2019.
SQL Les 1 5 April 2019.
SQL Les 6 14 April 2019.
SQL Les 9 12 May 2019.
SQL Les 4 12 May 2019.
– Software development fundamentals
Software Development fundamentals
Databases SQL.
Python – For loop + strings
Transcript van de presentatie:

Querytraining Eppo Drenth, CFB SIS HvA | Mark van der Molen, CFB SIS UvA 7 maart 2013

Agenda 09.30 Voorstelrondje 09.45 Introductie query’s en querytool 10.10 Zelfstandig opdrachten doen (opdrachten 1 en 2) 10.50 Uitleg datamodel 11.00 Zelfstandig opdrachten doen (opdrachten 3 t/m 6) 12.00 Lunch 12.45 Queryontwerp en prompts 13.30 Zelfstandig opdrachten doen (opdrachten 7 en 8) 14.00 Outer joins 14.15 Zelfstandig opdrachten doen (opdracht 11) 14.30 Expressies 14.45 Zelfstandig opdrachten doen (opdrachten 9 en 10) 16.00 Einde Querytraining | 7 maart 2013

Databases SIS maakt gebruik van een relationele database (Oracle). De gegevens zijn opgeslagen in tabellen met daarin rijen, in SIS heten tabellen Records. Een rij in de tabel bevat altijd een unieke sleutel (primary key), dit kan een enkel veld zijn maar ook een combinatie van velden. Tabellen kunnen onderling gekoppeld zijn door middel van relaties. Relaties lopen over de zgn. verwijzende sleutel (foreign key). Een veld is van een bepaald datatype (teken, tekst, numeriek, datum, etc). Sommige datatypes hebben een maximale lengte. Querytraining | 7 maart 2013

Datatypes Teken (Oracle: VARCHAR2): normale tekstvelden max. aantal karakters is bepaald (van 1 tot 4000) Tekst (CLOB/BLOB): lange tekstvelden, HTML, plaatjes in principe onbeperkte lengte Getal (NUMERIC): getallen, met of zonder teken, met of zonder decimalen Getal 3.2: positief getal, 3 posities voor, 2 na komma, totale lengte is dus 5 GmT 3.2: positief of negatief getal Datum (DATE): datum en/of tijd Querytraining | 7 maart 2013

SQL Structured Query Language. DDL: Data Definition Language, aanmaken en wijzigen van o.a. tabelstrukturen. DAL: Data Access Language, selecteren en manipuleren van gegevens in tabellen. In principe database onafhankelijk, maar er zijn database specifieke verschillen, voornamelijk bij het gebruik van functies. De meeste keywords zijn dus bijvoorbeeld ook te gebruiken in Access, etc. Verschillende statements: SELECT: voor het selecteren van gegevens UPDATE: voor het bijwerken van gegevens INSERT: voor het toevoegen van gegevens DELETE: voor het verwijderen van gegevens In SIS is alleen het SELECT commando te gebruiken Querytraining | 7 maart 2013

Opbouw van een query: Basis Meest simpele vorm: SELECT <kolom> FROM <record> Voorbeeld: SELECT A.INSTITUTION, A.DESCR FROM PS_INSTITUTION_TBL A Alle records beginnen met PS of PS_. In de user interface zie je deze prefix niet. Voorbeeld: het record INSTITUTION heet in de database PS_INSTITUTION. Record aliassen: elk record dat in een query gebruikt wordt krijgt een alias, dit is een letter (A t/m Z), we zijn dus beperkt tot maximaal 26 tabellen in één query. Deze aliassen is om aan te geven uit welke tabel een kolom komt in het geval van dezelfde kolomnamen in meerdere tabellen. Hoofdletters: hoewel SQL niet case-sensitive is werken we in principe altijd met hoofdletters. De query editor doet dit voor de meeste dingen al standaard voor je. Querytraining | 7 maart 2013

Opbouw van een query: Criteria SELECT <kolom> FROM <record> WHERE <voorwaarde> Voorbeeld: SELECT A.EMPLID , A.FIRST_NAME, A.NAME_ROYAL_PREFIX, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.EMPLID = ‘500132190' Tussen enkele aanhalingstekens, dit doet SIS vaak zelf voor je. Hoofdlettergevoelig Datatype gevoelig, dit regelt SIS meestal wel voor je. Querytraining | 7 maart 2013

Opbouw van een query: Criteria Operators Simpel gelijk aan = [waarde] T,G,D,X groter dan > [waarde] T *,G,D in lijst IN (‘[waarde 1]’,’[waarde 2]’, ‘[etc]’) T,G,D niet in lijst NOT IN (‘[waarde 1]’,’[waarde 2]’, ..) T,G,D kleiner dan < [waarde] T*,G,D niet gelijk aan <> [waarde] T*,G,D niet groter dan <= [waarde] T*,G,D niet kleiner dan >= [waarde] T*,G,D tussen BETWEEN [waarde 1] AND [waarde 2] T*,G,D niet tussen NOT BETWEEN [waarde 1] AND [waarde 2] T*,G,D zoals LIKE [waarde] T niet zoals NOT LIKE [waarde] T Bij ‘zoals’ en ‘niet zoals’ kan je de wildcards % en _ gebruiken. %: meerdere tekens, _ exact één teken. Datatypes: T teken, G getal, D datum, X tekst, bij * kan je onverwachte resultaten krijgen. Geavanceerd bestaat bestaat niet in boom niet in boom is null is niet null Querytraining | 7 maart 2013

Opbouw van een query: Criteria Meerdere criteria EN (AND) OF (OR) EN NIET (AND NOT) OF NIET (OR NOT) Gebruik haakjes als je de volgorde wilt beïnvloeden Voorbeeld: SELECT A.EMPLID, A.BIRTHDATE, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.BIRTHDATE > TO_DATE('1980-01-01','YYYY-MM-DD‘) AND A.LAST_NAME LIKE 'Jans%' Querytraining | 7 maart 2013

Opbouw van een query: Criteria Voorbeelden: SELECT A.EMPLID , A.FIRST_NAME, A.NAME_ROYAL_PREFIX, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.EMPLID = ' 500132190 ' SELECT A.EMPLID , A.FIRST_NAME, A.NAME_ROYAL_PREFIX, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.LAST_NAME LIKE ‘Jans%' SELECT A.EMPLID, A.BIRTHDATE FROM PS_PERSONAL_DATA A WHERE A.BIRTHDATE = TO_DATE('1980-01-01','YYYY-MM-DD') OR A.LAST_NAME LIKE 'Jans%' Querytraining | 7 maart 2013

Opbouw van een query Sorteren ORDER BY <kolomnaam1>, <kolomnaam2>, etc. Standaard sortering is oplopend Wil je aflopend sorteren gebruik dan DESC achter de kolomnaam Voorbeeld: SELECT A.EMPLID, A.BIRTHDATE, A.LAST_NAME FROM PS_PERSONAL_DATA A WHERE A.BIRTHDATE > TO_DATE('1980-01-01','YYYY-MM-DD') AND A.LAST_NAME LIKE 'Jans%‘ ORDER BY A.LAST_NAME, A.FIRST_NAME Querytraining | 7 maart 2013

En nu in SIS Link S020TRA: http://tra-ws01.s020.sans-hosting.nl:8010/ Gebruiker-ID: QUERYCURSUS Wachtwoord: query4hva Rapportagehulpmiddelen > Query > Querybeheer Querytraining | 7 maart 2013

Opdracht 1 Maak een query die persoonsgegevens laat zien van alle studenten van wie de achternaam met ‘Jans’ begint. Opdracht 2 Breid de query uit opdracht 1 uit met de naam van het land voluit. Querytraining | 7 maart 2013

Het datamodel SIS bestaat uit heel erg veel records (honderden), de meeste records zijn onderling verbonden met relaties. Querytraining | 7 maart 2013

Opdracht 3 Opdracht 4 Opdracht 5 Breid de query uit opdracht 2 uit met de studieprogramma’s van de studenten. Opdracht 4 Breid de query uit opdracht 3 uit met de omschrijvingen van de studieprogramma’s. Opdracht 5 Breid de query uit opdracht 4 uit met de omschrijvingen van de loopbaan. Querytraining | 7 maart 2013

Opdracht 6 Maak een nieuwe query met daarin een overzicht van de studenten die ingeschreven staan op een studieactiviteit. Querytraining | 7 maart 2013

Queryontwerp Een overzicht van de diplomeringsregels van de studenten van een cohortgroep. Querytraining | 7 maart 2013

Prompts Prompts zijn variabelen die bij het uitvoeren van de query door de gebruiker ingevuld kunnen worden. Hiermee kan je criteria in een query maken zodat een query algemeen gebruikt kan worden. Er zijn vier soorten prompts 1. Verplicht met tabelvalidatie: dit is een vrij invulveld met een lookup-popup en validatie. 2. Niet verplicht met of zonder tabellookup: idem maar dan zonder validatie en optionele lookup-popup. 3. Ja/Nee: dit levert een checkbox op. 4. Xlat-tabel: alleen voor velden met een Xlat waarde, dit levert een dropdown selectbox op, altijd verplicht. Querytraining | 7 maart 2013

Opdracht 7 Breid de query uit opdracht 6 uit met een prompt op de studieactiviteit. Opdracht 8 Breid de query uit opdracht 6 uit met lookup prompts op institution, periode en studieactiviteit. Querytraining | 7 maart 2013

Outer joins Tot nu toe zijn alle joins normale joins (zgn. inner joins). Deze geven alleen resultaat terug als in beide tabellen waardes voorkomen. Het is echter mogelijk dat dit niet het geval is, bijvoorbeeld als van een student geen land bekend is zal hij met een inner join tussen PERSONAL_DATA en COUNTRY_TBL wegvallen uit de resultaten. De oplossing hiervoor is een outer join. Querytraining | 7 maart 2013

Opdracht 11 Maak een query die naam en het land van de studenten ‘500132190’ en ‘500647684’ ophaalt en toon hier de naam van het land voluit. Querytraining | 7 maart 2013

Expressies Functies in de query: ORACLE functies Meeste standaard Oracle functies worden ondersteund Bijvoorbeeld: UPPER, TO_CHAR, SUBSTR http:// www.oradev.com/ http://www.techonthenet.com/oracle/functions/index.php Afhankelijke logica (als-dan/if-then-else): ORACLE programmeerlogica Velden aan elkaar plakken, berekeningen, enz. Bijvoorbeeld: CONCAT, NVL, DECODE, CASE Querytraining | 7 maart 2013

Expressies – Oracle functies TO_CHAR: datum/nummer formatteren TO_CHAR(A.GRADE_DT,’DD-MONTH-YY’) geeft 01-May-12 UPPER: hoofdletters UPPER(‘Jansen’) geeft ‘JANSEN’ LOWER: kleine letters LOWER(‘Jansen’) geeft ‘jansen’ REPLACE: vervangen binnen een tekstveld REPLACE(A.NAME,’a,’o’). Als A.NAME = ‘Jansen’ geeft ‘Jonsen’ Querytraining | 7 maart 2013

Expressies – Oracle functies SUBSTR: teksten uit elkaar peuteren SUBSTR(<veld>,<start>,[<lengte>]) A.NAME = ‘Jansen’ SUBSTR(A.NAME,1,1) geeft ‘J’ SUBSTR(A.NAME,2) geeft ‘ansen’ SUBSTR(A.NAME,-1,1) geeft ‘n’ INSTR: de positie van een woord of karakter binnen een tekst INSTR(<veld>,<zoektekst>,[<positie>],[<hoeveelste>]) INSTR('ab ab ab','ab') = 1 INSTR('ab ab ab','ab',1,2) = 4 INSTR('abcabcabcdef','de') = 7 Querytraining | 7 maart 2013

Expressies – Oracle functies Teksten aan elkaar plakken (concateneren) Met de CONCAT functie: omslachtig, niet doen Met de dubbele pipe: || A.VOORNAAM || A.ACHTERNAAM: PeterJansen A.VOORNAAM || ‘ ’ || A.ACHTERNAAM: Peter Jansen Je kan functies ook nesten REPLACE(REPLACE(TO_CHAR(TO_DATE('01-JAN-12','DD-MON-YY'),'DD-Month-YYYY','nls_date_language = Dutch'),' ',''),'-',' ') Querytraining | 7 maart 2013

Expressies – Logica Logica met functies NVL, DECODE Logica door code CASE Querytraining | 7 maart 2013

Expressies – Logica NVL: Vervangt een NULL of lege waarde door de opgegeven default NVL(<veld>, <default>) NVL(A.VOLGNR, 1): als A.VOLGNR leeg is wordt 1 gebruikt DECODE: Vertalen van een waarde in een andere waarde DECODE(<veld>, <waarde>, <vertaalde waarde> [,…], [<default>]) DECODE(A.ENRL_ACTION_REASON, ’E’, ’Enrolled’, ’D’,’Dropped’, ’Waitlist’) Querytraining | 7 maart 2013

Expressies – Logica CASE: als-dan logica CASE WHEN <voorwaarde> THEN <doe iets> […] [ELSE] END CASE WHEN A.ENRL_STATUS_REASON = ‘D’ THEN ‘Dropped’ WHEN A.ENRL_STATUS_REASON = ‘W’ THEN ‘Waitlist’ WHEN A.ENRL_STATUS_REASON = ‘E’ THEN ‘Enrolled’ ELSE ‘Unknown status ’ || A.ENRL_STATUS_REASON END Querytraining | 7 maart 2013

Opdracht 9 Opdracht 10 Opdracht 11 Maak een query die de voornaam en achternaam van de student voluit in één veld geeft, voor alle studenten van wie de naam begint met ‘Berg’. Opdracht 10 Pas de query uit opdracht 9 aan zodat ook de tussenvoegsels correct in het ene naamveld komen te staan. Opdracht 11 Pas de query uit opdracht 10 aan zodat ook de tussenvoegsels correct in het ene naamveld komen te staan. Querytraining | 7 maart 2013