MariaDB tutorial
Ce Este MariaDB?
MariaDB este o furculiศฤ a MySQL Sistemul de gestionare a bazelor de date. Este creat de dezvoltatorii sฤi originali. Acest instrument DBMS oferฤ capabilitฤศi de procesare a datelor atรขt pentru sarcini mici, cรขt ศi pentru รฎntreprinderi.
MariaDB este o versiune รฎmbunฤtฤศitฤ a MySQL. Vine cu numeroase funcศii puternice รฎncorporate ศi multe abilitฤศi de utilizare, รฎmbunฤtฤศiri de securitate ศi performanศฤ pe care nu le puteศi gฤsi รฎn MySQL.
Iatฤ caracteristicile lui MariaDB:
- Funcศioneazฤ sub licenศe GPL, BSD sau LGPL.
- MariaDB acceptฤ un limbaj de interogare popular ศi standard.
- Vine cu multe motoare de stocare, inclusiv cele de รฎnaltฤ performanศฤ care pot fi integrate cu alte sisteme de gestionare a bazelor de date relaศionale.
- Oferฤ tehnologia cluster Galera.
- MariaDB acceptฤ PHP, un limbaj popular pentru dezvoltarea web.
- MariaDB poate rula pe diferite sisteme de operare ศi acceptฤ numeroase limbaje de programare.
- MariaDB vine cu comenzi suplimentare care nu sunt disponibile รฎn MySQL. MySQL are caracteristici care au un impact negativ asupra performanศei SGBD. Astfel de caracteristici au fost รฎnlocuite รฎn MariaDB.
MariaDB Raport MySQL
Mai jos sunt cรขteva diferenศe cheie รฎntre MariaDB vs MySQL
| Parametru | MariaDB | MySQL |
|---|---|---|
| Mai multe opศiuni pentru motoarele de stocare | MariaDB are 12 noi motoare de stocare รฎn care nu le vei gฤsi MySQL. | Are mai puศine opศiuni de stocare รฎn comparaศie cu MariaDB. |
| รmbunฤtฤศiri ale vitezei | MariaDB aratฤ o vitezฤ รฎmbunฤtฤศitฤ รฎn comparaศie cu MySQL. Vine cu numeroase caracteristici pentru optimizarea vitezei. Astfel de caracteristici includ vederi/tabele derivate, subinterogare, control al execuศiei, acces la disc ศi control al optimizatorului. | MySQL prezintฤ o vitezฤ mai micฤ รฎn comparaศie cu MariaDB. Se bazeazฤ pe doar cรขteva caracteristici pentru optimizarea vitezei, de exemplu, indici hash. |
| Cache/indexuri mai rapide | Cu motorul de stocare รฎn memorie al MariaDB, o instrucศiune INSERT poate fi completatฤ cu 24% decรขt รฎn โโstandard MySQL. | Motorul de stocare a memoriei al MySQL este mai lent รฎn comparaศie cu asta MariaDB. |
| Pool de conexiune mai mare ศi mai rapid | MariaDB vine cu un pool de fire avansate capabil sฤ ruleze mai rapid ศi sฤ accepte pรขnฤ la 200,000 de conexiuni. | Pool-ul de fire oferit de MySQL nu poate accepta pรขnฤ la 200,000 de conexiuni pe timp. |
| Replicare รฎmbunฤtฤศitฤ | In MariaDB, replicarea se poate face mai sigur ศi mai rapid. Actualizฤrile pot fi, de asemenea, fฤcute de 2 ori mai rapid รฎn comparaศie cu cele tradiศionale MySQL. | MySQLediศia comunitarฤ a lui permite conectarea unui numฤr static de fire. MySQLplanul de รฎntreprindere al lui vine cu capabilitฤศi de thread. |
| Caracteristici/extensii noi | MariaDB vine cu funcศii ศi extensii noi, inclusiv instrucศiunile JSON, WITH ศi KILL. | Noul MariaDB caracteristicile nu sunt furnizate รฎn MySQL. |
| Caracteristici lipsฤ | MariaDB รฎi lipsesc unele dintre caracteristicile oferite de MySQL ediศie enterprise. Pentru a rezolva acest lucru, oferฤ pluginuri alternative open-source. Prin urmare, MariaDB utilizatorii se pot bucura de aceleaศi funcศionalitฤศi ca ศi MySQL utilizatorii Enterprise Edition. | Ediศia Enterprise a MySQL foloseศte un cod proprietar. Doar utilizatorii de MySQL Enterprise Edition au acces la aceasta. |
Cum se instaleazฤ MariaDB
Instalaศi ca aplicaศie autonomฤ
Pentru a putea utiliza MariaDB, trebuie sฤ-l instalaศi pe computer.
Instalarea se poate face urmรขnd paศii de mai jos:
Pas 1) Deschideศi Sub URL
Descฤrcaศi fiศierul de instalare de pe Link https://downloads.mariadb.org/
Pas 2) Double faceศi clic pe fiศier pentru a รฎncepe instalarea
Odatฤ ce descฤrcarea este completฤ, deschideศi fiศierul
Pas 3) Faceศi clic pe butonul Urmฤtorul
รn fereastra care apare, faceศi clic pe butonul Urmฤtorul:
Pas 4) Acceptaศi acordul de licenศฤ
Apoi faceศi clic pe butonul Urmฤtorul:
Pas 5) Alege MariaDB server de
Alegeศi caracteristicile care urmeazฤ sฤ fie instalate ศi faceศi clic pe Urmฤtorul
Pas 6) Introduceศi parola
รn fereastra urmฤtoare, vi se va cere sฤ schimbaศi parola pentru utilizatorul root.
- Introduceศi parola ศi confirmaศi-o tastรขnd din nou aceeaศi parolฤ. Dacฤ doriศi sฤ permiteศi accesul de la maศini la distanศฤ, activaศi caseta de selectare necesarฤ.
- Dupฤ ce aศi terminat, faceศi clic pe butonul Urmฤtorul.
Pas 7) Introduceศi numele ศi alegeศi numฤrul portului
รn fereastra urmฤtoare, introduceศi un nume pentru instanศฤ, alegeศi numฤrul portului ศi setaศi dimensiunea necesarฤ. Faceศi clic pe butonul Urmฤtorul:
Pas 8) Faceศi clic pe Urmฤtorul
รn fereastra urmฤtoare, faceศi clic pe butonul Urmฤtorul.
Pas 9) Faceศi clic pe Instalare
Lansaศi instalarea fฤcรขnd clic pe butonul Instalare.
Pas 10) Afiศatฤ o barฤ de progres
Va fi afiศatฤ o barฤ de progres care aratฤ progresul instalฤrii:
Pas 11) Faceศi clic pe butonul Terminare
Odatฤ ce instalarea este finalizatฤ, veศi vedea butonul Terminare. Faceศi clic pe butonul pentru a รฎnchide fereastra:
Pas 12) Felicitฤri!
Acum ai MariaDB instalat pe computer.
Lucrul cu promptul de comandฤ
Acum cฤ ai MariaDB instalat pe computer, este timpul sฤ รฎl lansaศi ศi sฤ รฎncepeศi sฤ รฎl utilizaศi. Acest lucru se poate face prin intermediul MariaDB prompt de comandฤ.
Urmaศi paศii de mai jos:
Pas 1) Faceศi clic pe Start, alegeศi Toate programele apoi faceศi clic MariaDB...
Pas 2) Alege un MariaDB Comandฤ de comandฤ.
Pas 3) MariaDB promptul de comandฤ va fi pornit. Acum este timpul sฤ vฤ autentificaศi. Ar trebui sฤ vฤ autentificaศi ca utilizator root ศi parola pe care aศi setat-o โโรฎn timpul instalฤrii MariaDB. Tastaศi urmฤtoarea comandฤ รฎn promptul de comandฤ:
MySQL -u root -p
Pas 4) Introduceศi parola ศi apฤsaศi tasta de retur. Ar trebui sฤ fiศi autentificat, aศa cum se aratฤ mai jos:
Acum sunteศi conectat MariaDB.
Tipuri de date
MariaDB acceptฤ urmฤtoarele tipuri de date:
- Tipuri de date ศir
- Tipuri de date numerice
- Tipuri de date data/ora
- Tipuri de date de obiecte mari
Tipuri de date ศir
Acestea includ urmฤtoarele:
| Tip de date ศir | Descriere |
|---|---|
| caracter (dimensiune) | Mฤrimea indicฤ numฤrul de caractere care trebuie stocate. Stocheazฤ maximum 255 de caractere. Corzi de lungime fixฤ. |
| varchar(dimensiune) | Mฤrimea indicฤ numฤrul de caractere care trebuie stocate. Stocheazฤ maximum 255 de caractere. Corzi de lungime variabilฤ. |
| Mฤrimea textului) | Mฤrimea indicฤ numฤrul de caractere care trebuie stocate. Stocheazฤ maximum 255 de caractere. Corzi de lungime fixฤ. |
| binar (dimensiune) | Mฤrimea indicฤ numฤrul de caractere care trebuie stocate. Stocheazฤ maximum 255 de caractere. Corzi de dimensiune fixฤ. |
Tipuri de date numerice
Acestea includ urmฤtoarele:
| Tipuri de date numerice | Descriere |
|---|---|
| pic | O valoare รฎntreagฤ foarte micฤ echivalentฤ cu tinyint(1). Valorile semnate sunt cuprinse รฎntre -128 ศi 127. Valorile fฤrฤ semn sunt cuprinse รฎntre 0 ศi 255. |
| int(m) | O valoare รฎntreagฤ standard. Valorile semnate variazฤ รฎntre -2147483648 ศi 2147483647. Valorile fฤrฤ semn variazฤ รฎntre 0 ศi 4294967295. |
| plutitor (m, d) | Un numฤr รฎn virgulฤ mobilฤ cu o singurฤ precizie. |
| dublu (m,d) | Un numฤr รฎn virgulฤ mobilฤ cu dublฤ precizie. |
| plutire(p) | Un numฤr รฎn virgulฤ mobilฤ. |
Tipuri de date Data/Ora
Acestea includ urmฤtoarele:
| Data/Ora Tip de date | Descriere |
|---|---|
| Data | Afiศat sub forma โaaaa-ll-zzโ. Valorile variazฤ รฎntre โ1000-01-01โ ศi โ9999-12-31โ. |
| datetime | Afiศat sub forma โaaaa-mm-zz hh:mm:ssโ. Valorile variazฤ รฎntre โ1000-01-01 00:00:00โ ศi โ9999-12-31 23:59:59โ. |
| marca temporalฤ (m) | Afiศat sub forma โaaaa-mm-zz hh:mm:ssโ. Valorile variazฤ รฎntre โ1970-01-01 00:00:01โ utc ศi โ2038-01-19 03:14:07โ utc. |
| Timp | Afiศat sub forma โhh:mm:ssโ. Valorile variazฤ รฎntre โ-838:59:59โ ศi โ838:59:59โ. |
Tipuri de date obiecte mari (LOB)
Acestea includ urmฤtoarele:
| Tip de date obiect mare | Descriere |
|---|---|
| minuscul | Dimensiunea sa maximฤ este de 255 de octeศi. |
| blob (dimensiune) | Ia 65,535 octeศi ca dimensiune maximฤ. |
| mediumblob | Dimensiunea sa maximฤ este de 16,777,215 de octeศi. |
| text lung | Este nevoie de 4 GB ca dimensiune maximฤ. |
Creaศi o bazฤ de date ศi tabele
Pentru a crea o nouฤ bazฤ de date รฎn MariaDB, ar trebui sฤ aveศi privilegii speciale care sunt acordate numai utilizatorului root ศi administratorilor.
Pentru a crea o nouฤ bazฤ de date, ar trebui sฤ utilizaศi comanda CREATE DATABASE care are urmฤtoarea sintaxฤ:
CREATE DATABASE DatabaseName;
รn acest caz, trebuie sฤ creaศi o bazฤ de date ศi sฤ รฎi daศi numele Demo.
Porniศi MariaDB promptul de comandฤ ศi conectaศi-vฤ ca utilizator rฤdฤcinฤ tastรขnd urmฤtoarea comandฤ:
mysql -u root -p
Introduceศi parola de rฤdฤcinฤ ศi apฤsaศi tasta Retur. Veศi fi autentificat.
Acum, rulaศi urmฤtoarea comandฤ:
CREATE DATABASE Demo;
Apoi aศi creat o bazฤ de date numitฤ Demo. Va fi bine sฤ confirmaศi dacฤ baza de date a fost creatฤ cu succes sau nu. Trebuie doar sฤ afiศaศi lista bazelor de date disponibile rulรขnd urmฤtoarea comandฤ:
SHOW DATABASES;
Rezultatul de mai sus aratฤ cฤ baza de date Demo face parte din listฤ, prin urmare baza de date a fost creatฤ cu succes.
MariaDB Selectaศi baza de date
Pentru a putea folosi sau lucra la o anumitฤ bazฤ de date, trebuie sฤ o selectezi din lista bazelor de date disponibile. Dupฤ selectarea unei baze de date, puteศi efectua sarcini precum crearea de tabele รฎn baza de date.
Pentru a selecta o bazฤ de date, ar trebui sฤ utilizaศi comanda USE. Este nevoie de sintaxa de mai jos:
USE database_name;
Trebuie sฤ utilizaศi baza de date Demo. O puteศi selecta executรขnd urmฤtoarea comandฤ:
USE Demo;
Imaginea de mai sus aratฤ cฤ MariaDB promptul de comandฤ s-a schimbat de la niciunul la numele bazei de date care a fost selectatฤ.
Acum puteศi continua ศi crea tabele รฎn baza de date Demo.
MariaDB โ Creaศi tabel
Pentru a putea crea un tabel, trebuie sฤ fi selectat o bazฤ de date. Tabelul poate fi creat folosind instrucศiunea CREATE TABLE. Iatฤ sintaxa pentru comandฤ:
CREATE TABLE tableName (columnName columnType);
Puteศi seta una dintre coloane sฤ fie cheia primarฤ. Aceastฤ coloanฤ nu ar trebui sฤ permitฤ valori nule.
Vom crea douฤ tabele รฎn baza de date Demo, tabele Book ศi Price. Fiecare tabel va avea douฤ coloane.
Sฤ รฎncepem prin a crea tabelul Book cu douฤ coloane, id ศi nume. Rulaศi urmฤtoarea comandฤ:
CREATE TABLE Book( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY (id));
Constrรขngerea PRIMARY KEY a fost folositฤ pentru a seta coloana id ca cheie primarฤ pentru tabel. Proprietatea AUTO_INCREMENT va incrementa automat valorile coloanei id cu 1 pentru fiecare รฎnregistrare nouฤ introdusฤ รฎn tabel. Toate coloanele nu vor permite valori nule.
Acum, creaศi al doilea tabel, tabelul de preศuri:
CREATE TABLE Price( id INT NOT NULL AUTO_INCREMENT, price float NOT NULL, PRIMARY KEY (id));
Coloana id a fost setatฤ ca cheie primarฤ pentru tabel.
Afiศeazฤ tabele
Acum cฤ aศi creat cele douฤ tabele, va fi bine sฤ vฤ conformaศi dacฤ tabelele au fost create cu succes sau nu. Puteศi afiศa lista de tabele conศinute รฎntr-o bazฤ de date rulรขnd urmฤtoarea comandฤ:
SHOW TABLES;
Captura de ecran de mai sus aratฤ cฤ cele douฤ tabele au fost create cu succes รฎn baza de date Demo.
Afiศeazฤ structura tabelului
Pentru a vedea structura oricฤrui tabel anume, puteศi utiliza comanda DESCRIBE, prescurtatฤ รฎn mod obiศnuit ca DESC. Este nevoie de urmฤtoarea sintaxฤ:
DESC TableName;
De exemplu, pentru a vedea structura tabelului numit Book, puteศi rula urmฤtoarea comandฤ;
DESC Book;
Tabelul are douฤ coloane. Pentru a vedea structura tabelului de preศuri, puteศi rula urmฤtoarea comandฤ:
DESC Price;
CRUD ศi Clauze
INSERT
Pentru a insera date รฎntr-un MariaDB tabel, ar trebui sฤ utilizaศi instrucศiunea INSERT INTO. Aceastฤ comandฤ preia sintaxa de mai jos:
INSERT INTO tableName (column_1, column_2, ... ) VALUES (value1, value2, ... ), (value1, value2, ... ), ...;
Sintaxa de mai sus aratฤ cฤ trebuie sฤ specificaศi coloanele tabelului รฎn care doriศi sฤ inseraศi date, precum ศi datele pe care trebuie sฤ le inseraศi.
Sฤ inserฤm o รฎnregistrare รฎn tabelul Book:
INSERT INTO book (id, name) VALUES(1, 'MariaDB Book');
Aศi introdus o singurฤ รฎnregistrare รฎn tabel. Introduceศi o รฎnregistrare รฎn tabelul de preศuri:
INSERT INTO price (id, price) VALUES(1, 200);
รnregistrarea a fost creatฤ.
SELECT
Instrucศiunea SELECT ne ajutฤ sฤ vedem sau sฤ vedem conศinutul unui tabel al bazei de date. Pentru a vedea conศinutul tabelului Book, de exemplu, trebuie sฤ rulaศi urmฤtoarea comandฤ:
SELECT * from book;
Acum, vizualizaศi conศinutul tabelului de preศuri:
SELECT * from price;
Inserarea mai multor รฎnregistrฤri
Este posibil pentru noi sฤ inserฤm mai multe รฎnregistrฤri รฎntr-un MariaDB la masฤ. Pentru a demonstra acest lucru, rulaศi urmฤtorul exemplu:
INSERT INTO book (id, name) VALUES (2,'MariaDB Book2'), (3,'MariaDB Book3'), (4,'MariaDB Book4'), (5,'MariaDB Book5');
Puteศi interoga tabelul pentru a verifica dacฤ รฎnregistrฤrile au fost introduse cu succes:
SELECT * FROM book;
รnregistrฤrile au fost introduse cu succes. Inseraศi mai multe รฎnregistrฤri รฎn tabelul de preศuri rulรขnd acest exemplu:
INSERT INTO price (id, price) VALUES (2, 250), (3, 220), (4, 190), (5, 300);
Sฤ confirmฤm dacฤ รฎnregistrฤrile au fost create cu succes:
SELECT * FROM price;
UPDATE
Comanda UPDATE ne ajutฤ sฤ modificฤm sau sฤ modificฤm รฎnregistrฤrile care au fost deja introduse รฎntr-un tabel. O puteศi combina cu clauza WHERE pentru a specifica รฎnregistrarea care urmeazฤ sฤ fie actualizatฤ. Iatฤ sintaxa:
UPDATE tableName SET field=newValue, field2=newValue2,... [WHERE ...]
Comanda UPDATE poate fi combinatฤ ศi cu clauze precum SET, WHERE, LIMIT ศi ORDER BY. Veศi vedea asta รฎn scurt timp:
Luaศi รฎn considerare tabelul numit Preศ cu urmฤtoarele รฎnregistrฤri:
Sฤ modificฤm preศul cฤrศii cu id-ul 1 de la 200 la 250:
UPDATE price SET price = 250 WHERE id = 1;
Comanda a rulat cu succes. Acum puteศi interoga tabelul pentru a vedea dacฤ modificarea a avut loc:
Captura de ecran de mai sus aratฤ cฤ modificarea a fost implementatฤ. Luaศi รฎn considerare cartea de tabel cu urmฤtoarele รฎnregistrฤri:
Sฤ schimbฤm numele cฤrศii cu numele Book MariaDB Cartea 1. Observaศi cฤ cartea are un id de 1. Iatฤ comanda pentru aceasta:
UPDATE book SET name = โMariaDB Book1โ WHERE id = 1;
Verificaศi dacฤ modificarea a fost implementatฤ:
Captura de ecran de mai sus aratฤ cฤ modificarea a fost implementatฤ cu succes.
รn exemplele de mai sus, am schimbat doar o coloanฤ la un moment dat. Cu toate acestea, este posibil pentru noi sฤ schimbฤm mai multe coloane simultan. Sฤ demonstrฤm acest lucru folosind un exemplu.
Sฤ folosim tabelul de preศuri cu urmฤtoarele date:
Sฤ schimbฤm atรขt id-ul, cรขt ศi preศul cฤrศii cu un id de 5. รi vom schimba id-ul la 6 ศi preศul la 6. Rulaศi urmฤtoarea comandฤ:
UPDATE price SET id = 6, price = 280 WHERE id = 5;
Acum, interogaศi tabelul pentru a verifica dacฤ modificarea a fost fฤcutฤ cu succes:
Schimbarea a fost fฤcutฤ cu succes.
ศterge
Folosim comanda DELETE atunci cรขnd trebuie sฤ ศtergem una sau mai multe รฎnregistrฤri dintr-un tabel. Iatฤ sintaxa pentru comandฤ:
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
Luaศi รฎn considerare tabelul de preศuri cu urmฤtoarele รฎnregistrฤri:
Trebuie sฤ ศtergem ultima รฎnregistrare din tabel. Are un id de 6 ศi un preศ de 280. Sฤ ศtergem รฎnregistrarea:
DELETE FROM price WHERE id = 6;
Comanda a rulat cu succes. Sฤ interogฤm tabelul pentru a confirma dacฤ ศtergerea a avut succes:
Rezultatul aratฤ cฤ รฎnregistrarea a fost ศtearsฤ cu succes.
Unde
Clauza WHERE ne ajutฤ sฤ specificฤm locaศia exactฤ รฎn care trebuie sฤ facem o schimbare. Este folosit รฎmpreunฤ cu instrucศiuni precum INSERT, SELECT, UPDATE ศi DELETE. Luaศi รฎn considerare tabelul de preศuri cu urmฤtoarele date:
Sฤ presupunem cฤ trebuie sฤ vedem รฎnregistrฤrile รฎn care preศul este mai mic de 250. Putem rula urmฤtoarea comandฤ:
SELECT * FROM price WHERE price < 250;
Au fost returnate toate รฎnregistrฤrile รฎn care preศul este sub 250.
Clauza WHERE poate fi combinatฤ cu instrucศiunea AND. Sฤ presupunem cฤ trebuie sฤ vedem toate รฎnregistrฤrile รฎn tabelul de preศuri unde preศul este sub 250 ศi id-ul este peste 3. Putem rula urmฤtoarea comandฤ:
SELECT * FROM price WHERE id > 3 AND price < 250;
Doar o รฎnregistrare a fost returnatฤ. Motivul este cฤ trebuie sฤ รฎndeplineascฤ toate condiศiile care au fost specificate, adicฤ id peste 3 ศi preศ sub 250. Dacฤ oricare dintre aceste condiศii este รฎncฤlcatฤ, atunci รฎnregistrarea nu va fi returnatฤ.
Clauza poate fi combinatฤ ศi cu comanda OR. Sฤ รฎnlocuim AND din comanda anterioarฤ cu SAU ศi sฤ vedem tipul de ieศire pe care o primim:
SELECT * FROM price WHERE id > 3 OR price < 250;
Acum obศinem 2 รฎnregistrฤri รฎn loc de 1. Acest lucru se datoreazฤ faptului cฤ, pentru o รฎnregistrare de calificare, trebuie sฤ รฎndeplineascฤ doar una dintre condiศiile specificate.
Aprecieri
Aceastฤ clauzฤ este utilizatฤ pentru a specifica modelul de date atunci cรขnd accesaศi datele din tabel รฎn care este necesarฤ o potrivire exactฤ. Poate fi combinat cu instrucศiunile INSERT, UPDATE, SELECT ศi DELETE.
Ar trebui sฤ transmiteศi tiparul de date pe care รฎl cฤutaศi clauzei ศi va returna fie adevฤrat, fie fals. Iatฤ caracterele wildcard care pot fi folosite รฎmpreunฤ cu clauza:
- %: pentru potrivirea fie a 0, fie a mai multor caractere.
- _: pentru potrivirea unui singur caracter.
Iatฤ sintaxa pentru clauza LIKE:
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
Sฤ demonstrฤm cum sฤ folosim clauza cu caracterul joker %. Sฤ folosim tabelul Book cu urmฤtoarele รฎnregistrฤri:
Trebuie sฤ vedem toate รฎnregistrฤrile รฎn care numele รฎncepe cu M. Putem rula urmฤtoarea comandฤ:
SELECT name FROM book WHERE name LIKE 'M%';
Toate รฎnregistrฤrile au fost returnate deoarece numele lor รฎncep cu litera M. Pentru a vedea toate numele care se terminฤ cu 4, puteศi rula urmฤtoarea comandฤ:
SELECT name FROM book WHERE name LIKE '%4';
Un singur nume a fost returnat deoarece este singurul care รฎndeplineศte condiศia.
De asemenea, putem รฎnconjura modelul de cฤutare de caractere joker:
SELECT name FROM book WHERE name LIKE '%DB%';
รn afarฤ de caracterul metalic %, clauza LIKE poate fi utilizatฤ รฎmpreunฤ cu caracterul joker _. Acesta este caracterul de subliniere ศi va cฤuta doar un singur caracter.
Sฤ lucrฤm cu tabelul de preศuri cu urmฤtoarele รฎnregistrฤri:
Sฤ verificฤm รฎnregistrarea รฎn care preศul este ca 1_0. Executฤm urmฤtoarea comandฤ:
SELECT * FROM price WHERE price LIKE '1_0';
A returnat recordul in care pretul este 190. Putem incerca si un alt model:
SELECT * FROM price WHERE price LIKE '_2_';
Este posibil sฤ folosim clauza LIKE รฎmpreunฤ cu operatorul NOT. Aceasta va returna toate รฎnregistrฤrile care nu รฎndeplinesc modelul specificat. De exemplu:
Sฤ folosim tabelul de preศuri cu urmฤtoarele รฎnregistrฤri:
Sฤ gฤsim toate รฎnregistrฤrile รฎn care preศul nu รฎncepe cu 2:
SELECT * FROM price WHERE price NOT LIKE '2%';
Doar o รฎnregistrare nu รฎndeplineศte modelul specificat.
ORDER BY
Aceastฤ clauzฤ ne ajutฤ sฤ ne sortฤm รฎnregistrฤrile รฎn ordine crescฤtoare sau descrescฤtoare. รl folosim cu instrucศiunea SELECT, aศa cum se aratฤ mai jos:
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
Este posibil sฤ folosim aceastฤ clauzฤ fฤrฤ a adฤuga nici partea ASC sau DESC. De exemplu:
Vom folosi tabelul de preศuri cu urmฤtoarele รฎnregistrฤri:
Rulaศi urmฤtoarea comandฤ pe tabel:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
รn comanda de mai sus, am ordonat dupฤ preศ. รnregistrฤrile au fost ordonate cu preศurile รฎn ordine crescฤtoare. Asta รฎnseamnฤ cฤ atunci cรขnd nu specificฤm ordinea, sortarea se face implicit รฎn ordine crescฤtoare.
Sฤ rulฤm clauza cu opศiunea DESC:
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
รnregistrฤrile au fost sortate cu preศul รฎn ordine descrescฤtoare, aศa cum am specificat.
Sฤ folosim clauza ORDER BY รฎmpreunฤ cu atributul ASC:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
รnregistrฤrile au fost comandate dar cu preศurile รฎn ordine crescฤtoare. Acest lucru este similar cu cรขnd folosim clauza ORDER BY fฤrฤ atribute ASC sau DESC.
DISTINCT
Aceastฤ clauzฤ ne ajutฤ sฤ eliminฤm duplicatele atunci cรขnd selectฤm รฎnregistrฤri dintr-un tabel. Aceasta รฎnseamnฤ cฤ ne ajutฤ sฤ obศinem รฎnregistrฤri unice. Sintaxa sa este prezentatฤ mai jos:
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
Pentru a demonstra acest lucru, vom folosi tabelul de preศuri cu urmฤtoarele date:
Cรขnd selectฤm coloana de preศ din tabel, obศinem urmฤtorul rezultat:
SELECT price FROM Price;
Avem douฤ รฎnregistrฤri cu un preศ de 250, creรขnd un duplicat. Trebuie sฤ avem doar รฎnregistrฤri unice. Le putem filtra prin utilizarea clauzei DISTINCT, dupฤ cum se aratฤ mai jos:
SELECT DISTINCT price FROM Price;
Acum nu avem duplicate รฎn rezultatul de mai sus.
De la
Clauza FROM utilizatฤ pentru preluarea datelor dintr-un tabel al bazei de date. De asemenea, poate ajuta la alฤturarea meselor. Iatฤ sintaxa pentru comandฤ:
SELECT columnNames FROM tableName;
Pentru a vedea conศinutul tabelului cฤrศii, rulaศi urmฤtoarea comandฤ:
SELECT * FROM price;
Clauza vฤ poate ajuta sฤ preluaศi doar o singurฤ coloanฤ dintr-un tabel al bazei de date. De exemplu:
SELECT price FROM Price;
Sarcini avansate
Procedurฤ stocatฤ
O procedurฤ este a MariaDB program cฤruia รฎi puteศi transmite parametri. O procedurฤ nu returneazฤ valori. Pentru a crea o procedurฤ, folosim comanda CREATE PROCEDURE.
Pentru a demonstra cum sฤ creฤm ศi sฤ apelฤm o procedurฤ, vom crea o procedurฤ numitฤ myProcedure() care ne ajutฤ sฤ selectฤm coloana cu nume din tabelul de carte. Iatฤ procedura:
DELIMITER $
CREATE PROCEDURE myProcedure()
BEGIN
SELECT name FROM book;
END;
;
Procedura a fost creatฤ. Pur ศi simplu am inclus instrucศiunea SELECT รฎn clauzele BEGIN ศi END ale procedurii.
Acum, putem numi procedura dupฤ numele ei, aศa cum se aratฤ mai jos:
CALL myProcedure();
Procedura returneazฤ coloana de nume a tabelului de carte atunci cรขnd este apelatฤ.
Putem crea o procedurฤ care preia un parametru. De exemplu, trebuie sฤ selectฤm numele cฤrศii ศi sฤ filtram folosind id-ul cฤrศii. Pentru aceasta putem crea urmฤtoarea procedurฤ:
DELIMITER $
CREATE PROCEDURE myProcedure2(book_id int)
BEGIN
SELECT name FROM book WHERE id = book_id;
END;
;
Mai sus, am creat o procedurฤ numitฤ myProcedure2(). Aceastฤ procedurฤ ia un parametru รฎntreg numit book_id, care este id-ul cฤrศii al cฤrei nume trebuie sฤ-l vedem. Pentru a vedea numele cฤrศii cu un id de 3, putem apela procedura dupฤ cum urmeazฤ:
CALL myProcedure2(3);
Funcลฃie
Spre deosebire de proceduri, trebuie sฤ transmitem parametrii funcศiilor, iar o funcศie trebuie sฤ returneze o valoare. Pentru a crea o funcศie รฎn MariaDB, folosim instrucศiunea CREATE FUNCTION. Declaraศia are urmฤtoarea sintaxฤ:
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;
Parametrii de mai sus sunt descriศi mai jos:
| Parametru | Descriere |
|---|---|
| Clauza DEFINER | Acest parametru este opศional. Dacฤ nu รฎl specificaศi, definitorul va deveni utilizatorul care a creat funcศia. Dacฤ este nevoie sฤ specificaศi un alt definitor, includeศi clauza DEFINER รฎn care user_name va fi definitorul funcศiei. |
| nume_funcศie | Numele care urmeazฤ sฤ fie atribuit acestei funcศii รฎn MariaDB. |
| parametru | Parametrii transmisi funcศiei. รn timpul creฤrii funcศiei, toศi parametrii sunt trataศi ca parametrii IN (mai degrabฤ decรขt parametrii OUT/INOUT). |
| return_datatype | Tipul de date al valorii returnate a funcศiei. |
| LIMBAJUL SQL | Afecteazฤ portabilitatea, dar nu ศi funcศia. |
| DETERMINAT | Funcศia va returna un rezultat numai atunci cรขnd i se oferฤ un numฤr de parametri. |
| NU DETERMINISTICE | Este posibil ca funcศia sฤ returneze un rezultat diferit atunci cรขnd i se oferฤ un numฤr de parametri. |
| CONTINE SQL | informeaza MariaDB cฤ aceastฤ funcศie conศine SQL. Baza de date nu va verifica dacฤ acest lucru este adevฤrat. |
| FฤRฤ SQL | Aceastฤ clauzฤ nu este utilizatฤ ศi nu are niciun impact asupra funcศiei dvs. |
| CITEศTE DATE SQL | Spune MariaDB cฤ aceastฤ funcศie va folosi instrucศiunile SELECT pentru a citi datele, dar nu va modifica datele. |
| MODIFICA DATELE SQL | Spune MariaDB cฤ aceastฤ funcศie va folosi INSERT, DELETE, UPDATE ศi altele DDL instrucศiuni pentru modificarea datelor SQL. |
| declaraศie-secศiune | Aici ar trebui declarate variabilele locale. |
| sectiune-executabila | Codul funcศiei ar trebui adฤugat aici. |
Iatฤ un exemplu MariaDB funcลฃie:
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 ;
Apoi putem apela funcศia de mai sus dupฤ cum urmeazฤ:
select sumFunc(1000);
Comanda va returna urmฤtoarele:
Dupฤ ce aศi terminat cu o funcศie, va fi bine sฤ o ศtergeศi. Acest lucru este uศor, deoarece trebuie doar sฤ apelaศi instrucศiunea DROP FUNCTION care are urmฤtoarea sintaxฤ:
DROP FUNCTION function_name;
De exemplu, pentru a elimina funcศia numitฤ myFunc, putem rula urmฤtoarea comandฤ:
DROP FUNCTION myFunc;
JOIN
Cรขnd trebuie sฤ preluaศi date din mai multe tabele simultan, utilizaศi MariaDB SE ALฤTURATE. Aceasta รฎnseamnฤ cฤ a JOIN lucreazฤ pe douฤ sau mai multe mese. Urmฤtoarele trei tipuri de JOINS sunt acceptate รฎn MariaDB:
- INNER/SIMPLE JOIN
- LEFT OUTER JOIN/LEFT JOIN
- RIGHT OUTER JOIN/RIGHT JOIN
Sฤ le discutฤm unul cรขte unul:
INNER JOIN
รmbinarea interioarฤ returneazฤ toate rรขndurile din tabelele รฎn care condiศia de รฎmbinare este adevฤratฤ. Sintaxa sa este urmฤtoarea:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
De exemplu:
Vom folosi cele douฤ mese, cฤrศi ศi carte.
Tabelul de carte conศine urmฤtoarele date:
Tabelul de preศuri conศine urmฤtoarele date:
Scopul este de a uni coloana de nume din tabelul Book ศi coloana de preศ din tabelul de preศ รฎntr-un singur tabel. Acest lucru este posibil cu o รฎmbinare interioarฤ, dupฤ cum se demonstreazฤ mai jos:
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
Comanda returneazฤ urmฤtoarele:
รNTREPRINDERE EXTERIOR STรNGA
Aceastฤ รฎmbinare returneazฤ toate rรขndurile din tabelul din stรขnga ศi numai rรขndurile รฎn care condiศia de รฎmbinare este adevฤratฤ din celฤlalt tabel. Sintaxa sa este urmฤtoarea:
SELECT columns FROM table-1 LEFT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Cuvรขntul cheie OUTER a fost plasat รฎntre paranteze drepte deoarece este opศional.
De exemplu:
SELECT book.name, price.price FROM book LEFT JOIN price ON book.id = price.id;
Comanda returneazฤ urmฤtoarele:
Ultima รฎnregistrare din tabelul de mai sus nu are o valoare potrivitฤ รฎn partea stรขngฤ. De aceea a fost รฎnlocuit cu NULL.
UNIRE EXTERIOR DREAPTA
Aceastฤ รฎmbinare returneazฤ toate rรขndurile din tabelul din dreapta ศi numai rรขndurile รฎn care condiศia de รฎmbinare este adevฤratฤ din celฤlalt tabel. Sintaxa sa este urmฤtoarea:
SELECT columns FROM table-1 RIGHT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Cuvรขntul cheie OUTER a fost plasat รฎntre paranteze drepte deoarece este opศional.
De exemplu:
SELECT book.name, price.price FROM book RIGHT JOIN price ON book.id = price.id;
Comanda returneazฤ urmฤtoarele:
Motivul este cฤ toate rรขndurile din tabelul din dreapta au fost potrivite cu cele din celฤlalt tabel. Dacฤ unele dintre rรขnduri nu se potrivesc, am avea valori NULL รฎn prima coloanฤ.






































































