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:
Krok 4) Zaakceptuj umowฤ licencyjnฤ
Nastฤpnie kliknij przycisk Dalej:
Krok 5) Dodaj MariaDB
Wybierz funkcje, ktรณre majฤ
zostaฤ zainstalowane, i kliknij Dalej
Krok 6) Podaj hasลo
W nastฤpnym oknie konieczna bฤdzie zmiana hasลa uลผytkownika root.
- 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.
- Po zakoลczeniu kliknij przycisk Dalej.
Krok 7) Wprowadลบ nazwฤ i wybierz numer portu
W kolejnym oknie wpisz nazwฤ instancji, wybierz numer portu i ustaw wymagany rozmiar. Kliknij przycisk Dalej:
Krok 8) Kliknij Dalej
W nastฤpnym oknie wystarczy kliknฤ
ฤ przycisk Dalej.
Krok 9) Kliknij Zainstaluj
Uruchom instalacjฤ, klikajฤ
c przycisk Instaluj.
Krok 10) Pokazano pasek postฤpu
Wyลwietli siฤ pasek postฤpu pokazujฤ
cy postฤp instalacji:
Krok 11) Kliknij przycisk Zakoลcz
Po zakoลczeniu instalacji zobaczysz przycisk Zakoลcz. Kliknij przycisk, aby zamknฤ
ฤ okno:
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.
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:
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;
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;
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;
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));
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));
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;
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;
Tabela ma dwie kolumny. Aby zobaczyฤ strukturฤ tabeli Price, moลผesz uruchomiฤ nastฤpujฤ ce polecenie:
DESC Price;
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');
Wstawiลeล pojedynczy rekord do tabeli. Wstaw rekord do tabeli cen:
INSERT INTO price (id, price) VALUES(1, 200);
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;
Teraz przejrzyj zawartoลฤ tabeli cen:
SELECT * from price;
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');
Moลผesz wysลaฤ zapytanie do tabeli, aby sprawdziฤ, czy rekordy zostaลy pomyลlnie wstawione:
SELECT * FROM book;
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);
Sprawdลบmy, czy rekordy zostaลy pomyลlnie utworzone:
SELECT * FROM price;
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:
Zmieลmy cenฤ ksiฤ ลผki o identyfikatorze 1 z 200 na 250:
UPDATE price SET price = 250 WHERE id = 1;
Komenda zostaลa wykonana pomyลlnie. Moลผesz teraz wysลaฤ zapytanie do tabeli, aby sprawdziฤ, czy zmiana miaลa miejsce:
Powyลผszy zrzut ekranu pokazuje, ลผe zmiana zostaลa zaimplementowana. Rozwaลผ tabelฤ Book z nastฤpujฤ cymi rekordami:
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;
Sprawdลบ, czy zmiana zostaลa wdroลผona:
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:
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;
Teraz wykonaj zapytanie do tabeli, aby sprawdziฤ, czy zmiana zostaลa pomyลlnie dokonana:
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:
Musimy usunฤ ฤ ostatni rekord z tabeli. Ma identyfikator 6 i cenฤ 280. Usuลmy rekord:
DELETE FROM price WHERE id = 6;
Komenda zostaลa wykonana pomyลlnie. Zapytajmy tabelฤ, czy usuniฤcie siฤ powiodลo:
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:
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;
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;
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;
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:
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%';
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';
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%';
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:
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';
Wrรณciล rekord w ktรณrym cena wynosi 190. Moลผemy teลผ sprรณbowaฤ innego wzoru:
SELECT * FROM price WHERE price LIKE '_2_';
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:
Znajdลบmy wszystkie rekordy, w ktรณrych cena nie zaczyna siฤ od 2:
SELECT * FROM price WHERE price NOT LIKE '2%';
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:
Uruchom nastฤpujฤ ce polecenie dla tabeli:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
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;
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;
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:
Wybierajฤ c kolumnฤ ceny z tabeli, otrzymamy nastฤpujฤ cy wynik:
SELECT price FROM Price;
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;
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;
Klauzula moลผe pomรณc w pobraniu tylko jednej kolumny z tabeli bazy danych. Na przykลad:
SELECT price FROM Price;
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;
;
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();
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;
;
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);
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 ;
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ฤ:
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:
Tabela cen zawiera nastฤpujฤ ce dane:
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ลฤ:
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ลฤ:
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ลฤ:
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.






































































