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:

Instalarea MariaDB

Pas 4) Acceptaศ›i acordul de licenศ›ฤƒ
Apoi faceศ›i clic pe butonul Urmฤƒtorul:

Instalarea MariaDB

Pas 5) Alege MariaDB server de
Alegeศ›i caracteristicile care urmeazฤƒ sฤƒ fie instalate ศ™i faceศ›i clic pe Urmฤƒtorul

Instalarea MariaDB

Pas 6) Introduceศ›i parola
รŽn fereastra urmฤƒtoare, vi se va cere sฤƒ schimbaศ›i parola pentru utilizatorul root.

  1. 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ฤƒ.
  2. Dupฤƒ ce aศ›i terminat, faceศ›i clic pe butonul Urmฤƒtorul.

Instalarea MariaDB

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:

Instalarea MariaDB

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.

Instalarea MariaDB

Pas 10) Afiศ™atฤƒ o barฤƒ de progres
Va fi afiศ™atฤƒ o barฤƒ de progres care aratฤƒ progresul instalฤƒrii:

Instalarea MariaDB

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:

Instalarea MariaDB

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ฤƒ.

MariaDB Command Prompt

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:

MariaDB Command Prompt

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;

Creaศ›i o bazฤƒ de date ศ™i tabele รฎn MariaDB

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;

Creaศ›i o bazฤƒ de date ศ™i tabele รฎn MariaDB

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;

Creaศ›i o bazฤƒ de date ศ™i tabele รฎn MariaDB

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));  

Creaศ›i o bazฤƒ de date ศ™i tabele รฎn MariaDB

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));  

Creaศ›i o bazฤƒ de date ศ™i tabele รฎn MariaDB

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;

Creaศ›i o bazฤƒ de date ศ™i tabele รฎn MariaDB

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;

Creaศ›i o bazฤƒ de date ศ™i tabele รฎn MariaDB

Tabelul are douฤƒ coloane. Pentru a vedea structura tabelului de preศ›uri, puteศ›i rula urmฤƒtoarea comandฤƒ:

DESC Price;

Creaศ›i o bazฤƒ de date ศ™i tabele รฎn MariaDB

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');  

CRUD ศ™i Clauze-INSERT

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);  

CRUD ศ™i Clauze-INSERT

รŽ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;

CRUD ศ™i Clauze-INSERT

Acum, vizualizaศ›i conศ›inutul tabelului de preศ›uri:

SELECT * from price;

CRUD ศ™i Clauze-INSERT

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');

Inserarea mai multor รฎnregistrฤƒri

Puteศ›i interoga tabelul pentru a verifica dacฤƒ รฎnregistrฤƒrile au fost introduse cu succes:

SELECT * FROM book;

Inserarea mai multor รฎnregistrฤƒri

รŽ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); 

Inserarea mai multor รฎnregistrฤƒri

Sฤƒ confirmฤƒm dacฤƒ รฎnregistrฤƒrile au fost create cu succes:

SELECT * FROM price;

Inserarea mai multor รฎnregistrฤƒri

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:

CRUD ศ™i Clauze-UPDATE

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;

CRUD ศ™i Clauze-UPDATE

Comanda a rulat cu succes. Acum puteศ›i interoga tabelul pentru a vedea dacฤƒ modificarea a avut loc:

CRUD ศ™i Clauze-UPDATE

Captura de ecran de mai sus aratฤƒ cฤƒ modificarea a fost implementatฤƒ. Luaศ›i รฎn considerare cartea de tabel cu urmฤƒtoarele รฎnregistrฤƒri:

CRUD ศ™i Clauze-UPDATE

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;

CRUD ศ™i Clauze-UPDATE

Verificaศ›i dacฤƒ modificarea a fost implementatฤƒ:

CRUD ศ™i Clauze-UPDATE

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:

CRUD ศ™i Clauze-UPDATE

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;

  CRUD ศ™i Clauze-UPDATE

Acum, interogaศ›i tabelul pentru a verifica dacฤƒ modificarea a fost fฤƒcutฤƒ cu succes:

CRUD ศ™i Clauze-UPDATE

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:

CRUD ศ™i Clauze-DELETE

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;   

CRUD ศ™i Clauze-DELETE

Comanda a rulat cu succes. Sฤƒ interogฤƒm tabelul pentru a confirma dacฤƒ ศ™tergerea a avut succes:

CRUD ศ™i Clauze-DELETE

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:

CRUD ศ™i clauze-Unde

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;  

CRUD ศ™i clauze-Unde

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;   

CRUD ศ™i clauze-Unde

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;   

CRUD ศ™i clauze-Unde

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:

CRUD ศ™i clauze-Unde

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%';  

 CRUD ศ™i clauze-Unde

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';  

CRUD ศ™i clauze-Unde

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%';  

CRUD ศ™i clauze-Unde

รŽ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:

CRUD ศ™i clauze-Unde

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';  

CRUD ศ™i clauze-Unde

A returnat recordul in care pretul este 190. Putem incerca si un alt model:

SELECT *  
FROM price 
WHERE price LIKE '_2_';  

CRUD ศ™i clauze-Unde

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:

CRUD ศ™i clauze-Unde

Sฤƒ gฤƒsim toate รฎnregistrฤƒrile รฎn care preศ›ul nu รฎncepe cu 2:

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

CRUD ศ™i clauze-Unde

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:

CRUD ศ™i clauze-Unde

Rulaศ›i urmฤƒtoarea comandฤƒ pe tabel:

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

CRUD ศ™i clauze-Unde

รŽ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;   

 CRUD ศ™i clauze-Unde

รŽ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;   

 CRUD ศ™i clauze-Unde

รŽ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:

CRUD ศ™i Clauze-DIstinct

Cรขnd selectฤƒm coloana de preศ› din tabel, obศ›inem urmฤƒtorul rezultat:

SELECT price FROM Price;

CRUD ศ™i Clauze-DIstinct

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;

CRUD ศ™i Clauze-DIstinct

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;

CRUD ศ™i clauze-De la

Clauza vฤƒ poate ajuta sฤƒ preluaศ›i doar o singurฤƒ coloanฤƒ dintr-un tabel al bazei de date. De exemplu:

SELECT price FROM Price;

CRUD ศ™i clauze-De la

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;
;

Sarcini avansate-Procedurฤƒ stocatฤƒ

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();

Sarcini avansate-Procedurฤƒ stocatฤƒ

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;
;

Sarcini avansate-Procedurฤƒ stocatฤƒ

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);

Sarcini avansate-Procedurฤƒ stocatฤƒ

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 ;

Functioneaza in MariaDB

Apoi putem apela funcศ›ia de mai sus dupฤƒ cum urmeazฤƒ:

select sumFunc(1000);

Comanda va returna urmฤƒtoarele:

Functioneaza in MariaDB

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:

INNER JOIN

Tabelul de preศ›uri conศ›ine urmฤƒtoarele date:

INNER JOIN

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:

INNER JOIN

รŽ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:

รŽNTREPRINDERE EXTERIOR STร‚NGA

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:

UNIRE EXTERIOR DREAPTA

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ฤƒ.

Rezumaศ›i aceastฤƒ postare cu: