MariaDB Vodič: Naučite sintaksu, naredbe s primjerima
Što je MariaDB?
MariaDB je vilica od MySQL sustav za upravljanje bazom podataka. Kreirali su ga izvorni programeri. Ovaj DBMS alat nudi mogućnosti obrade podataka za male i poslovne zadatke.
MariaDB je poboljšana verzija MySQL. Dolazi s brojnim ugrađenim moćnim značajkama i mnogim poboljšanjima upotrebljivosti, sigurnosti i performansi koje ne možete pronaći MySQL.
Ovdje su značajke MariaDB:
- Djeluje pod GPL, BSD ili LGPL licencama.
- MariaDB podržava popularan i standardni jezik za upite.
- Dolazi s mnogo mehanizama za pohranu podataka, uključujući one visokih performansi koji se mogu integrirati s drugim sustavima za upravljanje relacijskim bazama podataka.
- Pruža tehnologiju klastera Galera.
- MariaDB podržava PHP, popularan jezik za web razvoj.
- MariaDB može raditi na različitim operativnim sustavima i podržava brojne programske jezike.
- MariaDB dolazi s dodatnim naredbama koje nisu dostupne u MySQL. MySQL ima značajke koje imaju negativan utjecaj na performanse DBMS-a. Takve značajke zamijenjene su u MariaDB.
MariaDB vs MySQL
U nastavku su neke ključne razlike između MariaDB vs MySQL
Parametar | MariaDB | MySQL |
---|---|---|
Više opcija za pohranu podataka | MariaDB ima 12 novih mehanizama za pohranu u kojima nećete pronaći MySQL. | Ima manje mogućnosti za pohranu u usporedbi s MariaDB. |
Poboljšanja brzine | MariaDB pokazuje poboljšanu brzinu u usporedbi s MySQL. Dolazi s brojnim značajkama za optimizaciju brzine. Takve značajke uključuju izvedene prikaze/tablice, podupit, kontrolu izvršenja, pristup disku i kontrolu optimizatora. | MySQL pokazuje manju brzinu u usporedbi s MariaDB. Oslanja se na samo nekoliko značajki za optimizaciju brzine, na primjer, hash indekse. |
Brža predmemorija/indeksi | S motorom za pohranu memorije od MariaDB, naredba INSERT može biti dovršena 24% nego u standardu MySQL. | Mehanizam za pohranu memorije MySQL je sporiji u odnosu na to MariaDB. |
Veći i brži skup povezivanja | MariaDB dolazi s naprednim skupom niti koji može raditi brže i podržava do 200,000+ veza. | Skup niti koje pruža MySQL ne može podržati do 200,000 veza po vremenu. |
Poboljšana replikacija | In MariaDB, replikacija se može obaviti sigurnije i brže. Ažuriranja se također mogu obaviti 2x brže u usporedbi s tradicionalnim MySQL. | MySQLIzdanje zajednice omogućuje statično povezivanje nizova. MySQLEnterprise plan dolazi s mogućnostima niti. |
Nove značajke/proširenja | MariaDB dolazi s novim značajkama i proširenjima uključujući naredbe JSON, WITH i KILL. | Novo MariaDB značajke nisu dostupne u MySQL. |
Nedostaju značajke | MariaDB nedostaju neke značajke koje nudi MySQL poduzeće izdanje. Kako bi to riješio, nudi alternativne dodatke otvorenog koda. Stoga, MariaDB korisnici mogu uživati u istim funkcijama kao MySQL Korisnici Enterprise Edition. | Enterprise Edition of MySQL koristi vlasnički kod. Samo korisnici MySQL Enterprise Edition imaju pristup ovome. |
Kako instalirati MariaDB
Instalirajte kao samostalnu aplikaciju
Da biste mogli koristiti MariaDB, morate ga instalirati na svoje računalo.
Instalacija se može izvršiti slijedeći dolje navedene korake:
Korak 1) Otvori ispod URL-a
Preuzmite instalacijsku datoteku s poveznice https://downloads.mariadb.org/
Korak 2) Double kliknite datoteku za početak instalacije
Kada je preuzimanje završeno, otvorite datoteku
Korak 3) Pritisnite gumb Dalje
U prozoru koji se pojavi kliknite gumb Dalje:
Korak 4) Prihvatite licencni ugovor
Zatim kliknite gumb Dalje:
Korak 5) Odaberite MariaDB Server
Odaberite značajke koje želite instalirati i kliknite Dalje
Korak 6) Unesite lozinku
U sljedećem prozoru od vas će se tražiti da promijenite lozinku za root korisnika.
- Unesite lozinku i potvrdite je ponovnim upisivanjem iste lozinke. Ako želite dopustiti pristup s udaljenih računala, aktivirajte potreban potvrdni okvir.
- Kada završite, kliknite gumb Dalje.
Korak 7) Unesite ime i odaberite broj priključka
U sljedećem prozoru upišite naziv instance, odaberite broj porta i postavite potrebnu veličinu. Pritisnite gumb Dalje:
Korak 8) Kliknite Dalje
U sljedećem prozoru jednostavno kliknite gumb Dalje.
Korak 9) Kliknite na Instaliraj
Pokrenite instalaciju klikom na gumb Instaliraj.
Korak 10) Prikazana traka napretka
Prikazat će se traka napretka koja prikazuje napredak instalacije:
Korak 11) Pritisnite gumb Završi
Kada instalacija završi, vidjet ćete gumb Završi. Pritisnite gumb za zatvaranje prozora:
Korak 12) Čestitamo!
Sad jesi MariaDB instaliran na vašem računalu.
Rad s naredbenim redkom
Sad kad jesi MariaDB instaliran na vašem računalu, vrijeme je da ga pokrenete i počnete koristiti. To se može učiniti putem MariaDB naredbeni redak.
Slijedite korake navedene u nastavku:
Korak 1) Pritisnite Start, odaberite Svi programi i kliknite MariaDB...
Korak 2) Odaberite MariaDB Naredbenog retka.
Korak 3) The MariaDB pokrenut će se naredbeni redak. Sada je vrijeme za prijavu. Morate se prijaviti kao root korisnik i lozinku koju ste postavili tijekom instalacije MariaDB. Upišite sljedeću naredbu u naredbeni redak:
MySQL -u root -p
Korak 4) Unesite lozinku i pritisnite tipku za povratak. Trebali biste biti prijavljeni, kao što je prikazano u nastavku:
Sada ste prijavljeni MariaDB.
Vrste podataka
MariaDB podržava sljedeće vrste podataka:
- String tipovi podataka
- Numerički tipovi podataka
- Vrste podataka datum/vrijeme
- Tipovi podataka velikih objekata
String tipovi podataka
To uključuje sljedeće:
Tip podataka niza | Description |
---|---|
char (veličina) | Veličina označava broj znakova koji se pohranjuju. Pohranjuje maksimalno 255 znakova. Žice fiksne duljine. |
varchar(veličina) | Veličina označava broj znakova koji se pohranjuju. Pohranjuje maksimalno 255 znakova. Nizovi promjenjive duljine. |
tekst (veličina) | Veličina označava broj znakova koji se pohranjuju. Pohranjuje maksimalno 255 znakova. Žice fiksne duljine. |
binarni (veličina) | Veličina označava broj znakova koji se pohranjuju. Pohranjuje maksimalno 255 znakova. Nizovi fiksne veličine. |
Numeričke vrste podataka
Oni uključuju sljedeće:
Numeričke vrste podataka | Description |
---|---|
bit | Vrlo mala vrijednost cijelog broja ekvivalentna tinyint(1). Vrijednosti s predznakom kreću se između -128 i 127. Vrijednosti bez predznaka kreću se između 0 i 255. |
int(m) | Standardna vrijednost cijelog broja. Vrijednosti s predznakom kreću se između -2147483648 i 2147483647. Vrijednosti bez predznaka kreću se između 0 i 4294967295. |
float(m, d) | Broj s pomičnim zarezom s jednostrukom preciznošću. |
dvostruko (m,d) | Broj s pomičnim zarezom s dvostrukom preciznošću. |
float(p) | Broj s pomičnim zarezom. |
Vrste podataka datum/vrijeme
To uključuje sljedeće:
Vrsta podataka datum/vrijeme | Description |
---|---|
Datum | Prikazuje se u obliku 'gggg-mm-dd.' Vrijednosti se kreću između '1000-01-01' i '9999-12-31'. |
datum Vrijeme | Prikazuje se u obliku 'gggg-mm-dd hh:mm:ss'. Vrijednosti se kreću između '1000-01-01 00:00:00' i '9999-12-31 23:59:59'. |
vremenska oznaka (m) | Prikazuje se u obliku 'gggg-mm-dd hh:mm:ss'. Vrijednosti se kreću između '1970-01-01 00:00:01' utc i '2038-01-19 03:14:07' utc. |
Vrijeme | Prikazuje se u obliku 'hh:mm:ss'. Vrijednosti se kreću između '-838:59:59' i '838:59:59'. |
Veliki objektni tipovi podataka (LOB)
Oni uključuju sljedeće:
Tip podataka velikog objekta | Description |
---|---|
sićušna mrljica | Njegova najveća veličina je 255 bajtova. |
mrlja (veličina) | Uzima 65,535 XNUMX bajtova kao maksimalnu veličinu. |
srednja mrlja | Njegova najveća veličina je 16,777,215 bajtova. |
dugačak tekst | Kao maksimalna veličina potrebno je 4 GB. |
Napravite bazu podataka i tablice
Za stvaranje nove baze podataka u MariaDB, trebali biste imati posebne privilegije koje su dodijeljene samo root korisniku i administratorima.
Da biste stvorili novu bazu podataka, trebali biste koristiti naredbu CREATE DATABASE koja ima sljedeću sintaksu:
CREATE DATABASE DatabaseName;
U ovom slučaju morate kreirati bazu podataka i dati joj naziv Demo.
Pokrenite MariaDB naredbeni redak i prijavite se kao root korisnik upisivanjem sljedeće naredbe:
mysql -u root -p
Upišite root lozinku i pritisnite tipku return. Bit ćete prijavljeni.
Sada pokrenite sljedeću naredbu:
CREATE DATABASE Demo;
Zatim ste stvorili bazu podataka pod nazivom Demo. Bilo bi dobro da potvrdite je li baza podataka uspješno kreirana ili ne. Morate samo prikazati popis dostupnih baza podataka pokretanjem sljedeće naredbe:
SHOW DATABASES;
Gornji rezultat pokazuje da je Demo baza podataka dio popisa, stoga je baza podataka uspješno stvorena.
MariaDB Odaberite Baza podataka
Da biste mogli koristiti ili raditi na određenoj bazi podataka, morate je odabrati s popisa dostupnih baza podataka. Nakon odabira baze podataka, možete obavljati zadatke kao što je stvaranje tablica unutar baze podataka.
Za odabir baze podataka trebate koristiti naredbu USE. Potrebna je sintaksa navedena u nastavku:
USE database_name;
Morate koristiti Demo bazu podataka. Možete ga odabrati pokretanjem sljedeće naredbe:
USE Demo;
Gornja slika pokazuje da je MariaDB naredbeni redak promijenio se iz none u naziv baze podataka koja je odabrana.
Sada možete nastaviti i stvarati tablice unutar Demo baze podataka.
MariaDB – Napravi tablicu
Da biste mogli izraditi tablicu, morate imati odabranu bazu podataka. Tablica se može kreirati pomoću naredbe CREATE TABLE. Evo sintakse za naredbu:
CREATE TABLE tableName (columnName columnType);
Možete postaviti jedan od stupaca da bude primarni ključ. Ovaj stupac ne smije dopuštati nulte vrijednosti.
Napravit ćemo dvije tablice unutar Demo baze podataka, tablice Book i Price. Svaka tablica će imati dva stupca.
Započnimo stvaranjem tablice Book s dva stupca, id i name. Pokrenite sljedeću naredbu:
CREATE TABLE Book( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY (id));
Ograničenje PRIMARY KEY korišteno je za postavljanje id stupca kao primarnog ključa za tablicu. Svojstvo AUTO_INCREMENT automatski će povećati vrijednosti stupca id za 1 za svaki novi zapis umetnut u tablicu. Svi stupci neće dopustiti nulte vrijednosti.
Sada kreirajte drugu tablicu, tablicu cijena:
CREATE TABLE Price( id INT NOT NULL AUTO_INCREMENT, price float NOT NULL, PRIMARY KEY (id));
Id stupac je postavljen kao primarni ključ za tablicu.
Prikaz tablica
Sada kada ste izradili dvije tablice, bilo bi dobro za vas utvrditi jesu li tablice izrađene uspješno ili ne. Popis tablica sadržanih u bazi podataka možete prikazati izvođenjem sljedeće naredbe:
SHOW TABLES;
Gornji snimak zaslona pokazuje da su dvije tablice uspješno stvorene unutar baze podataka Demo.
Prikaz strukture tablice
Da biste vidjeli strukturu bilo koje određene tablice, možete upotrijebiti naredbu DESCRIBE, obično skraćenu kao DESC. Potrebna je sljedeća sintaksa:
DESC TableName;
Na primjer, da vidite strukturu tablice pod nazivom Knjiga, možete pokrenuti sljedeću naredbu;
DESC Book;
Tablica ima dva stupca. Da biste vidjeli strukturu tablice cijena, možete pokrenuti sljedeću naredbu:
DESC Price;
CRUD i klauzule
INSERT
Za umetanje podataka u a MariaDB tablici, trebali biste koristiti naredbu INSERT INTO. Ova naredba uzima sintaksu danu u nastavku:
INSERT INTO tableName (column_1, column_2, ... ) VALUES (value1, value2, ... ), (value1, value2, ... ), ...;
Gornja sintaksa pokazuje da morate navesti stupce tablice u koje želite umetnuti podatke kao i podatke koje trebate umetnuti.
Umetnimo zapis u tablicu knjige:
INSERT INTO book (id, name) VALUES(1, 'MariaDB Book');
U tablicu ste umetnuli jedan zapis. Umetnite zapis u tablicu cijena:
INSERT INTO price (id, price) VALUES(1, 200);
Zapis je stvoren.
SELECT
Naredba SELECT pomaže nam da pregledamo ili vidimo sadržaj tablice baze podataka. Da biste vidjeli sadržaj tablice knjiga, na primjer, trebate pokrenuti sljedeću naredbu:
SELECT * from book;
Sada pogledajte sadržaj tablice cijena:
SELECT * from price;
Umetanje više zapisa
Moguće je da umetnemo više zapisa u a MariaDB stol u pokretu. Da biste to demonstrirali, pokrenite sljedeći primjer:
INSERT INTO book (id, name) VALUES (2,'MariaDB Book2'), (3,'MariaDB Book3'), (4,'MariaDB Book4'), (5,'MariaDB Book5');
Možete postaviti upit tablici da biste provjerili jesu li zapisi uspješno umetnuti:
SELECT * FROM book;
Zapisi su uspješno umetnuti. Umetnite više zapisa u tablicu cijena pokretanjem ovog primjera:
INSERT INTO price (id, price) VALUES (2, 250), (3, 220), (4, 190), (5, 300);
Potvrdimo jesu li zapisi uspješno kreirani:
SELECT * FROM price;
UPDATE
Naredba UPDATE nam pomaže promijeniti ili modificirati zapise koji su već umetnuti u tablicu. Možete ga kombinirati s klauzulom WHERE kako biste odredili zapis koji treba ažurirati. Evo sintakse:
UPDATE tableName SET field=newValue, field2=newValue2,... [WHERE ...]
Naredba UPDATE također se može kombinirati s klauzulama kao što su SET, WHERE, LIMIT i ORDER BY. Vidjet ćete ovo uskoro:
Razmotrite tablicu pod nazivom Cijena sa sljedećim zapisima:
Promijenimo cijenu knjige s id-om 1 sa 200 na 250:
UPDATE price SET price = 250 WHERE id = 1;
Naredba je uspješno izvedena. Sada možete postaviti upit tablici da vidite je li došlo do promjene:
Gornji snimak zaslona pokazuje da je promjena provedena. Razmotrite tablicu Knjigu sa sljedećim zapisima:
Promijenimo ime knjige pod nazivom Knjiga u MariaDB Knjiga1. Primijetite da knjiga ima ID 1. Evo naredbe za ovo:
UPDATE book SET name = “MariaDB Book1” WHERE id = 1;
Provjerite je li promjena provedena:
Gornji snimak zaslona pokazuje da je promjena uspješno implementirana.
U gornjim primjerima promijenili smo samo jedan po jedan stupac. Međutim, moguće je promijeniti više stupaca odjednom. Pokažimo to na primjeru.
Poslužimo se tablicom cijena sa sljedećim podacima:
Promijenimo i ID i cijenu knjige s ID-om 5. Promijenit ćemo njezin ID na 6, a cijenu na 6. Pokrenite sljedeću naredbu:
UPDATE price SET id = 6, price = 280 WHERE id = 5;
Sada postavite upit tablici da provjerite je li promjena uspješno napravljena:
Promjena je uspješno izvršena.
Izbrisati
Naredbu DELETE koristimo kada trebamo izbrisati jedan ili više zapisa iz tablice. Evo sintakse za naredbu:
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
Razmotrite tablicu cijena sa sljedećim zapisima:
Moramo izbrisati zadnji zapis iz tablice. Ima ID 6 i cijenu 280. Izbrišite zapis:
DELETE FROM price WHERE id = 6;
Naredba je uspješno izvedena. Upitajmo tablicu da potvrdimo je li brisanje uspješno:
Izlaz pokazuje da je zapis uspješno izbrisan.
Gdje
WHERE klauzula nam pomaže odrediti točnu lokaciju na kojoj trebamo napraviti promjenu. Koristi se zajedno s izjavama kao što su INSERT, SELECT, UPDATE i DELETE. Razmotrite tablicu cijena sa sljedećim podacima:
Pretpostavimo da trebamo vidjeti zapise u kojima je cijena manja od 250. Možemo pokrenuti sljedeću naredbu:
SELECT * FROM price WHERE price < 250;
Svi zapisi u kojima je cijena ispod 250 su vraćeni.
Odredba WHERE može se kombinirati s naredbom AND. Pretpostavimo da trebamo vidjeti sve zapise u tablici cijena gdje je cijena ispod 250, a id iznad 3. Možemo pokrenuti sljedeću naredbu:
SELECT * FROM price WHERE id > 3 AND price < 250;
Vraćen je samo jedan zapis. Razlog tome je što mora ispunjavati sve uvjete koji su navedeni, odnosno id iznad 3 i cijenu ispod 250. Ako se prekrši bilo koji od ovih uvjeta, zapis se neće vratiti.
Klauzula se također može kombinirati s naredbom OR. Zamijenimo AND u našoj prethodnoj naredbi s OR i pogledajmo kakav izlaz dobivamo:
SELECT * FROM price WHERE id > 3 OR price < 250;
Sada dobivamo 2 zapisa umjesto 1. To je zato što, da bi zapis bio kvalificiran, mora zadovoljiti samo jedan od navedenih uvjeta.
Like
Ova se klauzula koristi za određivanje uzorka podataka kada se pristupa podacima tablice u kojima je potrebno točno podudaranje. Može se kombinirati s izjavama INSERT, UPDATE, SELECT i DELETE.
Trebali biste klauzuli proslijediti obrazac podataka koji tražite, a ona će vratiti ili true ili false. Ovo su zamjenski znakovi koji se mogu koristiti zajedno s klauzulom:
- %: za podudaranje 0 ili više znakova.
- _: za podudaranje jednog znaka.
Evo sintakse za klauzulu LIKE:
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
Pokažimo kako koristiti klauzulu sa zamjenskim znakom %. Iskoristimo tablicu Book sa sljedećim zapisima:
Moramo vidjeti sve zapise u kojima ime počinje s M. Možemo pokrenuti sljedeću naredbu:
SELECT name FROM book WHERE name LIKE 'M%';
Svi zapisi su vraćeni jer njihova imena počinju slovom M. Da biste vidjeli sva imena koja završavaju sa 4, možete pokrenuti sljedeću naredbu:
SELECT name FROM book WHERE name LIKE '%4';
Vraćeno je samo jedno ime jer jedino ono ispunjava uvjet.
Također možemo okružiti obrazac pretraživanja zamjenskim znakom:
SELECT name FROM book WHERE name LIKE '%DB%';
Osim zamjenskog znaka %, klauzula LIKE može se koristiti zajedno sa zamjenskim znakom _. Ovo je zamjenski znak za podvlaku i tražit će samo jedan znak.
Radimo s tablicom cijena sa sljedećim zapisima:
Provjerimo zapis u kojem je cijena 1_0. Pokrećemo sljedeću naredbu:
SELECT * FROM price WHERE price LIKE '1_0';
Vratio je zapis u kojem je cijena 190. Također možemo pokušati s drugim uzorkom:
SELECT * FROM price WHERE price LIKE '_2_';
Moguće je koristiti klauzulu LIKE zajedno s operatorom NOT. Ovo će vratiti sve zapise koji ne zadovoljavaju navedeni uzorak. Na primjer:
Iskoristimo tablicu cijena sa sljedećim zapisima:
Pronađimo sve zapise u kojima cijena ne počinje s 2:
SELECT * FROM price WHERE price NOT LIKE '2%';
Samo jedan zapis ne zadovoljava navedeni obrazac.
Naruči po
Ova nam klauzula pomaže razvrstati naše zapise bilo uzlaznim bilo silaznim redoslijedom. Koristimo ga s naredbom SELECT, kao što je prikazano u nastavku:
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
Moguće je koristiti ovu klauzulu bez dodavanja ASC ili DESC dijela. Na primjer:
Koristit ćemo tablicu cijena sa sljedećim zapisima:
Izvedite sljedeću naredbu nad tablicom:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
U gornjoj naredbi poredali smo po cijeni. Zapisi su poredani s cijenama uzlaznim redoslijedom. To znači da kada ne navedemo redoslijed, sortiranje se prema zadanim postavkama vrši uzlaznim redoslijedom.
Pokrenimo klauzulu s DESC opcijom:
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
Zapisi su poredani s cijenom silaznim redoslijedom kako smo naveli.
Upotrijebimo klauzulu ORDER BY zajedno s ASC atributom:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
Zapisi su poredani, ali s cijenama u uzlaznom redoslijedu. Ovo je slično kao kad koristimo klauzulu ORDER BY bez ASC ili DESC atributa.
DISTINCT
Ova klauzula nam pomaže da uklonimo duplikate pri odabiru zapisa iz tablice. To znači da nam pomaže da dobijemo jedinstvene zapise. Njegova sintaksa je navedena u nastavku:
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
Da bismo to demonstrirali, koristit ćemo tablicu cijena sa sljedećim podacima:
Kada iz tablice izaberemo stupac cijena, dobivamo sljedeći rezultat:
SELECT price FROM Price;
Imamo dva zapisa s cijenom od 250, stvarajući duplikat. Moramo imati samo jedinstvene zapise. Možemo ih filtrirati pomoću klauzule DISTINCT kao što je prikazano u nastavku:
SELECT DISTINCT price FROM Price;
Sada nemamo nijedan duplikat u gornjem izlazu.
Od
Klauzula FROM koja se koristi za dohvaćanje podataka iz tablice baze podataka. Može pomoći i kod spajanja stolova. Evo sintakse za naredbu:
SELECT columnNames FROM tableName;
Da biste vidjeli sadržaj tablice knjiga, pokrenite sljedeću naredbu:
SELECT * FROM price;
Klauzula vam može pomoći da dohvatite samo jedan stupac iz tablice baze podataka. Na primjer:
SELECT price FROM Price;
Napredni zadaci
Pohranjeni postupak
Postupak je a MariaDB program kojem možete proslijediti parametre. Procedura ne vraća vrijednosti. Za izradu procedure koristimo naredbu CREATE PROCEDURE.
Da bismo demonstrirali kako stvoriti i pozvati proceduru, stvorit ćemo proceduru pod nazivom myProcedure() koja nam pomaže odabrati stupac imena iz tablice knjige. Evo postupka:
DELIMITER $ CREATE PROCEDURE myProcedure() BEGIN SELECT name FROM book; END; ;
Procedura je kreirana. Jednostavno smo zatvorili naredbu SELECT unutar klauzula BEGIN i END procedure.
Sada možemo proceduru nazvati njenim imenom kao što je prikazano u nastavku:
CALL myProcedure();
Procedura vraća stupac naziva tablice knjige kada se pozove.
Možemo kreirati proceduru koja uzima parametar. Na primjer, trebamo odabrati naziv knjige i filtrirati pomoću ID-a knjige. Za to možemo kreirati sljedeći postupak:
DELIMITER $ CREATE PROCEDURE myProcedure2(book_id int) BEGIN SELECT name FROM book WHERE id = book_id; END; ;
Gore smo stvorili proceduru pod nazivom myProcedure2(). Ova procedura uzima jedan cjelobrojni parametar pod nazivom book_id koji je ID knjige čije ime trebamo vidjeti. Da bismo vidjeli naziv knjige s ID-om 3, možemo pozvati proceduru na sljedeći način:
CALL myProcedure2(3);
funkcija
Za razliku od procedura, moramo proslijediti parametre funkcijama, a funkcija mora vratiti vrijednost. Za stvaranje funkcije u MariaDB, koristimo naredbu CREATE FUNCTION. Izjava ima sljedeću sintaksu:
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;
Gore navedeni parametri opisani su u nastavku:
Parametar | Description |
---|---|
klauzula DEFINER | Ovaj parametar nije obavezan. Ako to ne navedete, definirač će postati korisnik koji je stvorio funkciju. Ako postoji potreba za specificiranjem drugog definitora, uključite klauzulu DEFINER u kojoj će user_name biti definitor funkcije. |
naziv_funkcije | Naziv koji će se dodijeliti ovoj funkciji u MariaDB. |
parametar | Parametar(i) proslijeđen funkciji. Tijekom kreiranja funkcije svi parametri se tretiraju kao IN parametri (umjesto parametara OUT/INOUT). |
povratni_tip_podataka | Tip podataka povratne vrijednosti funkcije. |
JEZIK SQL | Utječe na prenosivost, ali ne i na funkciju. |
DETERMINISTIČKA | Funkcija će vratiti jedan rezultat samo ako joj je zadan niz parametara. |
NIJE DETERMINISTIČKO | Moguće je da funkcija vrati drugačiji rezultat kada joj se zada niz parametara. |
SADRŽI SQL | obavještava MariaDB da ova funkcija sadrži SQL. Baza podataka neće provjeriti je li to točno. |
NEMA SQL-a | Ova klauzula se ne koristi i nema utjecaja na vašu funkciju. |
ČITA SQL PODATKE | govori MariaDB da će ova funkcija koristiti SELECT naredbe za čitanje podataka, ali neće modificirati podatke. |
MIJENJA SQL PODATKE | govori MariaDB da će ova funkcija koristiti INSERT, DELETE, UPDATE i druge DDL izjave za izmjenu SQL podataka. |
deklaracija-odjeljak | Ovdje treba deklarirati lokalne varijable. |
izvršni-odjeljak | Ovdje treba dodati kod funkcije. |
Evo primjera MariaDB funkcija:
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 ;
Tada možemo pozvati gornju funkciju na sljedeći način:
select sumFunc(1000);
Naredba će vratiti sljedeće:
Nakon što završite s nekom funkcijom, bilo bi dobro da je izbrišete. Ovo je jednostavno jer morate samo pozvati naredbu DROP FUNCTION koja ima sljedeću sintaksu:
DROP FUNCTION function_name;
Na primjer, da ispustimo funkciju pod nazivom myFunc, možemo pokrenuti sljedeću naredbu:
DROP FUNCTION myFunc;
PRIDRUŽITE
Kada trebate dohvatiti podatke iz više od jedne tablice odjednom, koristite MariaDB PRIDRUŽUJE SE. To znači da a PRIDRUŽITE radi na dva ili više stolova. Sljedeće tri vrste JOIN-ova su podržane u MariaDB:
- UNUTARNJI/JEDNOSTAVNI SPOJ
- LIJEVI VANJSKI SPOJ/LIJEVI SPOJ
- DESNI VANJSKI SPOJ/DESNI SPOJ
Razmotrimo ih jednu po jednu:
INNER JOIN
Unutarnje spajanje vraća sve retke iz tablica u kojima je uvjet spajanja istinit. Sintaksa mu je sljedeća:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
Na primjer:
Koristit ćemo naša dva stola, knjige i knjigu.
Tablica knjiga ima sljedeće podatke:
Tablica cijena sadrži sljedeće podatke:
Cilj je spojiti stupac naziva iz tablice Knjiga i stupac cijene iz tablice Cijena u jednu tablicu. To je moguće s unutarnjim spajanjem, kao što je prikazano u nastavku:
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
Naredba vraća sljedeće:
LIJEVI VANJSKI SPOJ
Ovo spajanje vraća sve retke iz lijeve tablice i samo retke u kojima je uvjet spajanja istinit iz druge tablice. Sintaksa mu je sljedeća:
SELECT columns FROM table-1 LEFT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Ključna riječ OUTER stavljena je u uglate zagrade jer nije obavezna.
Na primjer:
SELECT book.name, price.price FROM book LEFT JOIN price ON book.id = price.id;
Naredba vraća sljedeće:
Posljednji zapis u gornjoj tablici nema odgovarajuću vrijednost na lijevoj strani. Zbog toga je zamijenjen s NULL.
DESNI VANJSKI SPOJ
Ovo spajanje vraća sve retke iz desne tablice i samo retke u kojima je uvjet spajanja istinit iz druge tablice. Sintaksa mu je sljedeća:
SELECT columns FROM table-1 RIGHT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Ključna riječ OUTER stavljena je u uglate zagrade jer nije obavezna.
Na primjer:
SELECT book.name, price.price FROM book RIGHT JOIN price ON book.id = price.id;
Naredba vraća sljedeće:
Razlog je taj što su svi retci u desnoj tablici usklađeni s onima u drugoj tablici. Ako se neki od redaka ne poklapaju, imali bismo NULL u prvom stupcu.