MariaDB Opplæring: Lær syntaks, kommandoer med eksempler

Hva er MariaDB?

MariaDB er en gaffel av MySQL databasestyringssystem. Den er laget av de opprinnelige utviklerne. Dette DBMS-verktøyet tilbyr databehandlingsmuligheter for både små og bedriftsoppgaver.

MariaDB er en forbedret versjon av MySQL. Den kommer med mange innebygde kraftige funksjoner og mange brukervennligheter, sikkerhets- og ytelsesforbedringer som du ikke finner i MySQL.

Her er funksjonene til MariaDB:

  • Den opererer under GPL-, BSD- eller LGPL-lisenser.
  • MariaDB støtter et populært og standard spørrespråk.
  • Den kommer med mange lagringsmotorer, inkludert de høyytelsesmotorer som kan integreres med andre relasjonsdatabaseadministrasjonssystemer.
  • Det gir Galera-klyngeteknologien.
  • MariaDB støtter PHP, et populært språk for webutvikling.
  • MariaDB kan kjøre på forskjellige operativsystemer, og den støtter en rekke programmeringsspråk.
  • MariaDB kommer med tilleggskommandoer som ikke er tilgjengelige i MySQL. MySQL har funksjoner som har en negativ innvirkning på ytelsen til DBMS. Slike funksjoner har blitt erstattet i MariaDB.

MariaDB vs MySQL

Nedenfor er noen viktige forskjeller mellom MariaDB vs MySQL

Parameter MariaDB MySQL
Flere alternativer for lagringsmotorer MariaDB har 12 nye lagringsmotorer som du ikke finner i MySQL. Den har færre muligheter for oppbevaring sammenlignet med MariaDB.
Hastighetsforbedringer MariaDB viser en forbedret hastighet sammenlignet med MySQL. Den kommer med en rekke funksjoner for å optimalisere hastigheten. Slike funksjoner inkluderer avledede visninger/tabeller, underspørring, utførelseskontroll, disktilgang og optimaliseringskontroll. MySQL viser en lavere hastighet sammenlignet med MariaDB. Den er avhengig av bare noen få funksjoner for hastighetsoptimalisering, for eksempel hash-indekser.
Raskere cache/indekser Med minnelagringsmotoren til MariaDB, en INSERT-setning kan fullføres 24 % enn i standarden MySQL. Minnelagringsmotoren til MySQL er tregere sammenlignet med det MariaDB.
Større og raskere tilkoblingsbasseng MariaDB leveres med en avansert trådpool som kan kjøre raskere og støtte opptil 200,000 XNUMX+ tilkoblinger. Trådbassenget levert av MySQL kan ikke støtte opptil 200,000 XNUMX tilkoblinger per gang.
Forbedret replikering In MariaDB, kan replikering gjøres tryggere og raskere. Oppdateringer kan også gjøres 2 ganger raskere sammenlignet med tradisjonelle MySQL. MySQLCommunity-utgaven tillater at et statisk antall tråder kobles til. MySQLsin bedriftsplan kommer med trådfunksjoner.
Nye funksjoner/utvidelser MariaDB kommer med nye funksjoner og utvidelser, inkludert JSON-, WITH- og KILL-setningene. Den nye MariaDB funksjoner er ikke gitt i MySQL.
Manglende funksjoner MariaDB mangler noen av funksjonene som tilbys av MySQL bedriftsutgave. For å løse dette tilbyr den alternative åpen kildekode-plugins. Derfor, MariaDB brukere kan nyte de samme funksjonene som MySQL Enterprise Edition-brukere. Enterprise-utgaven av MySQL bruker en proprietær kode. Kun brukere av MySQL Enterprise Edition har tilgang til dette.

Hvordan du installerer MariaDB

Installer som en frittstående applikasjon

For å kunne bruke MariaDB, må du installere den på datamaskinen din.

Installasjonen kan gjøres ved å følge trinnene nedenfor:

Trinn 1) Åpne under URL
Last ned installasjonsfilen fra lenken https://downloads.mariadb.org/

Trinn 2) Double klikk på filen for å starte installasjonen
Når nedlastingen er fullført, åpne fil

Trinn 3) Klikk på Neste-knappen
Klikk på Neste-knappen i vinduet som dukker opp:

Installasjon av MariaDB

Trinn 4) Godta lisensavtalen
Klikk deretter på Neste-knappen:

Installasjon av MariaDB

Trinn 5) Velg MariaDB Server
Velg funksjonene som skal installeres og klikk på Neste

Installasjon av MariaDB

Trinn 6) Skriv inn passordet
I neste vindu vil du bli bedt om å endre passordet for root-brukeren.

  1. Skriv inn passordet og bekreft det ved å skrive inn det samme passordet på nytt. Hvis du vil tillate tilgang fra eksterne maskiner, aktiverer du den nødvendige avmerkingsboksen.
  2. Når du er ferdig, klikker du på Neste-knappen.

Installasjon av MariaDB

Trinn 7) Skriv inn navn og velg portnummer
I det neste vinduet, skriv inn et navn for forekomsten, velg portnummeret og angi den nødvendige størrelsen. Klikk på Neste-knappen:

Installasjon av MariaDB

Trinn 8) Klikk på Neste
I det neste vinduet klikker du bare på Neste-knappen.

Trinn 9) Klikk på Installer
Start installasjonen ved å klikke på Installer-knappen.

Installasjon av MariaDB

Trinn 10) En fremdriftslinje vist
En fremdriftslinje som viser fremdriften til installasjonen vil bli vist:

Installasjon av MariaDB

Trinn 11) Klikk på Fullfør-knappen
Når installasjonen er fullført, vil du se Fullfør-knappen. Klikk på knappen for å lukke vinduet:

Installasjon av MariaDB

Trinn 12) Gratulerer!
Det har du nå MariaDB installert på datamaskinen din.

Arbeide med ledetekst

Nå som du har MariaDB installert på datamaskinen din, er det på tide for deg å starte den og begynne å bruke den. Dette kan gjøres via MariaDB ledeteksten.

Følg trinnene nedenfor:

Trinn 1) Klikk Start, velg Alle programmer og klikk deretter MariaDB...

Trinn 2) Velg en MariaDB Command Prompt.

MariaDB Ledetekst

Trinn 3) Ocuco MariaDB ledeteksten vil bli startet. Det er nå på tide å logge inn. Du bør logge inn som root-bruker og passordet som du satte under installasjonen av MariaDB. Skriv inn følgende kommando på ledeteksten:

MySQL -u root -p

Trinn 4) Skriv inn passordet og trykk på returtasten. Du bør være pålogget, som vist nedenfor:

MariaDB Ledetekst

Du er nå logget inn MariaDB.

Datatyper

MariaDB støtter følgende datatyper:

  • Strengdatatyper
  • Numeriske datatyper
  • Datatyper for dato/klokkeslett
  • Datatyper for store objekter

Strengdatatyper

Disse inkluderer følgende:

Datatype streng Tekniske beskrivelser
røye (størrelse) Størrelsen angir antall tegn som skal lagres. Den lagrer maksimalt 255 tegn. Fast lengde strenger.
varchar (størrelse) Størrelsen angir antall tegn som skal lagres. Den lagrer maksimalt 255 tegn. Strenger med variabel lengde.
tekst(størrelse) Størrelsen angir antall tegn som skal lagres. Den lagrer maksimalt 255 tegn. Fast lengde strenger.
binær (størrelse) Størrelsen angir antall tegn som skal lagres. Den lagrer maksimalt 255 tegn. Fast størrelse strenger.

Numeriske datatyper

De inkluderer følgende:

Numeriske datatyper Tekniske beskrivelser
bit En veldig liten heltallsverdi som tilsvarer tinyint(1). Signerte verdier varierer mellom -128 og 127. Usignerte verdier varierer mellom 0 og 255.
int(m) En standard heltallsverdi. Signerte verdier varierer mellom -2147483648 og 2147483647. Usignerte verdier varierer mellom 0 og 4294967295.
flyte(m, d) Et flyttallnummer med enkel presisjon.
dobbel(m,d) Et flyttall med dobbel presisjon.
flyte(p) Et flyttallnummer.

Dato/klokkeslett Datatyper

Disse inkluderer følgende:

Dato/klokkeslett Datatype Tekniske beskrivelser
Dato Vises i formen 'åååå-mm-dd.' Verdiene varierer mellom '1000-01-01' og '9999-12-31'.
Dato tid Vises i formen 'åååå-mm-dd tt:mm:ss'. Verdiene varierer mellom '1000-01-01 00:00:00' og '9999-12-31 23:59:59'.
tidsstempel (m) Vises i formen 'åååå-mm-dd tt:mm:ss'. Verdiene varierer mellom '1970-01-01 00:00:01' utc og '2038-01-19 03:14:07' utc.
Tid Vises i formen 'tt:mm:ss'. Verdiene varierer mellom '-838:59:59' og '838:59:59'.

Datatyper for store objekter (LOB)

De inkluderer følgende:

Stort objekt Datatype Tekniske beskrivelser
liten klatt Dens maksimale størrelse er 255 byte.
blob (størrelse) Tar 65,535 XNUMX byte som maksimal størrelse.
medium blob Dens maksimale størrelse er 16,777,215 byte.
lang tekst Det tar 4 GB som maksimal størrelse.

Lag en database og tabeller

For å opprette en ny database i MariaDB, bør du ha spesielle privilegier som bare gis til rotbrukeren og administratorene.

For å opprette en ny database, bør du bruke CREATE DATABASE-kommandoen som tar følgende syntaks:

CREATE DATABASE DatabaseName;

I dette tilfellet må du opprette en database og gi den navnet Demo.

Start MariaDB ledetekst og logg inn som rotbruker ved å skrive følgende kommando:

mysql -u root -p

Skriv inn root-passordet og trykk på returtasten. Du vil bli logget inn.

Kjør nå følgende kommando:

CREATE DATABASE Demo;

Lag en database og tabeller i MariaDB

Du har da opprettet en database kalt Demo. Det vil være bra for deg å bekrefte om databasen ble opprettet eller ikke. Du trenger bare å vise listen over tilgjengelige databaser ved å kjøre følgende kommando:

SHOW DATABASES;

Lag en database og tabeller i MariaDB

Utdataene ovenfor viser at Demo-databasen er en del av listen, og derfor ble databasen opprettet.

MariaDB Velg Database

For at du skal kunne bruke eller jobbe med en bestemt database, må du velge den fra listen over tilgjengelige databaser. Etter å ha valgt en database, kan du utføre oppgaver som å lage tabeller i databasen.

For å velge en database, bør du bruke kommandoen USE. Det tar syntaksen gitt nedenfor:

USE database_name;

Du må bruke demodatabasen. Du kan velge det ved å kjøre følgende kommando:

USE Demo;

Lag en database og tabeller i MariaDB

Bildet ovenfor viser at MariaDB ledeteksten har endret seg fra ingen til navnet på databasen som er valgt.

Du kan nå gå videre og lage tabeller i Demo-databasen.

MariaDB – Lag tabell

For at du skal kunne lage en tabell må du ha valgt en database. Tabellen kan opprettes ved å bruke CREATE TABLE-setningen. Her er syntaksen for kommandoen:

CREATE TABLE tableName (columnName columnType);

Du kan angi at en av kolonnene skal være primærnøkkelen. Denne kolonnen skal ikke tillate nullverdier.

Vi vil lage to tabeller i Demo-databasen, bok- og pristabeller. Hver tabell vil ha to kolonner.

La oss begynne med å lage boktabellen med to kolonner, id og navn. Kjør følgende kommando:

CREATE TABLE Book(  
id INT NOT NULL AUTO_INCREMENT,  
name VARCHAR(100) NOT NULL,  
PRIMARY KEY (id));  

Lag en database og tabeller i MariaDB

PRIMARY KEY-begrensningen har blitt brukt til å angi id-kolonnen som primærnøkkel for tabellen. AUTO_INCREMENT-egenskapen vil øke verdiene til id-kolonnen med 1 automatisk for hver ny post som settes inn i tabellen. Alle kolonnene vil ikke tillate nullverdier.

Lag nå den andre tabellen, Pristabellen:

CREATE TABLE Price(  
id INT NOT NULL AUTO_INCREMENT,  
price float NOT NULL,  
PRIMARY KEY (id));  

Lag en database og tabeller i MariaDB

ID-kolonnen er satt som primærnøkkel for tabellen.

Viser tabeller

Nå som du har opprettet de to tabellene, vil det være bra for deg å samsvare med om tabellene ble opprettet vellykket eller ikke. Du kan vise listen over tabeller i en database ved å kjøre følgende kommando:

SHOW TABLES;

Lag en database og tabeller i MariaDB

Skjermbildet ovenfor viser at de to tabellene ble opprettet i Demo-databasen.

Viser tabellstruktur

For å se strukturen til en bestemt tabell, kan du bruke DESCRIBE-kommandoen, vanligvis forkortet som DESC. Det tar følgende syntaks:

DESC TableName;

For å se strukturen til tabellen som heter Book, kan du for eksempel kjøre følgende kommando;

DESC Book;

Lag en database og tabeller i MariaDB

Tabellen har to kolonner. For å se strukturen til pristabellen kan du kjøre følgende kommando:

DESC Price;

Lag en database og tabeller i MariaDB

CRUD og klausuler

INSERT

For å sette inn data i en MariaDB tabellen, bør du bruke INSERT INTO-setningen. Denne kommandoen tar syntaksen gitt nedenfor:

INSERT INTO tableName
(column_1, column_2, ... )  
VALUES  
(value1, value2, ... ),  
(value1, value2, ... ),  
...;   

Syntaksen ovenfor viser at du må spesifisere tabellkolonnene du vil sette inn data i, samt dataene du må sette inn.

La oss sette inn en post i boktabellen:

INSERT INTO book  
(id, name)  
VALUES(1, 'MariaDB Book');  

CRUD og klausuler-INSERT

Du har satt inn en enkelt post i tabellen. Sett inn en post i pristabellen:

INSERT INTO price
(id, price)  
VALUES(1, 200);  

CRUD og klausuler-INSERT

Posten er opprettet.

VELG

SELECT-setningen hjelper oss å se eller se innholdet i en databasetabell. For å se innholdet i boktabellen, for eksempel, må du kjøre følgende kommando:

SELECT * from book;

CRUD og klausuler-INSERT

Se nå innholdet i pristabellen:

SELECT * from price;

CRUD og klausuler-INSERT

Sette inn flere poster

Det er mulig for oss å sette inn flere poster i en MariaDB bord på en tur. For å demonstrere dette, kjør følgende eksempel:

INSERT INTO book
(id, name)  
VALUES  
(2,'MariaDB Book2'),  
(3,'MariaDB Book3'),  
(4,'MariaDB Book4'),  
(5,'MariaDB Book5');

Sette inn flere poster

Du kan spørre tabellen for å sjekke om postene ble satt inn på riktig måte:

SELECT * FROM book;

Sette inn flere poster

Postene ble satt inn. Sett inn flere poster i pristabellen ved å kjøre dette eksemplet:

INSERT INTO price 
(id, price)  
VALUES  
(2, 250),  
(3, 220),  
(4, 190),  
(5, 300); 

Sette inn flere poster

La oss bekrefte om postene ble opprettet:

SELECT * FROM price;

Sette inn flere poster

OPPDATERING

UPDATE-kommandoen hjelper oss å endre eller modifisere postene som allerede er satt inn i en tabell. Du kan kombinere den med WHERE-leddet for å spesifisere posten som skal oppdateres. 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 se dette snart:

Tenk på tabellen med navnet Pris med følgende poster:

CRUD og klausuler-OPPDATERING

La oss endre prisen på boken med en id på 1 fra 200 til 250:

UPDATE price 
SET price = 250
WHERE id = 1;

CRUD og klausuler-OPPDATERING

Kommandoen kjørte vellykket. Du kan nå spørre tabellen for å se om endringen fant sted:

CRUD og klausuler-OPPDATERING

Skjermbildet ovenfor viser at endringen er implementert. Tenk på tabellboken med følgende poster:

CRUD og klausuler-OPPDATERING

La oss endre navnet på boken som heter Boken til MariaDB Bok1. Legg merke til at boken har en id på 1. Her er kommandoen for dette:

UPDATE book
SET name = “MariaDB Book1”
WHERE id = 1;

CRUD og klausuler-OPPDATERING

Sjekk om endringen er implementert:

CRUD og klausuler-OPPDATERING

Skjermbildet ovenfor viser at endringen har blitt implementert vellykket.

I eksemplene ovenfor har vi bare endret én kolonne om gangen. Det er imidlertid mulig for oss å endre flere kolonner på en gang. La oss demonstrere dette ved å bruke et eksempel.

La oss bruke pristabellen med følgende data:

CRUD og klausuler-OPPDATERING

La oss endre både id og pris på boken med en id på 5. Vi vil endre id til 6 og pris til 6. Kjør følgende kommando:

UPDATE price
SET id = 6,
price = 280
WHERE id = 5;

CRUD og klausuler-OPPDATERING

Spør nå tabellen for å sjekke om endringen ble gjort vellykket:

CRUD og klausuler-OPPDATERING

Endringen ble gjort vellykket.

Delete

Vi bruker kommandoen DELETE når vi trenger å slette enten én eller flere poster fra en tabell. Her er syntaksen for kommandoen:

DELETE FROM tableName  
[WHERE condition(s)]  
[ORDER BY exp [ ASC | DESC ]]  
[LIMIT numberRows];   

Vurder pristabellen med følgende poster:

CRUD og klausuler-SLETT

Vi må slette den siste posten fra tabellen. Den har en id på 6 og en pris på 280. La oss slette posten:

DELETE FROM price
WHERE id = 6;   

CRUD og klausuler-SLETT

Kommandoen kjørte vellykket. La oss spørre i tabellen for å bekrefte om slettingen var vellykket:

CRUD og klausuler-SLETT

Utdataene viser at posten ble slettet.

Hvor

WHERE-klausulen hjelper oss med å spesifisere nøyaktig hvor vi må gjøre en endring. Den brukes sammen med setninger som INSERT, SELECT, UPDATE og DELETE. Vurder pristabellen med følgende data:

CRUD og klausuler-hvor

Anta at vi trenger å se postene der prisen er mindre enn 250. Vi kan kjøre følgende kommando:

SELECT *   
FROM price 
WHERE price < 250;  

CRUD og klausuler-hvor

Alle postene der prisen er under 250,- er returnert.

WHERE-leddet kan kombineres med AND-setningen. Anta at vi må se alle poster i pristabellen der prisen er under 250 og id er over 3. Vi kan kjøre følgende kommando:

SELECT *  
FROM price  
WHERE id > 3  
AND price < 250;   

CRUD og klausuler-hvor

Kun én post er returnert. Årsaken er at den må oppfylle alle betingelsene som er spesifisert, det vil si id over 3 og pris under 250. Hvis noen av disse betingelsene brytes, vil posten ikke bli returnert.

Klausulen kan også kombineres med OR-kommandoen. La oss erstatte AND i vår forrige kommando med OR og se hva slags utdata vi mottar:

SELECT *  
FROM price 
WHERE id > 3  
OR price < 250;   

CRUD og klausuler-hvor

Vi får nå 2 rekorder i stedet for 1. Dette er fordi, for en kvalifiseringsrekord, må den bare oppfylle en av de spesifiserte betingelsene.

I likhet med

Denne klausulen brukes til å spesifisere datamønsteret når du får tilgang til tabelldata der et eksakt samsvar er nødvendig. Den kan kombineres med INSERT-, UPDATE-, SELECT- og DELETE-setningene.

Du bør overføre datamønsteret du leter etter til klausulen, og det vil returnere enten sant eller usant. Her er jokertegnene som kan brukes sammen med klausulen:

  • %: for å matche enten 0 eller flere tegn.
  • _: for å matche et enkelt tegn.

Her er syntaksen for LIKE-klausulen:

SELECT field_1, field_2,... FROM tableName1, tableName2,...  
WHERE fieldName LIKE condition;

La oss demonstrere hvordan du bruker klausulen med jokertegnet %. La oss bruke boktabellen med følgende poster:

CRUD og klausuler-hvor

Vi må se alle poster der navnet begynner med M. Vi kan kjøre følgende kommando:

SELECT name  
FROM book  
WHERE name LIKE 'M%';  

CRUD og klausuler-hvor

Alle poster har blitt returnert fordi navnene deres begynner med bokstaven M. For å se alle navn som slutter på 4, kan du kjøre følgende kommando:

SELECT name  
FROM book  
WHERE name LIKE '%4';  

CRUD og klausuler-hvor

Bare ett navn har blitt returnert fordi det er det eneste som oppfyller betingelsen.

Vi kan også omgi søkemønsteret med jokertegnet:

SELECT name  
FROM book  
WHERE name LIKE '%DB%';  

CRUD og klausuler-hvor

Annet enn jokertegnet %, kan LIKE-leddet brukes sammen med jokertegnet _. Dette er jokertegnet for understrek, og det vil bare se etter et enkelt tegn.

La oss jobbe med pristabellen med følgende poster:

CRUD og klausuler-hvor

La oss se etter posten der prisen er som 1_0. Vi kjører følgende kommando:

SELECT *  
FROM price
WHERE price LIKE '1_0';  

CRUD og klausuler-hvor

Den har returnert rekorden der prisen er 190. Vi kan også prøve et annet mønster:

SELECT *  
FROM price 
WHERE price LIKE '_2_';  

CRUD og klausuler-hvor

Det er mulig for oss å bruke LIKE-klausulen sammen med NOT-operatoren. Dette vil returnere alle postene som ikke oppfyller det angitte mønsteret. For eksempel:

La oss bruke pristabellen med følgende poster:

CRUD og klausuler-hvor

La oss finne alle postene der prisen ikke starter med 2:

SELECT *  
FROM price  
WHERE price NOT LIKE '2%';  

CRUD og klausuler-hvor

Bare én post oppfyller ikke det angitte mønsteret.

Sorter med

Denne klausulen hjelper oss med å sortere postene våre i enten stigende eller synkende rekkefølge. Vi bruker den med SELECT-setningen, som vist nedenfor:

SELECT expression(s)  
FROM tables  
[WHERE condition(s)]  
ORDER BY exp [ ASC | DESC ];   

Det er mulig for oss å bruke denne klausulen uten å legge til verken ASC- eller DESC-delen. For eksempel:

Vi vil bruke pristabellen med følgende poster:

CRUD og klausuler-hvor

Kjør følgende kommando mot tabellen:

SELECT * FROM price 
WHERE price LIKE '2%.'
ORDER BY price;   

CRUD og klausuler-hvor

I kommandoen ovenfor har vi bestilt etter prisen. Postene er bestilt med prisene i stigende rekkefølge. Det betyr at når vi ikke spesifiserer rekkefølgen, blir sorteringen gjort i stigende rekkefølge som standard.

La oss kjøre klausulen med DESC-alternativet:

SELECT * FROM price
WHERE price LIKE '2%'  
ORDER BY price DESC;   

CRUD og klausuler-hvor

Postene er sortert med prisen i synkende rekkefølge slik vi har spesifisert.

La oss bruke ORDER BY-leddet sammen med ASC-attributtet:

SELECT * FROM price 
WHERE price LIKE '2%.'  
ORDER BY price ASC;   

CRUD og klausuler-hvor

Platene er bestilt, men med prisene i stigende rekkefølge. Dette ligner når vi bruker ORDER BY-klausulen uten verken ASC- eller DESC-attributter.

DISTINCT

Denne klausulen hjelper oss å gjøre unna duplikater når vi velger poster fra en tabell. Dette betyr at det hjelper oss å få unike poster. Syntaksen er gitt nedenfor:

SELECT DISTINCT expression(s)  
FROM tableName  
[WHERE condition(s)];   

For å demonstrere dette vil vi bruke pristabellen med følgende data:

CRUD og Clauses-DISTINCT

Når vi velger priskolonnen fra tabellen får vi følgende resultat:

SELECT price FROM Price;

CRUD og Clauses-DISTINCT

Vi har to poster med en pris på 250,- og skaper et duplikat. Vi trenger bare å ha unike poster. Vi kan filtrere disse ved å bruke DISTINCT-klausulen som vist nedenfor:

SELECT DISTINCT price FROM Price;

CRUD og Clauses-DISTINCT

Vi har nå ingen duplikater i utdataene ovenfor.

Fra

FROM-leddet som brukes for å hente data fra en databasetabell. Det kan også hjelpe når du skal slå sammen bord. Her er syntaksen for kommandoen:

SELECT columnNames FROM tableName; 

For å se innholdet i boktabellen, kjør følgende kommando:

SELECT * FROM price;

CRUD og klausuler-fra

Klausulen kan hjelpe deg med å hente bare en enkelt kolonne fra en databasetabell. For eksempel:

SELECT price FROM Price;

CRUD og klausuler-fra

Avanserte oppgaver

Lagret prosedyre

En prosedyre er en MariaDB program som du kan sende parametere til. En prosedyre returnerer ikke verdier. For å lage en prosedyre bruker vi kommandoen CREATE PROCEDURE.

For å demonstrere hvordan du oppretter og kaller en prosedyre, vil vi lage en prosedyre kalt myProcedure() som hjelper oss å velge navnekolonnen fra boktabellen. Her er fremgangsmåten:

DELIMITER $
    CREATE PROCEDURE myProcedure()
        BEGIN
            SELECT name FROM book;
        END;
;

Avansert oppgavelagret prosedyre

Prosedyren er opprettet. Vi har ganske enkelt vedlagt SELECT-setningen i BEGIN- og END-klausulene i prosedyren.

Nå kan vi kalle prosedyren ved navn som vist nedenfor:

CALL myProcedure();

Avansert oppgavelagret prosedyre

Prosedyren returnerer navnekolonnen til boktabellen når den kalles.

Vi kan lage en prosedyre som tar inn en parameter. For eksempel må vi velge navnet på boken og filtrere ved hjelp av bok-ID. Vi kan lage følgende prosedyre for dette:

DELIMITER $
    CREATE PROCEDURE myProcedure2(book_id int)
        BEGIN
            SELECT name FROM book WHERE id = book_id;
        END;
;

Avansert oppgavelagret prosedyre

Ovenfor har vi laget en prosedyre kalt myProcedure2(). Denne prosedyren tar en heltallsparameter kalt book_id som er IDen til boken hvis navn vi må se. For å se navnet på boken med en id på 3, kan vi kalle prosedyren som følger:

CALL myProcedure2(3);

Avansert oppgavelagret prosedyre

Funksjon

I motsetning til prosedyrer, må vi sende parametere til funksjoner og en funksjon må returnere en verdi. For å lage en funksjon i MariaDB, bruker vi CREATE FUNCTION-setningen. Utsagnet tar 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;

Parametrene ovenfor er beskrevet nedenfor:

Parameter Tekniske beskrivelser
DEFINER-klausul Denne parameteren er valgfri. Hvis du ikke spesifiserer det, vil definereren bli brukeren som opprettet funksjonen. Hvis det er behov for å spesifisere en annen definerer, inkluderer DEFINER-klausulen der brukernavnet vil være definereren av funksjonen.
funksjonsnavn Navnet som skal tildeles denne funksjonen i MariaDB.
parameter Parameteren(e) sendt til funksjonen. Under opprettelsen av funksjonen behandles alle parametere som IN parametere (i stedet for OUT/INOUT parametere).
return_datatype Datatypen for returverdien til funksjonen.
SPRÅK SQL Det påvirker portabiliteten, men ikke funksjonen.
DETERMINISTISK Funksjonen returnerer bare ett resultat når det gis et antall parametere.
IKKE DETERMINISTISK Det er mulig for funksjonen å returnere et annet resultat når det gis en rekke parametere.
INNEHOLDER SQL informerer MariaDB at denne funksjonen inneholder SQL. Databasen vil ikke bekrefte om dette er sant.
INGEN SQL Denne klausulen brukes ikke, og den har ingen innvirkning på funksjonen din.
LESER SQL DATA Forteller MariaDB at denne funksjonen vil bruke SELECT-setninger for å lese data, men den vil ikke endre dataene.
MODIFISER SQL-DATA Forteller MariaDB at denne funksjonen vil bruke INSERT, DELETE, UPDATE og annet DDL setninger for å endre SQL-data.
erklæring-seksjonen Det er her lokale variabler skal deklareres.
kjørbar-seksjon Funksjonskoden skal legges til her.

Her er et eksempel MariaDB funksjon:

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 ;

Funksjon i MariaDB

Vi kan da kalle funksjonen ovenfor som følger:

select sumFunc(1000);

Kommandoen vil returnere følgende:

Funksjon i MariaDB

Når du er ferdig med en funksjon, vil det være bra for deg å slette den. Dette er enkelt siden du bare trenger å kalle DROP FUNCTION-setningen som tar følgende syntaks:

DROP FUNCTION function_name;

For å slippe funksjonen som heter myFunc, kan vi for eksempel kjøre følgende kommando:

DROP FUNCTION myFunc;

BLI

Når du trenger å hente data fra mer enn én tabell på en gang, bruk MariaDB BLITER MED. Dette betyr at a BLI fungerer på to eller flere bord. Følgende tre typer JOINS støttes i MariaDB:

  • INDRE/ENKEL SAMLING
  • VENSTRE YTRE SKJØTTE/VENSTRE SKJØT
  • HØYRE YTRE SKJØT/HØYRE SKJØT

La oss diskutere dem én etter én:

INNER JOIN

Den indre sammenføyningen returnerer alle rader fra tabellene der sammenføyningsbetingelsen er sann. Syntaksen er som følger:

SELECT columns  
FROM table-1   
INNER JOIN table-2  
ON table-1.column = table-2.column;  

For eksempel:

Vi vil bruke våre to bord, bøker og bok.

Boktabellen har følgende data:

INNER JOIN

Pristabellen har følgende data:

INNER JOIN

Målet er å slå sammen navnekolonnen fra Bok-tabellen og priskolonnen fra Pristabellen til en enkelt tabell. Dette er mulig med en indre sammenføyning, som vist nedenfor:

SELECT book.name, price.price 
FROM book   
INNER JOIN price 
ON book.id = price.id;   

Kommandoen returnerer følgende:

INNER JOIN

VENSTRE YTRE MEDLEM

Denne sammenføyningen returnerer alle radene fra den venstre tabellen og bare rader der sammenføyningsbetingelsen er sann fra den andre tabellen. Syntaksen er som følger:

SELECT columns  
FROM table-1  
LEFT [OUTER] JOIN table-2  
ON table-1.column = table-2.column;  

Nøkkelordet OUTER er plassert innenfor hakeparenteser fordi det er valgfritt.

For eksempel:

SELECT book.name, price.price 
FROM book   
LEFT JOIN price 
ON book.id = price.id;   

Kommandoen returnerer følgende:

VENSTRE YTRE MEDLEM

Den siste posten i tabellen ovenfor har ingen samsvarende verdi til venstre. Derfor er den erstattet med NULL.

HØYRE YTRE BLI MED

Denne sammenføyningen returnerer alle radene fra tabellen til høyre og bare rader der sammenføyningsbetingelsen er sann fra den andre tabellen. Syntaksen er som følger:

SELECT columns  
FROM table-1  
RIGHT [OUTER] JOIN table-2  
ON table-1.column = table-2.column;  

Nøkkelordet OUTER er plassert innenfor hakeparenteser fordi det er valgfritt.

For eksempel:

SELECT book.name, price.price 
FROM book   
RIGHT JOIN price
ON book.id = price.id;   

Kommandoen returnerer følgende:

HØYRE YTRE BLI MED

Årsaken er at alle radene i den høyre tabellen ble matchet med de i den andre tabellen. Hvis noen av radene ikke stemte, ville vi ha NULL i den første kolonnen.