MariaDB Handledning
Vad รคr MariaDB?
MariaDB รคr en gaffel av MySQL databashanteringssystem. Det รคr skapat av dess ursprungliga utvecklare. Detta DBMS-verktyg erbjuder databehandlingsmรถjligheter fรถr bรฅde smรฅ och fรถretagsuppgifter.
MariaDB รคr en fรถrbรคttrad version av MySQL. Den kommer med mรฅnga inbyggda kraftfulla funktioner och mรฅnga anvรคndbarhets-, sรคkerhets- och prestandafรถrbรคttringar som du inte kan hitta i MySQL.
Hรคr รคr funktionerna i MariaDB:
- Den fungerar under GPL-, BSD- eller LGPL-licenser.
- MariaDB stรถder ett populรคrt och vanligt frรฅgesprรฅk.
- Den levereras med mรฅnga lagringsmotorer, inklusive de hรถgpresterande som kan integreras med andra relationsdatabashanteringssystem.
- Den tillhandahรฅller Galera-klusterteknologin.
- MariaDB stรถder PHP, ett populรคrt sprรฅk fรถr webbutveckling.
- MariaDB kan kรถras pรฅ olika operativsystem och stรถder mรฅnga programmeringssprรฅk.
- MariaDB kommer med ytterligare kommandon som inte รคr tillgรคngliga i MySQL. MySQL har funktioner som har en negativ inverkan pรฅ prestandan fรถr DBMS. Sรฅdana funktioner har ersatts i MariaDB.
MariaDB vs MySQL
Nedan รคr nรฅgra viktiga skillnader mellan MariaDB vs MySQL
| Parameter | MariaDB | MySQL |
|---|---|---|
| Fler alternativ fรถr lagringsmotorer | MariaDB har 12 nya lagringsmotorer som du inte hittar i MySQL. | Den har fรคrre alternativ fรถr fรถrvaring jรคmfรถrt med MariaDB. |
| Hastighetsfรถrbรคttringar | MariaDB visar en fรถrbรคttrad hastighet jรคmfรถrt med MySQL. Den kommer med mรฅnga funktioner fรถr att optimera hastigheten. Sรฅdana funktioner inkluderar hรคrledda vyer/tabeller, subquery, exekveringskontroll, diskรฅtkomst och optimeringskontroll. | MySQL uppvisar en lรคgre hastighet jรคmfรถrt med MariaDB. Den fรถrlitar sig pรฅ endast ett fรฅtal funktioner fรถr hastighetsoptimering, till exempel hashindex. |
| Snabbare cache/index | Med minneslagringsmotorn fรถr MariaDB, en INSERT-sats kan fyllas i 24 % รคn i standarden MySQL. | Minneslagringsmotorn fรถr MySQL รคr lรฅngsammare jรคmfรถrt med det MariaDB. |
| Stรถrre och snabbare anslutningspool | MariaDB levereras med en avancerad trรฅdpool som kan kรถras snabbare och stรถder upp till 200,000 XNUMX+ anslutningar. | Trรฅdpoolen tillhandahรฅlls av MySQL kan inte stรถdja upp till 200,000 XNUMX anslutningar per gรฅng. |
| Fรถrbรคttrad replikering | In MariaDB, kan replikering gรถras sรคkrare och snabbare. Uppdateringar kan ocksรฅ gรถras 2 gรฅnger snabbare jรคmfรถrt med den traditionella MySQL. | MySQLs community-utgรฅva tillรฅter att ett statiskt antal trรฅdar kopplas. MySQLs fรถretagsplan kommer med trรฅdfunktioner. |
| Nya funktioner/tillรคgg | MariaDB kommer med nya funktioner och tillรคgg inklusive JSON-, WITH- och KILL-satserna. | Den nya MariaDB funktioner finns inte i MySQL. |
| Saknade funktioner | MariaDB saknar nรฅgra av funktionerna som tillhandahรฅlls av MySQL fรถretagsutgรฅva. Fรถr att lรถsa detta erbjuder den alternativa plugins med รถppen kรคllkod. Dรคrav, MariaDB anvรคndare kan njuta av samma funktioner som MySQL Enterprise Edition anvรคndare. | Enterprise Edition av MySQL anvรคnder en egen kod. Endast anvรคndare av MySQL Enterprise Edition har tillgรฅng till detta. |
Hur man installerar MariaDB
Installera som en fristรฅende applikation
Fรถr att kunna anvรคnda MariaDBmรฅste du installera det pรฅ din dator.
Installationen kan gรถras genom att fรถlja stegen nedan:
Steg 1) รppna nedan URL
Ladda ner installationsfilen frรฅn lรคnken https://downloads.mariadb.org/
Steg 2) Double klicka pรฅ filen fรถr att starta installationen
Nรคr nedladdningen รคr klar รถppnar du fil
Steg 3) Klicka pรฅ knappen Nรคsta
Klicka pรฅ Nรคsta i fรถnstret som dyker upp:
Steg 4) Acceptera licensavtalet
Klicka sedan pรฅ knappen Nรคsta:
Steg 5) Vรคlja MariaDB server
Vรคlj de funktioner som ska installeras och klicka pรฅ Nรคsta
Steg 6) Ange lรถsenordet
I nรคsta fรถnster kommer du att behรถva รคndra lรถsenordet fรถr root-anvรคndaren.
- Ange lรถsenordet och bekrรคfta det genom att skriva in samma lรถsenord igen. Om du vill tillรฅta รฅtkomst frรฅn fjรคrrdatorer, aktivera den nรถdvรคndiga kryssrutan.
- Nรคr du รคr klar klickar du pรฅ knappen Nรคsta.
Steg 7) Ange namn och vรคlj portnummer
I nรคsta fรถnster skriver du ett namn fรถr instansen, vรคljer portnumret och stรคller in รถnskad storlek. Klicka pรฅ knappen Nรคsta:
Steg 8) Klicka pรฅ Nรคsta
I nรคsta fรถnster klickar du helt enkelt pรฅ knappen Nรคsta.
Steg 9) Klicka pรฅ Installera
Starta installationen genom att klicka pรฅ knappen Installera.
Steg 10) En fรถrloppsindikator visas
En fรถrloppsindikator som visar installationens fรถrlopp kommer att visas:
Steg 11) Klicka pรฅ Finish-knappen
Nรคr installationen รคr klar ser du knappen Slutfรถr. Klicka pรฅ knappen fรถr att stรคnga fรถnstret:
Steg 12) grattis!
Du har nu MariaDB installerad pรฅ din dator.
Arbeta med kommandotolken
Nu har du det MariaDB installerat pรฅ din dator รคr det dags fรถr dig att starta den och bรถrja anvรคnda den. Detta kan gรถras via MariaDB kommandotolken.
Fรถlj stegen nedan:
Steg 1) Klicka pรฅ Start, vรคlj Alla program och klicka sedan MariaDB.
Steg 2) Vรคlj ett MariaDB Kommandotolken.
Steg 3) Ocuco-landskapet MariaDB kommandotolken kommer att startas. Det รคr nu dags att logga in. Du bรถr logga in som root-anvรคndare och lรถsenordet som du angav under installationen av MariaDB. Skriv fรถljande kommando pรฅ kommandotolken:
MySQL -u root -p
Steg 4) Ange lรถsenordet och tryck pรฅ returtangenten. Du bรถr vara inloggad, som visas nedan:
Du รคr nu inloggad MariaDB.
Datatyper
MariaDB stรถder fรถljande datatyper:
- Strรคngdatatyper
- Numeriska datatyper
- Datatyper fรถr datum/tid
- Datatyper fรถr stora objekt
Strรคngdatatyper
Dessa inkluderar fรถljande:
| Strรคngdatatyp | BESKRIVNING |
|---|---|
| rรถding (storlek) | Storleken anger antalet tecken som ska lagras. Den lagrar maximalt 255 tecken. Fast lรคngd strรคngar. |
| varchar(storlek) | Storleken anger antalet tecken som ska lagras. Den lagrar maximalt 255 tecken. Variabel lรคngd strรคngar. |
| textstorlek) | Storleken anger antalet tecken som ska lagras. Den lagrar maximalt 255 tecken. Fast lรคngd strรคngar. |
| binรคr (storlek) | Storleken anger antalet tecken som ska lagras. Den lagrar maximalt 255 tecken. Snรถren i fast storlek. |
Numeriska datatyper
De inkluderar fรถljande:
| Numeriska datatyper | BESKRIVNING |
|---|---|
| bitars | Ett mycket litet heltalsvรคrde som motsvarar tinyint(1). Signerade vรคrden strรคcker sig mellan -128 och 127. Osignerade vรคrden strรคcker sig mellan 0 och 255. |
| int(m) | Ett standardheltalsvรคrde. Signerade vรคrden strรคcker sig mellan -2147483648 och 2147483647. Osignerade vรคrden strรคcker sig mellan 0 och 4294967295. |
| flyta (m, d) | Ett flyttal med enkel precision. |
| dubbel(m,d) | Ett flyttal med dubbel precision. |
| flyta (p) | Ett flyttalnummer. |
Datum/Tid Datatyper
Dessa inkluderar fรถljande:
| Datum/tid Datatyp | BESKRIVNING |
|---|---|
| Datum | Visas i formen 'รฅรฅรฅรฅ-mm-dd.' Vรคrdena varierar mellan '1000-01-01' och '9999-12-31'. |
| datum Tid | Visas i formen 'รฅรฅรฅรฅ-mm-dd hh:mm:ss'. Vรคrdena varierar mellan '1000-01-01 00:00:00' och '9999-12-31 23:59:59'. |
| tidsstรคmpel(m) | Visas i formen 'รฅรฅรฅรฅ-mm-dd hh:mm:ss'. Vรคrdena varierar mellan '1970-01-01 00:00:01' utc och '2038-01-19 03:14:07' utc. |
| Tid | Visas i formen 'hh:mm:ss'. Vรคrden varierar mellan '-838:59:59' och '838:59:59'. |
Stora objektdatatyper (LOB)
De inkluderar fรถljande:
| Stort objekt Datatyp | BESKRIVNING |
|---|---|
| liten klump | Dess maximala storlek รคr 255 byte. |
| blob (storlek) | Tar 65,535 XNUMX byte som maximal storlek. |
| mediumblob | Dess maximala storlek รคr 16,777,215 byte. |
| lรฅngtext | Det tar 4 GB som maxstorlek. |
Skapa en databas och tabeller
Fรถr att skapa en ny databas i MariaDB, bรถr du ha speciella privilegier som endast ges till rotanvรคndaren och administratรถrerna.
Fรถr att skapa en ny databas bรถr du anvรคnda kommandot CREATE DATABASE som tar fรถljande syntax:
CREATE DATABASE DatabaseName;
I det hรคr fallet mรฅste du skapa en databas och ge den namnet Demo.
Starta MariaDB kommandotolken och logga in som rotanvรคndare genom att skriva fรถljande kommando:
mysql -u root -p
Skriv in root-lรถsenordet och tryck pรฅ returtangenten. Du kommer att loggas in.
Kรถr nu fรถljande kommando:
CREATE DATABASE Demo;
Du har dรฅ skapat en databas med namnet Demo. Det kommer att vara bra fรถr dig att bekrรคfta om databasen skapades framgรฅngsrikt eller inte. Du behรถver bara visa listan รถver tillgรคngliga databaser genom att kรถra fรถljande kommando:
SHOW DATABASES;
Ovanstรฅende utdata visar att demodatabasen รคr en del av listan, varfรถr databasen skapades framgรฅngsrikt.
MariaDB Vรคlj databas
Fรถr att du ska kunna anvรคnda eller arbeta pรฅ en viss databas mรฅste du vรคlja den frรฅn listan รถver tillgรคngliga databaser. Efter att ha valt en databas kan du utfรถra uppgifter som att skapa tabeller i databasen.
Fรถr att vรคlja en databas bรถr du anvรคnda kommandot USE. Det tar syntaxen som anges nedan:
USE database_name;
Du mรฅste anvรคnda demodatabasen. Du kan vรคlja det genom att kรถra fรถljande kommando:
USE Demo;
Bilden ovan visar att MariaDB kommandotolken har รคndrats frรฅn ingen till namnet pรฅ den databas som har valts.
Du kan nu gรฅ vidare och skapa tabeller i demodatabasen.
MariaDB - Skapa bord
Fรถr att du ska kunna skapa en tabell mรฅste du ha valt en databas. Tabellen kan skapas med CREATE TABLE-satsen. Hรคr รคr syntaxen fรถr kommandot:
CREATE TABLE tableName (columnName columnType);
Du kan stรคlla in en av kolumnerna som primรคrnyckel. Den hรคr kolumnen bรถr inte tillรฅta nollvรคrden.
Vi kommer att skapa tvรฅ tabeller i demodatabasen, bok- och pristabellerna. Varje tabell kommer att ha tvรฅ kolumner.
Lรฅt oss bรถrja med att skapa boktabellen med tvรฅ kolumner, id och namn. Kรถr fรถljande kommando:
CREATE TABLE Book( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY (id));
PRIMARY KEY-begrรคnsningen har anvรคnts fรถr att stรคlla in id-kolumnen som primรคrnyckel fรถr tabellen. Egenskapen AUTO_INCREMENT รถkar vรคrdena fรถr id-kolumnen med 1 automatiskt fรถr varje ny post som infogas i tabellen. Alla kolumner tillรฅter inte nollvรคrden.
Skapa nu den andra tabellen, pristabellen:
CREATE TABLE Price( id INT NOT NULL AUTO_INCREMENT, price float NOT NULL, PRIMARY KEY (id));
Id-kolumnen har stรคllts in som primรคrnyckel fรถr tabellen.
Visar tabeller
Nu nรคr du har skapat de tvรฅ tabellerna kommer det att vara bra fรถr dig att รถverensstรคmma om tabellerna skapades framgรฅngsrikt eller inte. Du kan visa listan รถver tabeller som finns i en databas genom att kรถra fรถljande kommando:
SHOW TABLES;
Ovanstรฅende skรคrmdump visar att de tvรฅ tabellerna skapades framgรฅngsrikt i demodatabasen.
Visar tabellstruktur
Fรถr att se strukturen fรถr en viss tabell kan du anvรคnda kommandot DESCRIBE, vanligtvis fรถrkortat som DESC. Det tar fรถljande syntax:
DESC TableName;
Till exempel, fรถr att se strukturen fรถr tabellen med namnet Bok, kan du kรถra fรถljande kommando;
DESC Book;
Tabellen har tvรฅ kolumner. Fรถr att se strukturen i pristabellen kan du kรถra fรถljande kommando:
DESC Price;
CRUD och klausuler
INFOGA
Fรถr att infoga data i en MariaDB tabell, bรถr du anvรคnda INSERT INTO-satsen. Detta kommando tar syntaxen nedan:
INSERT INTO tableName (column_1, column_2, ... ) VALUES (value1, value2, ... ), (value1, value2, ... ), ...;
Ovanstรฅende syntax visar att du mรฅste ange de tabellkolumner som du vill infoga data i samt de data som du behรถver infoga.
Lรฅt oss infoga en post i boktabellen:
INSERT INTO book (id, name) VALUES(1, 'MariaDB Book');
Du har infogat en enda post i tabellen. Infoga en post i pristabellen:
INSERT INTO price (id, price) VALUES(1, 200);
Posten har skapats.
VรLJA
SELECT-satsen hjรคlper oss att se eller se innehรฅllet i en databastabell. Fรถr att se innehรฅllet i boktabellen, till exempel, mรฅste du kรถra fรถljande kommando:
SELECT * from book;
Se nu innehรฅllet i pristabellen:
SELECT * from price;
Infoga flera poster
Det รคr mรถjligt fรถr oss att infoga flera poster i en MariaDB bord med en gรฅng. Fรถr att demonstrera detta, kรถr fรถljande exempel:
INSERT INTO book (id, name) VALUES (2,'MariaDB Book2'), (3,'MariaDB Book3'), (4,'MariaDB Book4'), (5,'MariaDB Book5');
Du kan frรฅga tabellen fรถr att kontrollera om posterna har infogats:
SELECT * FROM book;
Posterna infogades framgรฅngsrikt. Infoga flera poster i pristabellen genom att kรถra det hรคr exemplet:
INSERT INTO price (id, price) VALUES (2, 250), (3, 220), (4, 190), (5, 300);
Lรฅt oss bekrรคfta om posterna skapades framgรฅngsrikt:
SELECT * FROM price;
UPPDATERING
Kommandot UPDATE hjรคlper oss att รคndra eller modifiera de poster som redan har infogats i en tabell. Du kan kombinera den med WHERE-satsen fรถr att ange posten som ska uppdateras. Hรคr รคr syntaxen:
UPDATE tableName SET field=newValue, field2=newValue2,... [WHERE ...]
Kommandot UPDATE kan ocksรฅ kombineras med satser som SET, WHERE, LIMIT och ORDER BY. Du kommer att se detta inom kort:
Betrakta tabellen med namnet Pris med fรถljande poster:
Lรฅt oss รคndra priset pรฅ boken med ett id pรฅ 1 frรฅn 200 till 250:
UPDATE price SET price = 250 WHERE id = 1;
Kommandot kรถrdes framgรฅngsrikt. Du kan nu frรฅga tabellen fรถr att se om รคndringen har skett:
Ovanstรฅende skรคrmdump visar att รคndringen har implementerats. Betrakta tabellboken med fรถljande poster:
Lรฅt oss รคndra namnet pรฅ boken som heter Bok till MariaDB Bok1. Lรคgg mรคrke till att boken har ett id pรฅ 1. Hรคr รคr kommandot fรถr detta:
UPDATE book SET name = โMariaDB Book1โ WHERE id = 1;
Kontrollera om รคndringen har genomfรถrts:
Ovanstรฅende skรคrmdump visar att รคndringen har implementerats framgรฅngsrikt.
I exemplen ovan har vi bara รคndrat en kolumn รฅt gรฅngen. Det รคr dock mรถjligt fรถr oss att รคndra flera kolumner samtidigt. Lรฅt oss visa detta med ett exempel.
Lรฅt oss anvรคnda pristabellen med fรถljande data:
Lรฅt oss รคndra bรฅde id och pris pรฅ boken med id 5. Vi รคndrar dess id till 6 och pris till 6. Kรถr fรถljande kommando:
UPDATE price SET id = 6, price = 280 WHERE id = 5;
Frรฅga nu i tabellen fรถr att kontrollera om รคndringen gjordes framgรฅngsrikt:
รndringen gjordes framgรฅngsrikt.
Radera
Vi anvรคnder kommandot DELETE nรคr vi behรถver ta bort antingen en eller flera poster frรฅn en tabell. Hรคr รคr syntaxen fรถr kommandot:
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
Betrakta pristabellen med fรถljande poster:
Vi mรฅste ta bort den sista posten frรฅn tabellen. Den har ett id pรฅ 6 och ett pris pรฅ 280. Lรฅt oss ta bort posten:
DELETE FROM price WHERE id = 6;
Kommandot kรถrdes framgรฅngsrikt. Lรฅt oss frรฅga tabellen fรถr att bekrรคfta om raderingen lyckades:
Utdata visar att posten raderades framgรฅngsrikt.
Var
WHERE-satsen hjรคlper oss att ange den exakta platsen dรคr vi behรถver gรถra en รคndring. Den anvรคnds tillsammans med satser som INSERT, SELECT, UPDATE och DELETE. Betrakta pristabellen med fรถljande data:
Anta att vi behรถver se de poster dรคr priset รคr mindre รคn 250. Vi kan kรถra fรถljande kommando:
SELECT * FROM price WHERE price < 250;
Alla skivor dรคr priset รคr under 250 har returnerats.
WHERE-satsen kan kombineras med AND-satsen. Anta att vi behรถver se alla poster i pristabellen dรคr priset รคr under 250 och id รคr รถver 3. Vi kan kรถra fรถljande kommando:
SELECT * FROM price WHERE id > 3 AND price < 250;
Endast en post har returnerats. Anledningen รคr att den mรฅste uppfylla alla villkor som har specificerats, det vill sรคga id รถver 3 och pris under 250. Om nรฅgot av dessa villkor รถvertrรคds kommer posten inte att returneras.
Klausulen kan ocksรฅ kombineras med OR-kommandot. Lรฅt oss ersรคtta OCH i vรฅrt tidigare kommando med OR och se vilken typ av utdata vi fรฅr:
SELECT * FROM price WHERE id > 3 OR price < 250;
Vi fรฅr nu 2 rekord istรคllet fรถr 1. Detta beror pรฅ att fรถr ett kvalificeringsrekord mรฅste det bara uppfylla ett av de angivna villkoren.
Tycka om
Den hรคr klausulen anvรคnds fรถr att specificera datamรถnstret vid รฅtkomst av tabelldata dรคr en exakt matchning รคr nรถdvรคndig. Det kan kombineras med INSERT-, UPDATE-, SELECT- och DELETE-satserna.
Du bรถr skicka mรถnstret av data du letar efter till klausulen, och den kommer att returnera antingen sant eller falskt. Hรคr รคr jokertecken som kan anvรคndas tillsammans med klausulen:
- %: fรถr att matcha antingen 0 eller fler tecken.
- _: fรถr att matcha ett enstaka tecken.
Hรคr รคr syntaxen fรถr LIKE-satsen:
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
Lรฅt oss visa hur man anvรคnder satsen med jokertecken %. Lรฅt oss anvรคnda boktabellen med fรถljande poster:
Vi mรฅste se alla poster dรคr namnet bรถrjar med M. Vi kan kรถra fรถljande kommando:
SELECT name FROM book WHERE name LIKE 'M%';
Alla poster har returnerats eftersom deras namn bรถrjar med bokstaven M. Fรถr att se alla namn som slutar med 4 kan du kรถra fรถljande kommando:
SELECT name FROM book WHERE name LIKE '%4';
Endast ett namn har returnerats eftersom det รคr det enda som uppfyller villkoret.
Vi kan ocksรฅ omge sรถkmรถnstret med jokertecken:
SELECT name FROM book WHERE name LIKE '%DB%';
Fรถrutom jokertecknet % kan LIKE-satsen anvรคndas tillsammans med jokertecknet _. Detta รคr understrecket jokertecken, och det kommer bara att leta efter ett enda tecken.
Lรฅt oss arbeta med pristabellen med fรถljande poster:
Lรฅt oss leta efter posten dรคr priset รคr som 1_0. Vi kรถr fรถljande kommando:
SELECT * FROM price WHERE price LIKE '1_0';
Det har returnerat rekordet dรคr priset รคr 190. Vi kan ocksรฅ prova ett annat mรถnster:
SELECT * FROM price WHERE price LIKE '_2_';
Det รคr mรถjligt fรถr oss att anvรคnda LIKE-satsen tillsammans med NOT-operatorn. Detta kommer att returnera alla poster som inte uppfyller det angivna mรถnstret. Till exempel:
Lรฅt oss anvรคnda pristabellen med fรถljande poster:
Lรฅt oss hitta alla poster dรคr priset inte bรถrjar med 2:
SELECT * FROM price WHERE price NOT LIKE '2%';
Endast en post uppfyller inte det angivna mรถnstret.
Sortera
Den hรคr klausulen hjรคlper oss att sortera vรฅra poster i antingen stigande eller fallande ordning. Vi anvรคnder det med SELECT-satsen, som visas nedan:
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
Det รคr mรถjligt fรถr oss att anvรคnda denna klausul utan att lรคgga till vare sig ASC- eller DESC-delen. Till exempel:
Vi kommer att anvรคnda pristabellen med fรถljande poster:
Kรถr fรถljande kommando mot tabellen:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
I kommandot ovan har vi bestรคllt efter priset. Skivorna har bestรคllts med priserna i stigande ordning. Det betyder att nรคr vi inte anger ordningen sker sorteringen i stigande ordning som standard.
Lรฅt oss kรถra klausulen med DESC-alternativet:
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
Posterna har sorterats med pris i fallande ordning som vi har specificerat.
Lรฅt oss anvรคnda ORDER BY-satsen tillsammans med ASC-attributet:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
Skivorna รคr bestรคllda men med priserna i stigande ordning. Detta liknar nรคr vi anvรคnder ORDER BY-satsen utan vare sig ASC- eller DESC-attribut.
TYDLIG
Den hรคr klausulen hjรคlper oss att gรถra oss av med dubbletter nรคr vi vรคljer poster frรฅn en tabell. Det betyder att det hjรคlper oss att fรฅ unika skivor. Dess syntax anges nedan:
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
Fรถr att visa detta kommer vi att anvรคnda pristabellen med fรถljande data:
Nรคr vi vรคljer priskolumnen frรฅn tabellen fรฅr vi fรถljande resultat:
SELECT price FROM Price;
Vi har tvรฅ poster med ett pris pรฅ 250, vilket skapar en dubblett. Vi behรถver bara ha unika register. Vi kan filtrera dessa genom att anvรคnda DISTINCT-satsen som visas nedan:
SELECT DISTINCT price FROM Price;
Vi har nu inga dubbletter i ovanstรฅende utdata.
Frรฅn
FROM-satsen som anvรคnds fรถr att hรคmta data frรฅn en databastabell. Det kan ocksรฅ vara till hjรคlp nรคr man slรฅr ihop bord. Hรคr รคr syntaxen fรถr kommandot:
SELECT columnNames FROM tableName;
Fรถr att se innehรฅllet i boktabellen, kรถr fรถljande kommando:
SELECT * FROM price;
Klausulen kan hjรคlpa dig att bara hรคmta en enda kolumn frรฅn en databastabell. Till exempel:
SELECT price FROM Price;
Avancerade uppgifter
Lagrad procedur
En procedur รคr en MariaDB program som du kan skicka parametrar till. En procedur returnerar inte vรคrden. Fรถr att skapa en procedur anvรคnder vi kommandot CREATE PROCEDURE.
Fรถr att visa hur man skapar och anropar en procedur kommer vi att skapa en procedur som heter myProcedure() som hjรคlper oss att vรคlja namnkolumnen frรฅn boktabellen. Hรคr รคr proceduren:
DELIMITER $
CREATE PROCEDURE myProcedure()
BEGIN
SELECT name FROM book;
END;
;
Proceduren har skapats. Vi har helt enkelt bifogat SELECT-satsen i BEGIN- och END-satserna i proceduren.
Nu kan vi kalla proceduren med dess namn som visas nedan:
CALL myProcedure();
Proceduren returnerar namnkolumnen i boktabellen nรคr den anropas.
Vi kan skapa en procedur som tar in en parameter. Till exempel mรฅste vi vรคlja namnet pรฅ boken och filtrera med hjรคlp av bok-id. Vi kan skapa fรถljande procedur fรถr detta:
DELIMITER $
CREATE PROCEDURE myProcedure2(book_id int)
BEGIN
SELECT name FROM book WHERE id = book_id;
END;
;
Ovan har vi skapat en procedur som heter myProcedure2(). Denna procedur tar en heltalsparameter som heter book_id som รคr id fรถr boken vars namn vi behรถver se. Fรถr att se namnet pรฅ boken med id 3 kan vi anropa proceduren enligt fรถljande:
CALL myProcedure2(3);
Funktion
Till skillnad frรฅn procedurer mรฅste vi skicka parametrar till funktioner och en funktion mรฅste returnera ett vรคrde. Fรถr att skapa en funktion i MariaDB, anvรคnder vi CREATE FUNCTION-satsen. Uttalandet har fรถljande syntax:
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;
Ovanstรฅende parametrar beskrivs nedan:
| Parameter | BESKRIVNING |
|---|---|
| DEFINER-klausul | Denna parameter รคr valfri. Om du inte anger det kommer definieraren att bli anvรคndaren som skapade funktionen. Om det finns ett behov av att ange en annan definierare, inkludera DEFINER-satsen dรคr anvรคndarnamnet kommer att vara definieraren av funktionen. |
| funktionsnamn | Namnet som ska tilldelas denna funktion i MariaDB. |
| parameter | Parametrarna som skickas till funktionen. Under skapandet av funktionen behandlas alla parametrar som IN-parametrar (istรคllet fรถr OUT/INOUT-parametrar). |
| return_datatype | Datatypen fรถr funktionens returvรคrde. |
| SPRร K SQL | Det pรฅverkar portabiliteten men inte funktionen. |
| DETERMINISTISK | Funktionen returnerar endast ett resultat nรคr den ges ett antal parametrar. |
| INTE DETERMINISTISKT | Det รคr mรถjligt fรถr funktionen att returnera ett annat resultat nรคr den ges ett antal parametrar. |
| INNEHร LLER SQL | informerar MariaDB att denna funktion innehรฅller SQL. Databasen kommer inte att verifiera om detta รคr sant. |
| INGEN SQL | Denna klausul anvรคnds inte, och den har ingen inverkan pรฅ din funktion. |
| LรSER SQL DATA | Berรคttar MariaDB att den hรคr funktionen kommer att anvรคnda SELECT-satser fรถr att lรคsa data, men den kommer inte att รคndra data. |
| MODIFIERAR SQL-DATA | Berรคttar MariaDB att denna funktion kommer att anvรคnda INSERT, DELETE, UPDATE och annat DDL satser fรถr att รคndra SQL-data. |
| deklarationssektion | Det รคr hรคr lokala variabler ska deklareras. |
| kรถrbart avsnitt | Funktionskoden ska lรคggas till hรคr. |
Hรคr รคr ett exempel MariaDB fungera:
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 sedan anropa ovanstรฅende funktion enligt fรถljande:
select sumFunc(1000);
Kommandot returnerar fรถljande:
Nรคr du รคr klar med en funktion รคr det bra fรถr dig att ta bort den. Detta รคr enkelt eftersom du bara behรถver anropa DROP FUNCTION-satsen som tar fรถljande syntax:
DROP FUNCTION function_name;
Till exempel, fรถr att ta bort funktionen som heter myFunc, kan vi kรถra fรถljande kommando:
DROP FUNCTION myFunc;
JOIN
Nรคr du behรถver hรคmta data frรฅn mer รคn en tabell samtidigt, anvรคnd MariaDB Gร R MED. Detta innebรคr att a JOIN fungerar pรฅ tvรฅ eller flera bord. Fรถljande tre typer av JOINS stรถds i MariaDB:
- INRE/ENKEL FรRSAMLING
- VรNSTER YTTRE JOIN/LEFT JOIN
- HรGER YTTRE JOIN/HรGER JOIN
Lรฅt oss diskutera dem en i taget:
INNER JOIN
Den inre kopplingen returnerar alla rader frรฅn tabellerna dรคr kopplingsvillkoret รคr sant. Dess syntax รคr fรถljande:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
Till exempel:
Vi kommer att anvรคnda vรฅra tvรฅ bord, bรถcker och bok.
Boktabellen har fรถljande data:
Pristabellen har fรถljande data:
Mรฅlet รคr att sammanfoga namnkolumnen frรฅn boktabellen och priskolumnen frรฅn pristabellen till en enda tabell. Detta รคr mรถjligt med en inre koppling, som visas nedan:
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
Kommandot returnerar fรถljande:
VรNSTER YTTRE Gร MED
Denna koppling returnerar alla rader frรฅn den vรคnstra tabellen och endast rader dรคr kopplingsvillkoret รคr sant frรฅn den andra tabellen. Dess syntax รคr fรถljande:
SELECT columns FROM table-1 LEFT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Nyckelordet OUTER har placerats inom hakparenteser eftersom det รคr valfritt.
Till exempel:
SELECT book.name, price.price FROM book LEFT JOIN price ON book.id = price.id;
Kommandot returnerar fรถljande:
Den sista posten i tabellen ovan har inget matchande vรคrde till vรคnster. Det รคr dรคrfรถr den har ersatts med NULL.
HรGER YTTRE JOIN
Denna koppling returnerar alla rader frรฅn den hรถgra tabellen och endast rader dรคr kopplingsvillkoret รคr sant frรฅn den andra tabellen. Dess syntax รคr fรถljande:
SELECT columns FROM table-1 RIGHT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Nyckelordet OUTER har placerats inom hakparenteser eftersom det รคr valfritt.
Till exempel:
SELECT book.name, price.price FROM book RIGHT JOIN price ON book.id = price.id;
Kommandot returnerar fรถljande:
Anledningen รคr att alla rader i den hรถgra tabellen matchades med dem i den andra tabellen. Om nรฅgra av raderna inte matchade, skulle vi ha NULLs i den fรถrsta kolumnen.






































































