MariaDB Tutorial: leer syntaxis, opdrachten met voorbeelden
Wat is MariaDB?
MariaDB is een vork van de MySQL databasemanagementsysteem. Het is gemaakt door de oorspronkelijke ontwikkelaars. Deze DBMS-tool biedt gegevensverwerkingsmogelijkheden voor zowel kleine als zakelijke taken.
MariaDB is een verbeterde versie van MySQL. Het wordt geleverd met talloze ingebouwde krachtige functies en vele bruikbaarheids-, beveiligings- en prestatieverbeteringen die u niet kunt vinden MySQL.
Hier zijn de kenmerken van MariaDB:
- Het werkt onder GPL-, BSD- of LGPL-licenties.
- MariaDB ondersteunt een populaire en standaard querytaal.
- Het wordt geleverd met veel opslagengines, waaronder de krachtige die kunnen worden geïntegreerd met andere relationele databasebeheersystemen.
- Het maakt gebruik van de Galera-clustertechnologie.
- MariaDB ondersteunt PHP, een populaire taal voor webontwikkeling.
- MariaDB kan op verschillende besturingssystemen draaien en ondersteunt talloze programmeertalen.
- MariaDB wordt geleverd met extra opdrachten die niet beschikbaar zijn in MySQL. MySQL heeft functies die een negatieve invloed hebben op de prestaties van het DBMS. Dergelijke functies zijn vervangen in MariaDB.
MariaDB vs MySQL
Hieronder staan enkele belangrijke verschillen tussen MariaDB vs MySQL
Parameter | MariaDB | MySQL |
---|---|---|
Meer opties voor opslagmotoren | MariaDB heeft 12 nieuwe opslag-engines die je niet zult vinden MySQL. | Het heeft minder opslagmogelijkheden vergeleken met MariaDB. |
Snelheidsverbeteringen | MariaDB toont een verbeterde snelheid in vergelijking met MySQL. Het wordt geleverd met tal van functies voor het optimaliseren van de snelheid. Dergelijke functies omvatten afgeleide weergaven/tabellen, subquery, uitvoeringscontrole, schijftoegang en optimalisatiecontrole. | MySQL vertoont een lagere snelheid in vergelijking met MariaDB. Het vertrouwt op slechts een paar functies voor snelheidsoptimalisatie, bijvoorbeeld hash-indexen. |
Snellere cache/indexen | Met de geheugenopslagengine van MariaDB, kan een INSERT-instructie 24% worden voltooid dan in de standaard MySQL. | De geheugenopslag-engine van MySQL is langzamer vergeleken met dat MariaDB. |
Grotere en snellere verbindingspool | MariaDB wordt geleverd met een geavanceerde threadpool die sneller kan werken en tot wel 200,000+ verbindingen ondersteunt. | De threadpool van MySQL kan niet maximaal 200,000 verbindingen per keer ondersteunen. |
Verbeterde replicatie | In MariaDB, kan replicatie veiliger en sneller worden uitgevoerd. Updates kunnen ook 2x sneller worden uitgevoerd in vergelijking met traditioneel MySQL. | MySQLMet de community-editie van kan een statisch aantal threads worden verbonden. MySQLHet ondernemingsplan van het bedrijf wordt geleverd met threadmogelijkheden. |
Nieuwe functies/uitbreidingen | MariaDB wordt geleverd met nieuwe functies en uitbreidingen, waaronder de JSON-, WITH- en KILL-instructies. | De nieuwe MariaDB functies zijn niet aanwezig MySQL. |
Ontbrekende functies | MariaDB mist enkele van de functies van de MySQL Bedrijfseditie. Om dit aan te pakken, biedt het alternatieve open-source plug-ins. Vandaar, MariaDB gebruikers kunnen genieten van dezelfde functionaliteiten als MySQL Enterprise Edition-gebruikers. | De Enterprise-editie van MySQL maakt gebruik van een eigen code. Alleen gebruikers van MySQL Enterprise Edition heeft hier toegang toe. |
Hoe te installeren MariaDB
Installeer als een zelfstandige applicatie
Om te kunnen gebruiken MariaDB, moet u het op uw computer installeren.
De installatie kan worden uitgevoerd door de onderstaande stappen te volgen:
Stap 1) Open onderstaande URL
Download het installatiebestand via de link https://downloads.mariadb.org/
Stap 2) Double klik op het bestand om de installatie te starten
Zodra het downloaden is voltooid, opent u Bestand
Stap 3) Klik op de knop Volgende
In het venster dat verschijnt, klikt u op de knop Volgende:
Stap 4) Accepteer de licentieovereenkomst
Klik vervolgens op de knop Volgende:
Stap 5) Kies MariaDB Server
Kies de functies die moeten worden geïnstalleerd en klik op Volgende
Stap 6) Voer het wachtwoord in
In het volgende venster wordt u gevraagd het wachtwoord voor de rootgebruiker te wijzigen.
- Voer het wachtwoord in en bevestig het door hetzelfde wachtwoord opnieuw in te typen. Als u toegang vanaf externe machines wilt toestaan, activeert u het benodigde selectievakje.
- Als u klaar bent, klikt u op de knop Volgende.
Stap 7) Voer naam in en kies poortnummer
Typ in het volgende venster een naam voor het exemplaar, kies het poortnummer en stel de benodigde grootte in. Klik op de knop Volgende:
Stap 8) Klik op Volgende
In het volgende venster klikt u eenvoudig op de knop Volgende.
Stap 9) Klik op Installeren
Start de installatie door op de knop Installeren te klikken.
Stap 10) Er wordt een voortgangsbalk weergegeven
Er wordt een voortgangsbalk weergegeven die de voortgang van de installatie weergeeft:
Stap 11) Klik op de knop Voltooien
Zodra de installatie is voltooid, ziet u de knop Voltooien. Klik op de knop om het venster te sluiten:
Stap 12) Gefeliciteerd!
Je hebt nu MariaDB geïnstalleerd op uw computer.
Werken met opdrachtprompt
Nu dat je hebt MariaDB geïnstalleerd op uw computer, is het tijd om het te starten en te gaan gebruiken. Dit kan via de MariaDB opdrachtprompt.
Volg de onderstaande stappen:
Stap 1) Klik op Start, kies Alle programma's en klik vervolgens op MariaDB...
Stap 2) Kies een MariaDB Opdrachtprompt.
Stap 3) De MariaDB opdrachtprompt wordt gestart. Het is nu tijd om in te loggen. U dient in te loggen als rootgebruiker en met het wachtwoord dat u tijdens de installatie hebt ingesteld MariaDBTyp de volgende opdracht op de opdrachtprompt:
MySQL -u root -p
Stap 4) Voer het wachtwoord in en druk op de Return-toets. U moet ingelogd zijn, zoals hieronder weergegeven:
U bent nu ingelogd MariaDB.
Gegevenstypen
MariaDB ondersteunt de volgende gegevenstypen:
- Tekenreeks gegevenstypen
- Numerieke gegevenstypen
- Gegevenstypen voor datum/tijd
- Grote objectgegevenstypen
Tekenreeksgegevenstypen
Deze omvatten het volgende:
Tekenreeksgegevenstype | Beschrijving |
---|---|
teken (grootte) | De grootte geeft het aantal tekens aan dat moet worden opgeslagen. Er kunnen maximaal 255 tekens worden opgeslagen. Snaren met vaste lengte. |
Varchar(grootte) | De grootte geeft het aantal tekens aan dat moet worden opgeslagen. Er kunnen maximaal 255 tekens worden opgeslagen. Snaren met variabele lengte. |
lettergrootte) | De grootte geeft het aantal tekens aan dat moet worden opgeslagen. Er kunnen maximaal 255 tekens worden opgeslagen. Snaren met vaste lengte. |
binair(grootte) | De grootte geeft het aantal tekens aan dat moet worden opgeslagen. Er kunnen maximaal 255 tekens worden opgeslagen. Snaren met een vast formaat. |
Numerieke gegevenstypen
Het gaat om de volgende vissoorten:
Numerieke gegevenstypen | Beschrijving |
---|---|
beetje | Een zeer kleine gehele waarde, gelijk aan tinyint(1). Ondertekende waarden liggen tussen -128 en 127. Niet-ondertekende waarden liggen tussen 0 en 255. |
int(m) | Een standaard geheel getalwaarde. Ondertekende waarden liggen tussen -2147483648 en 2147483647. Niet-ondertekende waarden liggen tussen 0 en 4294967295. |
vlotter(m, d) | Een getal met drijvende komma met enkele precisie. |
dubbel(m,d) | Een drijvendekommagetal met dubbele precisie. |
zweven(p) | Een drijvende-kommagetal. |
Datum-/tijdgegevenstypen
Deze omvatten het volgende:
Datum/tijd gegevenstype | Beschrijving |
---|---|
Datum | Weergegeven in de vorm 'jjjj-mm-dd'. Waarden variëren van '1000-01-01' tot '9999-12-31'. |
Datum Tijd | Weergegeven in de vorm 'jjjj-mm-dd uu:mm:ss'. Waarden variëren tussen '1000-01-01 00:00:00' en '9999-12-31 23:59:59'. |
tijdstempel(m) | Weergegeven in de vorm 'jjjj-mm-dd uu:mm:ss'. Waarden variëren tussen '1970-01-01 00:00:01' utc en '2038-01-19 03:14:07' utc. |
Tijd | Weergegeven in de vorm 'hh:mm:ss'. Waarden variëren tussen '-838:59:59' en '838:59:59'. |
Gegevenstypen voor grote objecten (LOB)
Het gaat om de volgende vissoorten:
Groot object Gegevenstype | Beschrijving |
---|---|
klein kloddertje | De maximale grootte is 255 bytes. |
klodder (grootte) | Neemt 65,535 bytes als maximale grootte. |
middelgrote klodder | De maximale grootte is 16,777,215 bytes. |
lange tekst | De maximale grootte is 4 GB. |
Maak een database en tabellen
Om een nieuwe database aan te maken in MariaDB, zou u speciale rechten moeten hebben die alleen aan de rootgebruiker en beheerders worden verleend.
Om een nieuwe database te maken, moet u de opdracht CREATE DATABASE gebruiken. Deze opdracht gebruikt de volgende syntaxis:
CREATE DATABASE DatabaseName;
In dit geval moet u een database maken en deze de naam Demo geven.
Start de MariaDB opdrachtprompt en meld u aan als rootgebruiker door de volgende opdracht te typen:
mysql -u root -p
Typ het root-wachtwoord en druk op de Return-toets. U wordt ingelogd.
Voer nu de volgende opdracht uit:
CREATE DATABASE Demo;
U hebt vervolgens een database met de naam Demo gemaakt. Het is goed om te bevestigen of de database succesvol is gemaakt of niet. U hoeft alleen de lijst met beschikbare databases weer te geven door de volgende opdracht uit te voeren:
SHOW DATABASES;
Uit de bovenstaande uitvoer blijkt dat de demodatabase deel uitmaakt van de lijst en dat de database dus met succes is gemaakt.
MariaDB Selecteer Database
Om een bepaalde database te kunnen gebruiken of eraan te werken, moet u deze selecteren uit de lijst met beschikbare databases. Nadat u een database hebt geselecteerd, kunt u taken uitvoeren zoals het maken van tabellen in de database.
Om een database te selecteren, moet u de opdracht USE gebruiken. Er is de onderstaande syntaxis voor nodig:
USE database_name;
U moet de Demo-database gebruiken. U kunt deze selecteren door de volgende opdracht uit te voeren:
USE Demo;
Op de bovenstaande afbeelding is te zien dat de MariaDB opdrachtprompt is gewijzigd van geen in de naam van de database die is geselecteerd.
U kunt nu doorgaan en tabellen maken in de Demo-database.
MariaDB – Tabel maken
Om een tabel te kunnen maken, moet u een database hebben geselecteerd. De tabel kan worden gemaakt met behulp van de instructie CREATE TABLE. Hier is de syntaxis voor de opdracht:
CREATE TABLE tableName (columnName columnType);
U kunt een van de kolommen instellen als primaire sleutel. Deze kolom mag geen null-waarden toestaan.
We zullen twee tabellen maken binnen de Demo-database: Boek- en Prijstabellen. Elke tabel heeft twee kolommen.
Laten we beginnen met het maken van de Book-tabel met twee kolommen, id en name. Voer de volgende opdracht uit:
CREATE TABLE Book( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY (id));
De PRIMARY KEY-beperking is gebruikt om de id-kolom in te stellen als de primaire sleutel voor de tabel. De eigenschap AUTO_INCREMENT verhoogt de waarden van de id-kolom automatisch met 1 voor elke nieuwe record die in de tabel wordt ingevoegd. In alle kolommen zijn geen nulwaarden toegestaan.
Maak nu de tweede tabel, de prijstabel:
CREATE TABLE Price( id INT NOT NULL AUTO_INCREMENT, price float NOT NULL, PRIMARY KEY (id));
De id-kolom is ingesteld als de primaire sleutel voor de tabel.
Tabellen weergeven
Nu u de twee tabellen hebt gemaakt, is het goed om te controleren of de tabellen succesvol zijn gemaakt of niet. U kunt de lijst met tabellen in een database weergeven door de volgende opdracht uit te voeren:
SHOW TABLES;
De bovenstaande schermafbeelding laat zien dat de twee tabellen met succes zijn gemaakt in de Demo-database.
Tabelstructuur weergeven
Om de structuur van een bepaalde tabel te zien, kunt u de opdracht DESCRIBE gebruiken, die gewoonlijk wordt afgekort als DESC. Deze opdracht gebruikt de volgende syntaxis:
DESC TableName;
Om bijvoorbeeld de structuur van de tabel Book te bekijken, kunt u de volgende opdracht uitvoeren;
DESC Book;
De tabel heeft twee kolommen. Om de structuur van de Price-tabel te zien, kunt u de volgende opdracht uitvoeren:
DESC Price;
CRUD en clausules
INSERT
Om gegevens in te voegen in een MariaDB tabel, moet u de instructie INSERT INTO gebruiken. Deze opdracht heeft de onderstaande syntaxis:
INSERT INTO tableName (column_1, column_2, ... ) VALUES (value1, value2, ... ), (value1, value2, ... ), ...;
Uit de bovenstaande syntaxis blijkt dat u de tabelkolommen moet opgeven waarin u gegevens wilt invoegen, evenals de gegevens die u moet invoegen.
Laten we een record in de Boek-tabel invoegen:
INSERT INTO book (id, name) VALUES(1, 'MariaDB Book');
U hebt één record in de tabel ingevoegd. Voeg een record in de prijstabel in:
INSERT INTO price (id, price) VALUES(1, 200);
De record is gemaakt.
SELECT
De SELECT-instructie helpt ons om de inhoud van een databasetabel te bekijken of te zien. Om bijvoorbeeld de inhoud van de Book-tabel te zien, moet u de volgende opdracht uitvoeren:
SELECT * from book;
Bekijk nu de inhoud van de prijstabel:
SELECT * from price;
Meerdere records invoegen
Het is voor ons mogelijk om meerdere records in een MariaDB tabel tegelijk. Om dit te demonstreren, voer het volgende voorbeeld uit:
INSERT INTO book (id, name) VALUES (2,'MariaDB Book2'), (3,'MariaDB Book3'), (4,'MariaDB Book4'), (5,'MariaDB Book5');
U kunt de tabel raadplegen om te controleren of de records succesvol zijn ingevoegd:
SELECT * FROM book;
De records zijn succesvol ingevoegd. Voeg meerdere records in de prijstabel in door dit voorbeeld uit te voeren:
INSERT INTO price (id, price) VALUES (2, 250), (3, 220), (4, 190), (5, 300);
Laten we bevestigen of de records met succes zijn gemaakt:
SELECT * FROM price;
UPDATE
Met het UPDATE-commando kunnen we de records die al in een tabel zijn ingevoegd, wijzigen of aanpassen. U kunt het combineren met de WHERE-clausule om het record op te geven dat moet worden bijgewerkt. Hier is de syntaxis:
UPDATE tableName SET field=newValue, field2=newValue2,... [WHERE ...]
De opdracht UPDATE kan ook worden gecombineerd met clausules zoals SET, WHERE, LIMIT en ORDER BY. Dit zie je binnenkort:
Beschouw de tabel met de naam Prijs met de volgende records:
Laten we de prijs van het boek met een id van 1 veranderen van 200 naar 250:
UPDATE price SET price = 250 WHERE id = 1;
De opdracht is met succes uitgevoerd. U kunt nu de tabel raadplegen om te zien of de wijziging heeft plaatsgevonden:
De bovenstaande schermafbeelding laat zien dat de wijziging is doorgevoerd. Beschouw de tabel Book met de volgende records:
Laten we de naam van het boek met de naam Boek veranderen in MariaDB Boek 1. Merk op dat het boek de ID 1 heeft. Hier is het commando hiervoor:
UPDATE book SET name = “MariaDB Book1” WHERE id = 1;
Controleer of de wijziging is doorgevoerd:
Uit bovenstaande schermafbeelding blijkt dat de wijziging succesvol is doorgevoerd.
In de bovenstaande voorbeelden hebben we slechts één kolom tegelijk gewijzigd. Het is echter mogelijk dat wij meerdere kolommen in één keer wijzigen. Laten we dit aantonen aan de hand van een voorbeeld.
Laten we de prijstabel gebruiken met de volgende gegevens:
Laten we zowel de id als de prijs van het boek wijzigen met een id van 5. We wijzigen de id naar 6 en de prijs naar 6. Voer de volgende opdracht uit:
UPDATE price SET id = 6, price = 280 WHERE id = 5;
Voer nu een query uit in de tabel om te controleren of de wijziging succesvol is doorgevoerd:
De wijziging is succesvol doorgevoerd.
Verwijder
We gebruiken de opdracht DELETE wanneer we één of meerdere records uit een tabel moeten verwijderen. Hier is de syntaxis voor de opdracht:
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
Beschouw de prijstabel met de volgende records:
We moeten het laatste record uit de tabel verwijderen. Het heeft een ID van 6 en een prijs van 280. Laten we het record verwijderen:
DELETE FROM price WHERE id = 6;
De opdracht is met succes uitgevoerd. Laten we de tabel doorzoeken om te bevestigen of de verwijdering succesvol was:
Uit de uitvoer blijkt dat de record met succes is verwijderd.
Waar
De WHERE-clausule helpt ons de exacte locatie te specificeren waar we een wijziging moeten aanbrengen. Deze wordt gebruikt samen met statements zoals INSERT, SELECT, UPDATE en DELETE. Bekijk de Price-tabel met de volgende gegevens:
Stel dat we de records willen zien waarin de prijs lager is dan 250. We kunnen de volgende opdracht uitvoeren:
SELECT * FROM price WHERE price < 250;
Alle records waarin de prijs lager is dan 250 zijn teruggestuurd.
De WHERE-clausule kan worden gecombineerd met de AND-instructie. Stel dat we alle records in de Price-tabel moeten zien waarbij de prijs lager is dan 250 en id hoger is dan 3. We kunnen de volgende opdracht uitvoeren:
SELECT * FROM price WHERE id > 3 AND price < 250;
Er is slechts één record geretourneerd. De reden hiervoor is dat het aan alle voorwaarden moet voldoen die zijn gespecificeerd, dat wil zeggen: id boven 3 en prijs onder 250. Als een van deze voorwaarden wordt geschonden, wordt de plaat niet geretourneerd.
De clausule kan ook worden gecombineerd met het OR-commando. Laten we de AND in ons vorige commando vervangen door OR en zien wat voor soort uitvoer we ontvangen:
SELECT * FROM price WHERE id > 3 OR price < 250;
We krijgen nu 2 records in plaats van 1. Dit komt omdat een record van kwalificatie slechts aan één van de gespecificeerde voorwaarden hoeft te voldoen.
Like
Deze clausule wordt gebruikt om het gegevenspatroon te specificeren bij het benaderen van tabelgegevens waarin een exacte overeenkomst noodzakelijk is. Het kan worden gecombineerd met de instructies INSERT, UPDATE, SELECT en DELETE.
U moet het gegevenspatroon dat u zoekt doorgeven aan de clausule, en deze zal waar of onwaar retourneren. Dit zijn de jokertekens die samen met de clausule kunnen worden gebruikt:
- %: voor het matchen van 0 of meer tekens.
- _: voor het matchen van één enkel teken.
Hier is de syntaxis voor de LIKE-clausule:
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
Laten we demonstreren hoe de clausule met het wildcard-teken % gebruikt kan worden. Laten we de Book-tabel gebruiken met de volgende records:
We moeten alle records zien waarvan de naam begint met M. We kunnen de volgende opdracht uitvoeren:
SELECT name FROM book WHERE name LIKE 'M%';
Alle records zijn geretourneerd omdat hun namen beginnen met de letter M. Om alle namen te zien die eindigen op 4, kunt u de volgende opdracht uitvoeren:
SELECT name FROM book WHERE name LIKE '%4';
Er is slechts één naam geretourneerd omdat dit de enige is die aan de voorwaarde voldoet.
We kunnen het zoekpatroon ook omringen met een jokerteken:
SELECT name FROM book WHERE name LIKE '%DB%';
Behalve het jokerteken % kan de clausule LIKE samen met het jokerteken _ worden gebruikt. Dit is het jokerteken voor het onderstrepingsteken en zoekt slechts naar één teken.
Laten we met de prijstabel werken met de volgende records:
Laten we kijken naar het record waarin de prijs 1_0 is. We voeren de volgende opdracht uit:
SELECT * FROM price WHERE price LIKE '1_0';
Het heeft het record geretourneerd waarin de prijs 190 is. We kunnen ook een ander patroon proberen:
SELECT * FROM price WHERE price LIKE '_2_';
Het is mogelijk om de LIKE-clausule samen met de NOT-operator te gebruiken. Dit retourneert alle records die niet voldoen aan het opgegeven patroon. Bijvoorbeeld:
Laten we de prijstabel gebruiken met de volgende records:
Laten we alle records zoeken waar de prijs niet met 2 begint:
SELECT * FROM price WHERE price NOT LIKE '2%';
Slechts één record voldoet niet aan het opgegeven patroon.
Bestel Door
Deze clausule helpt ons onze records in oplopende of aflopende volgorde te sorteren. We gebruiken het met de SELECT-instructie, zoals hieronder weergegeven:
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
Het is voor ons mogelijk om deze clausule te gebruiken zonder het ASC- of DESC-gedeelte toe te voegen. Bijvoorbeeld:
We gebruiken de prijstabel met de volgende gegevens:
Voer de volgende opdracht uit voor de tabel:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
In de bovenstaande opdracht hebben we op prijs besteld. De platen zijn geordend met de prijzen in oplopende volgorde. Dat betekent dat wanneer we de volgorde niet opgeven, de sortering standaard in oplopende volgorde gebeurt.
Laten we de clausule uitvoeren met de DESC-optie:
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
De records zijn gesorteerd op prijs in aflopende volgorde zoals wij hebben aangegeven.
Laten we de ORDER BY-clausule samen met het ASC-attribuut gebruiken:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
De platen zijn besteld, maar met de prijzen in oplopende volgorde. Dit is vergelijkbaar met wanneer we de ORDER BY-clausule gebruiken zonder ASC- of DESC-attributen.
DISTINCT
Deze clausule helpt ons om duplicaten te voorkomen bij het selecteren van records uit een tabel. Dit betekent dat het ons helpt unieke records te verkrijgen. De syntaxis ervan wordt hieronder gegeven:
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
Om dit te demonstreren gebruiken we de prijstabel met de volgende gegevens:
Wanneer we de prijskolom uit de tabel selecteren, krijgen we het volgende resultaat:
SELECT price FROM Price;
We hebben twee records met een prijs van 250, waardoor er een duplicaat ontstaat. We hebben alleen unieke records nodig. We kunnen deze filteren met behulp van de DISTINCT-clausule, zoals hieronder weergegeven:
SELECT DISTINCT price FROM Price;
We hebben nu geen duplicaten in de bovenstaande uitvoer.
Vanaf
De FROM-clausule die wordt gebruikt voor het ophalen van gegevens uit een databasetabel. Het kan ook helpen bij het samenvoegen van tabellen. Hier is de syntaxis voor de opdracht:
SELECT columnNames FROM tableName;
Om de inhoud van de boektabel te bekijken, voert u de volgende opdracht uit:
SELECT * FROM price;
De clausule kan u helpen slechts één enkele kolom uit een databasetabel op te halen. Bijvoorbeeld:
SELECT price FROM Price;
Geavanceerde taken
Opgeslagen procedure
Een procedure is een MariaDB programma waaraan u parameters kunt doorgeven. Een procedure retourneert geen waarden. Om een procedure te maken, gebruiken we het commando CREATE PROCEDURE.
Om te demonstreren hoe u een procedure kunt maken en aanroepen, zullen we een procedure maken met de naam myProcedure() waarmee we de naamkolom uit de boekentabel kunnen selecteren. Hier is de procedure:
DELIMITER $ CREATE PROCEDURE myProcedure() BEGIN SELECT name FROM book; END; ;
De procedure is gemaakt. We hebben eenvoudigweg de SELECT-instructie tussen de BEGIN- en END-clausules van de procedure geplaatst.
Nu kunnen we de procedure bij de naam noemen, zoals hieronder weergegeven:
CALL myProcedure();
De procedure retourneert de naamkolom van de boekentabel wanneer deze wordt aangeroepen.
We kunnen een procedure maken die een parameter inneemt. We moeten bijvoorbeeld de naam van het boek selecteren en filteren met behulp van de boek-id. We kunnen hiervoor de volgende procedure maken:
DELIMITER $ CREATE PROCEDURE myProcedure2(book_id int) BEGIN SELECT name FROM book WHERE id = book_id; END; ;
Hierboven hebben we een procedure gemaakt met de naam myProcedure2(). Voor deze procedure is één geheel getalparameter nodig met de naam book_id, wat de id is van het boek waarvan we de naam moeten zien. Om de naam van het boek met ID 3 te zien, kunnen we de procedure als volgt aanroepen:
CALL myProcedure2(3);
Functie
In tegenstelling tot procedures moeten we parameters doorgeven aan functies en moet een functie een waarde retourneren. Om een functie aan te maken in MariaDB, gebruiken we de CREATE FUNCTION-instructie. De instructie heeft de volgende syntaxis:
CREATE [ DEFINER = { CURRENT-USER | username } ] FUNCTION function-name [(parameter datatype [, parameter datatype]) ] RETURNS datatype [LANGUAGE SQL | DETERMINISTIC | NOT DETERMINISTIC | {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA} | SQL SECURITY {DEFINER | INVOKER} | COMMENT 'comment' BEGIN declaration-section executable-section END;
De bovenstaande parameters worden hieronder beschreven:
Parameter | Beschrijving |
---|---|
DEFINER-clausule | Deze parameter is optioneel. Als u dit niet opgeeft, wordt de definieeraar de gebruiker die de functie heeft gemaakt. Als het nodig is een andere definieeraar op te geven, neem dan de DEFINER-clausule op waarin de gebruikersnaam de definieeraar van de functie zal zijn. |
functienaam | De naam die aan deze functie moet worden toegewezen in het MariaDB. |
parameter | De parameter(s) die aan de functie zijn doorgegeven. Tijdens het maken van de functie worden alle parameters behandeld als IN-parameters (in plaats van OUT/INOUT-parameters). |
return_datatype | Het gegevenstype van de retourwaarde van de functie. |
TAAL SQL | Het beïnvloedt de draagbaarheid, maar niet de functie. |
DETERMINISTISCH | De functie retourneert slechts één resultaat als er een aantal parameters wordt opgegeven. |
NIET DETERMINISTISCH | Het is mogelijk dat de functie een ander resultaat retourneert als er een aantal parameters wordt opgegeven. |
BEVAT SQL | informeert MariaDB dat deze functie SQL bevat. De database zal niet verifiëren of dit waar is. |
GEEN SQL | Deze clausule wordt niet gebruikt en heeft geen invloed op uw functie. |
LEEST SQL-GEGEVENS | vertelt MariaDB dat deze functie SELECT-instructies zal gebruiken om gegevens te lezen, maar de gegevens niet zal wijzigen. |
WIJZIGT SQL-GEGEVENS | vertelt MariaDB dat deze functie INSERT, DELETE, UPDATE en andere zal gebruiken DDL instructies om SQL-gegevens te wijzigen. |
aangifte-sectie | Dit is waar lokale variabelen moeten worden gedeclareerd. |
uitvoerbare sectie | De functiecode moet hier worden toegevoegd. |
Hier is een voorbeeld MariaDB functie:
DELIMITER // CREATE FUNCTION sumFunc (x INT ) RETURNS INT DETERMINISTIC BEGIN DECLARE sum INT; SET sum = 0; label1: WHILE sum <= 3000 DO SET sum = sum + x; END WHILE label1; RETURN sum; END; // DELIMITER ;
We kunnen de bovenstaande functie dan als volgt aanroepen:
select sumFunc(1000);
De opdracht retourneert het volgende:
Zodra u klaar bent met een functie, is het goed om deze te verwijderen. Dit is eenvoudig, omdat u alleen de DROP FUNCTION-instructie hoeft aan te roepen die de volgende syntaxis heeft:
DROP FUNCTION function_name;
Om bijvoorbeeld de functie myFunc te verwijderen, kunnen we de volgende opdracht uitvoeren:
DROP FUNCTION myFunc;
AANMELDEN
Als u gegevens uit meer dan één tabel tegelijk wilt ophalen, gebruikt u MariaDB DOET MEE. Dit betekent dat een AANMELDEN werkt op twee of meer tabellen. De volgende drie typen JOINS worden ondersteund in MariaDB:
- BINNEN/EENVOUDIG AANSLUITEN
- LINKS BUITENVERBINDEN/LINKS VERBINDEN
- RECHTS BUITEN JOIN/RECHTS JOIN
Laten we ze één voor één bespreken:
INNER JOIN
De inner join retourneert alle rijen uit de tabellen waarin de join-voorwaarde waar is. De syntaxis is als volgt:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
Bijvoorbeeld:
We zullen onze twee tabellen, boeken en boek gebruiken.
De boekentabel bevat de volgende gegevens:
De prijstabel bevat de volgende gegevens:
Het doel is om de naamkolom uit de Boekentabel en de prijskolom uit de Prijstabel samen te voegen tot één tabel. Dit is mogelijk met een inner join, zoals hieronder gedemonstreerd:
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
De opdracht retourneert het volgende:
LINKER BUITENSTE JOIN
Deze join retourneert alle rijen uit de linkertabel en alleen de rijen waarin de join-voorwaarde waar is uit de andere tabel. De syntaxis is als volgt:
SELECT columns FROM table-1 LEFT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Het trefwoord OUTER is tussen vierkante haken geplaatst omdat het optioneel is.
Bijvoorbeeld:
SELECT book.name, price.price FROM book LEFT JOIN price ON book.id = price.id;
De opdracht retourneert het volgende:
Het laatste record in de bovenstaande tabel heeft aan de linkerkant geen overeenkomende waarde. Daarom is het vervangen door NULL.
RECHTS BUITENSTE JOIN
Deze join retourneert alle rijen uit de rechtertabel en alleen de rijen waarin de join-voorwaarde waar is uit de andere tabel. De syntaxis is als volgt:
SELECT columns FROM table-1 RIGHT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Het trefwoord OUTER is tussen vierkante haken geplaatst omdat het optioneel is.
Bijvoorbeeld:
SELECT book.name, price.price FROM book RIGHT JOIN price ON book.id = price.id;
De opdracht retourneert het volgende:
De reden is dat alle rijen in de rechtertabel overeenkomen met die in de andere tabel. Als sommige rijen niet overeenkomen, zouden we NULL's in de eerste kolom hebben.