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ลกรญ:

Instalace MariaDB

Krok 4) Pล™ijmฤ›te licenฤnรญ smlouvu
Potรฉ kliknฤ›te na tlaฤรญtko Dalลกรญ:

Instalace MariaDB

Krok 5) Vybrat MariaDB Server
Vyberte funkce, kterรฉ chcete nainstalovat, a klepnฤ›te na tlaฤรญtko Dalลกรญ

Instalace MariaDB

Krok 6) Zadejte heslo
V dalลกรญm oknฤ› budete poลพรกdรกni o zmฤ›nu hesla pro uลพivatele root.

  1. 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.
  2. Po dokonฤenรญ kliknฤ›te na tlaฤรญtko Dalลกรญ.

Instalace MariaDB

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ลกรญ:

Instalace MariaDB

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.

Instalace MariaDB

Krok 10) A Je zobrazen ukazatel prลฏbฤ›hu
Zobrazรญ se indikรกtor prลฏbฤ›hu instalace:

Instalace MariaDB

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:

Instalace MariaDB

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.

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:

MariaDB Pล™รญkazovรฝ ล™รกdek

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;

Vytvoล™te databรกzi a tabulky v MariaDB

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;

Vytvoล™te databรกzi a tabulky v MariaDB

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;

Vytvoล™te databรกzi a tabulky v MariaDB

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

Vytvoล™te databรกzi a tabulky v MariaDB

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

Vytvoล™te databรกzi a tabulky v MariaDB

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;

Vytvoล™te databรกzi a tabulky v MariaDB

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;

Vytvoล™te databรกzi a tabulky v MariaDB

Tabulka mรก dva sloupce. Chcete-li zobrazit strukturu cenovรฉ tabulky, mลฏลพete spustit nรกsledujรญcรญ pล™รญkaz:

DESC Price;

Vytvoล™te databรกzi a tabulky v MariaDB

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

CRUD a klauzule-INSERT

Do tabulky jste vloลพili jeden zรกznam. Vloลพte zรกznam do cenovรฉ tabulky:

INSERT INTO price
(id, price)  
VALUES(1, 200);  

CRUD a klauzule-INSERT

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;

CRUD a klauzule-INSERT

Nynรญ si prohlรฉdnฤ›te obsah cenovรฉ tabulky:

SELECT * from price;

CRUD a klauzule-INSERT

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

Vklรกdรกnรญ vรญce zรกznamลฏ

V tabulce mลฏลพete zkontrolovat, zda byly zรกznamy รบspฤ›ลกnฤ› vloลพeny:

SELECT * FROM book;

Vklรกdรกnรญ vรญce zรกznamลฏ

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

Vklรกdรกnรญ vรญce zรกznamลฏ

Ovฤ›ล™te, zda byly zรกznamy รบspฤ›ลกnฤ› vytvoล™eny:

SELECT * FROM price;

Vklรกdรกnรญ vรญce zรกznamลฏ

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:

CRUD a doloลพky-AKTUALIZACE

Zmฤ›ลˆme cenu knihy s ID 1 z 200 na 250:

UPDATE price 
SET price = 250
WHERE id = 1;

CRUD a doloลพky-AKTUALIZACE

Pล™รญkaz probฤ›hl รบspฤ›ลกnฤ›. Nynรญ se mลฏลพete dotรกzat na tabulku a zjistit, zda ke zmฤ›nฤ› doลกlo:

CRUD a doloลพky-AKTUALIZACE

Vรฝลกe uvedenรฝ snรญmek obrazovky ukazuje, ลพe zmฤ›na byla implementovรกna. Zvaลพte tabulku Book s nรกsledujรญcรญmi zรกznamy:

CRUD a doloลพky-AKTUALIZACE

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;

CRUD a doloลพky-AKTUALIZACE

Zkontrolujte, zda byla zmฤ›na implementovรกna:

CRUD a doloลพky-AKTUALIZACE

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:

CRUD a doloลพky-AKTUALIZACE

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;

  CRUD a doloลพky-AKTUALIZACE

Nynรญ zadejte dotaz do tabulky a zkontrolujte, zda byla zmฤ›na provedena รบspฤ›ลกnฤ›:

CRUD a doloลพky-AKTUALIZACE

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:

CRUD a klauzule-DELETE

Musรญme smazat poslednรญ zรกznam z tabulky. Mรก id 6 a cenu 280. Smaลพeme zรกznam:

DELETE FROM price
WHERE id = 6;   

CRUD a klauzule-DELETE

Pล™รญkaz probฤ›hl รบspฤ›ลกnฤ›. Zkusme se dotรกzat na tabulku, abychom potvrdili, zda bylo smazรกnรญ รบspฤ›ลกnรฉ:

CRUD a klauzule-DELETE

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:

CRUD a klauzule-kde

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;  

CRUD a klauzule-kde

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;   

CRUD a klauzule-kde

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;   

CRUD a klauzule-kde

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:

CRUD a klauzule-kde

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

 CRUD a klauzule-kde

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

CRUD a klauzule-kde

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

CRUD a klauzule-kde

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:

CRUD a klauzule-kde

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

CRUD a klauzule-kde

Vrรกtil zรกznam, ve kterรฉm je cena 190. Mลฏลพeme takรฉ zkusit jinรฝ vzor:

SELECT *  
FROM price 
WHERE price LIKE '_2_';  

CRUD a klauzule-kde

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:

CRUD a klauzule-kde

Pojฤme najรญt vลกechny zรกznamy, kde cena nezaฤรญnรก 2:

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

CRUD a klauzule-kde

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:

CRUD a klauzule-kde

Spusลฅte nรกsledujรญcรญ pล™รญkaz proti tabulce:

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

CRUD a klauzule-kde

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;   

 CRUD a klauzule-kde

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;   

 CRUD a klauzule-kde

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:

CRUD a klauzule-DISTINCT

Kdyลพ z tabulky vybereme sloupec ceny, dostaneme nรกsledujรญcรญ vรฝsledek:

SELECT price FROM Price;

CRUD a klauzule-DISTINCT

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;

CRUD a klauzule-DISTINCT

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;

CRUD a klauzule-od

Klauzule vรกm mลฏลพe pomoci naฤรญst pouze jeden sloupec z databรกzovรฉ tabulky. Napล™รญklad:

SELECT price FROM Price;

CRUD a klauzule-od

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

Advanced Tasks-Stored Procedure

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

Advanced Tasks-Stored Procedure

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

Advanced Tasks-Stored Procedure

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

Advanced Tasks-Stored Procedure

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 ;

Funkce v MariaDB

Vรฝลกe uvedenou funkci pak mลฏลพeme zavolat nรกsledovnฤ›:

select sumFunc(1000);

Pล™รญkaz vrรกtรญ nรกsledujรญcรญ:

Funkce v MariaDB

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:

INNER JOIN

Cenovรก tabulka obsahuje nรกsledujรญcรญ รบdaje:

INNER JOIN

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

INNER JOIN

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

LEVร VNฤšJล ร SPOJENร

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

PRAVร VNฤšJล ร SPOJ

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.

Shrลˆte tento pล™รญspฤ›vek takto: