Verder Terug Inhoud

9. MySQL.

9.1 SQL.

Om gegevens te bewerken, verwijderen en op te vragen uit MySQL maak je gebruik van SQL, oftwel Structured Query Language. Dit is een taal die in veel database(servers) voor handen is. De SQL die gebruikt wordt zal verschillen per databaseserver.

9.2 Gegevens selecteren en opvragen in MySQL.

Om gegevens op te vragen in MySQL maak je gebruik van het SELECT statement. In combinatie met een paar eventuele voorwaardes kan je precies de gegevens opvragen die je nodig hebt. We gaan nu even uit van een database met twee tabellen. Samen vormen ze een database waarin links en omschrijvingen van programma's staan. De database naam is internet en de tabelnamen zijn link_soort en links:


$mysql -u guest -p internet
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19 to server version: 3.23.1-alpha

Type 'help' for help.

mysql> 

We kunnen nu eerst eens gaan bekijken welke velden er in de tabellen staan:


mysql> show fields from links;
+------------+--------------+------+-----+---------+----------------+----------------------+
| Field      | Type         | Null | Key | Default | Extra          | Privileges           |
+------------+--------------+------+-----+---------+----------------+----------------------+
| id         | int(11)      |      | PRI | NULL    | auto_increment | select,insert,update |
| url        | varchar(255) |      | MUL |         |                | select,insert,update |
| url_naam   | varchar(255) | YES  |     | NULL    |                | select,insert,update |
| license    | varchar(60)  | YES  |     | NULL    |                | select,insert,update |
| discript   | tinyblob     | YES  |     | NULL    |                | select,insert,update |
| link_soort | int(11)      |      |     | 0       |                | select,insert,update |
+------------+--------------+------+-----+---------+----------------+----------------------+

mysql> show fields from link_soort;
+-------+-------------+------+-----+---------+----------------+----------------------+
| Field | Type        | Null | Key | Default | Extra          | Privileges           |
+-------+-------------+------+-----+---------+----------------+----------------------+
| id    | int(11)     |      | PRI | NULL    | auto_increment | select,insert,update |
| naam  | varchar(50) | YES  |     | NULL    |                | select,insert,update |
+-------+-------------+------+-----+---------+----------------+----------------------+

Op die manier krijg je een overzicht van de velden, rechten en veldtypes die er in de database staan. Om nu alle velden uit de link_soort tabel te selecteren gebruik je de volgende code:


mysql> select * from link_soort;
+----+---------------------------+
| id | naam                      |
+----+---------------------------+
| 33 | security_sites            |
| 31 | w-managers                |
| 32 | wm-tools                  |

.................

Je ziet dat er een hele rij gegevens te voorschijn komen die bestaan uit een id en een naam. Als je nu alleen wilt weten hoeveel records er in die tabel staan dan kan je dat opvragen met COUNT:


mysql> select count(id) from link_soort;
+-----------+
| count(id) |
+-----------+
|        51 |
+-----------+

Als je nu gegevens wilt toevoegen aan deze tabel dan kan je dat met het INSERT commando doen. Bij het opvragen van de tabel gegevens heb je kunnen zien dat het veld id een veld is dat de eigenschap auto_increment heeft. Je hoeft in dat geval dus geen eigenlijke waarde mee te geven voor dat veld als je een nieuw record wilt invoeren. Je gebruikt in dat geval de null waarde. MySQL zal zelf bekijken welk nummer er zal worden gebruikt voor het id:


mysql> insert into link_soort values (null, 'test');
Query OK, 1 row affected (0.13 sec)

Om het record te verwijderen kan je DELETE gebruiken. In dit voorbeeld zou het niet kunnen aangezien de gebruiker geen rechten heeft om records te verwijderen maar de syntax die iemand met voldoende rechten moet gebruiken is de volgende:


mysql> DELETE FROM link_soort WHERE naam = 'test';  
Query OK, 1 row affected (0.02 sec)

9.3 De site bezoeker toegang geven tot een database.

Om site bezoekers gegevens uit een database te kunnen laten opvragen moet je bepaalde rechten toekennen. Dit is het snelste te realiseren in de mysql monitor. We gebruiken hiervoor het GRANT statement:


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.23.1-alpha

Type 'help' for help.

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> 

Je kan ook gelijk vanaf de prompt de database selecteren die je wilt gebruiken, je doet dit vanaf de prompt door mysql aan te roepen met als argument de database die je wilt gebruiken:


$mysql mysql

Je kan de gebruiker verschillende rechten toekennen. De meest voorkomende rechten zijn SELECT, INSERT en UPDATE. Dit doe je op de volgende manier:


GRANT SELECT, INSERT ON gb.gb TO guest@localhost IDENTIFIED BY 'hallo'; 

We hebben de gebruiker guest nu rechten gegeven om records toe te voegen en te selecteren in de gb database waarbij hij alleen rechten heeft in de tabel gb. Dit alles kan alleen op de machine waarop MySQL staat. Het wachtwoord voor die gebruiker is hallo.

Mocht je de gebruiker nu ook UPDATE rechten willen geven en hij moet alles vanaf een andere machine kunnen doen dan gebruik je het volgende:


GRANT SELECT, INSERT, UPDATE ON gb.gb TO guest@domeinnaam IDENTIFIED BY 'hallo'; 

Mocht de database gb uit diverse tabellen bestaan waarop de gebruiker allemaal moet kunnen lezen, schrijven en aanpassen dan gebruik je de volgende syntax:


GRANT SELECT, INSERT, UPDATE ON gb.* TO guest@domeinnaam IDENTIFIED BY 'hallo'; 


Verder Terug Inhoud