MariaDB Tutorijal
ล 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.






































































