MariaDB tutorial
Hvad er MariaDB?
MariaDB er en gaffel af MySQL databasestyringssystem. Det er skabt af dets oprindelige udviklere. Dette DBMS-vรฆrktรธj tilbyder databehandlingsfunktioner til bรฅde smรฅ og virksomhedsopgaver.
MariaDB er en forbedret version af MySQL. Den kommer med adskillige indbyggede kraftfulde funktioner og mange brugervenligheder, sikkerhed og ydeevneforbedringer, som du ikke kan finde i MySQL.
Her er funktionerne ved MariaDB:
- Det fungerer under GPL-, BSD- eller LGPL-licenser.
- MariaDB understรธtter et populรฆrt og standard forespรธrgselssprog.
- Den leveres med mange lagringsmotorer, inklusive de hรธjtydende, der kan integreres med andre relationelle databasestyringssystemer.
- Det giver Galera-klyngeteknologien.
- MariaDB understรธtter PHP, et populรฆrt sprog til webudvikling.
- MariaDB kan kรธre pรฅ forskellige operativsystemer, og det understรธtter adskillige programmeringssprog.
- MariaDB leveres med yderligere kommandoer, som ikke er tilgรฆngelige i MySQL. MySQL har funktioner, som har en negativ indvirkning pรฅ DBMS'ens ydeevne. Sรฅdanne funktioner er blevet erstattet i MariaDB.
MariaDB vs MySQL
Nedenfor er nogle vigtige forskelle mellem MariaDB vs MySQL
| Parameter | MariaDB | MySQL |
|---|---|---|
| Flere muligheder for lagermotorer | MariaDB har 12 nye lagermotorer, som du ikke finder i MySQL. | Den har fรฆrre muligheder for opbevaring i forhold til MariaDB. |
| Hastighedsforbedringer | MariaDB viser en forbedret hastighed i forhold til MySQL. Den kommer med adskillige funktioner til at optimere hastigheden. Sรฅdanne funktioner omfatter afledte visninger/tabeller, underforespรธrgsel, udfรธrelseskontrol, diskadgang og optimeringskontrol. | MySQL udviser en langsommere hastighed sammenlignet med MariaDB. Den er kun afhรฆngig af nogle fรฅ funktioner til hastighedsoptimering, for eksempel hash-indekser. |
| Hurtigere cache/indekser | Med Memory storage-motoren af MariaDB, kan en INSERT-sรฆtning udfyldes 24 % end i standarden MySQL. | Hukommelseslagringsmotoren til MySQL er langsommere i forhold til det MariaDB. |
| Stรธrre og hurtigere forbindelsespool | MariaDB leveres med en avanceret trรฅdpool, der er i stand til at kรธre hurtigere og understรธtter op til 200,000+ forbindelser. | Trรฅdpuljen leveret af MySQL kan ikke understรธtte op til 200,000 forbindelser pr. gang. |
| Forbedret replikering | In MariaDB, kan replikering udfรธres sikrere og hurtigere. Opdateringer kan ogsรฅ gรธres 2x hurtigere sammenlignet med den traditionelle MySQL. | MySQL's community-udgave tillader et statisk antal trรฅde at blive forbundet. MySQL's virksomhedsplan kommer med trรฅdfunktioner. |
| Nye funktioner/udvidelser | MariaDB kommer med nye funktioner og udvidelser, herunder JSON-, WITH- og KILL-udsagn. | Den nye MariaDB funktioner er ikke inkluderet i MySQL. |
| Manglende funktioner | MariaDB mangler nogle af de funktioner, som leveres af MySQL enterprise udgave. For at lรธse dette tilbyder den alternative open source-plugins. Derfor, MariaDB brugere kan nyde de samme funktioner som MySQL Enterprise Edition-brugere. | Enterprise-udgaven af MySQL bruger en proprietรฆr kode. Kun brugere af MySQL Enterprise Edition har adgang til dette. |
Sรฅdan installeres MariaDB
Installer som en selvstรฆndig applikation
For at kunne bruge MariaDB, skal du installere det pรฅ din computer.
Installationen kan udfรธres ved at fรธlge nedenstรฅende trin:
Trin 1) ร
bn under URL
Download installationsfilen fra linket https://downloads.mariadb.org/
Trin 2) Double klik pรฅ filen for at starte installationen
Nรฅr overfรธrslen er fรฆrdig, skal du รฅbne fil
Trin 3) Klik pรฅ knappen Nรฆste
Klik pรฅ knappen Nรฆste i vinduet, der dukker op:
Trin 4) Accepter licensaftalen
Klik derefter pรฅ knappen Nรฆste:
Trin 5) Vรฆlg MariaDB Server
Vรฆlg de funktioner, der skal installeres, og klik pรฅ Nรฆste
Trin 6) Indtast adgangskoden
I det nรฆste vindue bliver du bedt om at รฆndre adgangskoden for root-brugeren.
- Indtast adgangskoden, og bekrรฆft den ved at indtaste den samme adgangskode igen. Hvis du vil tillade adgang fra fjernmaskiner, skal du aktivere det nรธdvendige afkrydsningsfelt.
- Nรฅr du er fรฆrdig, skal du klikke pรฅ knappen Nรฆste.
Trin 7) Indtast navn og vรฆlg portnummer
I det nรฆste vindue skal du skrive et navn til forekomsten, vรฆlge portnummeret og angive den nรธdvendige stรธrrelse. Klik pรฅ knappen Nรฆste:
Trin 8) Klik pรฅ Nรฆste
I det nรฆste vindue skal du blot klikke pรฅ knappen Nรฆste.
Trin 9) Klik pรฅ Installer
Start installationen ved at klikke pรฅ knappen Installer.
Trin 10) En statuslinje vises
En statuslinje, der viser installationens forlรธb, vises:
Trin 11) Klik pรฅ knappen Afslut
Nรฅr installationen er fuldfรธrt, vil du se knappen Udfรธr. Klik pรฅ knappen for at lukke vinduet:
Trin 12) Tillykke!
Det har du nu MariaDB installeret pรฅ din computer.
Arbejde med kommandoprompt
Nu har du det MariaDB installeret pรฅ din computer, er det tid for dig at starte den og begynde at bruge den. Dette kan gรธres via MariaDB kommandoprompt.
Fรธlg trinene nedenfor:
Trin 1) Klik pรฅ Start, vรฆlg Alle programmer og klik derefter MariaDB...
Trin 2) Vรฆlg et MariaDB Kommandoprompt.
Trin 3) MariaDB kommandoprompt vil blive startet. Det er nu tid til at logge ind. Du skal logge ind som root-bruger og den adgangskode, som du indstillede under installationen af MariaDB. Skriv fรธlgende kommando pรฅ kommandoprompten:
MySQL -u root -p
Trin 4) Indtast adgangskoden og tryk pรฅ returtasten. Du skal vรฆre logget ind, som vist nedenfor:
Du er nu logget ind MariaDB.
Datatyper
MariaDB understรธtter fรธlgende datatyper:
- Strengdatatyper
- Numeriske datatyper
- Dato/tid datatyper
- Store objektdatatyper
Strengdatatyper
Disse inkluderer fรธlgende:
| Streng datatype | Beskrivelse |
|---|---|
| char (stรธrrelse) | Stรธrrelsen angiver antallet af tegn, der skal gemmes. Den gemmer maksimalt 255 tegn. Fast lรฆngde strenge. |
| varchar (stรธrrelse) | Stรธrrelsen angiver antallet af tegn, der skal gemmes. Den gemmer maksimalt 255 tegn. Variabel lรฆngde strenge. |
| tekst(stรธrrelse) | Stรธrrelsen angiver antallet af tegn, der skal gemmes. Den gemmer maksimalt 255 tegn. Fast lรฆngde strenge. |
| binรฆr (stรธrrelse) | Stรธrrelsen angiver antallet af tegn, der skal gemmes. Den gemmer maksimalt 255 tegn. Snore i fast stรธrrelse. |
Numeriske datatyper
De omfatter fรธlgende:
| Numeriske datatyper | Beskrivelse |
|---|---|
| bit | En meget lille heltalsvรฆrdi svarende til tinyint(1). Fortegnsvรฆrdier ligger mellem -128 og 127. Vรฆrdier uden fortegn varierer mellem 0 og 255. |
| int(m) | En standard heltalsvรฆrdi. Signerede vรฆrdier ligger mellem -2147483648 og 2147483647. Ikke-signerede vรฆrdier ligger mellem 0 og 4294967295. |
| flyde(m, d) | Et flydende kommatal med enkelt prรฆcision. |
| dobbelt(m,d) | Et flydende kommatal med dobbelt prรฆcision. |
| flyde(p) | Et flydende decimaltal. |
Dato/klokkeslรฆt Datatyper
Disse inkluderer fรธlgende:
| Dato/klokkeslรฆt Datatype | Beskrivelse |
|---|---|
| Dato | Vises i formen 'รฅรฅรฅรฅ-mm-dd.' Vรฆrdierne gรฅr mellem '1000-01-01' og '9999-12-31'. |
| Dato tid | Vises i formen 'รฅรฅรฅรฅ-mm-dd tt:mm:ss'. Vรฆrdierne gรฅr mellem '1000-01-01 00:00:00' og '9999-12-31 23:59:59'. |
| tidsstempel (m) | Vises i formen 'รฅรฅรฅรฅ-mm-dd tt:mm:ss'. Vรฆrdier varierer mellem '1970-01-01 00:00:01' utc og '2038-01-19 03:14:07' utc. |
| Tid | Vises i formen 'tt:mm:ss'. Vรฆrdier varierer mellem '-838:59:59' og '838:59:59'. |
Store objektdatatyper (LOB)
De omfatter fรธlgende:
| Stort objekt Datatype | Beskrivelse |
|---|---|
| lille klat | Dens maksimale stรธrrelse er 255 bytes. |
| klat (stรธrrelse) | Tager 65,535 bytes som maksimal stรธrrelse. |
| mediumblob | Dens maksimale stรธrrelse er 16,777,215 bytes. |
| lang tekst | Det tager 4 GB som den maksimale stรธrrelse. |
Opret en database og tabeller
For at oprette en ny database i MariaDB, bรธr du have sรฆrlige privilegier, som kun gives til root-brugeren og administratorerne.
For at oprette en ny database, skal du bruge kommandoen CREATE DATABASE, som tager fรธlgende syntaks:
CREATE DATABASE DatabaseName;
I dette tilfรฆlde skal du oprette en database og give den navnet Demo.
Start MariaDB kommandoprompt og log pรฅ som root-bruger ved at skrive fรธlgende kommando:
mysql -u root -p
Indtast root-adgangskoden og tryk pรฅ returtasten. Du bliver logget ind.
Kรธr nu fรธlgende kommando:
CREATE DATABASE Demo;
Du har derefter oprettet en database ved navn Demo. Det vil vรฆre godt for dig at bekrรฆfte, om databasen blev oprettet med succes eller ej. Du skal kun vise listen over de tilgรฆngelige databaser ved at kรธre fรธlgende kommando:
SHOW DATABASES;
Ovenstรฅende output viser, at Demo-databasen er en del af listen, hvorfor databasen blev oprettet med succes.
MariaDB Vรฆlg Database
For at du kan bruge eller arbejde pรฅ en bestemt database, skal du vรฆlge den fra listen over tilgรฆngelige databaser. Nรฅr du har valgt en database, kan du udfรธre opgaver sรฅsom oprettelse af tabeller i databasen.
For at vรฆlge en database skal du bruge kommandoen USE. Det tager syntaksen nedenfor:
USE database_name;
Du skal bruge Demo-databasen. Du kan vรฆlge det ved at kรธre fรธlgende kommando:
USE Demo;
Ovenstรฅende billede viser, at MariaDB kommandoprompten er รฆndret fra ingen til navnet pรฅ den database, der er blevet valgt.
Du kan nu gรฅ videre og oprette tabeller i Demo-databasen.
MariaDB โ Opret tabel
For at du kan oprette en tabel, skal du have valgt en database. Tabellen kan oprettes ved hjรฆlp af CREATE TABLE-sรฆtningen. Her er syntaksen for kommandoen:
CREATE TABLE tableName (columnName columnType);
Du kan indstille en af โโkolonnerne til at vรฆre den primรฆre nรธgle. Denne kolonne bรธr ikke tillade nulvรฆrdier.
Vi vil oprette to tabeller i demodatabasen, bog- og pristabellerne. Hver tabel vil have to kolonner.
Lad os begynde med at oprette bogtabellen med to kolonner, id og navn. Kรธr fรธlgende kommando:
CREATE TABLE Book( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY (id));
PRIMARY KEY-begrรฆnsningen er blevet brugt til at indstille id-kolonnen som den primรฆre nรธgle for tabellen. Egenskaben AUTO_INCREMENT vil automatisk รธge vรฆrdierne af id-kolonnen med 1 for hver ny post, der indsรฆttes i tabellen. Alle kolonnerne tillader ikke null-vรฆrdier.
Opret nu den anden tabel, Pristabellen:
CREATE TABLE Price( id INT NOT NULL AUTO_INCREMENT, price float NOT NULL, PRIMARY KEY (id));
Id-kolonnen er indstillet som den primรฆre nรธgle til tabellen.
Viser tabeller
Nu hvor du har oprettet de to tabeller, vil det vรฆre godt for dig at tilpasse dig, om tabellerne blev oprettet med succes eller ej. Du kan vise listen over tabeller indeholdt i en database ved at kรธre fรธlgende kommando:
SHOW TABLES;
Ovenstรฅende skรฆrmbillede viser, at de to tabeller blev oprettet med succes i Demo-databasen.
Viser tabelstruktur
For at se strukturen af โโen bestemt tabel, kan du bruge kommandoen DESCRIBE, almindeligvis forkortet som DESC. Det tager fรธlgende syntaks:
DESC TableName;
For at se strukturen af โโtabellen med navnet Bog kan du for eksempel kรธre fรธlgende kommando;
DESC Book;
Tabellen har to kolonner. For at se strukturen i pristabellen kan du kรธre fรธlgende kommando:
DESC Price;
CRUD og klausuler
INSERT
For at indsรฆtte data i en MariaDB tabel, skal du bruge INSERT INTO-sรฆtningen. Denne kommando tager syntaksen nedenfor:
INSERT INTO tableName (column_1, column_2, ... ) VALUES (value1, value2, ... ), (value1, value2, ... ), ...;
Ovenstรฅende syntaks viser, at du skal angive de tabelkolonner, du vil indsรฆtte data i, samt de data, du skal indsรฆtte.
Lad os indsรฆtte en post i bogtabellen:
INSERT INTO book (id, name) VALUES(1, 'MariaDB Book');
Du har indsat en enkelt post i tabellen. Indsรฆt en post i pristabellen:
INSERT INTO price (id, price) VALUES(1, 200);
Posten er oprettet.
SELECT
SELECT-sรฆtningen hjรฆlper os med at se eller se indholdet af en databasetabel. For at se indholdet af bogtabellen skal du for eksempel kรธre fรธlgende kommando:
SELECT * from book;
Se nu indholdet af pristabellen:
SELECT * from price;
Indsรฆttelse af flere poster
Det er muligt for os at indsรฆtte flere poster i en MariaDB bord pรฅ en tur. For at demonstrere dette, kรธr fรธlgende eksempel:
INSERT INTO book (id, name) VALUES (2,'MariaDB Book2'), (3,'MariaDB Book3'), (4,'MariaDB Book4'), (5,'MariaDB Book5');
Du kan forespรธrge i tabellen for at kontrollere, om posterne blev indsat korrekt:
SELECT * FROM book;
Posterne blev indsat. Indsรฆt flere poster i pristabellen ved at kรธre dette eksempel:
INSERT INTO price (id, price) VALUES (2, 250), (3, 220), (4, 190), (5, 300);
Lad os bekrรฆfte, om registreringerne blev oprettet med succes:
SELECT * FROM price;
OPDATER
UPDATE-kommandoen hjรฆlper os med at รฆndre eller modificere de poster, der allerede er indsat i en tabel. Du kan kombinere det med WHERE-udtrykket for at angive den post, der skal opdateres. Her er syntaksen:
UPDATE tableName SET field=newValue, field2=newValue2,... [WHERE ...]
UPDATE-kommandoen kan ogsรฅ kombineres med klausuler som SET, WHERE, LIMIT og ORDER BY. Du vil snart se dette:
Overvej tabellen med navnet Pris med fรธlgende poster:
Lad os รฆndre prisen pรฅ bogen med et id pรฅ 1 fra 200 til 250:
UPDATE price SET price = 250 WHERE id = 1;
Kommandoen kรธrte med succes. Du kan nu forespรธrge i tabellen for at se, om รฆndringen fandt sted:
Ovenstรฅende skรฆrmbillede viser, at รฆndringen er implementeret. Overvej tabelbogen med fรธlgende optegnelser:
Lad os รฆndre navnet pรฅ bogen med navnet Bog til MariaDB Bog 1. Bemรฆrk, at bogen har et id pรฅ 1. Her er kommandoen til dette:
UPDATE book SET name = โMariaDB Book1โ WHERE id = 1;
Tjek om รฆndringen er implementeret:
Ovenstรฅende skรฆrmbillede viser, at รฆndringen er blevet implementeret med succes.
I ovenstรฅende eksempler har vi kun รฆndret รฉn kolonne ad gangen. Det er dog muligt for os at รฆndre flere kolonner pรฅ en gang. Lad os demonstrere dette ved hjรฆlp af et eksempel.
Lad os bruge pristabellen med fรธlgende data:
Lad os รฆndre bรฅde id'et og prisen pรฅ bogen med et id pรฅ 5. Vi รฆndrer dens id til 6 og pris til 6. Kรธr fรธlgende kommando:
UPDATE price SET id = 6, price = 280 WHERE id = 5;
Forespรธrg nu i tabellen for at kontrollere, om รฆndringen blev foretaget med succes:
รndringen blev gennemfรธrt.
Slette
Vi bruger kommandoen DELETE, nรฅr vi skal slette enten en eller mange poster fra en tabel. Her er syntaksen for kommandoen:
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
Overvej pristabellen med fรธlgende poster:
Vi skal slette den sidste post fra tabellen. Den har et id pรฅ 6 og en pris pรฅ 280. Lad os slette posten:
DELETE FROM price WHERE id = 6;
Kommandoen kรธrte med succes. Lad os forespรธrge i tabellen for at bekrรฆfte, om sletningen lykkedes:
Outputtet viser, at posten blev slettet.
Hvor
WHERE-sรฆtningen hjรฆlper os med at angive den nรธjagtige placering, hvor vi skal foretage en รฆndring. Det bruges sammen med sรฆtninger som INSERT, SELECT, UPDATE og DELETE. Overvej pristabellen med fรธlgende data:
Antag, at vi skal se de poster, hvor prisen er mindre end 250. Vi kan kรธre fรธlgende kommando:
SELECT * FROM price WHERE price < 250;
Alle de plader, hvor prisen er under 250,- er returneret.
WHERE-sรฆtningen kan kombineres med AND-sรฆtningen. Antag, at vi skal se alle poster i pristabellen, hvor prisen er under 250 og id er over 3. Vi kan kรธre fรธlgende kommando:
SELECT * FROM price WHERE id > 3 AND price < 250;
Kun รฉn post er blevet returneret. ร rsagen er, at den skal opfylde alle de betingelser, der er angivet, det vil sige id over 3 og pris under 250. Hvis nogen af โโdisse betingelser overtrรฆdes, vil posten ikke blive returneret.
Udtrykket kan ogsรฅ kombineres med OR-kommandoen. Lad os erstatte AND i vores forrige kommando med OR og se, hvilken type output vi modtager:
SELECT * FROM price WHERE id > 3 OR price < 250;
Vi fรฅr nu 2 rekorder i stedet for 1. Dette skyldes, at det kun skal opfylde en af โโde angivne betingelser for at kunne kvalificere sig.
lignende
Denne klausul bruges til at specificere datamรธnsteret ved adgang til tabeldata, hvor et nรธjagtigt match er nรธdvendigt. Det kan kombineres med INSERT, UPDATE, SELECT og DELETE sรฆtningerne.
Du skal videregive det datamรธnster, du leder efter, til klausulen, og det vil returnere enten sandt eller falsk. Her er jokertegnene, der kan bruges sammen med klausulen:
- %: for at matche enten 0 eller flere tegn.
- _: for at matche et enkelt tegn.
Her er syntaksen for LIKE-sรฆtningen:
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
Lad os demonstrere, hvordan man bruger klausulen med % jokertegn. Lad os bruge bogtabellen med fรธlgende optegnelser:
Vi skal se alle poster, hvor navnet begynder med M. Vi kan kรธre fรธlgende kommando:
SELECT name FROM book WHERE name LIKE 'M%';
Alle poster er blevet returneret, fordi deres navne begynder med bogstavet M. For at se alle navne, der slutter med 4, kan du kรธre fรธlgende kommando:
SELECT name FROM book WHERE name LIKE '%4';
Kun รฉt navn er blevet returneret, fordi det er det eneste, der opfylder betingelsen.
Vi kan ogsรฅ omgive sรธgemรธnsteret med jokertegnet:
SELECT name FROM book WHERE name LIKE '%DB%';
Ud over jokertegnet % kan LIKE-sรฆtningen bruges sammen med jokertegnet _. Dette er understregnings-jokertegnet, og det vil kun lede efter et enkelt tegn.
Lad os arbejde med pristabellen med fรธlgende poster:
Lad os se efter posten, hvor prisen er som 1_0. Vi kรธrer fรธlgende kommando:
SELECT * FROM price WHERE price LIKE '1_0';
Det har returneret rekorden, hvor prisen er 190. Vi kan ogsรฅ prรธve et andet mรธnster:
SELECT * FROM price WHERE price LIKE '_2_';
Det er muligt for os at bruge LIKE-klausulen sammen med NOT-operatoren. Dette vil returnere alle de poster, der ikke opfylder det angivne mรธnster. For eksempel:
Lad os bruge pristabellen med fรธlgende poster:
Lad os finde alle de poster, hvor prisen ikke starter med 2:
SELECT * FROM price WHERE price NOT LIKE '2%';
Kun รฉn post opfylder ikke det angivne mรธnster.
Order By
Denne klausul hjรฆlper os med at sortere vores optegnelser i enten stigende eller faldende rรฆkkefรธlge. Vi bruger det med SELECT-sรฆtningen, som vist nedenfor:
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
Det er muligt for os at bruge denne klausul uden at tilfรธje hverken ASC- eller DESC-delen. For eksempel:
Vi vil bruge pristabellen med fรธlgende poster:
Kรธr fรธlgende kommando mod tabellen:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
I ovenstรฅende kommando har vi bestilt efter prisen. Posterne er bestilt med priserne i stigende rรฆkkefรธlge. Det betyder, at nรฅr vi ikke angiver rรฆkkefรธlgen, sker sorteringen som standard i stigende rรฆkkefรธlge.
Lad os kรธre klausulen med DESC-indstillingen:
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
Posterne er sorteret med prisen i faldende rรฆkkefรธlge, som vi har angivet.
Lad os bruge ORDER BY-sรฆtningen sammen med ASC-attributten:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
Pladerne er bestilt men med priserne i stigende rรฆkkefรธlge. Dette svarer til, nรฅr vi bruger ORDER BY-sรฆtningen uden hverken ASC- eller DESC-attributter.
DISTINCT
Denne klausul hjรฆlper os med at slippe af med dubletter, nรฅr vi vรฆlger poster fra en tabel. Det betyder, at det hjรฆlper os med at fรฅ unikke optegnelser. Dens syntaks er angivet nedenfor:
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
For at demonstrere dette vil vi bruge pristabellen med fรธlgende data:
Nรฅr vi vรฆlger priskolonnen fra tabellen, fรฅr vi fรธlgende resultat:
SELECT price FROM Price;
Vi har to plader med en pris pรฅ 250, hvilket skaber en dublet. Vi skal kun have unikke optegnelser. Vi kan filtrere disse ved at bruge DISTINCT-sรฆtningen som vist nedenfor:
SELECT DISTINCT price FROM Price;
Vi har nu ingen dubletter i ovenstรฅende output.
Fra
FROM-sรฆtningen, der bruges til at hente data fra en databasetabel. Det kan ogsรฅ hjรฆlpe, nรฅr du samler borde. Her er syntaksen for kommandoen:
SELECT columnNames FROM tableName;
For at se indholdet af bogtabellen skal du kรธre fรธlgende kommando:
SELECT * FROM price;
Klausulen kan hjรฆlpe dig med kun at hente en enkelt kolonne fra en databasetabel. For eksempel:
SELECT price FROM Price;
Avancerede opgaver
Lagret procedure
En procedure er en MariaDB program, som du kan sende parametre til. En procedure returnerer ikke vรฆrdier. For at oprette en procedure bruger vi kommandoen CREATE PROCEDURE.
For at demonstrere, hvordan man opretter og kalder en procedure, vil vi oprette en procedure ved navn myProcedure(), som hjรฆlper os med at vรฆlge navnekolonnen fra bogtabellen. Her er proceduren:
DELIMITER $
CREATE PROCEDURE myProcedure()
BEGIN
SELECT name FROM book;
END;
;
Proceduren er oprettet. Vi har simpelthen vedlagt SELECT-sรฆtningen i BEGIN- og END-sรฆtningerne i proceduren.
Nu kan vi kalde proceduren ved dens navn som vist nedenfor:
CALL myProcedure();
Proceduren returnerer navnekolonnen i bogtabellen, nรฅr den kaldes.
Vi kan lave en procedure, der tager en parameter ind. For eksempel skal vi vรฆlge navnet pรฅ bogen og filtrere ved hjรฆlp af bog-id'et. Vi kan oprette fรธlgende procedure til dette:
DELIMITER $
CREATE PROCEDURE myProcedure2(book_id int)
BEGIN
SELECT name FROM book WHERE id = book_id;
END;
;
Ovenfor har vi lavet en procedure ved navn myProcedure2(). Denne procedure tager en heltalsparameter ved navn book_id, som er id'et for den bog, hvis navn vi skal se. For at se navnet pรฅ bogen med et id pรฅ 3, kan vi kalde proceduren som fรธlger:
CALL myProcedure2(3);
Funktion
I modsรฆtning til procedurer skal vi videregive parametre til funktioner, og en funktion skal returnere en vรฆrdi. For at oprette en funktion i MariaDB, bruger vi CREATE FUNCTION-sรฆtningen. Udsagnet tager fรธlgende syntaks:
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;
Ovenstรฅende parametre er beskrevet nedenfor:
| Parameter | Beskrivelse |
|---|---|
| DEFINER klausul | Denne parameter er valgfri. Hvis du ikke angiver det, bliver definereren den bruger, der har oprettet funktionen. Hvis der er behov for at angive en anden definerer, skal du inkludere DEFINER-sรฆtningen, hvor brugernavnet vil vรฆre definereren af โโfunktionen. |
| funktionsnavn | Det navn, der skal tildeles denne funktion i MariaDB. |
| parameter | Parameteren/parametrene, der er overfรธrt til funktionen. Under oprettelsen af โโfunktionen behandles alle parametre som IN-parametre (i stedet for OUT/INOUT parametre). |
| return_datatype | Datatypen for funktionens returvรฆrdi. |
| SPROG SQL | Det pรฅvirker portabiliteten, men ikke funktionen. |
| DETERMINISTISK | Funktionen returnerer kun รฉt resultat, nรฅr der gives et antal parametre. |
| IKKE DETERMINISTISK | Det er muligt for funktionen at returnere et andet resultat, nรฅr der gives en rรฆkke parametre. |
| INDEHOLDER SQL | informerer MariaDB at denne funktion indeholder SQL. Databasen vil ikke bekrรฆfte, om dette er sandt. |
| INGEN SQL | Denne klausul bruges ikke, og den har ingen indflydelse pรฅ din funktion. |
| LรSER SQL DATA | fortรฆller MariaDB at denne funktion vil bruge SELECT-sรฆtninger til at lรฆse data, men den vil ikke รฆndre dataene. |
| รNDRINGER SQL DATA | fortรฆller MariaDB at denne funktion vil bruge INSERT, DELETE, UPDATE og andet DDL sรฆtninger til at รฆndre SQL-data. |
| erklรฆring-afsnit | Det er her lokale variabler skal deklareres. |
| eksekverbar-sektion | Funktionskoden skal tilfรธjes her. |
Her er et eksempel MariaDB fungere:
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 ;
Vi kan sรฅ kalde ovenstรฅende funktion som fรธlger:
select sumFunc(1000);
Kommandoen returnerer fรธlgende:
Nรฅr du er fรฆrdig med en funktion, vil det vรฆre godt for dig at slette den. Dette er nemt, da du kun skal kalde DROP FUNCTION-sรฆtningen, der tager fรธlgende syntaks:
DROP FUNCTION function_name;
For at droppe funktionen ved navn myFunc kan vi for eksempel kรธre fรธlgende kommando:
DROP FUNCTION myFunc;
JOIN
Nรฅr du har brug for at hente data fra mere end รฉn tabel ad gangen, skal du bruge MariaDB TILSLUTTER. Det betyder, at en JOIN fungerer pรฅ to eller flere borde. Fรธlgende tre typer JOINS understรธttes i MariaDB:
- INDRE/ENKEL TILSLUTNING
- VENSTRE YDRE JOIN/LEFT JOIN
- HรJRE YDRE SAMLING/HรJRE JOIN
Lad os diskutere dem en for en:
INNER JOIN
Den indre sammenkรฆdning returnerer alle rรฆkker fra tabellerne, hvor sammenkรฆdningsbetingelsen er sand. Dens syntaks er som fรธlger:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
For eksempel:
Vi vil bruge vores to borde, bรธger og bog.
Bogtabellen har fรธlgende data:
Pristabellen har fรธlgende data:
Mรฅlet er at samle navnekolonnen fra bogtabellen og priskolonnen fra pristabellen til en enkelt tabel. Dette er muligt med en indre sammenfรธjning, som vist nedenfor:
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
Kommandoen returnerer fรธlgende:
VENSTRE YDRE JOIN
Denne join returnerer alle rรฆkkerne fra den venstre tabel og kun rรฆkker, hvor joinbetingelsen er sand fra den anden tabel. Dens syntaks er som fรธlger:
SELECT columns FROM table-1 LEFT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Nรธgleordet OUTER er blevet placeret i firkantede parenteser, fordi det er valgfrit.
For eksempel:
SELECT book.name, price.price FROM book LEFT JOIN price ON book.id = price.id;
Kommandoen returnerer fรธlgende:
Den sidste post i ovenstรฅende tabel har ingen matchende vรฆrdi til venstre. Derfor er den blevet erstattet med NULL.
HรJRE YDRE JOIN
Denne join returnerer alle rรฆkkerne fra den hรธjre tabel og kun rรฆkker, hvor join-betingelsen er sand fra den anden tabel. Dens syntaks er som fรธlger:
SELECT columns FROM table-1 RIGHT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Nรธgleordet OUTER er blevet placeret i firkantede parenteser, fordi det er valgfrit.
For eksempel:
SELECT book.name, price.price FROM book RIGHT JOIN price ON book.id = price.id;
Kommandoen returnerer fรธlgende:
ร rsagen er, at alle rรฆkker i den hรธjre tabel blev matchet med dem i den anden tabel. Hvis nogle af rรฆkkerne ikke matchede, ville vi have NULL i den fรธrste kolonne.






































































