Cursussen/Courses Codesnippets     Top 


1. Inleiding
Bij het werken met een database kan je gebruik maken van de vierde generatie programmeertaal SQL. De afkorting S.Q.L. staat voor Structured Query Language.
Het is een taal waarbij de gebruiker vragen (query's) kan formuleren en opsturen naar het Data Base Management System (DBMS). Het DBMS stuurt dan een resultaat terug naar de gebruiker: een lijst met de gevraagde gegevens of een melding dat de operatie is gelukt (of mislukt).


2. Categorieën
DDL-DML-DCL
De SQL taal bestaat voornamelijk uit drie categorieën van statements die gegroepeerd worden in DDL, DML en DCL.
In D.D.L. (Data Definition of Description Language) worden de statements verzameld die verband houden met de structuur van de database. Je kunt een database creëren of verwijderen, een tabel creëren, wijzigen of verwijderen, een index aanmaken of verwijderen.
In D.M.L. (Data Manipulation Language) worden de statements verzameld die je toelaten om de inhoud van de tabellen, records en velden te beheren. Je kunt records toevoegen, wijzigen, verwijderen of een selectie maken van records uit 1 of meerdere tabellen volgens bepaalde criteria. In de vakliteratuur worden deze operaties ook wel eens CRUD genoemd (Create Read Update Delete).
In D.C.L. (Data Control Language) worden de statements verzameld waarmee je kunt aangeven welke gebruikers welke operaties in de database mogen uitvoeren. Je bepaalt de toegang tot de gegevens.
DDL DMLDCL
CREATE DATABASEINSERT INTOGRANT
CREATE TABLEUPDATE SETREVOKE
CREATE INDEXDELETE FROM 
ALTER TABLESELECT FROM 
DROP INDEX  
DROP TABLE  
DROP DATABASE  
Naast deze statements heeft elk RDBMS systeem ook "eigen" statements zoals bv. in MySQL de volgende commando's:
StatementOmschrijving
SHOW DATABASES;toont een lijst van de beschikbare databases in het RDBMS
USE database;selecteert de te gebruiken database
SHOW TABLES;toont een lijst van alle tabellen in de geselecteerde database
DESCRIBE table;toont een beschrijving van alle velden van de tabel


3. Database aanmaken
Met de tool phpMyAdmin kan je een database aanmaken en de structuur van de tabellen definiëren. Je vindt deze tool terug in één van de website ontwikkelingstools: Uwamp, XAMPP of WampServer waarbij je gebruik kan maken van de lokale webserver Apache, de lokale MySQL server en de programmeertaal PHP.
In wat volgt worden enkele voorbeelden gegeven van het gebruik van phpMyAdmin.
In dit voorbeeld wordt de database "films" aangemaakt.


4. Tabellen
In de database "films" wil je nu een tabel aanmaken. Dit kan je uitvoeren met het statement "create table".
Bij dit statement geef je de tabel een naam.
Elk veld krijgt ook een naam, een gegevenstype en een lengte. Je geeft ook aan of een veld leeg mag blijven of moet ingevuld worden (NULL of NOT NULL).
Je kunt ook reeds aangeven welk veld gebruikt wordt als "primaire sleutel" en of de waarde ervan automatisch moet verhoogd worden.
Even een kort overzicht van de gegevenstypen:
TypeOmschrijving
INTeen getal (integer). Afhankelijk van de grootte van de getallen die gebruikt gaan worden kan je ook kiezen voor TINYINT, SMALLINT, MEDIUMINT, BIGINT of DECIMAL(x,y).
DATEeen datum van '1000-01-01' tot '9999-12-31'
DATETIMEeen datum en tijd notatie in het formaat 'JJJJ-MM-DD UU:MM:SS'
TIMESTAMPeen kolom van dit type krijgt bij het invoeren of wijzigen van gegevens automatisch de huidige datum en tijd als er geen waarde wordt opgegeven.
CHAReen opeenvolging van karakters tot hoogstens 255 karakters. Je kunt ook VARCHAR(lengte) gebruiken voor langere teksten. Met TEKST kan je heel lange teksten aanduiden.
BLOBbinaire gegevens zoals bvb. afbeeldingen, geluidsfragmenten, videofragmenten, enz… Afhankelijk van de grootte kan je ook MEDIUMBLOB of LONGBLOB gebruiken.
ENUM ('waarde', 'waarde', …een lijsttype of opsommingstype. Enkel de waarden in de lijst tussen de haakjes zijn toegelaten.
Het statement voor het aanmaken van de tabel "film" ziet er zo uit:
CREATE TABLE `films`.`film` 
( `id` INT(11) NOT NULL AUTO_INCREMENT , 
`titel`VARCHAR(20) NOT NULL , 
`regisseur` VARCHAR(20) NOT NULL , 
`duur` VARCHAR(20)NOT NULL , 
`jaar` INT(4) NOT NULL , 
`genre` VARCHAR(20) NOT NULL , PRIMARY KEY(`id`)) ENGINE = InnoDB;
Je kan in phpMyAdmin ook een handig invulformulier gebruiken om dit statement samen te stellen. De “backticks” (` `) worden door phpMyAdmin toegevoegd en zijn niet strikt noodzakelijk.
Als je een veld wilt wijzigen moet je het statement "alter table" gebruiken.
Met dit statement wordt in de tabel "film" het veld "samenvatting" toegevoegd met als veldtype "text".
ALTER TABLE `film` ADD `samenvatting` TEXT NULL AFTER `genre`;
Met dit statement wordt het veld "genre" gewijzigd in een enumeratie (opsomming) en moet het veld ingevuld worden (not null).
ALTER TABLE `film` CHANGE `genre` `genre` ENUM('romantiek','thriller','actie')
CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
Met dit statement wordt het veld "jaar" verwijderd uit de tabel "film".
alter table film drop jaar


5. Indexen
In sommige velden worden gegevens bijgehouden die gebruikt worden bij zoekopdrachten. Om die zoekopdrachten vlot te laten verlopen worden door het database management systeem indexen voorzien. Een index is een aparte systeemtabel waarin de inhoud van de primaire sleutel en de inhoud van het geïndexeerde veld worden bijgehouden.
Je kunt een index creëren met het statement "create index" of “alter table add index” en verwijderen met "drop index".


6. SQL statements
Nadat de structuur van de tabellen vastligt kan je beginnen met het toevoegen van gegevens. Met het statement "insert into" wordt telkens 1 record (row) toegevoegd.
Je geeft in dit statement na de tabelnaam tussen haakjes de veldnamen op die moeten ingevuld worden. Vermits het eerste veld "id" automatisch wordt verhoogd moet je dat veld niet opnemen in de veldnamen lijst.
Na het woord "values" zet je dan in volgorde de inhoud van de velden. Alfanumerische gegevens (strings) en datums zet je tussen enkelvoudige aanhalingstekens ('), numerische gegevens typ je gewoon in (zonder aanhalingstekens).
Het SQL statement om een film toe te voegen:
INSERT INTO `film` 
(`id`, `titel`, `regisseur`, `duur`, `genre`, `samenvatting`) 
VALUES (NULL, 'The fast and the fur', 'Cohen', '106 min.', 'actie', NULL);
Helaas is het veld titel slechts 20 karakters lang…
Door het aantal karakters van het veld titel te verhogen kan je wel de volledige titel ingeven.
ALTER TABLE `film` CHANGE `titel` `titel` VARCHAR(255)
CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
Als je gegevens wil wijzigen moet je het statement "update" gebruiken.
UPDATE `film` SET `titel` = 'The fast and the furious' WHERE `film`.`id` = 1;
Achter de tabelnaam komt het woord "set" gevolgd door de veldnaam waarvan je de inhoud wilt wijzigen. Je kunt meerdere velden opgeven gescheiden door een komma. Daarna moet je met de "where" clausule aangeven welke record(s) je wilt wijzigen. Hiervoor gebruik je best de inhoud van het "id" veld omdat dit het "primaire sleutel" veld is en de waarde uniek is voor elke record.
Een record verwijderen doe je met het statement "delete from". Je geeft de tabelnaam op en je geeft in de "where" clausule aan om welke record(s) het gaat.
delete from film where id = 1