Inleiding
Deze howto behandelt de basis van MySQL, zoals inloggen en selecteren databases, opvragen van databases en tabellen, opvragen tabelstructuur, opvragen aantal records/tuples en het maken van queries. Na het doornemen van deze cursus begrijpt u de basiswerking van MySQL
Inloggen
Om gegevens van een database of tabel op te kunnen vragen, en queries te kunnen draaien, dien je eerst in te loggen in MySQL. Door onderstaande commando in te voeren op de commandoregel van Linux of in SSH, kan je inloggen als een bepaalde gebruiker in MySQL:
mysql -u [user] -p [evt. database-name]
voorbeeld: mysql -u root -p phpdvd
Met de optie -p geef je aan dat MySQL met een password is beveiligd, dit is trouwens aan te raden.
Na het geven van een <enter> zal om het password worden gevraagd.
Opvragen beschikbare databases
Indien je niet weet wat de naam van de database(s) is/zijn (of je wilt weten welke databases beschikbaar zijn) kun je een overzicht van alle beschikbare databases opvragen door het volgende commando in te voeren zodra je bent ingelogd in MySQL:
show databases;
Je krijgt dan een overzicht van alle op het systeem aanwezige databases te zien. Zie onderstaand een voorbeeldweergave:
+———–+
| Database |
+———–+
| Visiters3 |
| calendar |
| incidents |
| internals |
| mysql |
| phpdvd |
| service |
| test |
+———–+
8 rows in set (0.00 sec)
Database selecteren of wisselen van database
Als je eenmaal bent ingelogd en MySQL en weet welke database je wilt bewerken, dan moet de MySQL-commandoregel nog weten welke database je daadwerkelijk wilt gebruiken om in te werken. Met onderstaande commando kan je een database selecteren:
use databasenaam;
voorbeeld: use phpdvd;
In bovenstaande voorbeelden zie je achter de commando’s een puntkomma (;) staan. Een puntkomma betekend het einde van de opdracht. Door de puntkomman aan het einde van een opdracht te plaatsen, zorg je ervoor dat het gewenste commando wordt uitgevoerd.
Opvragen van de beschikbare tabellen in de betreffende database
Indien je eenmaal een database hebt geselecteerd is het handig te weten welke tabellen er in de datbase zitten. Met onderstaande commando vraag je een lijst van alle beschikbare tabellen van de geselecteerde database op:
show tables;
je krijgt dan zoiets als het volgende te zien:
+——————+
| Tables_in_phpdvd |
+——————+
| dvds |
| dvdx |
+——————+
2 rows in set (0.00 sec)
Opvragen van de structuur van een tabel
Wil je van een bepaalde tabel de opbouw of structuur uitlezen? Vraag dan met het commando ‘describe’ om een omschrijving van de tabelstructuur:
describe <tabel naam>;
voorbeeld: describe dvds;
Je krijgt output zoals bijvoorbeeld onderstaande:
+——–+————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+——–+————–+——+—–+———+——-+
| title | varchar(100) | YES | | NULL | |
| actor | varchar(80) | YES | | NULL | |
| year | varchar(10) | YES | | NULL | |
| ratio | varchar(20) | YES | | NULL | |
| audio | varchar(20) | YES | | NULL | |
| link | varchar(100) | YES | | NULL | |
+——–+————–+——+—–+———+——-+
6 rows in set (0.01 sec)
Uitgebreide informatie over de tabellen
Indien je wat uitgebreidere informatie over de tabellen wilt doe je dit als volgt.
show table status ;
je krijgt dan het volgende te zien:
-----+--------------+-----------+----------------+---------------------+-------- | Name | Type | Row_format | Rows | Avg_row_length | Data_length | Max_data_le ngth | Index_length | Data_free | Auto_increment | Create_time | Update_ time | Check_time | Create_options | Comment | +------+--------+------------+------+----------------+-------------+------------ -----+--------------+-----------+----------------+---------------------+-------- -------------+------------+----------------+---------+ | dvds | MyISAM | Dynamic | 184 | 108 | 19976 | 429496 7295 | 1024 | 0 | NULL | 2005-11-30 00:09:45 | 2006-05 -27 23:40:58 | NULL | | | | dvdx | MyISAM | Dynamic | 39 | 170 | 6660 | 429496 7295 | 1024 | 0 | NULL | 2005-12-01 23:52:46 | 2006-05 -21 02:15:26 | NULL | | | +------+--------+------------+------+----------------+-------------+------------ 2 rows in set (0.04 sec)
Je ziet nu bijvoorbeeld ook de create-time en update-time van de tabellen uit de betreffende database alsmede de Index- en Data-grootte etc.
Creëren van een database en gebruiker
Voor het toevoegen van een databasetabel kun je de volgende query uitvoeren.
CREATE DATABASE `mijn_database` CHARACTER SET utf8 COLLATE utf8_general_ci
Vervolgens kunnen we een gebruiker toevoegen, welke we lees, schrijf, verwijder en update rechten geven: kortweg CRUD. Vervang ‘password’ voor een daadwerkelijk wachtwoord.
CREATE USER `mijn_gebruiker`@localhost IDENTIFIED BY 'password';
Deze gebruiker kan nu alleen vanaf de localhost inloggen, dus niet vanaf een externe server. Wil je dit wel? Dan vervang je ‘localhost’ door het IP van de externe server. Wanneer je dit doet zorg dan altijd voor een beveiligde verbinding over SSL.
We hoeven nu alleen nog de CRUD-rechten toe te voegen op de gebruiker:
GRANT SELECT, INSERT, UPDATE, DELETE ON `mijn_database`.* TO `mijn_gebruiker`@localhost;
De rechten voor deze gebruiker zijn nu opgeslagen, om deze door te voeren voer je deze query uit:
FLUSH PRIVILEGES;
Wanneer je administratieve taken uitvoert zoals het toevoegen van tabellen kun je inloggen als root-gebruiker op deze database.
Creëren van een tabel
Aan een database zonder tabellen hebben we weinig, dus gaan we hierin één of meerdere tabellen aanmaken.
Selecteer voordat je dit doet eerst de database (use <naam database> ;). create table if not exists [naam tabel] bijvoorbeeld: create table if not exists dvds ;
je moet hierbij ook alle velden in de tabel definiëren dus het geheel zou er als volgt uit kunnen komen te zien:
create table if not exists dvds ( title VARCHAR(100), actor VARCHAR(80), year VARCHAR(10), ratio VARCHAR(20), audio VARCHAR(20), link VARCHAR(100) );
Het vullen van een tabel
Wat voor een database zonder tabellen geldt, geldt ook voor een tabel zonder records, dus gaan we de tabel vullen met records (gegevens).
insert into [table] values ('veld1', 'veld2', 'veld3' etc.) ;
bijvoorbeeld:
insert into dvds values ('Fahrenheit 9/11', 'Michael Moore', '2004', '7,8', 'Dolby Digital', '0361596') ;
Het leegmaken en het verwijderen (weggooien) van een tabel
Indien je een tabel weg wilt gooien doe je dit als volgt.
drop table [naam tabel] ; bijvoorbeeld: drop table dvds ;
Dit zal er in resulteren dat de tabel kompleet met veld definities e.d. wordt verwijderd. Indien je alleen de data (records) wilt verwijderen (leegmaken tabel) doe je dit als volgt.
delete from [naam tabel] ; bijvoorbeeld: delete from dvds ;
Verwijderen van een record uit de tabel
Indien je één of meerdere records wilt verwijderen handel je als volgt.
Bijvoorbeeld: delete from dvds where title = Fahrenheit 9/11 ;
Records wijzigen/updaten
Om een database (tabel) up to date te houden is het handig dat je de velden uit de records kunt wijzigen. In het onderstaande voorbeeld gaan we de rate (veldwaarde) van een bepaald record aanpassen.
update dvds set ratio = 8,0 where title = 'Fahrenheit 9/11' ;
of:
update dvds set year = '2005' where title like '%Fahrenheit 9/11%' and actor like '%Michael Moore%';
Deel 3 (laatste deel) binnenkort, met hierin:
-Wijzigingen aanbrengen in de tabel structuur -Databases en tabellen veiligstellen en terugzetten -Maken van queries