MySQL database maken

Databases zijn een belangrijk onderdeel van veel websites en applicaties, en vormen de kern van de manier waarop gegevens worden opgeslagen en uitgewisseld via internet. Een van de belangrijkste aspecten van databasebeheer is het ophalen van gegevens uit een database, of dit nu op ad-hoc basis is of als onderdeel van een proces dat in een applicatie is gecodeerd. Er zijn verschillende manieren om informatie uit een database op te halen, maar een van de meest gebruikte methoden is het indienen van vragen via de opdrachtregel.

In relationele databasebeheersystemen is een query elke opdracht die wordt gebruikt om gegevens uit een tabel op te halen. In Structured Query Language (SQL) worden queries bijna altijd gedaan met de SELECTinstructie.

Voordat we kunnen beginnen met het maken van query's in SQL, zullen we eerst een database en een paar tabellen maken en deze tabellen vervolgens vullen met enkele voorbeeldgegevens. Hierdoor kun je wat praktische ervaring opdoen wanneer je later begint met het maken van queries.

Open om te beginnen een MySQL-prompt als je MySQL- rootgebruiker :

sudo mysql 

Opmerking: mogelijk heb je de rootgebruiker geconfigureerd om te verifiëren met een wachtwoord. In dit geval maak je verbinding met de MySQL-prompt met de volgende opdracht:

mysql -u root -p 

Maak vervolgens de database door:

CREATE DATABASE `verjaardag`; 

Selecteer vervolgens deze database door te typen:

USE verjaardag; 

Maak vervolgens twee tabellen binnen deze database. We gebruiken de eerste tabel om de records van je vrienden op de bowlingbaan bij te houden. Met het volgende commando wordt een tabel gemaakt tourneysmet kolommen voor nameelk van je vrienden, het aantal toernooien dat ze hebben gewonnen ( wins), hun all-time bestscore en welke maat bowlingschoen ze dragen ( size):

CREATE TABLE tourneys (name varchar(30), wins real, best real, size real); 

Nadat u de CREATE TABLEopdracht hebt uitgevoerd krijg je de melding:

Query OK

Vul de tourneystabel met enkele voorbeeldgegevens:

INSERT INTO tourneys (name, wins, best, size) VALUES ('Koos', '7', '245', '8.5'), ('Richard', '4', '283', '9'), ('Martijn', '9', '266', '7'), ('Wilma', '2', '197', '7.5'), ('Annet', '13', '273', '8'); 

Je ontvangt een output als deze:

Output

Query OK, 5 rows affected (0.01 sec)

Maak daarna een nieuwe tabel in dezelfde database die we zullen gebruiken om informatie op te slaan over de favoriete verjaardagsmaaltijden van je vrienden. Met de volgende opdracht maak je een tabel met de naam dinnersmet kolommen voor name je vrienden, hun birthdate, hun favoriet entree, hun favoriete sidegerecht en hun favoriet dessert:

CREATE TABLE dinners (name varchar(30), birthdate date, entree varchar(30), side varchar(30), dessert varchar(30)); 

Op dezelfde manier ontvang je voor deze tabel feedback waarin wordt bevestigd dat de opdracht met succes is uitgevoerd:

Query OK, 0 rows affected (0.01 sec)

Vul deze tabel ook met enkele voorbeeldgegevens:

INSERT INTO dinners (name, birthdate, entree, side, dessert) VALUES ('Hans', '1946-01-19', 'steak', 'salad', 'cake'), ('Linda', '1938-01-25', 'chicken', 'fries', 'ice cream'), ('Helma', '1941-02-18', 'tofu', 'fries', 'cake'), ('Daan', '1948-12-25', 'tofu', 'salad', 'ice cream'), ('Tom', '1944-05-28', 'steak', 'fries', 'ice cream'); 

Query OK, 5 rows affected (0.00 sec)

Zodra die opdracht met succes is voltooid, bent je klaar met het opzetten van je database. Vervolgens bespreken we de basisopdrachtstructuur van SELECTquery's.

Inzicht in SELECT query's

Zoals vermeld in de inleiding, beginnen SQL-query's bijna altijd met de SELECTinstructie. SELECTwordt gebruikt in query's om aan te geven welke kolommen uit een tabel in de resultatenset moeten worden geretourneerd. Query's bevatten ook bijna altijd FROM, wat wordt gebruikt om aan te geven in welke tabel de instructie een query zal uitvoeren.

Over het algemeen volgen SQL-query's deze syntaxis:

SELECT column_to_select FROM table_to_select WHERE certain_conditions_apply; 

Bij wijze van voorbeeld zal de volgende instructie de volledige namekolom uit de dinnerstabel retourneren :

SELECT name FROM dinners;

Je kunt meerdere kolommen uit dezelfde tabel selecteren door hun namen als volgt met een komma te scheiden:

SELECT name, birthdate FROM dinners;

In plaats van een specifieke kolom of set kolommen een naam te geven, kun je de SELECToperator volgen met een asterisk ( *) die dient als tijdelijke aanduiding voor alle kolommen in een tabel. De volgende opdracht retourneert elke kolom uit de tourneystabel:

SELECT * FROM tourneys;

WHEREwordt gebruikt in query's om records te filteren die aan een bepaalde voorwaarde voldoen, en alle rijen die niet aan die voorwaarde voldoen, worden uit het resultaat verwijderd. Een WHEREclausule volgt doorgaans deze syntaxis:

. . . WHERE column_name comparison_operator value 

De vergelijkingsoperator in een WHEREclausule definieert hoe de opgegeven kolom moet worden vergeleken met de waarde. Hier zijn enkele veelgebruikte SQL-vergelijkingsoperatoren:

Operator Wat het doet
= test voor gelijkheid
!= test voor ongelijkheid
< test voor minder dan
> test voor groter dan
<= test voor kleiner dan of gelijk aan
>= test voor groter dan of gelijk aan
BETWEEN test of een waarde binnen een bepaald bereik ligt
IN test of de waarde van een rij is opgenomen in een set gespecificeerde waarden
EXISTS test of er rijen bestaan, gegeven de opgegeven voorwaarden
LIKE test of een waarde overeenkomt met een opgegeven string
IS NULL test voor NULLwaarden
IS NOT NULL test voor alle andere waarden dan NULL

Als je bijvoorbeeld de schoenmaat van Koos wilt vinden, kun je de volgende zoekopdracht gebruiken:

SELECT size FROM tourneys WHERE name = 'Koos';

Probeer zelf eens uit meerdere tabellen gegevens naar voren te krijgen die in de tabellen zitten met bovenstaande operators.

Query's geven is een van de meest uitgevoerde taken op het gebied van databasebeheer. Er zijn applicaties zoals phpMyAdmin waarmee je query's kunt visualiseren, maar op de achtergrond is er altijd een database dat ergens op een server draait.