handleiding S(impel)QL
bladzijde 1
Inhoudsopgave Inhoudsopgave.................................................................................................................................. 1 Het doel van S(impel)QL ................................................................................................................... 3 Over de werking van S(impel)QL....................................................................................................... 4 De bouwstenen van S(impel)QL........................................................................................................ 5 Queries en scripts ............................................................................................................................. 7 Het gebruik van de editor .................................................................................................................. 9 Betekenis van toetsen en toetscombinaties..................................................................................... 11 Verplaatsen en dupliceren van tekst................................................................................................ 12 Queries of scripts opvragen en bewaren ......................................................................................... 13 Queries of scripts wissen................................................................................................................. 15 Het gebruik van commentaar........................................................................................................... 16 Syntax Highlight gebruiken.............................................................................................................. 17 Uitvoer als gevolg van een resultaatquery ....................................................................................... 18 Uitvoer als gevolg van een mutatiequery......................................................................................... 20 Uitvoer als gevolg van een foutief geformuleerde query .................................................................. 21 Exporteren naar MS Word............................................................................................................... 22 Uitvoer als gevolg van een script..................................................................................................... 23 Het gebruik van parameters ............................................................................................................ 24 Transacties...................................................................................................................................... 26 Datums in Jet SQL .......................................................................................................................... 28 Datumconversie toepassen ............................................................................................................. 29 Ontwerp van de database ............................................................................................................... 30 Verbinding maken met een database .............................................................................................. 31 Met een wachtwoord beveiligde database ....................................................................................... 32 Databasewachtwoord wijzigen ........................................................................................................ 33 Nieuwe database maken ................................................................................................................. 34 Onlangs geopende databases......................................................................................................... 35 Een verbinding verbreken................................................................................................................ 36 Een werkgroepinformatiebestand openen ....................................................................................... 37 Een nieuw werkgroepinformatiebestand maken .............................................................................. 39 Informatie over gebruikers en groepen ............................................................................................ 40 Gedetailleerde metadata opvragen ................................................................................................. 41 Voorbeelddatabase ......................................................................................................................... 42 Metadata van tabellen: ontwerp....................................................................................................... 44 Metadata van tabellen: primaire sleutel ........................................................................................... 45 Metadata van tabellen: refererende sleutels .................................................................................... 46 Metadata van tabellen: alternatieve sleutels .................................................................................... 47 Metadata van tabellen: check constraints........................................................................................ 48 Metadata van tabellen: indices ........................................................................................................ 49 Metadata: ontwerp van views .......................................................................................................... 50 Metadata: ontwerp van procedures ................................................................................................. 51 Geschiedenis .................................................................................................................................. 52 Queries uit geschiedenis ophalen.................................................................................................... 53 Eén of meerdere queries uit de geschiedenis verwijderen............................................................... 54 Geschiedenis wissen....................................................................................................................... 55 Script genereren.............................................................................................................................. 56 Comprimeren en herstellen ............................................................................................................. 58 Voorkeurinstellingen........................................................................................................................ 59 S(impel)QL Help.............................................................................................................................. 63
handleiding S(impel)QL
bladzijde 2
Jet SQL Help................................................................................................................................... 64 Info opvragen .................................................................................................................................. 65 Indicatie van de queryperformance ................................................................................................. 66 Twee gelijktijdige sessies op één computer..................................................................................... 67 Het gebruik van de registry van Windows........................................................................................ 68 Gegevenstypen van Jet SQL........................................................................................................... 69 Gereserveerde woorden (Jet SQL).................................................................................................. 71 Gereserveerde woorden (VBA-functies) .......................................................................................... 73 De auteur ........................................................................................................................................ 74
handleiding S(impel)QL
bladzijde 3
Het doel van S(impel)QL S(impel)QL is in beginsel een editor voor hetzelfde databasemanagementsysteem (dbms) als waar ook MS Access™ gebruik van maakt. Dit dbms wordt aangeduid met de naam Jet Engine. Deze Jet Engine communiceert met de buitenwereld door middel van de taal Jet SQL. De kracht van deze taal wordt vaak onderschat en zelfs miskend. Nou is die taal slechts een middel om de Jet Engine te benaderen. Miskenning van de mogelijkheden van Jet SQL staat dan ook gelijk aan een onderwaardering van de mogelijkheden van de Jet Engine. Ook MS Access kent een editor die het mogelijk maakt de Jet Engine rechtstreeks aan te spreken. Deze editor kent een aantal beperkingen. S(impel)QL poogt een oplossing te bieden voor de tekortkomingen die de editor van MS Access vertoont maar wil zich zeker niet opwerpen als concurrent van dit zo bijzonder krachtige pakket waar het gaat om het maken van rapporten en het ontwerpen van invoerschermen. De afkorting SQL staat voor structured query language. Naast de functie van editor voor deze taal kent S(impel)QL een aantal aspecten die bedoeld zijn om de omgang met databases te vergemakkelijken. Deze handleiding beschrijft zowel de editor als deze functionaliteiten. S(impel)QL is bedoeld voor al diegenen die thuis willen raken in de wereld van databases en zich in de taal sql willen bekwamen zonder daarbij kostbare hulpmiddelen te hoeven gebruiken. S(impel)QL veronderstelt slechts de aanwezigheid van de Jet Engine. Dit dbms is onder andere onderdeel van MS Access. Het is dan ook voldoende als MS Access op uw pc geïnstalleerd is om onmiddellijk met S(impel)QL aan de slag te kunnen.
handleiding S(impel)QL
bladzijde 4
Over de werking van S(impel)QL S(impel)QL brengt een verbinding met de Jet Engine tot stand door middel van de ADO techniek (ActiveX Data Objects). Via ADO is het echter niet mogelijk om alle metagegevens (gegevens over gegevens) van een database op te vragen; slechts een deel van die gegevens staat via ADO ter beschikking. Daarom gebruikt S(impel)QL – naast ADO – een tweede techniek (Extended Active Data Objects of ADOX) waarmee de ontbrekende metagegevens achterhaald kunnen worden. Het gebruik van ADO en ADOX naast elkaar vereist twee simultane verbindingen met een database. Dat levert een paar kleine problemen op. Op de eerste plaats kan S(impel)QL tijdens het normale werk (het uitvoeren van queries) de database niet exclusief benaderen. Er zijn immers steeds twee verbindingen aanwezig. Exclusief openen van een database is nauwelijks nodig. Slechts bij wijziging of toekennen van een databasewachtwoord is het een vereiste. Deze situatie is opgelost door – als S(impel)QL een sql statement gewaar wordt dat exclusief openen van de database vereist – de bestaande verbindingen tijdelijk te sluiten, de database exclusief te openen, de gevraagde bewerking uit te voeren en vervolgens de oorspronkelijke situatie weer te herstellen. De gebruiker merkt van dit alles hoegenaamd niets. Een tweede probleem is de synchronisatie van beide verbindingen. De eerste verbinding die gemaakt wordt bepaalt hoe andere verbindingen de gegevens in de database zien. Er is gekozen voor de meest gangbare manier waarbij andere gebruikers (en dus ook de tweede verbinding) wijzigingen in de database pas gewaar worden nadat deze bevestigd zijn (readcommitted). Nou is de tweede verbinding niet geïnteresseerd in de gegevens zelf maar juist in de metagegevens. Als tijdens een transactie de metagegevens door de eerste verbinding gewijzigd worden krijgt de tweede verbinding deze wijzigingen pas te zien op het moment dat de transactie wordt afgesloten. Om niet te hoeven twijfelen aan de juistheid van de metagegevens is het raadplegen ervan gedurende de tijd dat transacties nog niet afgehandeld zijn onmogelijk.
handleiding S(impel)QL
bladzijde 5
De bouwstenen van S(impel)QL De indeling van het hoofdvenster van S(impel)QL bestaat uit vier onderdelen: • • • •
het uitvoergebied waarin de resultaten van queries en eventuele foutmeldingen en andere mededelingen worden gedaan de sql-editor waarin de queries geformuleerd worden voordat ze aan de Jet Engine worden aangeboden de menubalk waar vrijwel alle functies van het pakket zijn terug te vinden de werkbalk waar de belangrijkste functies van het pakket zijn opgenomen
Tussen de sql-editor en het uitvoergebied bevindt zich een scheidingslijn welke in verticale richting binnen zekere grenzen versleept kan worden met de muis. Op die manier laat zich de hoogteverhouding tussen de beide aangrenzende bouwstenen instellen. •
Het uitvoergebied van S(impel)QL is het deel van het venster waar de respons van de Jet Engine op queries en scripts getoond wordt.
•
De sql-editor is een editor die een query al tijdens het intoetsen analyseert. Alleen queries die zich in de sql-editor bevinden kunnen worden aangeboden aan de Jet Engine. Het is niet mogelijk om ‘ongezien’ queries ten uitvoer te brengen.
handleiding S(impel)QL
bladzijde 6
•
De menubalk is het centrale deel van S(impel)QL waarmee bijna alle functies van het programma kunnen worden geactiveerd. Voor enkele speciale functies zijn slechts sneltoetsen beschikbaar.
•
Ten behoeve van enkele veelgebruikte functies is voorzien in een werkbalk met daarop knoppen om deze functies te activeren. De knoppen voegen op zichzelf niets toe aan de mogelijkheden van S(impel)QL maar dienen uitsluitend om de toegang tot enkele functies te vereenvoudigen.
handleiding S(impel)QL
bladzijde 7
Queries en scripts Het woord query stamt uit het Engels en betekent letterlijk vraag. Het woord duidt op het vragende karakter van sql. In de loop der jaren is men het woord query meer en meer gaan gebruiken als algemene aanduiding van een in sql geformuleerde opdracht. Zo spreekt men van toevoegqueries, bijwerkqueries en verwijderqueries. Het daarin opgenomen meervoud van query heeft niks meer te maken met de oorspronkelijke betekenis van het woord. In S(impel)QL gebruiken we het woord voor elke in sql geformuleerde opdracht die uit precies één statement bestaat. Een script is een verzameling van queries. Nou kan een script uit vele queries bestaan maar er zijn ook scripts van precies één query denkbaar. Een query is dus tevens een script maar een script is niet per definitie een query! Om verwarring te voorkomen reserveert S(impel)QL het woord script voor een reeks sql-statements die uit meer dan één query bestaat. In de meeste sql-dialecten wordt elke query afgesloten met een puntkomma. In S(impel)QL is dat niet nodig. Wanneer sprake is van een script moeten de deeluitmakende queries door middel van een puntkomma van elkaar gescheiden worden. De puntkomma wordt door S(impel)QL gebruikt om de queries één voor één aan de Jet Engine te kunnen aanbieden. Het is dan ook niet nodig – maar mag wel – om de laatste query van een script af te sluiten met een puntkomma. De illustratie toont twee scripts die door S(impel)QL als identiek worden beschouwd.
handleiding S(impel)QL
bladzijde 8
Voor het aanbieden van queries of scripts aan de Jet Engine heeft S(impel)QL drie werkwijzen beschikbaar. U kunt kiezen uit • • •
de weg via het menu "Query", "Uitvoeren" de toets van de werkbalk de functietoets F10
Voor alle drie deze mogelijkheden geldt dat ze slechts beschikbaar zijn op momenten dat de sqleditor van inhoud voorzien is.
handleiding S(impel)QL
bladzijde 9
Het gebruik van de editor De editor is speciaal ontwikkeld voor het noteren van statements waarbij sommige toetsaanslagen een bijzonder effect vertonen. Enter De cursor wordt als gebruikelijk op de volgende regel geplaatst maar gaat daarbij niet naar het begin van de regel maar naar die positie waar met de vorige regel begonnen werd. Op die manier wordt een fraaie layout van de tekst bereikt zonder dat daarbij onnodig veel spaties moeten worden ingetikt. De afbeelding toont de positie van de cursor vóór en na het bedienen van de entertoets.
Tab In een normale editor springt de cursor bij het gebruik van de tabtoets naar vooraf ingestelde posities. In de editor van S(impel)QL worden de tabstops ontleend aan de beginposities van woordjes op de vorige regel. De afbeelding illustreert het gebruik van de tabtoets waarbij de cursorpositie vóór en na de toetsaanslag is weergegeven.
handleiding S(impel)QL
bladzijde 10
Als er op deze manier geen tabstops meer te vinden zijn betekent een tabtoets automatisch acht spaties. Backspace De backspacetoets werkt onder op de gebruikelijke manier waarbij de letter die aan de cursor voorafgaat wordt gewist. Wanneer de cursor vlak voor de eerste letter van de tekst van de regel staat (spaties niet meegerekend) is de werking totaal verschillend van het normale patroon en wordt de tekst van de regel zodanig naar voren verplaatst dat hij in lijn is met de voorgaande regel. De afbeelding illustreert de positie van de cursor vóór en na het bedienen van de backspacetoets.
Nogmaals de backspacetoets bedienen herhaalt dit voor de regel dáárboven, enzovoorts. Het voorbeeld illustreert hoe de tekst bij gebruik van de backspacetoets zodanig verplaatst wordt dat het woordje WHERE precies onder het woordje SELECT komt te staan.
handleiding S(impel)QL
bladzijde 11
Betekenis van toetsen en toetscombinaties Naast de gebruikelijke mogelijkheden van de cursorbesturingstoetsen geldt voor een aantal toetsen en toetscombinaties een bijzondere betekenis. Ctrl → Ctrl ← Ctrl ↑ Ctrl ↓ Home End Ctrl Home Crtl End
Cursor naar beginpositie van volgend woord Cursor naar beginpositie van vorig woord Verticaal scrollen (indien mogelijk) Verticaal scrollen (indien mogelijk) Cursor naar het begin van de regel Cursor naar het eind van de regel Cursor naar het begin van de tekst Cursor naar het eind van de tekst
Worden bovenstaande toetsaanslagen gecombineerd met het gebruik van de shifttoets, dan wordt de tekst tussen de huidige en nieuwe cursorpositie geselecteerd of aan een al bestaande selectie toegevoegd. Ctrl A Ctrl X Ctrl C Ctrl V Ctrl Z Ctrl Y
Alles selecteren Naar klembord verplaatsen van geselecteerde tekst Naar klembord kopiëren van geselecteerde tekst Vanaf klembord plakken Ongedaan maken tot meer dan 100 niveaus Regel wissen
handleiding S(impel)QL
bladzijde 12
Verplaatsen en dupliceren van tekst Geselecteerde tekst kan met behulp van de muis naar een nieuwe positie versleept worden. Wordt daarbij tevens de Ctrl-toets ingedrukt, dan is er sprake van kopiëren.
handleiding S(impel)QL
bladzijde 13
Queries of scripts opvragen en bewaren Om een query of script als tekstbestand te bewaren en later weer op te vragen voorziet de werkbalk in de volgende knoppen:
Met deze knop opent u een eerder opgeslagen query of script. Doorgaans worden zijn queries of scripts te herkennen aan de extensie “.sql” maar ook andere extensies zijn mogelijk. De inhoud van het geopende bestand vervangt de eventueel aanwezige inhoud in de sql-editor; de naam van de geopende query of script verschijnt boven de werkbalk.
De knop om in de sql-editor aanwezige queries of scripts te bewaren heeft twee betekenissen: opslaan en opslaan als. Welke functie de knop uitvoert is afhankelijk van de aanwezigheid van een benaming boven de werkbalk. Staat daar niets, dan wordt opslaan als uitgevoerd en alsnog om een naam gevraagd. Is daarentegen wel een naam aanwezig, dan zal de query onder die naam worden opgeslagen waarbij de inhoud van het bestaande bestand overschreven wordt.
handleiding S(impel)QL
bladzijde 14
De bewerkingen Openen, opslaan en opslaan als van queries en scripts kunnen eveneens via het querymenu worden uitgevoerd.
handleiding S(impel)QL
bladzijde 15
Queries of scripts wissen De knop van de werkbalk wist de volledige inhoud van de editor waarbij bovendien een eventueel aanwezige bestandsnaam vlak boven de werkbalk geannuleerd wordt. U begint dan ook met een volstrekt schone lei.
handleiding S(impel)QL
bladzijde 16
Het gebruik van commentaar Commentaar in queries of scripts is in S(impel)QL toegestaan. Er zijn twee manieren om queries of een script van commentaar te voorzien. De eerste manier is het gebruik van twee mintekens. Alles tot het einde van de regel wordt opgevat als kanttekening. Bij de tweede manier wordt commentaar ingeleid door de combinatie van een slash en een asterisk (/*). Vanaf daar geldt alles als commentaar totdat de omgekeerde combinatie ontmoet wordt (*/).
Commentaar is geen eigenschap van Jet SQL en wordt door S(impel)QL verwijderd vóórdat de query of queries aan de Jet Engine worden aangeboden. Het gebruik van commentaar is uiterst zinvol als een query of script in de vorm van een tekstbestand bewaard wordt. Bij hergebruik kunnen aantekeningen verhelderend werken.
handleiding S(impel)QL
bladzijde 17
Syntax Highlight gebruiken De sql-editor herkent een groot aantal woorden dat behoort tot het taaleigene van Jet SQL. Daarnaast worden de functies van Visual Basic for Applications (VBA) die door de Jet Engine ondersteund worden herkend. Beide soorten gereserveerde woorden worden in de editor van S(impel)QL vet weergegeven. Tekstuele constanten, getallen en datumconstanten worden in een blauwe kleur afgebeeld terwijl de kleur rood gereserveerd is voor operatoren en interpunctietekens. Commentaar wordt in een groene kleur weergegeven. De Highlightfunctie is standaard ingeschakeld maar is uit te zetten door gebruik van de menuoptie "Query", "Syntax Highlight" of door middel van de functietoets F8. De functie laat zich op dezelfde manier weer activeren.
De in S(impel)QL gebruikte sql-editor en het idee om de syntax te benadrukken zijn gebaseerd op een door Michael Hieke en Martin Waldenburg ontwikkeld principe.
Zie ook:
Het gebruik van commentaar
handleiding S(impel)QL
bladzijde 18
Uitvoer als gevolg van een resultaatquery Als één enkele query wordt uitgevoerd die herkend wordt als een opdracht met een resultaat wordt het resultaat in tabelvorm weergegeven in het uitvoergebied. Queries met een dergelijk resultaat zijn onder ander SELECT-queries en TRANSFORM-queries maar ook geschikte procedures (EXECUTE) kunnen resulteren in een tabel.
De breedte van de kolommen wordt in eerste instantie bepaald door het type van de kolom. De Jet Engine reserveert voor kolomexpressies zeer royaal bemeten typen. Als dergelijke expressies zonder meer worden afgebeeld nemen ze de hele breedte van het venster in beslag. Daarom is de kolombreedte naar boven toe begrensd tot een waarde die in S(impel)QL aangeduid wordt met de term initiële kolombreedte. Deze initiële kolombreedte kan in het venster voor de voorkeurinstellingen worden aangepast. U kunt de kolombreedte voor de tabel die zichtbaar is in het uitvoervenster ook rechtstreeks wijzigen door de kolombegrenzing met de muis te verslepen.
Als – terwijl een resultaat getoond wordt – de inhoud van de sql-editor wordt gewijzigd, 'verbleekt' de uitvoer maar blijft evenwel leesbaar. Op dat moment komt de inhoud van het uitvoergebied niet noodzakelijkerwijs overeen met de formulering in de sql-editor.
handleiding S(impel)QL
bladzijde 19
De manier waarop datumgegevens in de tabel in het uitvoergebied worden afgebeeld is afhankelijk van het bij de voorkeurinstellingen aangegeven format voor datumweergave. Zie ook:
Voorkeurinstellingen
handleiding S(impel)QL
bladzijde 20
Uitvoer als gevolg van een mutatiequery Queries die de database kunnen muteren worden ingeleid met INSERT, UPDATE of DELETE. Als het een enkele mutatiequery betreft wordt de respons vlak boven de werkbalk afgebeeld en wordt in het uitvoergebied melding gemaakt van een geslaagde query. De respons naar aanleiding van mutatiequeries in een script verschijnt daarentegen alleen in het uitvoergebied.
handleiding S(impel)QL
bladzijde 21
Uitvoer als gevolg van een foutief geformuleerde query In het geval S(impel)QL een fout in de query ontdekt of de respons van de Jet Engine een foutmelding betreft wordt dit aan de gebruiker meegedeeld.
Fouten in een queryformulering kunnen onzinnige queries betreffen die met geen mogelijkheid door de Jet Engine verwerkt kunnen worden. Er kunnen in een query – bijvoorbeeld als gevolg van tikfouten – ook niet herkende woorden staan. Dergelijke woorden worden door de Jet Engine opgevat als parameters en kunnen – als dat bij de voorkeurinstellingen is aangegeven – alsnog door een constante waarde worden vervangen. Zie ook:
Gebruik van parameters
handleiding S(impel)QL
bladzijde 22
Exporteren naar MS Word Zolang het tabelvormige resultaat van een query zichtbaar is kan gebruik gemaakt worden van de mogelijkheid om dit resultaat te exporteren naar een afzonderlijk MS Word document. Bij de voorkeurinstellingen kunt u een aantal parameters met betrekking tot het uiterlijk aangeven. Het exporteren zelf gebeurt door de menukeuze "Query", "Exporteren", "MS Word" of met behulp van de functietoets F9. Een voorbeeld van een export: land
hoofdstad
Ierland België Spanje
Dublin Brussel Madrid
Andere exportmogelijkheden zijn rechtstreeks door middel van sql-opdrachten te realiseren. Jet SQL kent een vorm van SELECT-queries waarmee resultaten naar HTML of Excel kunnen worden omgezet.
Zie ook: Voorkeurinstellingen
handleiding S(impel)QL
bladzijde 23
Uitvoer als gevolg van een script In geval de Jet Engine een aantal queries direct na elkaar te verwerken krijgt is – in de terminologie van S(impel)QL – sprake van een script. In het uitvoervenster verschijnen na elkaar telkens de formulering van de query en de vertaling van de reactie van de Jet Engine.
Merk op dat bij selectqueries die deel uitmaken van een script (daar is zelden of nooit een reden voor te bedenken) slechts het aantal rijen dat de query oplevert wordt meegedeeld. Bij foutmeldingen wordt het script niet onderbroken maar wordt de foutmelding in een afwijkende kleur getoond (zie het voorbeeld). Het gebruik van parameters in een script is niet toegestaan. Zie ook: Het gebruik van parameters
handleiding S(impel)QL
bladzijde 24
Het gebruik van parameters Als Jet SQL een woord in een query niet herkent als een gereserveerd woord, een tabelnaam, een kolomnaam of iets dergelijks wordt het woord als parameter beschouwd. In de praktijk blijken vele niet herkende woordjes te herleiden te zijn tot fouten bij het intikken van de query. In S(impel)QL kan het gebruik van parameters worden uitgesloten (dat is de standaardinstelling). Een query waarin een parameter (of tikfout) ontdekt wordt, wordt niet uitgevoerd. In plaats daarvan krijgt de gebruiker een foutmelding.
Via de voorkeurinstellingen kan worden aangegeven parameters wél te willen toelaten. In geval parametergebruik toegestaan is reageert S(impel)QL op geheel andere wijze waarbij via een dialoogvenster om de actuele waarden voor de parameters gevraagd wordt:
handleiding S(impel)QL
bladzijde 25
Bij parameters voor een tekstueel gegevenstype moeten de aanhalingstekens achterwege blijven. Een datumgegeven moet in een voor Windows herkenbaar datumformaat worden opgegeven en is onafhankelijk van de instellingen van S(impel)QL en Jet SQL (dit, in tegenstelling tot het invoeren van datumgegevens in de sql-editor).
S(impel)QL staat het gebruik van maximaal 10 parameters per query toe. Parametergebruik bij het uitvoeren van scripts wordt niet ondersteund. Zie ook: Voorkeurinstellingen
handleiding S(impel)QL
bladzijde 26
Transacties Elke transactie wordt ingeleid door de sql-opdracht BEGIN TRANSACTION. Zodra de opdracht wordt herkend verhoogt S(impel)QL het transactieniveau. In totaal zijn er 6 van dergelijke niveaus. Zolang geen transacties gestart zijn heeft het transactieniveau de waarde 0 (autocommit). Dit is de normale situatie. Een hogere waarde van het transactieniveau (er is dan sprake van niet afgesloten transacties) wordt op de menubalk van S(impel)QL aangegeven.
U verlaagt het transactieniveau met behulp van de instructies COMMIT of ROLLBACK. Probeert u S(impel)QL af te sluiten of een database te sluiten bij een transactieniveau > 0 wordt u door middel van een speciaal venstertje gevraagd welk van beide instructies u toe wilt passen.
handleiding S(impel)QL
bladzijde 27
Let op: uw keuze geldt voor alle niveaus. Het is via het afgebeelde venster niet mogelijk per niveau een keuze voor COMMIT of ROLLBACK te maken. Wel kunt u terugkomen op het besluit om de verbinding te verbreken of het programma af te sluiten door het venstertje te annuleren. Daarvoor gebruikt u de escapetoets. Bij een transactieniveau > 0 is een aantal functies van S(impel)QL niet beschikbaar. Dat heeft te maken met het feit dat Jet SQL in tegenstelling tot sommige andere databasemanagementsystemen niet alleen mutaties van tabellen in transacties betrekt maar ook wijzigingen in de structuur van de database. Alle wijzigingen worden pas zichtbaar voor andere verbindingen op het moment dat op transactieniveau 0 is teruggekeerd. S(impel)QL betrekt sommige metadata uit een tweede verbinding. Wanneer er sprake is van openstaande transacties is niet gegarandeerd dat de tweede verbinding de juiste metadata ziet. Niet beschikbaar zijn het ontwerpvenster (F10), de gedetailleerde metadata en de hulpprogramma’s. Evenmin kan informatie over groepen en gebruikers worden opgevraagd. Zie ook: Gedetailleerde metadata zichtbaar maken Ontwerp van de database
handleiding S(impel)QL
bladzijde 28
Datums in Jet SQL De Jet Engine interpreteert gegevens die tussen #-tekens geschreven zijn als gegevens van het datumtype (DATE). Daarbij wordt uitgegaan van de Amerikaanse notatie. Als voorbeeld nemen we 7 maart 1998. We kunnen die datum op verschillende manieren in Jet SQL noteren. Onder andere als: #7 mar 1998# #7 march 1998# #3-7-1998# #03-07-1998# #03-07-98# De Jet Engine trekt zich daarbij niets aan van de land- en taalinstellingen van Windows maar hanteert zijn eigen – beduidend minder flexibele - systeem. Er schuilen een paar addertjes onder het gras. #03-07-1998# wordt geïnterpreteerd als 7 maart; daarentegen is #13-07-1998# weer gewoon 13 juli. Blijkbaar wordt naar een andere systematiek omgeschakeld als interpretatie volgens het Amerikaanse systeem tot een niet bestaande datum leidt. Op het eerste gezicht even onbegrijpelijk is de manier waarop een tweecijferige aanduiding van het jaartal verwerkt wordt. #03-07-25# wordt gezien als 7 maart 2025 terwijl de interpretatie van #03-0732# weer 7 maart 1932 is. De Jet Engine maakt gebruik van 30 als een soort draaipunt (pivot). Alles onder 30 wordt geïnterpreteerd als 20xx. Is het tweecijferige jaartal daarentegen groter of gelijk aan dertig wordt het in de vorige eeuw geplaatst en gezien als 19xx. Het pivotjaar is daarbij een vast getal dat niet gewijzigd kan worden. Zie ook Datumconversie toepassen
handleiding S(impel)QL
bladzijde 29
Datumconversie toepassen Om Nederlandstalige maandaanduidingen en een Nederlandse volgorde binnen datumgegevens te kunnen hanteren voorziet S(impel)QL is een conversiemogelijkheid. Deze optie is inschakelbaar in het tabblad “Editor” van het voorkeurenvenster dat opgeroepen kan worden via menuonderdeel “Extra”, “Opties”. Standaard is deze optie ingeschakeld.
Bij ingeschakelde datumconversie zal S(impel)QL alle als datum genoteerde constanten als Nederlandstalige datum interpreteren en transformeren naar het voor de Jet Engine begrijpelijke formaat. Zodra S(impel)QL ontdekt dat het geen geldige datum betreft, wordt het gegeven onverkort naar de Jet Engine doorgetuurd. Geldige datumaanduidingen voor S(impel)QL (conversie ingeschakeld) zijn gegevens als #2 mrt 04#, #2-3-04#, #02-03-2004#, #2 maart 2004#, #2/3/4#, #2/maart/04#, #2 3 4# enz. #2 mar 04# daarentegen wordt niet als Nederlandstalige datum herkend en derhalve onverkort doorgestuurd naar de Jet Engine die de datum dan alsnog correct interpreteert. Het tabblad “Editor” biedt bovendien de mogelijkheid om aan te geven wanneer een tweecijferig jaartal in deze of de vorige eeuw geïnterpreteerd met worden. Getallen, kleiner dan of gelijk aan het bij de pivot aangegeven getal, worden in de huidige eeuw geplaatst. Bestaat de aanduiding van het jaar uit 2 cijfers en vormen die cijfers een getal dat groter is dan de pivot, dan wordt het getal geïnterpreteerd als een aanduiding van een jaartal uit de 20e eeuw. Zie ook: Datums in JetSQL
handleiding S(impel)QL
bladzijde 30
Ontwerp van de database Via de optie "Ontwerp tonen" in het menu "Extra" kan de gebruiker beschikken over de namen en de kolomindeling van tabellen en views in de database. Het ontwerp kan eveneens zichtbaar of de functietoets F10. gemaakt worden met behulp van de knop De keuze tussen tabellen en views kan gemaakt worden met de uiterst links op de werkbalk geplaatste knoppen waarna in de combobox de gewenste tabel worden.
of view
geselecteerd kan
Voorwaarde voor het verschijnen van het ontwerpvenster is wel dat er een verbinding met een database tot stand gebracht is waarbij er tevens geen onafgehandelde transacties zijn. Van een compleet lege database kunt u evenmin het ontwerp opvragen.
Het ontwerpvenster geeft een samenvatting van de belangrijkste metadata (gegevens over gegevens). Het is mogelijk de tabelnamen en kolomnamen vanaf het ontwerpvenster te verslepen naar de editor. Als de namen spaties bevatten of overeenkomen met een voor Jet SQL gereserveerd woord worden ze daarbij automatisch tussen vierkante haken geplaatst. Om het ontwerpvenster te verbergen kiest u in het menu "Extra", "Ontwerp verbergen". Het ontwerpvenster verdwijnt eveneens door nogmaals de knop te bedienen of door de functietoets F10 te gebruiken. Zie ook: Gedetailleerde metadata zichtbaar maken Gegevenstypen in Jet SQL
handleiding S(impel)QL
bladzijde 31
Verbinding maken met een database Vóórdat queries aan een database kunnen worden aangeboden moet eerst een verbinding met die database tot stand worden gebracht. Door in het menuonderdeel "Database" voor de optie "Verbinding maken..." te kiezen kunt u op de in Windows gebruikelijke manier uw keuze maken. In plaats van de aangegeven menukeuze kunt u voor dit doel de sneltoets Ctrl+O gebruiken. In het in de databasewereld gebezigde jargon worden uitdrukkingen als 'verbinden met een database', 'aanmelden bij een database' en 'een database openen' gebezigd. Alle drie deze aanduidingen betekenen hetzelfde. In deze handleiding worden ze door elkaar gebruikt. Om een database te openen kan eveneens gekozen worden uit een lijst met onlangs geopende databases. Een door de Jet Engine gemaakte database heeft doorgaans de extensie ".mdb" maar noodzakelijk is dat niet. U kunt ook een database waarvan het bijbehorende bestand een andere extensie heeft openen. Als de verbinding geslaagd is geeft S(impel)Ql daarvan een eenvoudige mededeling in het uitvoergebied. Tegelijkertijd wordt de naam van de database in de titelbalk getoond.
Zie ook: Onlangs geopende databases
handleiding S(impel)QL
bladzijde 32
Met een wachtwoord beveiligde database Indien u verbinding zoekt met een door een wachtwoord beveiligde database zal S(impel)QL u om dit wachtwoord vragen.
Verwar het begrip databasewachtwoord niet met gebruikerswachtwoord. Een eventueel databasewachtwoord is voor alle gebruikers hetzelfde. Een databasewachtwoord wordt opgeslagen in databasebestand en niet in het werkgroepinformatiebestand. Het aanmelden bij een werkgroep is daarom niet noodzakelijk. Zie ook: Een werkgroepinformatiebestand openen
handleiding S(impel)QL
bladzijde 33
Databasewachtwoord wijzigen Het wijzigen van het wachtwoord van een met een wachtwoord beveiligde database of het aanbrengen van een wachtwoord op een onbeveiligde database kan alleen als de database voor exclusief gebruik geopend is. Om het wachtwoord te kunnen wijzigen zal S(impel)QL de gedeelde verbinding met de database tijdelijk verbreken om onmiddellijk daarna de verbinding exclusief tot stand te brengen. Na wijziging van het wachtwoord of als een wijziging onmogelijk is omdat de exclusieve verbinding niet tot stand gebracht kan worden, wordt de oorspronkelijke situatie hersteld.
Het is niet mogelijk het databasewachtwoord te wijzigen als er onafgehandelde transacties aanwezig zijn. Tijdens het uitvoeren van een script is het in S(impel)QL niet mogelijk om de database voor exclusief gebruik te openen. Een in een script vervatte sql-opdracht om het databasewachtwoord te wijzigen levert dan ook een foutmelding.
Zie ook: Transacties Met een wachtwoord beveiligde database
handleiding S(impel)QL
bladzijde 34
Nieuwe database maken Door in het menu "Database", "Nieuw..." te kiezen maakt u een nieuwe (lege) database onder een willekeurige naam. U kunt daarbij kiezen uit Engine Type 4 databases (zoals in Access 97) of Engine Type 5 databases (zoals in Access 2000). Als u geen extensie vermeldt zal S(impel)QL automatisch de extensie “.mdb” toevoegen.
Nadat de database gemaakt is wordt automatisch een verbinding met de nieuwe database tot stand gebracht. Een reeds geopende database wordt gesloten vóórdat het afgebeelde dialoogvenster getoond wordt. Dat betekent dat – ook als u de knop “Annuleren” bedient – een bestaande verbinding verbroken is. Het menuonderdeel dat leidt tot het maken van een nieuwe database is niet beschikbaar als er nietafgehandelde transacties zijn.
handleiding S(impel)QL
bladzijde 35
Onlangs geopende databases S(impel)QL houdt een lijst bij van maximaal de vijf laatst verbonden databases. Deze lijst (most recently used databases) is zichtbaar in het menuonderdeel “Database”. De lijst bevat alleen de namen van de betreffende database. Via een tooltip wordt het volledige pad naar de database getoond en wordt tevens – in het geval bij de verbinding een werkgroepinformatiebestand werd gebruikt – de naam van het werkgroepinformatiebestand en de gebruikersnaam waaronder bij de database werd aangemeld zichtbaar gemaakt.
Selecteert u een database uit deze lijst, dan wordt niet alleen de database zelf geopend, maar tevens de betreffende werkgroep waarbij de gebruikersnaam al is ingevuld. U hoeft bij het gebruik van de lijst dan ook niet eerst het werkgroepinformatiebestand te openen. De lijst van onlangs geopende databases kan niet gebruikt worden als de huidige verbinding nietafgehandelde transacties kent. Wanneer een databasebestand en/of het eventueel daarbij behorende werkgroepinformatiebestand verwijderd wordt verdwijnt de aanduiding van deze database vanzelf uit de lijst van onlangs geopende databases. Zie ook: Een werkgroepinformatiebestand openen
handleiding S(impel)QL
bladzijde 36
Een verbinding verbreken Slechts in een enkel geval zult u van de menuoptie "Database", "Verbinding verbreken" gebruik hoeven te maken. Dit is slechts nodig wanneer u één van de opties met betrekking tot een werkgroepinformatiebestand wenst te gebruiken en een database geopend is. Op momenten dat u een nieuwe verbinding tot stand brengt of besluit S(impel)QL te verlaten leidt dit automatisch tot het verbreken van een eventueel bestaande verbinding. Voorwaarde daarbij is slechts dat alle transacties van de sessie zijn afgerond. U wordt daartoe – vóórdat de verbinding daadwerkelijk verbroken wordt – in de gelegenheid gesteld. Zie ook: Transacties Een werkgroepinformatiebestand openen
handleiding S(impel)QL
bladzijde 37
Een werkgroepinformatiebestand openen U kunt alleen gebruik maken van de gegevens in werkgroepinformatiebestanden als bij de voorkeurinstellingen de betreffende optie is aangevinkt of als u een database uit de lijst van onlangs geopende databases kiest waarbij een werkgroepinformatiebestand betrokken is. Een werkgroepinformatiebestand bevat gegevens over gebruikersaccounts. Gebruik alleen het werkgroepinformatiebestand van MS Access als u zeer ervaren bent. Creëer liever een nieuw werkgroepinformatiebestand als u wilt experimenteren met gebruikersaccounts. U opent een werkgroepinformatiebestand met behulp van het menuonderdeel “Database”, “Werkgroep openen…”. Deze menuoptie is alleen zichtbaar als dit bij de voorkeurinstellingen is aangegeven. Vanaf het moment dat een werkgroepinformatiebestand geopend gebeurt het aanmelden bij een database via een dialoogvenster waarin u een gebruikersnaam en een wachtwoord op dient te geven.
Als eenmaal een werkgroepinformatiebestand geopend is wijzigt de menuoptie zich in een uitnodiging om het gekozen werkgroepinformatiebestand te sluiten; dit kan alleen op de momenten dat geen verbinding met een database bestaat.
handleiding S(impel)QL
bladzijde 38
Let op: als u géén werkgroepinformatiebestand gebruikt wordt u altijd aangemeld als ‘Admin’ met een leeg wachtwoord. Welke bevoegdheden u in die hoedanigheid hebt hangt af van de privileges die aan ‘Admin’ zijn toegekend. De naam ‘Admin’ kan verwarring scheppen: het is weliswaar niet mogelijk om ‘Admin’ te verwijderen maar wél om hem zijn rechten als administrator te ontnemen. De menuopties met betrekking tot werkgroepinformatiebestanden zijn alleen bereikbaar op momenten dat u niet verbonden bent met een database. Een bestaande verbinding moet eerst verbroken worden. Zie ook: Voorkeurinstellingen Een nieuw werkgroepinformatiebestand maken Onlangs geopende databases Verbinding verbreken
handleiding S(impel)QL
bladzijde 39
Een nieuw werkgroepinformatiebestand maken De mogelijkheid om een werkgroepinformatiebestand te creëren vindt u in het menu “Database”, “Nieuwe werkgroep…”. Deze menuoptie is alleen beschikbaar als bij de voorkeurinstellingen is aangegeven dat het gebruik van dergelijke bestanden is toegestaan. Om van deze menuoptie gebruik te kunnen maken moet eerst een eventuele verbinding met een database worden verbroken. Opmerking: De gebruikelijke extensie van de naam van een werkgroepinformatiebestand is “.mdw’. Het is mogelijk in S(impel)QL een andere extensie op te geven. U kunt een werkgroepinformatiebestand met een andere extensie dan “.mdw” echter niet via “Database”, “Werkgroep openen…” benaderen in S(impel)QL. Zolang het een onderdeel is van één van de verbindingen in de lijst van onlangs geopende databases kunt langs een omweg het werkgroepinformatiebestand aanspreken door de betreffende verbinding opnieuw tot stand brengen. Na sluiten van de database staat het werkgroepinformatiebestand nog steeds tot uw beschikking. Zie ook: Voorkeurinstellingen Een werkgroepinformatiebestand openen Onlangs geopende databases Verbinding verbreken
handleiding S(impel)QL
bladzijde 40
Informatie over gebruikers en groepen Indien een gebruiker daartoe geautoriseerd is kan hij informatie over gebruikers en groepen in een werkgroepinformatiebestand opvragen. Hiervoor dienen de toetscombinaties Ctrl+U (gebruikers) en Ctrl+G (groepen). Informatie over gebruikers
Informatie over groepen:
Het is alleen mogelijk bovenbedoelde informatie op te vragen indien een verbinding met een database via een werkgroepinformatiebestand tot stand gekomen is. Zie ook: Een werkgroepinformatiebestand openen
handleiding S(impel)QL
bladzijde 41
Gedetailleerde metadata opvragen U opent het metadatavenster door middel van het menuonderdeel “Database”, “Metadata...” of door het indrukken van de toetscombinatie Shift+F10. Metadata zijn gegevens over de gegevens in een database. Zij bevatten de namen van objecten (tabellen, views en procedures). De metadata zoals u die oproept via het menu "Database", "Metadata…" zijn ingedeeld in deze drie categorieën die u naar keuze zichtbaar kunt maken door het indrukken van één van de drie knoppen aan de linkerkant van de werkbalk van het metadatavenster.
Standaard is de knop voor tabellen ingedrukt bij openen van het metadatavenster en worden de namen van de in de database aanwezige tabellen (m.u.v. de namen van de systeemtabellen) in de combobox geplaatst. Het ontwerp van de daar geselecteerde tabel wordt getoond.
Indien u kiest voor "Views" (alleen mogelijk als er daadwerkelijk views in de database gedefinieerd zijn) verschijnen de namen van de aanwezige views in de combobox en wordt automatisch de definitie van de geselecteerde view getoond.
Kiest u voor de knop "Procedures" (alleen mogelijk als er daadwerkelijk procedures in de database gedefinieerd zijn) gebeurt iets dergelijks als bij de keuze voor views. Alle voor de metadata afgebeelde screendumps zijn gemaakt naar aanleiding van een voorbeelddatabase. Het oorspronkelijke script van deze voorbeelddatabase is eveneens in deze handleiding opgenomen. U sluit het venster voor de gedetailleerde metadata met behulp van de knop escapetoets te bedienen.
Zie ook: Voorbeelddatabase Metadata van tabellen Metadata van views Metadata van procedures
of door de
handleiding S(impel)QL
bladzijde 42
Voorbeelddatabase Hieronder is het oorspronkelijke script opgenomen dat gebruikt werd om een eenvoudige database te maken ten behoeve van de screenshots voor het zichtbaar maken van metadata.
CREATE TABLE apensoort(soort TEXT(20) PRIMARY KEY); INSERT INTO apensoort VALUES('baviaan'); INSERT INTO apensoort VALUES('gorilla'); INTEGER PRIMARY KEY, CREATE TABLE dier(diernr naam TEXT(20) UNIQUE NOT NULL, soort TEXT(20) REFERENCES apensoort(soort), leeftijd INTEGER, geslacht CHAR(1), opmerking TEXT(254) WITH COMPRESSION, CONSTRAINT w1 CHECK(geslacht IN ('m', 'v'))); INSERT INTO dier VALUES(141, 'Harry', 'gorilla', 3, 'm', NULL); INSERT INTO dier VALUES(172, 'Monk', 'baviaan', 6, 'm', 'dominant gedrag'); INSERT INTO dier VALUES(173, 'King Kong', 'gorilla', 7, 'm', NULL); INSERT INTO dier VALUES(177, 'Biddy', 'baviaan', 3, 'v', NULL); INSERT INTO dier VALUES(178, 'Singe', 'gorilla', 12, 'v', 'graag in buitenlucht'); CREATE TABLE inenting(diernr INTEGER REFERENCES dier(diernr) ON DELETE CASCADE, datum DATE NOT NULL, [vet arts] TEXT(30), PRIMARY KEY (diernr, datum)); INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT
INTO INTO INTO INTO INTO INTO INTO INTO
inenting inenting inenting inenting inenting inenting inenting inenting
VALUES(141, VALUES(172, VALUES(141, VALUES(173, VALUES(177, VALUES(178, VALUES(177, VALUES(141,
#01-02-2003#, #01-02-2003#, #03-09-2003#, #14-02-2004#, #14-02-2004#, #14-02-2004#, #13-10-2004#, #02-01-2005#,
CREATE INDEX entingind ON inenting(datum); CREATE VIEW bavianen AS SELECT * FROM dier WHERE soort = 'baviaan'; CREATE PROCEDURE soortaap AS SELECT * FROM dier WHERE soort = variabel;
'van Bronkhorst'); 'van Bronkhorst'); 'Diepenbroeck'); 'Diepenbroeck'); 'Diepenbroeck'); 'Diepenbroeck'); NULL); 'van Bronkhorst');
handleiding S(impel)QL
CREATE PROCEDURE ent_datum AS SELECT * FROM inenting ORDER BY datum; CREATE PROCEDURE aantal_per_soort(srt TEXT(20)) AS SELECT COUNT(*) FROM dier WHERE soort = srt;
bladzijde 43
handleiding S(impel)QL
bladzijde 44
Metadata van tabellen: ontwerp Het tabelontwerp wordt zichtbaar met behulp van de kop op de toolbar van het metadatavenster (verwar deze niet de met knop in het hoofdvenster die hetzelfde uiterlijk vertoont; deze laat slechts een beperkt aantal metadata zien). De afgebeelde gegevens hebben betrekking op de geselecteerde tabel. Als de database geen tabellen bevat (en dus volledig leeg is) is wordt dit aangegeven met
Als wel een tabel geselecteerd is verschijnen de belangrijkste gegevens over de kolommen van de tabel.
De eerste kolom bevat de naam van de kolommen van de geselecteerde tabel. In het geval die naam een spatie bevat of overeenkomt met een in Jet SQL gereserveerd woord is de naam tussen vierkante haken weergegeven. De tweede kolom bevat een omschrijving van het kolomtype. De derde kolom bevat een aanduiding over de acceptatie van nullwaarden. Het betreft hier uitsluitend de NOT NULL constraints. Als een kolom om andere reden geen lege waarde mag bevatten (bijvoorbeeld een kolom die deel uitmaakt van de primaire sleutel) wordt daarover geen mededeling gedaan. De vierde kolom bevat de aanduiding " WITH COMPRESSION " indien de kolom gecreëerd is met de compressieoptie (alleen mogelijk bij alfanumerieke gegevens). Zie ook: Gegevenstypen van Jet SQL Gereserveerde woorden
handleiding S(impel)QL
bladzijde 45
Metadata van tabellen: primaire sleutel De primary key van een tabel wordt zichtbaar gemaakt met behulp van de knop
.
In het geval u kiest voor het zichtbaar maken van de primaire sleutel laat het overzicht de naam en de definitie van de sleutel zien. Bestaat een sleutel uit een combinatie van kolommen, dan worden deze kolommen door middel van één of meerdere komma's van elkaar gescheiden. Als een kolomnaam een spatie bevat of als een kolomnaam overeenkomt met een gereserveerd woord in Jet SQL wordt de kolomnaam tussen vierkante haken weergegeven.
Wanneer de naam bij de definitie van de tabel niet expliciet wordt meegedeeld zal Jet SQL zelf een naam kiezen, beginnend met "Index_" en gevolgd door een groep van acht cijfers (hexadecimaal) die op zijn beurt weer gevolgd wordt door twee reeksen van een underscore en vier hexadecimale cijfers. Als de tabel met behulp van MS Access gecreëerd werd herkent u dat vaak aan de naam "primarykey" die door MS Access als een verstekwaarde bij sleutels gehanteerd wordt.
handleiding S(impel)QL
bladzijde 46
Metadata van tabellen: refererende sleutels Refererende sleutels (foreign keys) maakt u zichtbaar met de knop
.
Het voorbeeld toont de manier waarop de gegevens van een refererende sleutel worden weergegeven. Bestaat een refererende sleutel uit een combinatie van kolommen, dan worden deze kolommen door middel van één of meerdere komma's van elkaar gescheiden. Als een kolomnaam een spatie bevat of als een kolomnaam overeenkomt met een gereserveerd woord in Jet SQL wordt de kolomnaam tussen vierkante haken weergegeven.
In het voorbeeld is de naam is door de Jet Engine toegekend; een dergelijke naam is te herkennen aan het woordje "Rel_", gevolgd door een groep van acht cijfers (hexadecimaal) die op zijn beurt weer gevolgd wordt door twee reeksen van een underscore en vier hexadecimale cijfers. Door MS Access gegenereerde namen bestaan uit een samenstelling van de namen van beide in de definitie betrokken tabellen. Beide laatste kolommen laten zien hoe de refererende sleutel verder gedefinieerd is. In de vierde kolom kan alleen de waarde "CASCADE" voorkomen. In de vijfde kolom kunnen zowel de aanduidingen "CASCADE" als "SET NULL" zich manifesteren.
handleiding S(impel)QL
bladzijde 47
Metadata van tabellen: alternatieve sleutels Alternatieve sleutels worden in Jet SQL gecreëerd met behulp van de constraint UNIQUE of met behulp van het statement dat wordt ingeluid met CREATE UNIQUE INDEX. U kunt de alternatieve sleutels zichtbaar maken met behulp van de knop
.
Indien de definitie van een alternatieve sleutel met behulp van de constraint UNIQUE aangebracht is waarbij geen constraintnaam werd vermeld zal de Jet Engine zelf een naam genereren. Dergelijke namen beginnen met het woord "Index_", gevolgd door een groep van acht cijfers (hexadecimaal) die op zijn beurt weer gevolgd wordt door twee reeksen van een underscore en vier hexadecimale cijfers.
handleiding S(impel)QL
bladzijde 48
Metadata van tabellen: check constraints In de tabel gedefinieerde check constraints worden zichtbaar met behulp van de knop
.
Wordt aan een check constraint geen naam gegeven door middel van het trefwoord CONSTRAINT, dan zal de Jet Engine een naam toekennen die begint met het woordje "Check_" en gevold wordt door acht hexadecimale cijfers en twee groepjes van een underscore en vier hexadecimale cijfers.
handleiding S(impel)QL
bladzijde 49
Metadata van tabellen: indices Om de indices van een tabel zichtbaar te maken gebruikt u de knop
.
Alle sleutels (primair, refererend en alternatief) worden intern in het databasemanagementsysteem vertegenwoordigt door indices. Afhankelijk van de voorkeurinstellingen worden alle indices zichtbaar of uitsluitend de als zodanig gedefinieerde indices.
Met alle indices weergegeven wordt dit:
Zie ook: Voorkeurinstellingen Metadata: primaire sleutel Metadata: refererende sleutels Metadata: alternatieve sleutels
handleiding S(impel)QL
bladzijde 50
Metadata: ontwerp van views Een view is een afgeleide van tabellen of andere views. U krijgt in het metadatavenster slechts de definitie van de view te zien. Voor kolomnamen en kolomtypen kunt u terecht bij het ontwerpvenster dat u oproept met F10 of via het menu "Extra", "Ontwerp tonen".
Sommige procedures worden door de Jet Engine als view beschouwd. Bovenstaande screendump geeft daarvan een voorbeeld. Een viewdefinitie kan onmogelijk een volgordeaanduiding bevatten. In het script van de voorbeelddatabase die hier gebruikt is valt te constateren dat de hier getoonde view oorspronkelijk dan ook als procedure gedefinieerd is.
handleiding S(impel)QL
bladzijde 51
Metadata: ontwerp van procedures Het ontwerp van procedures wordt in beeld gebracht met behulp van de knop . Er zijn twee manieren mogelijk waarop de definitie van een procedure getoond wordt. Welke van de twee wordt voorgeschoteld is afhankelijk van de oorspronkelijke definitie.
Let op: het is mogelijk dat een oorspronkelijk als procedure gedefinieerd object door de Jet Engine als view wordt opgeslagen.
handleiding S(impel)QL
bladzijde 52
Geschiedenis Alle correct uitgevoerde queries worden opgeslagen in de geschiedenis of history. Zolang nog geen geslaagde queries zijn uitgevoerd is de geschiedenis onbereikbaar. De queries in de geschiedenis kunnen worden getoond • • •
met behulp van de knop van de werkbalk via het menu "Extra", "Geschiedenis" door middel van de toetscombinatie Ctrl+H
Het geschiedenisvenster toont een compleet overzicht van succesvol uitgevoerde queries.
Door met de muis over de lijst te bewegen wordt de exacte formulering van de query in de vorm van een tooltip zichtbaar.
U sluit het geschiedenisvenster met een druk op
of door de escapetoets te gebruiken.
handleiding S(impel)QL
bladzijde 53
Queries uit geschiedenis ophalen U kunt op twee manieren queries vanuit de geschiedenis naar de editor brengen: •
door dubbelklikken op een query uit de geschiedenislijst
•
door het gebruik van de kopieerknop
.
In het laatste geval worden alle geselecteerde queries gekopieerd naar de editor. Een ononderbroken reeks queries selecteert u met behulp van de shifttoets terwijl u willekeurige queries uit de lijst kunt selecteren door tijdens het selecteren de ctrl-toets ingedrukt te houden. Bij kopiëren van queries uit de geschiedenis naar de editor wordt de hele inhoud van de editor vervangen. U kunt geen queries toevoegen door middel van kopiëren. Het geschiedenisvenster wordt bij kopiëren automatisch gesloten.
handleiding S(impel)QL
bladzijde 54
Eén of meerdere queries uit de geschiedenis verwijderen Om één of meerdere queries uit de geschiedenis te verwijderen selecteert u deze queries en drukt op de toets
.
Meerdere queries selecteert u met de shifttoets (onafgebroken reeks) of door de ctrltoets (willekeurige queries) ingedrukt te houden terwijl u met de muis of cursorbesturingstoetsen de selectie aanwijst. Als na het verwijderen van queries geen enkele query in de geschiedenis resteert wordt het geschiedenisvenster automatisch afgesloten.
handleiding S(impel)QL
bladzijde 55
Geschiedenis wissen U wist de complete geschiedenis met behulp van de knop Deze bewerking sluit tevens het geschiedenisvenster.
van het geschiedenisvenster.
handleiding S(impel)QL
bladzijde 56
Script genereren S(impel)QL biedt via het menu "Extra", "Hulpprogramma's", "Database naar script converteren" de mogelijkheid de database waar u zich hebt aangemeld in de vorm van een script te exporteren (alleen beschikbaar als er geen open transacties aanwezig zijn). Afhankelijk van de voorkeurinstellingen wordt daarbij rekening gehouden met alle in de database aanwezige objecten in de vorm van tabellen, views en procedures. De volgorde van aanmaken van tabellen wordt bepaald door eventueel aanwezige refererende sleutels. In een volgorde van views en procedures is niet voorzien terwijl ook checkconstraints bepalend kunnen zijn voor de volgorde van objectcreatie. In voorkomende gevallen kan de volgorde 'handmatig' worden aangepast. Als bij de voorkeurinstellingen is aangegeven dat de inhoud van tabellen in het script moet worden opgenomen verschijnen de gegevens van het datumtype in een format dat gelijk is aan • •
'mm-dd-yyyy' als u geen gebruik maakt van datumconversiemogelijkheid van S(impel)QL in het bij de voorkeurinstellingen voor de datumweergave aangegeven format als u wél gebruik maakt van de mogelijkheid tot datumconversie.
Het script wordt in de sql-editor geplaatst waarbij een eventueel bestaande inhoud wordt overschreven. Vanuit de editor kan het script als tekstbestand worden opgeslagen. De voorbeelden zijn gemaakt naar aanleiding van de voorbeelddatabase. Telkens wordt slechts een fragment van het script getoond.
handleiding S(impel)QL
Zie ook: Voorbeelddatabase
bladzijde 57
handleiding S(impel)QL
bladzijde 58
Comprimeren en herstellen Door herhaaldelijk verwijderen van rijen uit een tabel of door een object (tabel, view, procedure of index) in zijn geheel te verwijderen ontstaan als het ware gaten in de database. Door op gezette tijden de optie "Comprimeren en herstellen" in het menu "Extra", "Hulpprogramma's" te kiezen wordt de database weer een aaneengesloten geheel. Tijdens het comprimeren wordt tevens een aantal eventueel in de database voorkomende fouten hersteld. Voor het uitvoeren van comprimeren en herstellen opent S(impel)QL de database tijdelijk exclusief; dat wil zeggen dat de database niet door een ander programma geopend kan worden of al in gebruik mag zijn. Als dat laatste het geval is lukt het comprimeren en herstellen niet en volgt een foutmelding. Nadat comprimeren en herstellen is uitgevoerd wordt de oorspronkelijke situatie hersteld. Comprimeren en herstellen is evenmin mogelijk wanneer de sessie openstaande transacties kent.
handleiding S(impel)QL
bladzijde 59
Voorkeurinstellingen Via het menu "Extra", "Opties..." opent u het venster van de voorkeurinstellingen.
Door middel van de knop "Toepassen" geeft u aan dat u de gemaakte keuzes gedurende de sessie wilt gebruiken en sluit u het venster automatisch. Door in plaats daarvan de knop "Bewaren en Toepassen" te gebruiken geeft u aan ook bij een volgende sessie van de door u gekozen instellingen gebruik te willen maken. Het venster is opgedeeld in een aantal tabbladen. Voor de betekenis van de diverse mogelijkheden wordt telkens verwezen naar de tekst op de aangegeven bladzijden.
Zie ook: Het gebruik van de registry van Windows
handleiding S(impel)QL Het tabblad "Database"
Zie ook: Het gebruik van parameters Metadata van tabellen: indices Een werkgroepinformatiebestand openen Het tabblad "Weergave"
Zie ook: Uitvoer als gevolg van een resultaatquery
bladzijde 60
handleiding S(impel)QL Het tabblad "Editor"
Zie ook: Datums in Jet SQL Datumconversie toepassen Het tabblad "Export"
Zie ook: Exporteren naar MS Word
bladzijde 61
handleiding S(impel)QL Het tabblad "Help"
Zie ook: Jet SQL Help
Het tabblad "Script"
Zie ook: Script genereren
bladzijde 62
handleiding S(impel)QL
bladzijde 63
S(impel)QL Help Voor S(impel)QL is een helpfunctie beschikbaar indien het bestand S(impel)QL.chm in dezelfde map aanwezig is als die waarin het programma zelf staat. De aanwezigheid van dit helpbestand wordt zichtbaar indien het menu "Help" geopend wordt. De afbeelding laat beide situaties zien.
De aanduiding “Jet SQL Help” kan eventueel ontbreken. Zie Jet SQL help.
handleiding S(impel)QL
bladzijde 64
Jet SQL Help S(impel)QL naakt het mogelijk het helpbestand van Jet SQL te gebruiken. Daartoe moet wel de locatie van dat bestand bekend zijn. Bij een standaardinstallatie van Microsoft Office wordt dit bestand in de map 'C:\Program Files\Microsoft Office\Office\1043' geplaatst. Afhankelijk van de geïnstalleerde versie heet dit bestand 'JetSQLxx.chm'. S(impel)QL zoekt in de aangegeven map naar JetSQL40.chm. Als het daar daadwerkelijk wordt aangetroffen wordt dit in het helpmenu zichtbaar. De afbeelding toont beide situaties.
U kunt desgewenst een ander helpbestand of een helpbestand dat zich op een andere locatie bevindt kiezen via het tabblad "Help" van het voorkeurenvenster. Let op: de helpfile bevat enkele kleine onvolkomenheden voor wat betreft de correcte syntax van Jet SQL.
handleiding S(impel)QL
bladzijde 65
Info opvragen Via het menuonderdeel "Help", "Info" bent u in staat het versienummer en de belangrijkste gegevens over een verbinding op te vragen. Deze laatste betreffen de gebruikersnaam waaronder u bent aangemeld, de volledige naam van de database en eventueel de naam van het aangesloten werkgroepinformatiebestand.
handleiding S(impel)QL
bladzijde 66
Indicatie van de queryperformance De queryperformance wordt uitgedrukt in milliseconden en is gelijk aan de tijd die nodig is om een query uit te voeren. In S(impel)QL kan deze queryperformance een vertekend beeld opleveren. Tussen de start van de meting en het eindtijdstip wordt niet alleen de query uitgevoerd maar vinden in Windows talloze processen plaats die een gedeelte van de gemeten tijd voor hun rekening nemen. Alleen bij relatief trage queries is de meting enigszins betrouwbaar. De meting wordt uitgevoerd voor elke geslaagde query die geen onderdeel uitmaakt van een script. Het op honderdsten van seconden afgeronde resultaat is op te vragen met behulp van de toetscombinatie Ctrl+T en verschijnt vlak boven de werkbalk. Om de indicatie van de performance te verbergen gebruikt u nogmaals de toetscombinatie Ctrl+T.
handleiding S(impel)QL
bladzijde 67
Twee gelijktijdige sessies op één computer Om een multi user omgeving te simuleren kunnen op één computer twee instanties van S(impel)QL actief zijn, waarbij het door een duidelijk kleurverschil in het pictogram van knop op de taakbalk de gebruiker gemakkelijker gemaakt wordt beide instanties uit elkaar te houden.
Wanneer is aangemeld bij een database met een aangekoppeld werkgroepinformatiebestand wordt de betreffende knop bovendien voorzien van de gebruikersnaam.
handleiding S(impel)QL
bladzijde 68
Het gebruik van de registry van Windows S(impel)QL maakt gebruik van de registry van Windows (HKEY_CURRENT_USER\Software) om gegevens over het programma in op te slaan. De opgeslagen gegevens betreffen onder meer • •
• •
algemene gegevens zoals het versienummer; gegevens over de afmetingen van S(impel)QL bij afsluiten van het programma waardoor S(impel)QL bij een volgende start het uiterlijk aanneemt waarmee het pakket in de vorige sessie werd afgesloten; gegevens over onlangs geopende databases; ( op verzoek van de gebruiker) gegevens over de voorkeurinstellingen van S(impel)QL
Het verwijderen van de betreffende key uit de registry beïnvloedt de werking van het programma slechts in zoverre dat bij de eerstvolgende start verstekwaarden voor de verschillende parameters gebruikt worden.
handleiding S(impel)QL
bladzijde 69
Gegevenstypen van Jet SQL char(n) Een vast aantal (n) lettertekens. Een waarde n = 0 levert hetzelfde resultaat als n = 255. Synoniemen: character(n) text(n) Een variabel aantal van maximaal n lettertekens. De waarde van n mag liggen tussen 0 en 255. Synoniemen: varchar(n), alphanumeric(n), string(n) memo Een tekst van onbepaalde lengte. Wordt in S(impel)QL niet volledig ondersteund. Synoniemen: note, longtext, longchar logical Eén bit opslagruimte. Synoniemen: logical1, bit, yesno byte Eén byte opslagruimte. Synoniemen: integer1 short Twee byte opslagruimte. Synoniemen: integer2 integer Vier byte opslagruimte. Synoniemen: integer4, long autoincrement(s, n) Gegevenstype neemt vier byte geheugenruimte in beslag en gedraagt zich als een integer. De waarde van s en n zijn gehele getallen waarbij s de seed en n de increment voorstelt. Wordt slechts één van beide parameters meegegeven, dan wordt s = 1 verondersteld. Ontbreken beide parameters, dan wordt ook n = 1 verondersteld. Synoniemen: counter(s, n)
handleiding S(impel)QL
bladzijde 70
single Opslagruimte voor reëel getal met enkele precisie. Synoniemen: real, float4, ieeesingle double Opslagruimte voor reële getallen met dubbele precisie. Synoniemen: float, float8, ieeedouble, number currency Opslagruimte voor getal met twee cijfers achter de komma. Synoniemen: money decimal(p, s) Decimaal getal waarbij s en p respectievelijk de scale en de precision voorstellen. Wordt maar één parameter meegegeven, dan wordt s = 0 verondersteld. Bij ontbreken van beide parameters wordt uitgegaan van (18, 0). date Gegevenstype voor een datum. Synoniemen: time, datetime
De overige datatypen binary(n), varbinary(n), longbinary, image en oleobject worden in S(impel)QL niet ondersteund. Om deze gegevenstypen aan te duiden wordt binnen het programma de term blob gebruikt
handleiding S(impel)QL
bladzijde 71
Gereserveerde woorden (Jet SQL) action add admindb all allocate alphanumeric alter and any are art as assertion authorization autoincrement avg band begin between binary bit bit_length bnot bor both bxor by byte cascade cascaded case cast catalog char char_length character character_length check close coalesce
collate column commit comp compression connect connection constraint constraints container continue convert corresponding count counter create createdb cross currency current current_date current_time current_timestamp current_user cursor database date datetime deallocate dec decimal declare default deferrable deferred delete describe descriptor diagnostics disallow
disconnect distinct distinctrow domain double drop else end escape except exception exclusiveconnect exec execute exists external extract false fetch float float4 float8 for foreign from full general get global go goto grant group guid having identity ieeedouble ieeesingle ignore image
immediate in index indicator inheritable initially inner input insensitive insert integer integer1 integer2 integer4 intersect interval into is isolation join key leading level like lnguage local logical logical1 long longbinary longchar longtext match max memo min mod modal money names
handleiding S(impel)QL
national natural nchar next no not note null nullif number numeric object octet_length of oleobject on only open option or order outer overlaps owneraccess pad parameter partial password percent pivot position precision prepare preserve primary prior privileges proc procedure public
read real references relative restrict revoke rollback rows schema scroll section select selectschema selectsecurity session session_user set short single size smallint some sql sqlcode sqlerror sqlstate stdev stdevp sum system_user table tableid temporary text then time timestamp timezone_hour timezone_minute to
bladzijde 72
top trailing transaction transform translate translation trigger true union unique uniqueidentifier unknown update updateidentity updateowner updatesecurity usage user using value values var varbinary varchar varp varying view when whenever where with work write yesno zone
handleiding S(impel)QL
bladzijde 73
Gereserveerde woorden (VBA-functies) abs asc atn cbool cbyte ccur cdate cdbl cdec chr cint clng cos csng cstr cvar cvdate dateadd datediff datepart dateserial datevalue davg day dcount ddb dde dfirst dlast dlookup dmax dmin dstdev dstdevp dsum dvar dvarp eval exp first
fix format fv hex hour iif instr instrb instrrev int ipmt irr isdate isempty isnull isnumeric last lcase left leftb len lenb log ltrim mid midb minute mirr month now nper npv oct partition pmt ppmt pv rate right rightb
rnd round rtrim rtrimb second sin sln space sqr str strcomp strconv string switch syd tan timer timeserial timevalue trim ucase val vartype weekday year
handleiding S(impel)QL
De auteur S(impel)QL werd geschreven door Toon Kuipers. De auteur is als docent Bedrijfskundige Informatica werkzaam bij Hogeschool Rotterdam.
bladzijde 74