MariaDB konzultace
Co je to MariaDB?
MariaDB je vidliฤka MySQL Systรฉm pro sprรกvu databรกzรญ. Je vytvoลen jeho pลฏvodnรญmi vรฝvojรกลi. Tento nรกstroj DBMS nabรญzรญ moลพnosti zpracovรกnรญ dat pro malรฉ i podnikovรฉ รบlohy.
MariaDB je vylepลกenรก verze MySQL. Dodรกvรก se s mnoha vestavฤnรฝmi vรฝkonnรฝmi funkcemi a mnoha vylepลกenรญmi pouลพitelnosti, zabezpeฤenรญ a vรฝkonu, kterรฉ nenajdete MySQL.
Zde jsou vlastnosti MariaDB:
- Funguje pod licencemi GPL, BSD nebo LGPL.
- MariaDB podporuje populรกrnรญ a standardnรญ dotazovacรญ jazyk.
- Dodรกvรก se s mnoha รบloลพnรฝmi moduly, vฤetnฤ tฤch vysoce vรฝkonnรฝch, kterรฉ lze integrovat s jinรฝmi systรฉmy sprรกvy relaฤnรญch databรกzรญ.
- Poskytuje clusterovou technologii Galera.
- MariaDB podporuje PHP, oblรญbenรฝ jazyk pro vรฝvoj webovรฝch aplikacรญ.
- MariaDB mลฏลพe bฤลพet na rลฏznรฝch operaฤnรญch systรฉmech a podporuje mnoho programovacรญch jazykลฏ.
- MariaDB pลichรกzรญ s dalลกรญmi pลรญkazy, kterรฉ nejsou dostupnรฉ v MySQL. MySQL mรก vlastnosti, kterรฉ majรญ negativnรญ dopad na vรฝkon DBMS. Tyto funkce byly nahrazeny v MariaDB.
MariaDB vs MySQL
Nรญลพe jsou uvedeny nฤkterรฉ klรญฤovรฉ rozdรญly mezi nimi MariaDB vs MySQL
| Parametr | MariaDB | MySQL |
|---|---|---|
| Dalลกรญ moลพnosti pro Storage Engines | MariaDB mรก 12 novรฝch รบloลพiลกลฅ, kterรฉ nenajdete MySQL. | Mรก mรฉnฤ moลพnostรญ pro skladovรกnรญ ve srovnรกnรญ s MariaDB. |
| Vylepลกenรญ rychlosti | MariaDB vykazuje zlepลกenou rychlost ve srovnรกnรญ s MySQL. Dodรกvรก se s ลadou funkcรญ pro optimalizaci rychlosti. Mezi takovรฉ funkce patลรญ odvozenรฉ pohledy/tabulky, poddotaz, ลรญzenรญ provรกdฤnรญ, pลรญstup k disku a ลรญzenรญ optimalizรกtoru. | MySQL vykazuje niลพลกรญ rychlost ve srovnรกnรญ s MariaDB. Spolรฉhรก se pouze na nฤkolik funkcรญ pro optimalizaci rychlosti, napลรญklad hash indexy. |
| Rychlejลกรญ cache/indexy | S modulem Memory Storage Engine of MariaDB, pลรญkaz INSERT lze vyplnit o 24 % neลพ ve standardu MySQL. | Motor รบloลพiลกtฤ pamฤti MySQL je ve srovnรกnรญ s tรญm pomalejลกรญ MariaDB. |
| Vฤtลกรญ a rychlejลกรญ fond pลipojenรญ | MariaDB pลichรกzรญ s pokroฤilรฝm fondem vlรกken, kterรฝ je schopen bฤลพet rychleji a podporuje aลพ 200,000 XNUMX+ pลipojenรญ. | Fond vlรกken, kterรฝ poskytuje MySQL nemลฏลพe podporovat aลพ 200,000 XNUMX pลipojenรญ za ฤas. |
| Vylepลกenรก replikace | In MariaDB, replikaci lze provรกdฤt bezpeฤnฤji a rychleji. Aktualizace lze takรฉ provรฉst 2x rychleji ve srovnรกnรญ s tradiฤnรญmi MySQL. | MySQLKomunitnรญ vydรกnรญ umoลพลuje pลipojit statickรฝ poฤet vlรกken. MySQLPodnikovรฝ plรกn spoleฤnosti pลichรกzรญ s funkcemi vlรกken. |
| Novรฉ funkce/rozลกรญลenรญ | MariaDB pลichรกzรญ s novรฝmi funkcemi a rozลกรญลenรญmi vฤetnฤ pลรญkazลฏ JSON, WITH a KILL. | Novรฝ MariaDB funkce nejsou poskytovรกny v MySQL. |
| Chybฤjรญcรญ funkce | MariaDB postrรกdรก nฤkterรฉ funkce, kterรฉ poskytuje MySQL podnikovรฉ vydรกnรญ. K vyลeลกenรญ tohoto problรฉmu nabรญzรญ alternativnรญ pluginy s otevลenรฝm zdrojovรฝm kรณdem. Proto, MariaDB uลพivatelรฉ mohou vyuลพรญvat stejnรฉ funkce jako MySQL Uลพivatelรฉ Enterprise Edition. | Enterprise Edition of MySQL pouลพรญvรก proprietรกrnรญ kรณd. Pouze uลพivatelรฉ MySQL Enterprise Edition k tomu majรญ pลรญstup. |
Jak nainstalovat MariaDB
Nainstalujte jako samostatnou aplikaci
Aby bylo moลพnรฉ pouลพรญvat MariaDB, musรญte si jej nainstalovat do poฤรญtaฤe.
Instalaci lze provรฉst podle nรกsledujรญcรญch krokลฏ:
Krok 1) Otevลรญt adresu URL nรญลพe
Stรกhnฤte si instalaฤnรญ soubor z odkazu https://downloads.mariadb.org/
Krok 2) Double kliknutรญm na soubor spusลฅte instalaci
Po dokonฤenรญ stahovรกnรญ otevลete soubor
Krok 3) Kliknฤte na tlaฤรญtko Dalลกรญ
V oknฤ, kterรฉ se otevลe, kliknฤte na tlaฤรญtko Dalลกรญ:
Krok 4) Pลijmฤte licenฤnรญ smlouvu
Potรฉ kliknฤte na tlaฤรญtko Dalลกรญ:
Krok 5) Vybrat MariaDB Server
Vyberte funkce, kterรฉ chcete nainstalovat, a klepnฤte na tlaฤรญtko Dalลกรญ
Krok 6) Zadejte heslo
V dalลกรญm oknฤ budete poลพรกdรกni o zmฤnu hesla pro uลพivatele root.
- Zadejte heslo a potvrฤte jej opฤtovnรฝm zadรกnรญm stejnรฉho hesla. Pokud chcete povolit pลรญstup ze vzdรกlenรฝch poฤรญtaฤลฏ, aktivujte potลebnรฉ zaลกkrtรกvacรญ polรญฤko.
- Po dokonฤenรญ kliknฤte na tlaฤรญtko Dalลกรญ.
Krok 7) Zadejte nรกzev a vyberte ฤรญslo portu
V dalลกรญm oknฤ zadejte nรกzev instance, zvolte ฤรญslo portu a nastavte potลebnou velikost. Kliknฤte na tlaฤรญtko Dalลกรญ:
Krok 8) Klepnฤte na tlaฤรญtko Dalลกรญ
V dalลกรญm oknฤ staฤรญ kliknout na tlaฤรญtko Dalลกรญ.
Krok 9) Klepnฤte na Instalovat
Spusลฅte instalaci kliknutรญm na tlaฤรญtko Instalovat.
Krok 10) A Je zobrazen ukazatel prลฏbฤhu
Zobrazรญ se indikรกtor prลฏbฤhu instalace:
Krok 11) Kliknฤte na tlaฤรญtko Dokonฤit
Po dokonฤenรญ instalace se zobrazรญ tlaฤรญtko Dokonฤit. Kliknutรญm na tlaฤรญtko zavลete okno:
Krok 12) Gratulace!
Nynรญ mรกte MariaDB v poฤรญtaฤi.
Prรกce s pลรญkazovรฝm ลรกdkem
Teฤ to mรกte MariaDB nainstalovanรฝ na vaลกem poฤรญtaฤi, je ฤas, abyste jej spustili a zaฤali pouลพรญvat. To lze provรฉst prostลednictvรญm MariaDB pลรญkazovรฝ ลรกdek.
Postupujte podle nรญลพe uvedenรฝch krokลฏ:
Krok 1) Kliknฤte na Start, vyberte Vลกechny programy a potรฉ kliknฤte MariaDB...
Krok 2) Vyberte si MariaDB Pลรญkazovรฝ ลรกdek.
Krok 3) Jedno MariaDB bude spuลกtฤn pลรญkazovรฝ ลรกdek. Nynรญ je ฤas se pลihlรกsit. Mฤli byste se pลihlรกsit jako uลพivatel root a heslo, kterรฉ jste nastavili bฤhem instalace MariaDB. Na pลรญkazovรฉm ลรกdku zadejte nรกsledujรญcรญ pลรญkaz:
MySQL -u root -p
Krok 4) Zadejte heslo a stisknฤte klรกvesu Return. Mฤli byste bรฝt pลihlรกลกeni, jak je uvedeno nรญลพe:
Nynรญ jste pลihlรกลกeni MariaDB.
Typy dat
MariaDB podporuje nรกsledujรญcรญ datovรฉ typy:
- ลetฤzcovรฉ datovรฉ typy
- ฤรญselnรฉ datovรฉ typy
- Typy dat datum/ฤas
- Datovรฉ typy velkรฝch objektลฏ
Datovรฉ typy ลetฤzcลฏ
Mezi nฤ patลรญ nรกsledujรญcรญ:
| Typ dat ลetฤzce | Description |
|---|---|
| znak (velikost) | Velikost udรกvรก poฤet znakลฏ, kterรฉ se majรญ uloลพit. Uklรกdรก maximรกlnฤ 255 znakลฏ. Struny s pevnou dรฉlkou. |
| varchar (velikost) | Velikost udรกvรก poฤet znakลฏ, kterรฉ se majรญ uloลพit. Uklรกdรก maximรกlnฤ 255 znakลฏ. ลetฤzce s promฤnnou dรฉlkou. |
| velikost textu) | Velikost udรกvรก poฤet znakลฏ, kterรฉ se majรญ uloลพit. Uklรกdรก maximรกlnฤ 255 znakลฏ. Struny s pevnou dรฉlkou. |
| binรกrnรญ (velikost) | Velikost udรกvรก poฤet znakลฏ, kterรฉ se majรญ uloลพit. Uklรกdรก maximรกlnฤ 255 znakลฏ. Struny s pevnou velikostรญ. |
ฤรญselnรฉ datovรฉ typy
Zahrnujรญ nรกsledujรญcรญ:
| ฤรญselnรฉ datovรฉ typy | Description |
|---|---|
| bit | Velmi malรก celoฤรญselnรก hodnota ekvivalentnรญ tinyint(1). Hodnoty se znamรฉnkem se pohybujรญ mezi -128 a 127. Hodnoty bez znamรฉnka se pohybujรญ mezi 0 a 255. |
| int(m) | Standardnรญ celoฤรญselnรก hodnota. Hodnoty se znamรฉnkem se pohybujรญ mezi -2147483648 a 2147483647. Hodnoty bez znamรฉnka se pohybujรญ mezi 0 a 4294967295. |
| plovoucรญ (m, d) | ฤรญslo s plovoucรญ desetinnou ฤรกrkou s jednoduchou pลesnostรญ. |
| dvojitรฉ (m, d) | ฤรญslo s plovoucรญ desetinnou ฤรกrkou s dvojnรกsobnou pลesnostรญ. |
| plovoucรญ (p) | ฤรญslo s plovoucรญ desetinnou ฤรกrkou. |
Typy dat data/ฤasu
Mezi nฤ patลรญ nรกsledujรญcรญ:
| Datum/ฤas Typ dat | Description |
|---|---|
| Datum | Zobrazรญ se ve tvaru 'rrrr-mm-dd.' Hodnoty se pohybujรญ mezi '1000-01-01' a '9999-12-31'. |
| ฤas schลฏzky | Zobrazuje se ve tvaru 'yyyy-mm-dd hh:mm:ss'. Hodnoty se pohybujรญ mezi '1000-01-01 00:00:00' a '9999-12-31 23:59:59'. |
| ฤasovรฉ razรญtko (m) | Zobrazuje se ve tvaru 'yyyy-mm-dd hh:mm:ss'. Hodnoty se pohybujรญ mezi '1970-01-01 00:00:01' utc a '2038-01-19 03:14:07' utc. |
| ฤas | Zobrazuje se ve tvaru 'hh:mm:ss'. Hodnoty se pohybujรญ mezi '-838:59:59' a '838:59:59'. |
Datovรฉ typy velkรฝch objektลฏ (LOB)
Zahrnujรญ nรกsledujรญcรญ:
| Datovรฝ typ velkรฉho objektu | Description |
|---|---|
| tinyblob | Jeho maximรกlnรญ velikost je 255 bajtลฏ. |
| blob (velikost) | Zabere 65,535 XNUMX bajtลฏ jako maximรกlnรญ velikost. |
| stลednรญ blob | Jeho maximรกlnรญ velikost je 16,777,215 bajtลฏ. |
| dlouhรฝ text | Jako maximรกlnรญ velikost bere 4 GB. |
Vytvoลte databรกzi a tabulky
Chcete-li vytvoลit novou databรกzi v MariaDB, mฤli byste mรญt speciรกlnรญ oprรกvnฤnรญ, kterรก jsou udฤlena pouze uลพivateli root a sprรกvcลฏm.
Chcete-li vytvoลit novou databรกzi, mฤli byste pouลพรญt pลรญkaz CREATE DATABASE, kterรฝ mรก nรกsledujรญcรญ syntaxi:
CREATE DATABASE DatabaseName;
V tomto pลรญpadฤ musรญte vytvoลit databรกzi a dรกt jรญ nรกzev Demo.
Spusลฅte MariaDB pลรญkazovรฉho ลรกdku a pลihlaste se jako uลพivatel root zadรกnรญm nรกsledujรญcรญho pลรญkazu:
mysql -u root -p
Zadejte heslo uลพivatele root a stisknฤte klรกvesu Return. Budete pลihlรกลกeni.
Nynรญ spusลฅte nรกsledujรญcรญ pลรญkaz:
CREATE DATABASE Demo;
Potรฉ jste vytvoลili databรกzi s nรกzvem Demo. Bude dobrรฉ, abyste si potvrdili, zda byla databรกze vytvoลena รบspฤลกnฤ nebo ne. Staฤรญ pouze zobrazit seznam dostupnรฝch databรกzรญ spuลกtฤnรญm nรกsledujรญcรญho pลรญkazu:
SHOW DATABASES;
Vรฝลกe uvedenรฝ vรฝstup ukazuje, ลพe Demo databรกze je souฤรกstรญ seznamu, takลพe databรกze byla รบspฤลกnฤ vytvoลena.
MariaDB Vyberte databรกzi
Abyste mohli pouลพรญvat konkrรฉtnรญ databรกzi nebo na nรญ pracovat, musรญte ji vybrat ze seznamu dostupnรฝch databรกzรญ. Po vรฝbฤru databรกze mลฏลพete provรกdฤt รบkoly, jako je vytvรกลenรญ tabulek v rรกmci databรกze.
Chcete-li vybrat databรกzi, mฤli byste pouลพรญt pลรญkaz USE. Vyuลพรญvรก nรญลพe uvedenou syntaxi:
USE database_name;
Musรญte pouลพรญt Demo databรกzi. Mลฏลพete jej vybrat spuลกtฤnรญm nรกsledujรญcรญho pลรญkazu:
USE Demo;
Vรฝลกe uvedenรฝ obrรกzek ukazuje, ลพe MariaDB pลรญkazovรฉho ลรกdku se zmฤnil z ลพรกdnรฉ na nรกzev databรกze, kterรก byla vybrรกna.
Nynรญ mลฏลพete pokraฤovat a vytvรกลet tabulky v demo databรกzi.
MariaDB โ Vytvoลit tabulku
Abyste mohli vytvoลit tabulku, musรญte mรญt vybranou databรกzi. Tabulku lze vytvoลit pomocรญ pลรญkazu CREATE TABLE. Zde je syntaxe pลรญkazu:
CREATE TABLE tableName (columnName columnType);
Jeden ze sloupcลฏ mลฏลพete nastavit jako primรกrnรญ klรญฤ. Tento sloupec by nemฤl umoลพลovat hodnoty null.
V rรกmci Demo databรกze vytvoลรญme dvฤ tabulky, Book a Price. Kaลพdรก tabulka bude mรญt dva sloupce.
Zaฤnฤme vytvoลenรญm tabulky Kniha se dvฤma sloupci, id a name. Spusลฅte nรกsledujรญcรญ pลรญkaz:
CREATE TABLE Book( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY (id));
K nastavenรญ sloupce id jako primรกrnรญho klรญฤe pro tabulku bylo pouลพito omezenรญ PRIMARY KEY. Vlastnost AUTO_INCREMENT automaticky zvรฝลกรญ hodnoty sloupce id o 1 pro kaลพdรฝ novรฝ zรกznam vloลพenรฝ do tabulky. Vลกechny sloupce neumoลพลujรญ hodnoty null.
Nynรญ vytvoลte druhou tabulku, tabulku cen:
CREATE TABLE Price( id INT NOT NULL AUTO_INCREMENT, price float NOT NULL, PRIMARY KEY (id));
Sloupec id byl nastaven jako primรกrnรญ klรญฤ pro tabulku.
Zobrazenรญ tabulek
Nynรญ, kdyลพ jste vytvoลili dvฤ tabulky, bude pro vรกs dobrรฉ ovฤลit, zda byly tabulky vytvoลeny รบspฤลกnฤ nebo ne. Seznam tabulek obsaลพenรฝch v databรกzi mลฏลพete zobrazit spuลกtฤnรญm nรกsledujรญcรญho pลรญkazu:
SHOW TABLES;
Vรฝลกe uvedenรฝ snรญmek obrazovky ukazuje, ลพe tyto dvฤ tabulky byly รบspฤลกnฤ vytvoลeny v demo databรกzi.
Zobrazenรญ struktury tabulky
Chcete-li zobrazit strukturu jakรฉkoli konkrรฉtnรญ tabulky, mลฏลพete pouลพรญt pลรญkaz DESCRIBE, bฤลพnฤ oznaฤovanรฝ jako DESC. Vyลพaduje nรกsledujรญcรญ syntaxi:
DESC TableName;
Chcete-li napลรญklad zobrazit strukturu tabulky s nรกzvem Kniha, mลฏลพete spustit nรกsledujรญcรญ pลรญkaz;
DESC Book;
Tabulka mรก dva sloupce. Chcete-li zobrazit strukturu cenovรฉ tabulky, mลฏลพete spustit nรกsledujรญcรญ pลรญkaz:
DESC Price;
CRUD a klauzule
INSERT
Chcete-li vloลพit data do a MariaDB tabulky, mฤli byste pouลพรญt pลรญkaz INSERT INTO. Tento pลรญkaz mรก nรญลพe uvedenou syntaxi:
INSERT INTO tableName (column_1, column_2, ... ) VALUES (value1, value2, ... ), (value1, value2, ... ), ...;
Vรฝลกe uvedenรก syntaxe ukazuje, ลพe musรญte urฤit sloupce tabulky, do kterรฝch chcete vloลพit data, a takรฉ data, kterรก potลebujete vloลพit.
Vloลพรญme zรกznam do tabulky Kniha:
INSERT INTO book (id, name) VALUES(1, 'MariaDB Book');
Do tabulky jste vloลพili jeden zรกznam. Vloลพte zรกznam do cenovรฉ tabulky:
INSERT INTO price (id, price) VALUES(1, 200);
Zรกznam byl vytvoลen.
SELECT
Pลรญkaz SELECT nรกm pomรกhรก zobrazit nebo zobrazit obsah databรกzovรฉ tabulky. Chcete-li napลรญklad zobrazit obsah tabulky Kniha, musรญte spustit nรกsledujรญcรญ pลรญkaz:
SELECT * from book;
Nynรญ si prohlรฉdnฤte obsah cenovรฉ tabulky:
SELECT * from price;
Vklรกdรกnรญ vรญce zรกznamลฏ
Je moลพnรฉ, abychom do a MariaDB stลฏl za pochodem. Chcete-li to demonstrovat, spusลฅte nรกsledujรญcรญ pลรญklad:
INSERT INTO book (id, name) VALUES (2,'MariaDB Book2'), (3,'MariaDB Book3'), (4,'MariaDB Book4'), (5,'MariaDB Book5');
V tabulce mลฏลพete zkontrolovat, zda byly zรกznamy รบspฤลกnฤ vloลพeny:
SELECT * FROM book;
Zรกznamy byly รบspฤลกnฤ vloลพeny. Spuลกtฤnรญm tohoto pลรญkladu vloลพte vรญce zรกznamลฏ do tabulky ceny:
INSERT INTO price (id, price) VALUES (2, 250), (3, 220), (4, 190), (5, 300);
Ovฤลte, zda byly zรกznamy รบspฤลกnฤ vytvoลeny:
SELECT * FROM price;
UPDATE
Pลรญkaz UPDATE nรกm pomรกhรก zmฤnit nebo upravit zรกznamy, kterรฉ jiลพ byly do tabulky vloลพeny. Mลฏลพete jej zkombinovat s klauzulรญ WHERE a urฤit zรกznam, kterรฝ mรก bรฝt aktualizovรกn. Zde je syntaxe:
UPDATE tableName SET field=newValue, field2=newValue2,... [WHERE ...]
Pลรญkaz UPDATE lze takรฉ kombinovat s klauzulemi, jako jsou SET, WHERE, LIMIT a ORDER BY. Za chvรญli uvidรญte toto:
Zvaลพte tabulku s nรกzvem Cena s nรกsledujรญcรญmi zรกznamy:
Zmฤลme cenu knihy s ID 1 z 200 na 250:
UPDATE price SET price = 250 WHERE id = 1;
Pลรญkaz probฤhl รบspฤลกnฤ. Nynรญ se mลฏลพete dotรกzat na tabulku a zjistit, zda ke zmฤnฤ doลกlo:
Vรฝลกe uvedenรฝ snรญmek obrazovky ukazuje, ลพe zmฤna byla implementovรกna. Zvaลพte tabulku Book s nรกsledujรญcรญmi zรกznamy:
Zmฤลme nรกzev knihy s nรกzvem Kniha na MariaDB Kniha1. Vลกimnฤte si, ลพe kniha mรก id 1. Zde je pลรญkaz:
UPDATE book SET name = โMariaDB Book1โ WHERE id = 1;
Zkontrolujte, zda byla zmฤna implementovรกna:
Vรฝลกe uvedenรฝ snรญmek obrazovky ukazuje, ลพe zmฤna byla รบspฤลกnฤ implementovรกna.
Ve vรฝลกe uvedenรฝch pลรญkladech jsme zmฤnili pouze jeden sloupec najednou. Je vลกak moลพnรฉ zmฤnit vรญce sloupcลฏ najednou. Ukaลพme si to na pลรญkladu.
Pouลพijme cenovou tabulku s nรกsledujรญcรญmi รบdaji:
Zmฤลme id i cenu knihy s id 5. Zmฤnรญme jejรญ id na 6 a cenu na 6. Spusลฅte nรกsledujรญcรญ pลรญkaz:
UPDATE price SET id = 6, price = 280 WHERE id = 5;
Nynรญ zadejte dotaz do tabulky a zkontrolujte, zda byla zmฤna provedena รบspฤลกnฤ:
Zmฤna byla รบspฤลกnฤ provedena.
Vymazat
Pลรญkaz DELETE pouลพรญvรกme, kdyลพ potลebujeme odstranit jeden nebo vรญce zรกznamลฏ z tabulky. Zde je syntaxe pลรญkazu:
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
Zvaลพte cenovou tabulku s nรกsledujรญcรญmi zรกznamy:
Musรญme smazat poslednรญ zรกznam z tabulky. Mรก id 6 a cenu 280. Smaลพeme zรกznam:
DELETE FROM price WHERE id = 6;
Pลรญkaz probฤhl รบspฤลกnฤ. Zkusme se dotรกzat na tabulku, abychom potvrdili, zda bylo smazรกnรญ รบspฤลกnรฉ:
Vรฝstup ukazuje, ลพe zรกznam byl รบspฤลกnฤ smazรกn.
Kde
Klauzule WHERE nรกm pomรกhรก urฤit pลesnรฉ mรญsto, kde potลebujeme provรฉst zmฤnu. Pouลพรญvรก se spoleฤnฤ s pลรญkazy jako INSERT, SELECT, UPDATE a DELETE. Zvaลพte cenovou tabulku s nรกsledujรญcรญmi รบdaji:
Pลedpoklรกdejme, ลพe potลebujeme vidฤt zรกznamy, ve kterรฝch je cena niลพลกรญ neลพ 250. Mลฏลพeme spustit nรกsledujรญcรญ pลรญkaz:
SELECT * FROM price WHERE price < 250;
Vลกechny zรกznamy, ve kterรฝch je cena niลพลกรญ neลพ 250, byly vrรกceny.
Klauzuli WHERE lze kombinovat s pลรญkazem AND. Pลedpoklรกdejme, ลพe potลebujeme vidฤt vลกechny zรกznamy v tabulce Price, kde je cena niลพลกรญ neลพ 250 a ID je vyลกลกรญ neลพ 3. Mลฏลพeme spustit nรกsledujรญcรญ pลรญkaz:
SELECT * FROM price WHERE id > 3 AND price < 250;
Byl vrรกcen pouze jeden zรกznam. Dลฏvodem je, ลพe musรญ splลovat vลกechny stanovenรฉ podmรญnky, tedy id nad 3 a cenu pod 250. Pลi poruลกenรญ nฤkterรฉ z tฤchto podmรญnek se zรกznam nevracรญ.
Klauzuli lze takรฉ kombinovat s pลรญkazem OR. Nahraฤte AND v naลกem pลedchozรญm pลรญkazu za NEBO a podรญvejme se na druh vรฝstupu, kterรฝ dostรกvรกme:
SELECT * FROM price WHERE id > 3 OR price < 250;
Nynรญ dostรกvรกme 2 zรกznamy mรญsto 1. Je to proto, ลพe pro zรกznam kvalifikace musรญ splลovat pouze jednu ze specifikovanรฝch podmรญnek.
Like
Tato klauzule se pouลพรญvรก k urฤenรญ vzoru dat pลi pลรญstupu k datลฏm tabulky, ve kterรฝch je nutnรก pลesnรก shoda. Lze jej kombinovat s pลรญkazy INSERT, UPDATE, SELECT a DELETE.
Vzorec dat, kterรฝ hledรกte, byste mฤli pลedat klauzuli a ta vrรกtรญ buฤ true, nebo false. Zde jsou zรกstupnรฉ znaky, kterรฉ lze pouลพรญt spoleฤnฤ s klauzulรญ:
- %: pro shodu 0 nebo vรญce znakลฏ.
- _: pro shodu jednoho znaku.
Zde je syntaxe klauzule LIKE:
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
Ukaลพme si, jak pouลพรญt klauzuli se zรกstupnรฝm znakem %. Pouลพijme tabulku Kniha s nรกsledujรญcรญmi zรกznamy:
Musรญme vidฤt vลกechny zรกznamy, ve kterรฝch nรกzev zaฤรญnรก na M. Mลฏลพeme spustit nรกsledujรญcรญ pลรญkaz:
SELECT name FROM book WHERE name LIKE 'M%';
Vลกechny zรกznamy byly vrรกceny, protoลพe jejich nรกzvy zaฤรญnajรญ pรญsmenem M. Chcete-li zobrazit vลกechny nรกzvy konฤรญcรญ na 4, mลฏลพete spustit nรกsledujรญcรญ pลรญkaz:
SELECT name FROM book WHERE name LIKE '%4';
Bylo vrรกceno pouze jedno jmรฉno, protoลพe jako jedinรฉ splลuje podmรญnku.
Vzor vyhledรกvรกnรญ mลฏลพeme takรฉ obklopit zรกstupnรฝm znakem:
SELECT name FROM book WHERE name LIKE '%DB%';
Kromฤ zรกstupnรฉho znaku % lze klauzuli LIKE pouลพรญt spoleฤnฤ se zรกstupnรฝm znakem _. Toto je zรกstupnรฝ znak podtrลพรญtka a bude hledat pouze jeden znak.
Pojฤme pracovat s tabulkou Cena s nรกsledujรญcรญmi zรกznamy:
Pojฤme zkontrolovat zรกznam, ve kterรฉm je cena jako 1_0. Spustรญme nรกsledujรญcรญ pลรญkaz:
SELECT * FROM price WHERE price LIKE '1_0';
Vrรกtil zรกznam, ve kterรฉm je cena 190. Mลฏลพeme takรฉ zkusit jinรฝ vzor:
SELECT * FROM price WHERE price LIKE '_2_';
Je moลพnรฉ, ลพe klauzuli LIKE pouลพijeme spoleฤnฤ s operรกtorem NOT. Tรญm se vrรกtรญ vลกechny zรกznamy, kterรฉ nesplลujรญ zadanรฝ vzor. Napลรญklad:
Pouลพijme tabulku cen s nรกsledujรญcรญmi zรกznamy:
Pojฤme najรญt vลกechny zรกznamy, kde cena nezaฤรญnรก 2:
SELECT * FROM price WHERE price NOT LIKE '2%';
Pouze jeden zรกznam nesplลuje zadanรฝ vzor.
Seลadit podle
Tato klauzule nรกm pomรกhรก tลรญdit naลกe zรกznamy ve vzestupnรฉm nebo sestupnรฉm poลadรญ. Pouลพรญvรกme jej s pลรญkazem SELECT, jak je ukรกzรกno nรญลพe:
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
Tuto klauzuli mลฏลพeme pouลพรญt bez pลidรกnรญ ฤรกsti ASC nebo DESC. Napลรญklad:
Pouลพijeme cenovou tabulku s nรกsledujรญcรญmi zรกznamy:
Spusลฅte nรกsledujรญcรญ pลรญkaz proti tabulce:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
Ve vรฝลกe uvedenรฉm pลรญkazu jsme objednali podle ceny. Zรกznamy byly seลazeny s cenami ve vzestupnรฉm poลadรญ. To znamenรก, ลพe kdyลพ neuvedeme poลadรญ, ลazenรญ se ve vรฝchozรญm nastavenรญ provรกdรญ vzestupnฤ.
Spusลฅte klauzuli s volbou DESC:
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
Zรกznamy byly seลazeny s cenou v sestupnรฉm poลadรญ, jak jsme zadali.
Pouลพijme klauzuli ORDER BY spolu s atributem ASC:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
Zรกznamy byly objednรกny, ale s cenami ve vzestupnรฉm poลadรญ. Je to podobnรฉ, jako kdyลพ pouลพijeme klauzuli ORDER BY bez atributลฏ ASC nebo DESC.
DISTINCT
Tato klauzule nรกm pomรกhรก zbavit se duplicit pลi vรฝbฤru zรกznamลฏ z tabulky. To znamenรก, ลพe nรกm pomรกhรก zรญskat jedineฤnรฉ zรกznamy. Jeho syntaxe je uvedena nรญลพe:
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
Abychom to demonstrovali, pouลพijeme cenovou tabulku s nรกsledujรญcรญmi รบdaji:
Kdyลพ z tabulky vybereme sloupec ceny, dostaneme nรกsledujรญcรญ vรฝsledek:
SELECT price FROM Price;
Mรกme dva zรกznamy s cenou 250,- vytvรกลรญme duplikรกt. Potลebujeme mรญt pouze jedineฤnรฉ zรกznamy. Mลฏลพeme je filtrovat pomocรญ klauzule DISTINCT, jak je uvedeno nรญลพe:
SELECT DISTINCT price FROM Price;
Ve vรฝลกe uvedenรฉm vรฝstupu nynรญ nemรกme ลพรกdnรฉ duplikรกty.
od
Klauzule FROM pouลพรญvanรก pro naฤรญtรกnรญ dat z databรกzovรฉ tabulky. Mลฏลพe takรฉ pomoci pลi spojovรกnรญ stolลฏ. Zde je syntaxe pลรญkazu:
SELECT columnNames FROM tableName;
Chcete-li zobrazit obsah tabulky knihy, spusลฅte nรกsledujรญcรญ pลรญkaz:
SELECT * FROM price;
Klauzule vรกm mลฏลพe pomoci naฤรญst pouze jeden sloupec z databรกzovรฉ tabulky. Napลรญklad:
SELECT price FROM Price;
Pokroฤilรฉ รบkoly
Uloลพenรฉ procedury
Postup je a MariaDB program, kterรฉmu mลฏลพete pลedรกvat parametry. Procedura nevracรญ hodnoty. K vytvoลenรญ procedury pouลพijeme pลรญkaz CREATE PROCEDURE.
Abychom pลedvedli, jak vytvoลit a volat proceduru, vytvoลรญme proceduru s nรกzvem myProcedure(), kterรก nรกm pomลฏลพe vybrat sloupec nรกzvu z tabulky knihy. Zde je postup:
DELIMITER $
CREATE PROCEDURE myProcedure()
BEGIN
SELECT name FROM book;
END;
;
Postup byl vytvoลen. Pลรญkaz SELECT jsme jednoduลกe uzavลeli do klauzulรญ BEGIN a END procedury.
Nynรญ mลฏลพeme proceduru nazvat jejรญm jmรฉnem, โโjak je uvedeno nรญลพe:
CALL myProcedure();
Procedura pลi volรกnรญ vracรญ sloupec nรกzvu tabulky knihy.
Mลฏลพeme vytvoลit proceduru, kterรก pลebรญrรก parametr. Potลebujeme napลรญklad vybrat nรกzev knihy a filtrovat pomocรญ ID knihy. K tomu mลฏลพeme vytvoลit nรกsledujรญcรญ postup:
DELIMITER $
CREATE PROCEDURE myProcedure2(book_id int)
BEGIN
SELECT name FROM book WHERE id = book_id;
END;
;
Vรฝลกe jsme vytvoลili proceduru s nรกzvem myProcedure2(). Tento postup pลebรญrรก jeden celoฤรญselnรฝ parametr s nรกzvem book_id, coลพ je id knihy, jejรญลพ jmรฉno potลebujeme vidฤt. Abychom vidฤli nรกzev knihy s ID 3, mลฏลพeme proceduru zavolat nรกsledovnฤ:
CALL myProcedure2(3);
funkce
Na rozdรญl od procedur musรญme funkcรญm pลedรกvat parametry a funkce musรญ vracet hodnotu. Chcete-li vytvoลit funkci v MariaDB, pouลพijeme pลรญkaz CREATE FUNCTION. Pลรญkaz mรก nรกsledujรญcรญ syntaxi:
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;
Vรฝลกe uvedenรฉ parametry jsou popsรกny nรญลพe:
| Parametr | Description |
|---|---|
| klauzule DEFINER | Tento parametr je volitelnรฝ. Pokud jej nezadรกte, definujรญcรญm se stane uลพivatel, kterรฝ funkci vytvoลil. Pokud je potลeba zadat jinรฝ definujรญcรญ prvek, zahrลte klauzuli DEFINER, ve kterรฉ bude uลพivatelskรฉ_jmรฉno definicรญ funkce. |
| nรกzev_funkce | Nรกzev, kterรฝ mรก bรฝt pลiลazen tรฉto funkci v MariaDB. |
| parametr | Parametr(y) pลedanรฝ funkci. Pลi vytvรกลenรญ funkce se se vลกemi parametry zachรกzรญ jako IN parametry (spรญลกe neลพ parametry OUT/INOUT). |
| return_datatype | Datovรฝ typ nรกvratovรฉ hodnoty funkce. |
| JAZYK SQL | Ovlivลuje pลenosnost, ale ne funkci. |
| DETERMINISTICKร | Funkce vrรกtรญ jeden vรฝsledek, pouze pokud je zadรกn poฤet parametrลฏ. |
| NENร DETERMINISTICKร | Je moลพnรฉ, ลพe funkce vrรกtรญ jinรฝ vรฝsledek, kdyลพ je zadรกn urฤitรฝ poฤet parametrลฏ. |
| OBSAHUJE SQL | Informuje MariaDB ลพe tato funkce obsahuje SQL. Databรกze neovฤลรญ, zda je to pravda. |
| ลฝรDNร SQL | Tato klauzule se nepouลพรญvรก a nemรก ลพรกdnรฝ vliv na vaลกi funkci. |
| ฤTE DATA SQL | ลekne MariaDB ลพe tato funkce bude pouลพรญvat pลรญkazy SELECT ke ฤtenรญ dat, ale data nezmฤnรญ. |
| UPRAVUJE DATA SQL | ลekne MariaDB ลพe tato funkce bude pouลพรญvat INSERT, DELETE, UPDATE a dalลกรญ DDL pลรญkazy pro รบpravu dat SQL. |
| prohlรกลกenรญ-sekce | Zde by mฤly bรฝt deklarovรกny lokรกlnรญ promฤnnรฉ. |
| spustitelnรฝ-sekce | Zde by mฤl bรฝt pลidรกn kรณd funkce. |
Zde je pลรญklad MariaDB funkce:
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 ;
Vรฝลกe uvedenou funkci pak mลฏลพeme zavolat nรกsledovnฤ:
select sumFunc(1000);
Pลรญkaz vrรกtรญ nรกsledujรญcรญ:
Jakmile s funkcรญ skonฤรญte, bude pro vรกs dobrรฉ ji smazat. To je snadnรฉ, protoลพe staฤรญ zavolat pลรญkaz DROP FUNCTION, kterรฝ mรก nรกsledujรญcรญ syntaxi:
DROP FUNCTION function_name;
Chcete-li napลรญklad zruลกit funkci s nรกzvem myFunc, mลฏลพeme spustit nรกsledujรญcรญ pลรญkaz:
DROP FUNCTION myFunc;
REGISTRACE
Pokud potลebujete naฤรญst data z vรญce neลพ jednรฉ tabulky najednou, pouลพijte MariaDB PลIPOJร SE. To znamenรก, ลพe a REGISTRACE pracuje na dvou nebo vรญce stolech. Jsou podporovรกny nรกsledujรญcรญ tลi typy JOINS MariaDB:
- VNITลNร/JEDNODUCHร SPOJENร
- LEFT OUTER JOIN/LEFT JOIN
- PRAVร VNฤJล ร SPOJENร/PRAVร SPOJENร
Pojฤme si je probrat jeden po druhรฉm:
INNER JOIN
Vnitลnรญ spojenรญ vrรกtรญ vลกechny ลรกdky z tabulek, ve kterรฝch je podmรญnka spojenรญ pravdivรก. Jeho syntaxe je nรกsledujรญcรญ:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
Napลรญklad:
Pouลพijeme naลกe dva stoly, knihy a knihu.
Tabulka knihy obsahuje nรกsledujรญcรญ รบdaje:
Cenovรก tabulka obsahuje nรกsledujรญcรญ รบdaje:
Cรญlem je spojit sloupec s nรกzvem z tabulky Kniha a sloupec s cenou z tabulky Cena do jednรฉ tabulky. To je moลพnรฉ pomocรญ vnitลnรญho spojenรญ, jak je ukรกzรกno nรญลพe:
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
Pลรญkaz vrรกtรญ nรกsledujรญcรญ:
LEVร VNฤJล ร SPOJENร
Toto spojenรญ vrรกtรญ vลกechny ลรกdky z levรฉ tabulky a pouze ลรกdky, ve kterรฝch je podmรญnka spojenรญ pravdivรก z druhรฉ tabulky. Jeho syntaxe je nรกsledujรญcรญ:
SELECT columns FROM table-1 LEFT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Klรญฤovรฉ slovo OUTER bylo umรญstฤno do hranatรฝch zรกvorek, protoลพe je nepovinnรฉ.
Napลรญklad:
SELECT book.name, price.price FROM book LEFT JOIN price ON book.id = price.id;
Pลรญkaz vrรกtรญ nรกsledujรญcรญ:
Poslednรญ zรกznam ve vรฝลกe uvedenรฉ tabulce nemรก vlevo ลพรกdnou odpovรญdajรญcรญ hodnotu. Proto byl nahrazen NULL.
PRAVร VNฤJล ร SPOJ
Toto spojenรญ vrรกtรญ vลกechny ลรกdky z tabulky napravo a pouze ลรกdky, ve kterรฝch je podmรญnka spojenรญ pravdivรก, z druhรฉ tabulky. Jeho syntaxe je nรกsledujรญcรญ:
SELECT columns FROM table-1 RIGHT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Klรญฤovรฉ slovo OUTER bylo umรญstฤno do hranatรฝch zรกvorek, protoลพe je nepovinnรฉ.
Napลรญklad:
SELECT book.name, price.price FROM book RIGHT JOIN price ON book.id = price.id;
Pลรญkaz vrรกtรญ nรกsledujรญcรญ:
Dลฏvodem je, ลพe vลกechny ลรกdky v tabulce vpravo byly spรกrovรกny s ลรกdky v druhรฉ tabulce. Pokud by se nฤkterรฉ ลรกdky neshodovaly, mฤli bychom v prvnรญm sloupci hodnoty NULL.






































































