MariaDB Selvstudium: Lær syntaks, kommandoer med eksempler
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 | Description |
---|---|
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 | Description |
---|---|
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 | Description |
---|---|
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 | Description |
---|---|
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 | Description |
---|---|
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.