Revision for “MySQL minicursus” created on 14 september 2016 18:14:40

TitelInhoudSamenvatting
MySQL minicursus
<h2>Inleiding</h2>
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
<h3>Inloggen</h3>
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:

<code>mysql -u [user] -p [evt. database-name]</code>
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 &lt;enter&gt; zal om het password worden gevraagd.
<h3>Opvragen beschikbare databases</h3>
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:

<code>show databases;</code>

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)
<h3>Database selecteren of wisselen van database</h3>
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:

<code>use <i>databasenaam</i>;</code>
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.
<h3>Opvragen van de beschikbare tabellen in de betreffende database</h3>
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:

<code>show tables;
</code>
je krijgt dan zoiets als het volgende te zien:

+——————+
| Tables_in_phpdvd |
+——————+
| dvds             |
| dvdx             |
+——————+
2 rows in set (0.00 sec)
<h3>Opvragen van de structuur van een tabel</h3>
Wil je van een bepaalde tabel de opbouw of structuur uitlezen? Vraag dan met het commando ‘describe’ om een omschrijving van de tabelstructuur:

<code>describe &lt;tabel naam&gt;;</code>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)

&nbsp;
<h3><span id="Uitgebreide_informatie_over_de_tabellen" class="mw-headline">Uitgebreide informatie over de tabellen</span></h3>
Indien je wat uitgebreidere informatie over de tabellen wilt doe je dit als volgt.
<blockquote>
<pre>show table status ;
</pre>
</blockquote>
je krijgt dan het volgende te zien:
<blockquote>
<pre>—–+————–+———–+—————-+———————+——–
| 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)
</pre>
</blockquote>
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.
<h3><span id="Cre.C3.ABren_van_een_database" class="mw-headline">Creëren van een database en gebruiker</span></h3>
Voor het toevoegen van een databasetabel kun je de volgende query uitvoeren.

<code>CREATE DATABASE `mijn_database` CHARACTER SET utf8 COLLATE utf8_general_ci</code>

Vervolgens kunnen we een gebruiker toevoegen, welke we lees, schrijf, verwijder en update rechten geven: kortweg CRUD. Vervang ‘password’ voor een daadwerkelijk wachtwoord.

<code>CREATE USER `mijn_gebruiker`@localhost IDENTIFIED BY ‘password’;</code>

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 <strong>altijd</strong> voor een beveiligde verbinding over SSL.

We hoeven nu alleen nog de CRUD-rechten toe te voegen op de gebruiker:

<code>GRANT SELECT, INSERT, UPDATE, DELETE ON `mijn_database`.* TO `mijn_gebruiker`@localhost;</code>

De rechten voor deze gebruiker zijn nu opgeslagen, om deze door te voeren voer je deze query uit:

<code>FLUSH PRIVILEGES;</code>

Wanneer je administratieve taken uitvoert zoals het toevoegen van tabellen kun je inloggen als root-gebruiker op deze database.

&nbsp;
<h3><span id="Cre.C3.ABren_van_een_tabel" class="mw-headline">Creëren van een tabel</span></h3>
Aan een database zonder tabellen hebben we weinig, dus gaan we hierin één of meerdere tabellen aanmaken.
<blockquote>
<pre>Selecteer voordat je dit doet eerst de database (use &lt;naam database&gt; ;).
create table if not exists [naam tabel]
bijvoorbeeld:
create table if not exists dvds ;
</pre>
</blockquote>
je moet hierbij ook alle velden in de tabel definiëren dus het geheel zou er als volgt uit kunnen komen te zien:
<blockquote>
<pre>create table if not exists dvds (
title VARCHAR(100),
actor VARCHAR(80),
year VARCHAR(10),
ratio VARCHAR(20),
audio VARCHAR(20),
link VARCHAR(100)
);
</pre>
</blockquote>
<h3><span id="Het_vullen_van_een_tabel" class="mw-headline">Het vullen van een tabel</span></h3>
Wat voor een database zonder tabellen geldt, geldt ook voor een tabel zonder records, dus gaan we de tabel vullen met records (gegevens).
<blockquote>
<pre>insert into [table] values
(‘veld1’, ‘veld2’, ‘veld3’ etc.) ;

</pre>
</blockquote>
bijvoorbeeld:
<blockquote>
<pre>insert into dvds values (‘Fahrenheit 9/11’, ‘Michael Moore’,
‘2004’, ‘7,8’, ‘Dolby Digital’, ‘0361596’) ;
</pre>
</blockquote>
<h3><span id="Het_leegmaken_en_het_verwijderen_.28weggooien.29_van_een_tabel" class="mw-headline">Het leegmaken en het verwijderen (weggooien) van een tabel</span></h3>
Indien je een tabel weg wilt gooien doe je dit als volgt.
<blockquote>
<pre>drop table [naam tabel] ;
bijvoorbeeld:
drop table dvds ;
</pre>
</blockquote>
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.
<blockquote>
<pre>delete from [naam tabel] ;
bijvoorbeeld:
delete from dvds ;
</pre>
</blockquote>
<h3><span id="Verwijderen_van_een_record_uit_de_tabel" class="mw-headline">Verwijderen van een record uit de tabel</span></h3>
Indien je één of meerdere records wilt verwijderen handel je als volgt.
<blockquote>
<pre>Bijvoorbeeld:
delete from dvds
where title = Fahrenheit 9/11 ;
</pre>
</blockquote>
<h3><span id="Records_wijzigen.2Fupdaten" class="mw-headline">Records wijzigen/updaten</span></h3>
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.
<blockquote>
<pre>update dvds set
ratio = 8,0
where title = ‘Fahrenheit 9/11’ ;
</pre>
</blockquote>
of:
<blockquote>
<pre>update dvds set
year = ‘2005’
where title like ‘%Fahrenheit 9/11%’
and actor like ‘%Michael Moore%’;
</pre>
</blockquote>
Deel 3 (laatste deel) binnenkort, met hierin:
<pre>-Wijzigingen aanbrengen in de tabel structuur
-Databases en tabellen veiligstellen en terugzetten
-Maken van queries
</pre>
&nbsp;



Old New Date Created Author Actions
14 september 2016 18:14:40 stefanc
14 september 2016 18:14:20 [Automatisch opgeslagen] stefanc
18 juli 2016 20:33:00 thijs