MariaDB Poradnik

Czym jest MariaDB?

MariaDB jest widelcem MySQL system zarzฤ…dzania bazฤ… danych. Jest tworzony przez oryginalnych twรณrcรณw. To narzฤ™dzie DBMS oferuje moลผliwoล›ci przetwarzania danych zarรณwno dla zadaล„ maล‚ych, jak i korporacyjnych.

MariaDB jest ulepszonฤ… wersjฤ… MySQL. Zawiera wiele wbudowanych, potฤ™ลผnych funkcji oraz wiele ulepszeล„ uลผytecznoล›ci, bezpieczeล„stwa i wydajnoล›ci, ktรณrych nie moลผna znaleลบฤ‡ MySQL.

Oto cechy MariaDB:

  • Dziaล‚a na podstawie licencji GPL, BSD lub LGPL.
  • MariaDB obsล‚uguje popularny i standardowy jฤ™zyk zapytaล„.
  • Jest wyposaลผony w wiele silnikรณw pamiฤ™ci masowej, w tym te o wysokiej wydajnoล›ci, ktรณre moลผna zintegrowaฤ‡ z innymi systemami zarzฤ…dzania relacyjnymi bazami danych.
  • Dostarcza technologiฤ™ klastra Galera.
  • MariaDB obsล‚uguje PHP, popularny jฤ™zyk do tworzenia stron internetowych.
  • MariaDB moลผe dziaล‚aฤ‡ na rรณลผnych systemach operacyjnych i obsล‚uguje wiele jฤ™zykรณw programowania.
  • MariaDB zawiera dodatkowe polecenia, ktรณre nie sฤ… dostฤ™pne w MySQL. MySQL posiada cechy, ktรณre majฤ… negatywny wpล‚yw na wydajnoล›ฤ‡ SZBD. Takie funkcje zostaล‚y zastฤ…pione w MariaDB.

MariaDB vs MySQL

Poniลผej znajduje siฤ™ kilka kluczowych rรณลผnic miฤ™dzy MariaDB vs MySQL

Parametr MariaDB MySQL
Wiฤ™cej opcji dla silnikรณw pamiฤ™ci masowej MariaDB ma 12 nowych silnikรณw przechowywania, w ktรณrych nie znajdziesz MySQL. Ma mniej opcji przechowywania w porรณwnaniu do MariaDB.
Ulepszenia prฤ™dkoล›ci MariaDB wykazuje lepszฤ… prฤ™dkoล›ฤ‡ w porรณwnaniu do MySQL. Zawiera wiele funkcji optymalizujฤ…cych prฤ™dkoล›ฤ‡. Takie funkcje obejmujฤ… widoki/tabele pochodne, podzapytania, kontrolฤ™ wykonania, dostฤ™p do dysku i kontrolฤ™ optymalizatora. MySQL wykazuje mniejszฤ… prฤ™dkoล›ฤ‡ w porรณwnaniu do MariaDB. Opiera siฤ™ tylko na kilku funkcjach optymalizacji prฤ™dkoล›ci, na przykล‚ad indeksach skrรณtu.
Szybsza pamiฤ™ฤ‡ podrฤ™czna/indeksy Dziฤ™ki silnikowi przechowywania pamiฤ™ci firmy MariaDB, instrukcjฤ™ INSERT moลผna wypeล‚niฤ‡ w 24% niลผ w standardzie MySQL. Silnik przechowywania pamiฤ™ci MySQL jest wolniejszy w porรณwnaniu z tym MariaDB.
Wiฤ™ksza i szybsza pula poล‚ฤ…czeล„ MariaDB jest wyposaลผony w zaawansowanฤ… pulฤ™ wฤ…tkรณw, ktรณra moลผe dziaล‚aฤ‡ szybciej i obsล‚ugiwaฤ‡ do 200,000 XNUMX+ poล‚ฤ…czeล„. Pula wฤ…tkรณw udostฤ™pniana przez MySQL nie moลผe obsล‚uลผyฤ‡ do 200,000 XNUMX poล‚ฤ…czeล„ na raz.
Ulepszona replikacja In MariaDBreplikacjฤ™ moลผna przeprowadziฤ‡ bezpieczniej i szybciej. Aktualizacje moลผna takลผe przeprowadzaฤ‡ 2x szybciej w porรณwnaniu do wersji tradycyjnej MySQL. MySQLWersja spoล‚ecznoล›ciowa pozwala na poล‚ฤ…czenie statycznej liczby wฤ…tkรณw. MySQLplan korporacyjny zawiera funkcje wฤ…tkรณw.
Nowe funkcje/rozszerzenia MariaDB zawiera nowe funkcje i rozszerzenia, w tym instrukcje JSON, WITH i KILL. Nowa MariaDB funkcje nie sฤ… dostฤ™pne w MySQL.
Brakujฤ…ce funkcje MariaDB brakuje niektรณrych funkcji zapewnianych przez MySQL wydanie korporacyjne. Aby rozwiฤ…zaฤ‡ ten problem, oferuje alternatywne wtyczki typu open source. Stฤ…d, MariaDB uลผytkownicy mogฤ… cieszyฤ‡ siฤ™ tymi samymi funkcjonalnoล›ciami, co MySQL Uลผytkownicy wersji Enterprise. Wersja dla przedsiฤ™biorstw MySQL uลผywa zastrzeลผonego kodu. Tylko uลผytkownicy MySQL Wersja Enterprise ma do tego dostฤ™p.

Jak zainstalowaฤ‡ MariaDB

Zainstaluj jako samodzielnฤ… aplikacjฤ™

W celu wykorzystania MariaDB, musisz zainstalowaฤ‡ go na swoim komputerze.

Instalacjฤ™ moลผna przeprowadziฤ‡ wykonujฤ…c poniลผsze kroki:

Krok 1) Otwรณrz poniลผszy adres URL
Pobierz plik instalacyjny z ล‚ฤ…cza https://downloads.mariadb.org/

Krok 2) Double kliknij plik, aby rozpoczฤ…ฤ‡ instalacjฤ™
Po zakoล„czeniu pobierania otwรณrz plik

Krok 3) Kliknij przycisk Dalej
W wyskakujฤ…cym oknie kliknij przycisk Dalej:

Instalacja MariaDB

Krok 4) Zaakceptuj umowฤ™ licencyjnฤ…
Nastฤ™pnie kliknij przycisk Dalej:

Instalacja MariaDB

Krok 5) Dodaj MariaDB
Wybierz funkcje, ktรณre majฤ… zostaฤ‡ zainstalowane, i kliknij Dalej

Instalacja MariaDB

Krok 6) Podaj hasล‚o
W nastฤ™pnym oknie konieczna bฤ™dzie zmiana hasล‚a uลผytkownika root.

  1. Wprowadลบ hasล‚o i potwierdลบ je, wpisujฤ…c ponownie to samo hasล‚o. Jeล›li chcesz zezwoliฤ‡ na dostฤ™p z komputerรณw zdalnych, zaznacz odpowiednie pole wyboru.
  2. Po zakoล„czeniu kliknij przycisk Dalej.

Instalacja MariaDB

Krok 7) Wprowadลบ nazwฤ™ i wybierz numer portu
W kolejnym oknie wpisz nazwฤ™ instancji, wybierz numer portu i ustaw wymagany rozmiar. Kliknij przycisk Dalej:

Instalacja MariaDB

Krok 8) Kliknij Dalej
W nastฤ™pnym oknie wystarczy kliknฤ…ฤ‡ przycisk Dalej.

Krok 9) Kliknij Zainstaluj
Uruchom instalacjฤ™, klikajฤ…c przycisk Instaluj.

Instalacja MariaDB

Krok 10) Pokazano pasek postฤ™pu
Wyล›wietli siฤ™ pasek postฤ™pu pokazujฤ…cy postฤ™p instalacji:

Instalacja MariaDB

Krok 11) Kliknij przycisk Zakoล„cz
Po zakoล„czeniu instalacji zobaczysz przycisk Zakoล„cz. Kliknij przycisk, aby zamknฤ…ฤ‡ okno:

Instalacja MariaDB

Krok 12) Gratulacje!
Masz teraz MariaDB zainstalowane na twoim komputerze.

Praca z wierszem poleceล„

Teraz, kiedy juลผ masz MariaDB zainstalowany na Twoim komputerze, nadszedล‚ czas, abyล› go uruchomiล‚ i zaczฤ…ล‚ z niego korzystaฤ‡. Moลผna to zrobiฤ‡ poprzez MariaDB wiersz polecenia.

Wykonaj poniลผsze kroki:

Krok 1) Kliknij Start, wybierz Wszystkie programy i kliknij MariaDB...

Krok 2) Wybierz MariaDB Wiersz polecenia.

MariaDB Wiersz polecenia

Krok 3) MariaDB zostanie uruchomiony wiersz poleceล„. Nadszedล‚ czas na zalogowanie siฤ™. Naleลผy zalogowaฤ‡ siฤ™ jako uลผytkownik root i podaฤ‡ hasล‚o ustawione podczas instalacji MariaDB. Wpisz nastฤ™pujฤ…ce polecenie w wierszu poleceล„:

MySQL -u root -p

Krok 4) Wprowadลบ hasล‚o i naciล›nij klawisz Return. Powinieneล› byฤ‡ zalogowany, jak pokazano poniลผej:

MariaDB Wiersz polecenia

Jesteล› teraz zalogowany MariaDB.

Typy danych

MariaDB obsล‚uguje nastฤ™pujฤ…ce typy danych:

  • Ciฤ…gowe typy danych
  • Liczbowe typy danych
  • Typy danych daty/godziny
  • Typy danych duลผych obiektรณw

Typy danych ล‚aล„cuchowych

Naleลผฤ… do nich:

Typ danych ciฤ…gu OPIS
znak (rozmiar) Rozmiar oznacza liczbฤ™ znakรณw do zapisania. Przechowuje maksymalnie 255 znakรณw. Struny o staล‚ej dล‚ugoล›ci.
varchar (rozmiar) Rozmiar oznacza liczbฤ™ znakรณw do zapisania. Przechowuje maksymalnie 255 znakรณw. Struny o zmiennej dล‚ugoล›ci.
rozmiar czcionki) Rozmiar oznacza liczbฤ™ znakรณw do zapisania. Przechowuje maksymalnie 255 znakรณw. Struny o staล‚ej dล‚ugoล›ci.
binarny (rozmiar) Rozmiar oznacza liczbฤ™ znakรณw do zapisania. Przechowuje maksymalnie 255 znakรณw. Struny o staล‚ym rozmiarze.

Numeryczne typy danych

Obejmujฤ… one:

Numeryczne typy danych OPIS
bit Bardzo maล‚a wartoล›ฤ‡ caล‚kowita odpowiadajฤ…ca tinyint(1). Wartoล›ci ze znakiem mieszczฤ… siฤ™ w zakresie od -128 do 127. Wartoล›ci bez znaku mieszczฤ… siฤ™ w zakresie od 0 do 255.
cal(m) Standardowa wartoล›ฤ‡ caล‚kowita. Wartoล›ci ze znakiem mieszczฤ… siฤ™ w zakresie od -2147483648 do 2147483647. Wartoล›ci bez znaku mieszczฤ… siฤ™ w zakresie od 0 do 4294967295.
pล‚ywak (m, d) Liczba zmiennoprzecinkowa z pojedynczฤ… precyzjฤ….
podwรณjny(m,d) Liczba zmiennoprzecinkowa o podwรณjnej precyzji.
pล‚ywak (p) Liczba zmiennoprzecinkowa.

Typy danych daty/godziny

Naleลผฤ… do nich:

Typ danych daty/godziny OPIS
Data Wyล›wietlane w formacie โ€žrrrr-mm-ddโ€. Wartoล›ci mieszczฤ… siฤ™ w zakresie od โ€ž1000-01-01โ€ do โ€ž9999-12-31โ€.
Datetime Wyล›wietlane w formacie 'yyyy-mm-dd hh:mm:ss'. Wartoล›ci mieszczฤ… siฤ™ w zakresie od '1000-01-01 00:00:00' do '9999-12-31 23:59:59'.
znacznik czasu (m) Wyล›wietlane w formacie 'yyyy-mm-dd hh:mm:ss'. Wartoล›ci mieszczฤ… siฤ™ w zakresie od '1970-01-01 00:00:01' utc do '2038-01-19 03:14:07' utc.
Czas Wyล›wietlane w formie 'hh:mm:ss'. Wartoล›ci mieszczฤ… siฤ™ w zakresie od '-838:59:59' do '838:59:59'.

Typy danych duลผych obiektรณw (LOB)

Obejmujฤ… one:

Typ danych duลผego obiektu OPIS
maล‚a kropelka Jego maksymalny rozmiar to 255 bajtรณw.
kropelka (rozmiar) Maksymalny rozmiar wynosi 65,535 XNUMX bajtรณw.
ล›rednia plama Jego maksymalny rozmiar to 16,777,215 bajtรณw.
dล‚ugi tekst Maksymalny rozmiar to 4 GB.

Utwรณrz bazฤ™ danych i tabele

Aby utworzyฤ‡ nowฤ… bazฤ™ danych w MariaDB, powinieneล› mieฤ‡ specjalne uprawnienia, ktรณre sฤ… przyznawane tylko uลผytkownikowi root i administratorom.

Aby utworzyฤ‡ nowฤ… bazฤ™ danych, naleลผy uลผyฤ‡ polecenia CREATE DATABASE o nastฤ™pujฤ…cej skล‚adni:

CREATE DATABASE DatabaseName;

W takim przypadku musisz stworzyฤ‡ bazฤ™ danych i nadaฤ‡ jej nazwฤ™ Demo.

Zaczฤ…ฤ‡ MariaDB wiersza poleceล„ i zaloguj siฤ™ jako uลผytkownik root, wpisujฤ…c nastฤ™pujฤ…ce polecenie:

mysql -u root -p

Wpisz hasล‚o roota i naciล›nij klawisz Return. Zostaniesz zalogowany.

Teraz uruchom nastฤ™pujฤ…ce polecenie:

CREATE DATABASE Demo;

Utwรณrz bazฤ™ danych i tabele w MariaDB

Nastฤ™pnie utworzyล‚eล› bazฤ™ danych o nazwie Demo. Dobrze bฤ™dzie, jeล›li potwierdzisz, czy baza danych zostaล‚a utworzona pomyล›lnie, czy nie. Musisz tylko wyล›wietliฤ‡ listฤ™ dostฤ™pnych baz danych, uruchamiajฤ…c nastฤ™pujฤ…ce polecenie:

SHOW DATABASES;

Utwรณrz bazฤ™ danych i tabele w MariaDB

Powyลผsze dane wyjล›ciowe pokazujฤ…, ลผe baza danych Demo jest czฤ™ล›ciฤ… listy, dlatego baza danych zostaล‚a utworzona pomyล›lnie.

MariaDB Wybierz bazฤ™ danych

Aby mรณc korzystaฤ‡ lub pracowaฤ‡ na konkretnej bazie danych, naleลผy jฤ… wybraฤ‡ z listy dostฤ™pnych baz danych. Po wybraniu bazy danych moลผna wykonywaฤ‡ takie zadania, jak tworzenie tabel w bazie danych.

Aby wybraฤ‡ bazฤ™ danych naleลผy uลผyฤ‡ komendy USE. Przyjmuje skล‚adniฤ™ podanฤ… poniลผej:

USE database_name;

Musisz uลผyฤ‡ bazy danych Demo. Moลผesz jฤ… wybraฤ‡, uruchamiajฤ…c nastฤ™pujฤ…ce polecenie:

USE Demo;

Utwรณrz bazฤ™ danych i tabele w MariaDB

Powyลผsze zdjฤ™cie pokazuje, ลผe MariaDB wiersz polecenia zmieniล‚ siฤ™ z โ€žbrakโ€ na nazwฤ™ wybranej bazy danych.

Moลผesz teraz ล›miaล‚o tworzyฤ‡ tabele w bazie danych Demo.

MariaDB โ€“ Utwรณrz tabelฤ™

Aby mรณc utworzyฤ‡ tabelฤ™, musisz wybraฤ‡ bazฤ™ danych. Tabelฤ™ moลผna utworzyฤ‡ za pomocฤ… instrukcji CREATE TABLE. Oto skล‚adnia polecenia:

CREATE TABLE tableName (columnName columnType);

Moลผesz ustawiฤ‡ jednฤ… z kolumn jako klucz podstawowy. Ta kolumna nie powinna zezwalaฤ‡ na wartoล›ci null.

Utworzymy dwie tabele w bazie danych Demo, tabelach Book i Cen. Kaลผda tabela bฤ™dzie miaล‚a dwie kolumny.

Zacznijmy od utworzenia tabeli Book z dwiema kolumnami, id i name. Uruchom nastฤ™pujฤ…ce polecenie:

CREATE TABLE Book(  
id INT NOT NULL AUTO_INCREMENT,  
name VARCHAR(100) NOT NULL,  
PRIMARY KEY (id));  

Utwรณrz bazฤ™ danych i tabele w MariaDB

Zastosowano ograniczenie PRIMARY KEY, aby ustawiฤ‡ kolumnฤ™ id jako klucz podstawowy tabeli. Wล‚aล›ciwoล›ฤ‡ AUTO_INCREMENT automatycznie zwiฤ™kszy wartoล›ฤ‡ kolumny id o 1 dla kaลผdego nowego rekordu wstawionego do tabeli. Wszystkie kolumny nie dopuszczajฤ… wartoล›ci null.

Teraz utwรณrz drugฤ… tabelฤ™, tabelฤ™ cen:

CREATE TABLE Price(  
id INT NOT NULL AUTO_INCREMENT,  
price float NOT NULL,  
PRIMARY KEY (id));  

Utwรณrz bazฤ™ danych i tabele w MariaDB

Kolumna id zostaล‚a ustawiona jako klucz podstawowy tabeli.

Pokazywanie tabel

Teraz, gdy utworzyล‚eล› dwie tabele, dobrze bฤ™dzie, jeล›li sprawdzisz, czy tabele zostaล‚y utworzone pomyล›lnie, czy nie. Moลผesz wyล›wietliฤ‡ listฤ™ tabel zawartych w bazie danych, uruchamiajฤ…c nastฤ™pujฤ…ce polecenie:

SHOW TABLES;

Utwรณrz bazฤ™ danych i tabele w MariaDB

Powyลผszy zrzut ekranu pokazuje, ลผe dwie tabele zostaล‚y pomyล›lnie utworzone w bazie danych Demo.

Pokazywanie struktury tabeli

Aby zobaczyฤ‡ strukturฤ™ dowolnej tabeli, moลผesz uลผyฤ‡ polecenia DESCRIBE, powszechnie skracanego jako DESC. Przyjmuje ono nastฤ™pujฤ…cฤ… skล‚adniฤ™:

DESC TableName;

Na przykล‚ad, aby zobaczyฤ‡ strukturฤ™ tabeli o nazwie Ksiฤ…ลผka, moลผesz uruchomiฤ‡ nastฤ™pujฤ…ce polecenie:

DESC Book;

Utwรณrz bazฤ™ danych i tabele w MariaDB

Tabela ma dwie kolumny. Aby zobaczyฤ‡ strukturฤ™ tabeli Price, moลผesz uruchomiฤ‡ nastฤ™pujฤ…ce polecenie:

DESC Price;

Utwรณrz bazฤ™ danych i tabele w MariaDB

CRUD i klauzule

INSERT

Aby wstawiฤ‡ dane do pliku a MariaDB tabeli, powinieneล› uลผyฤ‡ instrukcji INSERT INTO. To polecenie przyjmuje skล‚adniฤ™ podanฤ… poniลผej:

INSERT INTO tableName
(column_1, column_2, ... )  
VALUES  
(value1, value2, ... ),  
(value1, value2, ... ),  
...;   

Powyลผsza skล‚adnia pokazuje, ลผe musisz okreล›liฤ‡ kolumny tabeli, do ktรณrych chcesz wstawiฤ‡ dane, a takลผe dane, ktรณre chcesz wstawiฤ‡.

Wstawmy rekord do tabeli Book:

INSERT INTO book  
(id, name)  
VALUES(1, 'MariaDB Book');  

CRUD i klauzule-INSERT

Wstawiล‚eล› pojedynczy rekord do tabeli. Wstaw rekord do tabeli cen:

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

CRUD i klauzule-INSERT

Rekord zostaล‚ utworzony.

SELECT

Polecenie SELECT pomaga nam przeglฤ…daฤ‡ lub zobaczyฤ‡ zawartoล›ฤ‡ tabeli bazy danych. Aby zobaczyฤ‡ zawartoล›ฤ‡ tabeli Book, na przykล‚ad, musisz uruchomiฤ‡ nastฤ™pujฤ…ce polecenie:

SELECT * from book;

CRUD i klauzule-INSERT

Teraz przejrzyj zawartoล›ฤ‡ tabeli cen:

SELECT * from price;

CRUD i klauzule-INSERT

Wstawianie wielu rekordรณw

Moลผliwe jest wstawienie wielu rekordรณw do pliku MariaDB tabela na raz. Aby to zademonstrowaฤ‡, uruchom nastฤ™pujฤ…cy przykล‚ad:

INSERT INTO book
(id, name)  
VALUES  
(2,'MariaDB Book2'),  
(3,'MariaDB Book3'),  
(4,'MariaDB Book4'),  
(5,'MariaDB Book5');

Wstawianie wielu rekordรณw

Moลผesz wysล‚aฤ‡ zapytanie do tabeli, aby sprawdziฤ‡, czy rekordy zostaล‚y pomyล›lnie wstawione:

SELECT * FROM book;

Wstawianie wielu rekordรณw

Rekordy zostaล‚y pomyล›lnie wstawione. Wstaw wiele rekordรณw do tabeli cen, uruchamiajฤ…c ten przykล‚ad:

INSERT INTO price 
(id, price)  
VALUES  
(2, 250),  
(3, 220),  
(4, 190),  
(5, 300); 

Wstawianie wielu rekordรณw

Sprawdลบmy, czy rekordy zostaล‚y pomyล›lnie utworzone:

SELECT * FROM price;

Wstawianie wielu rekordรณw

Aktualizacja

Polecenie UPDATE pomaga nam zmieniฤ‡ lub zmodyfikowaฤ‡ rekordy, ktรณre zostaล‚y juลผ wstawione do tabeli. Moลผna jฤ… poล‚ฤ…czyฤ‡ z klauzulฤ… โ€‹โ€‹WHERE, aby okreล›liฤ‡ rekord, ktรณry ma zostaฤ‡ zaktualizowany. Oto skล‚adnia:

UPDATE tableName SET field=newValue, field2=newValue2,...  
[WHERE ...]  

Polecenie UPDATE moลผna takลผe ล‚ฤ…czyฤ‡ z klauzulami takimi jak SET, WHERE, LIMIT i ORDER BY. Wkrรณtce to zobaczysz:

Rozwaลผmy tabelฤ™ o nazwie Cena zawierajฤ…cฤ… nastฤ™pujฤ…ce rekordy:

CRUD i klauzule-AKTUALIZACJA

Zmieล„my cenฤ™ ksiฤ…ลผki o identyfikatorze 1 z 200 na 250:

UPDATE price 
SET price = 250
WHERE id = 1;

CRUD i klauzule-AKTUALIZACJA

Komenda zostaล‚a wykonana pomyล›lnie. Moลผesz teraz wysล‚aฤ‡ zapytanie do tabeli, aby sprawdziฤ‡, czy zmiana miaล‚a miejsce:

CRUD i klauzule-AKTUALIZACJA

Powyลผszy zrzut ekranu pokazuje, ลผe zmiana zostaล‚a zaimplementowana. Rozwaลผ tabelฤ™ Book z nastฤ™pujฤ…cymi rekordami:

CRUD i klauzule-AKTUALIZACJA

Zmieล„my nazwฤ™ ksiฤ…ลผki o nazwie Ksiฤ…ลผka na MariaDB Ksiฤ…ลผka 1. Zauwaลผ, ลผe ksiฤ…ลผka ma identyfikator 1. Oto polecenie:

UPDATE book
SET name = โ€œMariaDB Book1โ€
WHERE id = 1;

CRUD i klauzule-AKTUALIZACJA

Sprawdลบ, czy zmiana zostaล‚a wdroลผona:

CRUD i klauzule-AKTUALIZACJA

Powyลผszy zrzut ekranu pokazuje, ลผe zmiana zostaล‚a pomyล›lnie wdroลผona.

W powyลผszych przykล‚adach zmienialiล›my tylko jednฤ… kolumnฤ™ na raz. Istnieje jednak moลผliwoล›ฤ‡ jednoczesnej zmiany wielu kolumn. Zademonstrujmy to na przykล‚adzie.

Uลผyjmy tabeli cen z nastฤ™pujฤ…cymi danymi:

CRUD i klauzule-AKTUALIZACJA

Zmieล„my zarรณwno identyfikator, jak i cenฤ™ ksiฤ…ลผki, nadajฤ…c jej identyfikator 5. Zmienimy jej identyfikator na 6, a cenฤ™ na 6. Uruchom nastฤ™pujฤ…ce polecenie:

UPDATE price
SET id = 6,
price = 280
WHERE id = 5;

  CRUD i klauzule-AKTUALIZACJA

Teraz wykonaj zapytanie do tabeli, aby sprawdziฤ‡, czy zmiana zostaล‚a pomyล›lnie dokonana:

CRUD i klauzule-AKTUALIZACJA

Zmiana zostaล‚a wprowadzona pomyล›lnie.

Usuniฤ™cia

Polecenie DELETE uลผywamy, gdy chcemy usunฤ…ฤ‡ jeden lub wiele rekordรณw z tabeli. Oto skล‚adnia polecenia:

DELETE FROM tableName  
[WHERE condition(s)]  
[ORDER BY exp [ ASC | DESC ]]  
[LIMIT numberRows];   

Rozwaลผ tabelฤ™ cen zawierajฤ…cฤ… nastฤ™pujฤ…ce rekordy:

CRUD i klauzule-USUลƒ

Musimy usunฤ…ฤ‡ ostatni rekord z tabeli. Ma identyfikator 6 i cenฤ™ 280. Usuล„my rekord:

DELETE FROM price
WHERE id = 6;   

CRUD i klauzule-USUลƒ

Komenda zostaล‚a wykonana pomyล›lnie. Zapytajmy tabelฤ™, czy usuniฤ™cie siฤ™ powiodล‚o:

CRUD i klauzule-USUลƒ

Dane wyjล›ciowe pokazujฤ…, ลผe rekord zostaล‚ pomyล›lnie usuniฤ™ty.

Gdzie

Klauzula WHERE pomaga nam okreล›liฤ‡ dokล‚adnฤ… lokalizacjฤ™, w ktรณrej musimy dokonaฤ‡ zmiany. Jest uลผywana razem z poleceniami takimi jak INSERT, SELECT, UPDATE i DELETE. Rozwaลผmy tabelฤ™ Price z nastฤ™pujฤ…cymi danymi:

CRUD i Klauzule-Gdzie

Zaล‚รณลผmy, ลผe musimy zobaczyฤ‡ rekordy, w ktรณrych cena jest mniejsza niลผ 250. Moลผemy uruchomiฤ‡ nastฤ™pujฤ…ce polecenie:

SELECT *   
FROM price 
WHERE price < 250;  

CRUD i Klauzule-Gdzie

Wszystkie rekordy, w ktรณrych cena jest niลผsza niลผ 250 zostaล‚y zwrรณcone.

Klauzulฤ™ WHERE moลผna poล‚ฤ…czyฤ‡ z poleceniem AND. Zaล‚รณลผmy, ลผe chcemy zobaczyฤ‡ wszystkie rekordy w tabeli Price, w ktรณrych cena jest poniลผej 250, a id jest powyลผej 3. Moลผemy uruchomiฤ‡ nastฤ™pujฤ…ce polecenie:

SELECT *  
FROM price  
WHERE id > 3  
AND price < 250;   

CRUD i Klauzule-Gdzie

Zwrรณcono tylko jeden rekord. Powodem jest to, ลผe musi speล‚niaฤ‡ wszystkie okreล›lone warunki, czyli id โ€‹โ€‹powyลผej 3 i cenฤ™ poniลผej 250. W przypadku naruszenia ktรณregokolwiek z tych warunkรณw, rekord nie zostanie zwrรณcony.

Klauzulฤ™ moลผna takลผe poล‚ฤ…czyฤ‡ z poleceniem OR. Zamieล„my AND w naszym poprzednim poleceniu na OR i zobaczmy, jaki wynik otrzymamy:

SELECT *  
FROM price 
WHERE id > 3  
OR price < 250;   

CRUD i Klauzule-Gdzie

Otrzymujemy teraz 2 rekordy zamiast 1. Dzieje siฤ™ tak dlatego, ลผe aby rekord kwalifikacji mรณgล‚ speล‚niฤ‡ tylko jeden z okreล›lonych warunkรณw.

Jak

Ta klauzula sล‚uลผy do okreล›lenia wzorca danych podczas uzyskiwania dostฤ™pu do danych tabeli, w ktรณrych konieczne jest dokล‚adne dopasowanie. Moลผna je ล‚ฤ…czyฤ‡ z instrukcjami INSERT, UPDATE, SELECT i DELETE.

Powinieneล› przekazaฤ‡ do klauzuli wzorzec danych, ktรณrych szukasz, a zwrรณci ona wartoล›ฤ‡ true lub false. Oto znaki wieloznaczne, ktรณrych moลผna uลผywaฤ‡ razem z klauzulฤ…:

  • %: dla dopasowania 0 lub wiฤ™cej znakรณw.
  • _: do dopasowania pojedynczego znaku.

Oto skล‚adnia klauzuli LIKE:

SELECT field_1, field_2,... FROM tableName1, tableName2,...  
WHERE fieldName LIKE condition;

Pokaลผmy, jak uลผywaฤ‡ klauzuli ze znakiem wieloznacznym %. Uลผyjmy tabeli Book z nastฤ™pujฤ…cymi rekordami:

CRUD i Klauzule-Gdzie

Musimy zobaczyฤ‡ wszystkie rekordy, w ktรณrych nazwa zaczyna siฤ™ od litery M. Moลผemy uruchomiฤ‡ nastฤ™pujฤ…ce polecenie:

SELECT name  
FROM book  
WHERE name LIKE 'M%';  

 CRUD i Klauzule-Gdzie

Zwrรณcono wszystkie rekordy, poniewaลผ ich nazwy zaczynajฤ… siฤ™ na literฤ™ M. Aby zobaczyฤ‡ wszystkie nazwy koล„czฤ…ce siฤ™ na 4, moลผesz uruchomiฤ‡ nastฤ™pujฤ…ce polecenie:

SELECT name  
FROM book  
WHERE name LIKE '%4';  

CRUD i Klauzule-Gdzie

Zwrรณcono tylko jedno imiฤ™, poniewaลผ jako jedyne speล‚nia ono warunek.

Moลผemy rรณwnieลผ otoczyฤ‡ wzorzec wyszukiwania symbolem wieloznacznym:

SELECT name  
FROM book  
WHERE name LIKE '%DB%';  

CRUD i Klauzule-Gdzie

Oprรณcz symbolu wieloznacznego % klauzula LIKE moลผe byฤ‡ uลผywana razem z symbolem wieloznacznym _. Jest to znak wieloznaczny podkreล›lenia, ktรณry bฤ™dzie wyszukiwaล‚ tylko jeden znak.

Pracujmy z tabelฤ… cen z nastฤ™pujฤ…cymi rekordami:

CRUD i Klauzule-Gdzie

Sprawdลบmy rekord, w ktรณrym cena jest taka jak 1_0. Uruchomimy nastฤ™pujฤ…ce polecenie:

SELECT *  
FROM price
WHERE price LIKE '1_0';  

CRUD i Klauzule-Gdzie

Wrรณciล‚ rekord w ktรณrym cena wynosi 190. Moลผemy teลผ sprรณbowaฤ‡ innego wzoru:

SELECT *  
FROM price 
WHERE price LIKE '_2_';  

CRUD i Klauzule-Gdzie

Moลผliwe jest uลผycie klauzuli LIKE razem z operatorem NOT. Zwrรณci to wszystkie rekordy, ktรณre nie speล‚niajฤ… okreล›lonego wzorca. Na przykล‚ad:

Uลผyjmy tabeli cen z nastฤ™pujฤ…cymi rekordami:

CRUD i Klauzule-Gdzie

Znajdลบmy wszystkie rekordy, w ktรณrych cena nie zaczyna siฤ™ od 2:

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

CRUD i Klauzule-Gdzie

Tylko jeden rekord nie jest zgodny z okreล›lonym wzorcem.

Zamรณw przez

Klauzula ta pomaga nam uporzฤ…dkowaฤ‡ nasze dane w kolejnoล›ci rosnฤ…cej lub malejฤ…cej. Uลผywamy go z instrukcjฤ… SELECT, jak pokazano poniลผej:

SELECT expression(s)  
FROM tables  
[WHERE condition(s)]  
ORDER BY exp [ ASC | DESC ];   

Moลผliwe jest uลผycie tej klauzuli bez dodawania czฤ™ล›ci ASC lub DESC. Na przykล‚ad:

Uลผyjemy tabeli cen z nastฤ™pujฤ…cymi rekordami:

CRUD i Klauzule-Gdzie

Uruchom nastฤ™pujฤ…ce polecenie dla tabeli:

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

CRUD i Klauzule-Gdzie

W powyลผszym poleceniu zamawialiล›my wedล‚ug ceny. Rekordy zostaล‚y uporzฤ…dkowane wedล‚ug cen rosnฤ…cych. Oznacza to, ลผe jeล›li nie okreล›limy kolejnoล›ci, domyล›lnie sortowanie odbywa siฤ™ w kolejnoล›ci rosnฤ…cej.

Uruchommy klauzulฤ™ z opcjฤ… DESC:

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

 CRUD i Klauzule-Gdzie

Rekordy zostaล‚y posortowane wedล‚ug ceny w kolejnoล›ci malejฤ…cej, tak jak to okreล›liliล›my.

Uลผyjmy klauzuli ORDER BY razem z atrybutem ASC:

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

 CRUD i Klauzule-Gdzie

Pล‚yty zostaล‚y uporzฤ…dkowane, ale z cenami rosnฤ…cymi. Przypomina to sytuacjฤ™, gdy uลผywamy klauzuli ORDER BY bez atrybutรณw ASC lub DESC.

DISTINCT

Ta klauzula pomaga nam wyeliminowaฤ‡ duplikaty podczas wybierania rekordรณw z tabeli. Oznacza to, ลผe pomaga nam zdobywaฤ‡ unikalne rekordy. Jego skล‚adnia jest podana poniลผej:

SELECT DISTINCT expression(s)  
FROM tableName  
[WHERE condition(s)];   

Aby to zademonstrowaฤ‡, wykorzystamy tabelฤ™ cen zawierajฤ…cฤ… nastฤ™pujฤ…ce dane:

CRUD i klauzule-DISTINCT

Wybierajฤ…c kolumnฤ™ ceny z tabeli, otrzymamy nastฤ™pujฤ…cy wynik:

SELECT price FROM Price;

CRUD i klauzule-DISTINCT

Mamy dwie pล‚yty z cenฤ… 250, tworzฤ…c duplikat. Musimy mieฤ‡ tylko unikalne rekordy. Moลผemy je filtrowaฤ‡ za pomocฤ… klauzuli DISTINCT, jak pokazano poniลผej:

SELECT DISTINCT price FROM Price;

CRUD i klauzule-DISTINCT

Nie mamy teraz ลผadnych duplikatรณw w powyลผszych wynikach.

Od

Klauzula FROM uลผywana do pobierania danych z tabeli bazy danych. Moลผe byฤ‡ rรณwnieลผ pomocny podczas ล‚ฤ…czenia stoล‚รณw. Oto skล‚adnia polecenia:

SELECT columnNames FROM tableName; 

Aby zobaczyฤ‡ zawartoล›ฤ‡ tabeli ksiฤ…ลผek, uruchom nastฤ™pujฤ…ce polecenie:

SELECT * FROM price;

CRUD i Klauzule-Od

Klauzula moลผe pomรณc w pobraniu tylko jednej kolumny z tabeli bazy danych. Na przykล‚ad:

SELECT price FROM Price;

CRUD i Klauzule-Od

Zaawansowane zadania

Procedura skล‚adowana

Procedura to: MariaDB program, do ktรณrego moลผna przekazywaฤ‡ parametry. Procedura nie zwraca wartoล›ci. Aby utworzyฤ‡ procedurฤ™, uลผywamy polecenia CREATE PROCEDURE.

Aby zademonstrowaฤ‡, jak utworzyฤ‡ i wywoล‚aฤ‡ procedurฤ™, utworzymy procedurฤ™ o nazwie myProcedure(), ktรณra pomoลผe nam wybraฤ‡ kolumnฤ™ nazwy z tabeli ksiฤ…ลผki. Oto procedura:

DELIMITER $
    CREATE PROCEDURE myProcedure()
        BEGIN
            SELECT name FROM book;
        END;
;

Zaawansowana procedura przechowywana w zadaniach

Procedura zostaล‚a utworzona. Po prostu umieล›ciliล›my instrukcjฤ™ SELECT w klauzulach BEGIN i END procedury.

Teraz moลผemy wywoล‚aฤ‡ procedurฤ™ po nazwie, jak pokazano poniลผej:

CALL myProcedure();

Zaawansowana procedura przechowywana w zadaniach

Procedura po wywoล‚aniu zwraca kolumnฤ™ nazwy tabeli ksiฤ…ลผki.

Moลผemy utworzyฤ‡ procedurฤ™, ktรณra przyjmuje parametr. Na przykล‚ad musimy wybraฤ‡ nazwฤ™ ksiฤ…ลผki i filtrowaฤ‡ za pomocฤ… identyfikatora ksiฤ…ลผki. Moลผemy utworzyฤ‡ nastฤ™pujฤ…cฤ… procedurฤ™ w tym celu:

DELIMITER $
    CREATE PROCEDURE myProcedure2(book_id int)
        BEGIN
            SELECT name FROM book WHERE id = book_id;
        END;
;

Zaawansowana procedura przechowywana w zadaniach

Powyลผej stworzyliล›my procedurฤ™ o nazwie myProcedure2(). Ta procedura przyjmuje jeden parametr typu caล‚kowitego o nazwie book_id, ktรณry jest identyfikatorem ksiฤ…ลผki, ktรณrej nazwฤ™ musimy zobaczyฤ‡. Aby zobaczyฤ‡ nazwฤ™ ksiฤ…ลผki o identyfikatorze 3, moลผemy wywoล‚aฤ‡ procedurฤ™ w nastฤ™pujฤ…cy sposรณb:

CALL myProcedure2(3);

Zaawansowana procedura przechowywana w zadaniach

Funkcjonowaฤ‡

W przeciwieล„stwie do procedur, musimy przekazywaฤ‡ parametry do funkcji, a funkcja musi zwracaฤ‡ wartoล›ฤ‡. Aby utworzyฤ‡ funkcjฤ™ w MariaDB, uลผywamy instrukcji CREATE FUNCTION. Instrukcja przyjmuje nastฤ™pujฤ…cฤ… skล‚adniฤ™:

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;

Powyลผsze parametry opisano poniลผej:

Parametr OPIS
Klauzula DEFINER Ten parametr jest opcjonalny. Jeล›li tego nie okreล›lisz, osobฤ… definiujฤ…cฤ… stanie siฤ™ uลผytkownik, ktรณry utworzyล‚ funkcjฤ™. Jeลผeli zaistnieje potrzeba okreล›lenia innego definicji, naleลผy doล‚ฤ…czyฤ‡ klauzulฤ™ DEFINER, w ktรณrej nazwa_uลผytkownika bฤ™dzie definicjฤ… funkcji.
nazwa_funkcji Nazwa, ktรณra ma byฤ‡ przypisana tej funkcji w pliku MariaDB.
parametr Parametr(y) przekazany do funkcji. Podczas tworzenia funkcji wszystkie parametry traktowane sฤ… jako Parametry IN (zamiast parametrรณw OUT/INOUT).
typ_danych_powrotu Typ danych wartoล›ci zwracanej przez funkcjฤ™.
Jฤ˜ZYKSQL Wpล‚ywa to na przenoล›noล›ฤ‡, ale nie na funkcjฤ™.
DETERMINISTYCZNY Funkcja zwrรณci jeden wynik tylko wtedy, gdy zostanie podana liczba parametrรณw.
NIE DETERMINISTYCZNY Funkcja moลผe zwrรณciฤ‡ inny wynik, jeล›li podana zostanie liczba parametrรณw.
ZAWIERA SQL Informuje MariaDB ลผe ta funkcja zawiera SQL. Baza nie zweryfikuje, czy to prawda.
BEZ SQL Klauzula ta nie jest uลผywana i nie ma wpล‚ywu na Twojฤ… funkcjฤ™.
CZYTA DANYCH SQL mรณwi MariaDB ลผe ta funkcja uลผyje instrukcji SELECT do odczytania danych, ale nie zmodyfikuje danych.
MODYFIKUJE DANYCH SQL mรณwi MariaDB ลผe ta funkcja bฤ™dzie uลผywaฤ‡ INSERT, DELETE, UPDATE i innych DDL instrukcje modyfikujฤ…ce dane SQL.
sekcja deklaracji W tym miejscu naleลผy zadeklarowaฤ‡ zmienne lokalne.
sekcja wykonywalna Naleลผy tu dodaฤ‡ kod funkcji.

Oto przykล‚ad MariaDB funkcjonowaฤ‡:

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 ;

Funkcja w MariaDB

Nastฤ™pnie moลผemy wywoล‚aฤ‡ powyลผszฤ… funkcjฤ™ w nastฤ™pujฤ…cy sposรณb:

select sumFunc(1000);

Polecenie zwrรณci nastฤ™pujฤ…cฤ… informacjฤ™:

Funkcja w MariaDB

Gdy skoล„czysz z funkcjฤ…, dobrze bฤ™dzie jฤ… usunฤ…ฤ‡. Jest to proste, poniewaลผ wystarczy wywoล‚aฤ‡ instrukcjฤ™ DROP FUNCTION, ktรณra przyjmuje nastฤ™pujฤ…cฤ… skล‚adniฤ™:

DROP FUNCTION function_name;

Na przykล‚ad, aby usunฤ…ฤ‡ funkcjฤ™ o nazwie myFunc, moลผemy uruchomiฤ‡ nastฤ™pujฤ…ce polecenie:

DROP FUNCTION myFunc;

DOลฤ„CZ

Jeล›li chcesz pobraฤ‡ dane z wiฤ™cej niลผ jednej tabeli jednoczeล›nie, uลผyj MariaDB DOลฤ„CZA. Oznacza to, ลผe DOลฤ„CZ dziaล‚a na dwรณch lub wiฤ™cej tabelach. Obsล‚ugiwane sฤ… nastฤ™pujฤ…ce trzy typy JOINS MariaDB:

  • POลฤ„CZENIE WEWNฤ˜TRZNE/PROSTE
  • LEWE POลฤ„CZENIE ZEWNฤ˜TRZNE/POลฤ„CZENIE LEWE
  • PRAWE POลฤ„CZENIE ZEWNฤ˜TRZNE/PRAWE POลฤ„CZENIE

Omรณwmy je jeden po drugim:

INNER JOIN

Sprzฤ™ลผenie wewnฤ™trzne zwraca wszystkie wiersze z tabel, w ktรณrych warunek zล‚ฤ…czenia jest speล‚niony. Jego skล‚adnia jest nastฤ™pujฤ…ca:

SELECT columns  
FROM table-1   
INNER JOIN table-2  
ON table-1.column = table-2.column;  

Na przykล‚ad:

Bฤ™dziemy korzystaฤ‡ z naszych dwรณch stoล‚รณw, ksiฤ…ลผek i ksiฤ…ลผki.

Tabela ksiฤ…ลผek zawiera nastฤ™pujฤ…ce dane:

INNER JOIN

Tabela cen zawiera nastฤ™pujฤ…ce dane:

INNER JOIN

Celem jest poล‚ฤ…czenie kolumny nazwy z tabeli Ksiฤ…ลผka i kolumny ceny z tabeli Cena w jednฤ… tabelฤ™. Jest to moลผliwe w przypadku sprzฤ™ลผenia wewnฤ™trznego, jak pokazano poniลผej:

SELECT book.name, price.price 
FROM book   
INNER JOIN price 
ON book.id = price.id;   

Polecenie zwraca nastฤ™pujฤ…cฤ… wartoล›ฤ‡:

INNER JOIN

LEWE POลฤ„CZENIE ZEWNฤ˜TRZNE

To zล‚ฤ…czenie zwraca wszystkie wiersze z tabeli po lewej stronie i tylko te wiersze, w ktรณrych warunek zล‚ฤ…czenia jest speล‚niony, z drugiej tabeli. Jego skล‚adnia jest nastฤ™pujฤ…ca:

SELECT columns  
FROM table-1  
LEFT [OUTER] JOIN table-2  
ON table-1.column = table-2.column;  

Sล‚owo kluczowe OUTER umieszczono w nawiasach kwadratowych, poniewaลผ jest opcjonalne.

Na przykล‚ad:

SELECT book.name, price.price 
FROM book   
LEFT JOIN price 
ON book.id = price.id;   

Polecenie zwraca nastฤ™pujฤ…cฤ… wartoล›ฤ‡:

LEWE POลฤ„CZENIE ZEWNฤ˜TRZNE

Ostatni rekord w powyลผszej tabeli nie ma pasujฤ…cej wartoล›ci po lewej stronie. Dlatego zostaล‚ zastฤ…piony przez NULL.

PRAWE POลฤ„CZENIE ZEWNฤ˜TRZNE

To zล‚ฤ…czenie zwraca wszystkie wiersze z tabeli po prawej stronie i tylko te wiersze, w ktรณrych warunek zล‚ฤ…czenia jest speล‚niony, z drugiej tabeli. Jego skล‚adnia jest nastฤ™pujฤ…ca:

SELECT columns  
FROM table-1  
RIGHT [OUTER] JOIN table-2  
ON table-1.column = table-2.column;  

Sล‚owo kluczowe OUTER umieszczono w nawiasach kwadratowych, poniewaลผ jest opcjonalne.

Na przykล‚ad:

SELECT book.name, price.price 
FROM book   
RIGHT JOIN price
ON book.id = price.id;   

Polecenie zwraca nastฤ™pujฤ…cฤ… wartoล›ฤ‡:

PRAWE POลฤ„CZENIE ZEWNฤ˜TRZNE

Powodem jest to, ลผe wszystkie wiersze w tabeli po prawej stronie zostaล‚y dopasowane do wierszy w drugiej tabeli. Gdyby niektรณre wiersze nie pasowaล‚y, w pierwszej kolumnie mielibyล›my wartoล›ฤ‡ NULL.

Podsumuj ten post nastฤ™pujฤ…co: