MariaDB Õpetus: õppige süntaksit, käske koos näidetega
Mis on MariaDB?
MariaDB on kahvel MySQL andmebaasihaldussüsteem. Selle on loonud selle algsed arendajad. See DBMS-i tööriist pakub andmetöötlusvõimalusi nii väikeste kui ka ettevõtete jaoks.
MariaDB on täiustatud versioon MySQL. Sellel on arvukalt sisseehitatud võimsaid funktsioone ja palju kasutusvõimalusi, turvalisuse ja jõudluse täiustusi, mida te ei leia MySQL.
Siin on funktsioonid MariaDB:
- See töötab GPL-, BSD- või LGPL-litsentside alusel.
- MariaDB toetab populaarset ja standardset päringukeelt.
- See on varustatud paljude salvestusmootoritega, sealhulgas suure jõudlusega, mida saab integreerida teiste relatsiooniliste andmebaaside haldussüsteemidega.
- See pakub Galera klastri tehnoloogiat.
- MariaDB toetab PHP-d, populaarset veebiarenduskeelt.
- MariaDB võib töötada erinevates operatsioonisüsteemides ja see toetab paljusid programmeerimiskeeli.
- MariaDB kaasas täiendavad käsud, mis pole saadaval MySQL. MySQL sisaldab funktsioone, millel on negatiivne mõju DBMS-i jõudlusele. Sellised funktsioonid on asendatud MariaDB.
MariaDB vs MySQL
Allpool on toodud mõned peamised erinevused MariaDB vs MySQL
Parameeter | MariaDB | MySQL |
---|---|---|
Rohkem valikuid salvestusmootorite jaoks | MariaDB sellel on 12 uut salvestusmootorit, mida te ei leia MySQL. | Sellel on vähem salvestusvõimalusi võrreldes MariaDB. |
Kiiruse parandused | MariaDB näitab paremat kiirust võrreldes MySQL. Sellel on palju kiiruse optimeerimise funktsioone. Selliste funktsioonide hulka kuuluvad tuletatud vaated/tabelid, alampäring, täitmise juhtimine, juurdepääs kettale ja optimeerija juhtimine. | MySQL on aeglasema kiirusega võrreldes MariaDB. See tugineb kiiruse optimeerimiseks vaid mõnele funktsioonile, näiteks räsiindeksitele. |
Kiirem vahemälu/indeksid | Koos mälusalvestusmootoriga MariaDB, saab INSERT-lauset täita 24% kui standardis MySQL. | Mälu salvestamise mootor MySQL on sellega võrreldes aeglasem MariaDB. |
Suurem ja kiirem ühendusbassein | MariaDB kaasas täiustatud keermekogum, mis suudab töötada kiiremini ja toetab kuni 200,000 XNUMX+ ühendust. | Niidibassein, mille pakub MySQL ei suuda toetada kuni 200,000 XNUMX ühendust korraga. |
Täiustatud replikatsioon | In MariaDB, saab replikatsiooni teha turvalisemalt ja kiiremini. Värskendusi saab teha ka 2x kiiremini võrreldes traditsioonilisega MySQL. | MySQLkogukonna väljaanne võimaldab ühendada staatilise arvu lõime. MySQLettevõtte äriplaaniga on kaasas lõime võimalused. |
Uued funktsioonid/laiendused | MariaDB kaasas uued funktsioonid ja laiendused, sealhulgas JSON, WITH ja KILL avaldused. | Uus MariaDB funktsioone ei pakuta MySQL. |
Puuduvad funktsioonid | MariaDB puuduvad mõned funktsioonid, mida pakub MySQL ettevõtte väljaanne. Selle lahendamiseks pakub see alternatiivseid avatud lähtekoodiga pistikprogramme. Seega MariaDB kasutajad saavad nautida samu funktsioone nagu MySQL Enterprise Editioni kasutajad. | aasta Enterprise Edition MySQL kasutab patenteeritud koodi. Ainult kasutajad MySQL Enterprise Editionil on sellele juurdepääs. |
Kuidas paigaldada MariaDB
Installige eraldiseisva rakendusena
Selleks, et kasutada MariaDB, peate selle oma arvutisse installima.
Paigaldamist saab teha, järgides alltoodud samme:
Step 1) Avage allpool URL
Laadige installifail alla lingist https://downloads.mariadb.org/
Step 2) Double installimise alustamiseks klõpsake failil
Kui allalaadimine on lõppenud, avage fail
Step 3) Klõpsake nuppu Edasi
Avanevas aknas klõpsake nuppu Edasi:
Step 4) Nõustuge litsentsilepinguga
Seejärel klõpsake nuppu Edasi:
Step 5) Vali MariaDB server
Valige installitavad funktsioonid ja klõpsake nuppu Edasi
Step 6) Sisestage parool
Järgmises aknas peate muutma juurkasutaja parooli.
- Sisestage parool ja kinnitage see, sisestades sama parooli uuesti. Kui soovite lubada juurdepääsu kaugmasinatest, aktiveerige vajalik märkeruut.
- Kui olete valmis, klõpsake nuppu Edasi.
Step 7) Sisestage nimi ja valige pordi number
Järgmises aknas tippige eksemplari nimi, valige pordi number ja määrake vajalik suurus. Klõpsake nuppu Edasi:
Step 8) Klõpsake nuppu Edasi
Järgmises aknas klõpsake lihtsalt nuppu Edasi.
Step 9) Klõpsake nuppu Installi
Käivitage installimine, klõpsates nuppu Installi.
Step 10) Kuvatakse edenemisriba
Kuvatakse edenemisriba, mis näitab installimise edenemist:
Step 11) Klõpsake nuppu Lõpeta
Kui installimine on lõppenud, näete nuppu Lõpeta. Akna sulgemiseks klõpsake nuppu:
Step 12) Õnnitleme!
Nüüd on teil MariaDB arvutisse installitud.
Töö käsuviibaga
Nüüd, kui teil on MariaDB arvutisse installitud, on aeg see käivitada ja kasutama hakata. Seda saab teha kaudu MariaDB käsurida.
Järgige alltoodud samme:
Step 1) Klõpsake nuppu Start, valige Kõik programmid ja seejärel klõpsake nuppu MariaDB...
Step 2) Vali MariaDB Command Prompt.
Step 3) . MariaDB käivitatakse käsuviip. Nüüd on aeg sisse logida. Peaksite sisse logima juurkasutajana ja installimisel määratud parooliga MariaDB. Tippige käsureale järgmine käsk:
MySQL -u root -p
Step 4) Sisestage parool ja vajutage tagastusklahvi. Peaksite olema sisse logitud, nagu allpool näidatud:
Olete nüüd sisse logitud MariaDB.
Andmetüübid
MariaDB toetab järgmisi andmetüüpe:
- Stringi andmetüübid
- Numbrilised andmetüübid
- Kuupäeva/kellaaja andmetüübid
- Suurte objektide andmetüübid
Stringi andmetüübid
Nende hulka kuulub järgmine:
Stringi andmetüüp | Kirjeldus |
---|---|
char (suurus) | Suurus tähistab salvestatavate märkide arvu. See salvestab maksimaalselt 255 tähemärki. Fikseeritud pikkusega stringid. |
varchar (suurus) | Suurus tähistab salvestatavate märkide arvu. See salvestab maksimaalselt 255 tähemärki. Muutuva pikkusega stringid. |
tekst (suurus) | Suurus tähistab salvestatavate märkide arvu. See salvestab maksimaalselt 255 tähemärki. Fikseeritud pikkusega stringid. |
binaarne (suurus) | Suurus tähistab salvestatavate märkide arvu. See salvestab maksimaalselt 255 tähemärki. Fikseeritud suurusega stringid. |
Numbrilised andmetüübid
Nende hulka kuuluvad:
Numbrilised andmetüübid | Kirjeldus |
---|---|
natuke | Väga väike täisarv, mis võrdub tinyint(1)-ga. Märgiga väärtused jäävad vahemikku –128 kuni 127. Märgimärgita väärtused jäävad vahemikku 0 kuni 255. |
int(m) | Standardne täisarv. Märgiga väärtused jäävad vahemikku -2147483648 kuni 2147483647. Märgimärgita väärtused jäävad vahemikku 0 kuni 4294967295. |
ujuk(m, d) | Ühe täpsusega ujukomaarv. |
double(m,d) | Kahekordse täpsusega ujukomaarv. |
ujuki (p) | Ujukomaarv. |
Kuupäeva/kellaaja andmetüübid
Nende hulka kuulub järgmine:
Kuupäeva/kellaaja andmetüüp | Kirjeldus |
---|---|
kuupäev | Kuvatakse kujul 'yyyy-mm-dd.' Väärtused jäävad vahemikku '1000-01-01' ja '9999-12-31'. |
Datetime | Kuvatakse kujul 'yyyy-mm-dd hh:mm:ss'. Väärtused jäävad vahemikku '1000-01-01 00:00:00' ja '9999-12-31 23:59:59'. |
ajatempel (m) | Kuvatakse kujul 'yyyy-mm-dd hh:mm:ss'. Väärtused jäävad vahemikku '1970-01-01 00:00:01' utc ja '2038-01-19 03:14:07' utc. |
aeg | Kuvatakse kujul 'hh:mm:ss'. Väärtused jäävad vahemikku '-838:59:59' ja '838:59:59'. |
suurte objektide andmetüübid (LOB)
Nende hulka kuuluvad:
Suure objekti andmetüüp | Kirjeldus |
---|---|
tilluke | Selle maksimaalne suurus on 255 baiti. |
plekk (suurus) | Maksimaalne suurus on 65,535 XNUMX baiti. |
keskmine täpp | Selle maksimaalne suurus on 16,777,215 baiti. |
pikk tekst | See võtab maksimaalseks suuruseks 4 GB. |
Looge andmebaas ja tabelid
Uue andmebaasi loomiseks MariaDB, peaksid teil olema eriõigused, mis antakse ainult juurkasutajale ja administraatoritele.
Uue andmebaasi loomiseks peaksite kasutama käsku CREATE DATABASE, mis võtab järgmise süntaksi:
CREATE DATABASE DatabaseName;
Sel juhul peate looma andmebaasi ja andma sellele nime Demo.
Alusta MariaDB käsuviiba ja logige sisse juurkasutajana, tippides järgmise käsu:
mysql -u root -p
Tippige juurparool ja vajutage tagastusklahvi. Teid logitakse sisse.
Nüüd käivitage järgmine käsk:
CREATE DATABASE Demo;
Seejärel olete loonud andmebaasi nimega Demo. Teil on hea kontrollida, kas andmebaasi loomine õnnestus või mitte. Peate kuvama ainult saadaolevate andmebaaside loendi, käivitades järgmise käsu:
SHOW DATABASES;
Ülaltoodud väljund näitab, et demo andmebaas on loendi osa, seega on andmebaas edukalt loodud.
MariaDB Valige Andmebaas
Et saaksite konkreetset andmebaasi kasutada või sellega töötada, peate selle olemasolevate andmebaaside loendist valima. Pärast andmebaasi valimist saate teha selliseid toiminguid nagu andmebaasis tabelite loomine.
Andmebaasi valimiseks tuleks kasutada käsku USE. See võtab allpool toodud süntaksi:
USE database_name;
Peate kasutama demo andmebaasi. Saate selle valida, käivitades järgmise käsu:
USE Demo;
Ülaltoodud pilt näitab, et MariaDB käsuviip on muutunud nullist valitud andmebaasi nimeks.
Nüüd saate demo andmebaasis tabeleid luua.
MariaDB - Loo tabel
Tabeli loomiseks peab olema valitud andmebaas. Tabelit saab luua käsu CREATE TABLE abil. Siin on käsu süntaks:
CREATE TABLE tableName (columnName columnType);
Saate määrata ühe veeru esmaseks võtmeks. See veerg ei tohiks lubada nullväärtusi.
Loome demo andmebaasis kaks tabelit, raamatu ja hinna tabelid. Igal tabelis on kaks veergu.
Alustame kahe veeru, ID ja nimega tabeli Raamatu loomisega. Käivitage järgmine käsk:
CREATE TABLE Book( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY (id));
Piirangut PRIMARY KEY on kasutatud id veeru määramiseks tabeli primaarvõtmeks. Atribuut AUTO_INCREMENT suurendab id veeru väärtusi automaatselt 1 võrra iga uue tabelisse sisestatud kirje puhul. Kõik veerud ei luba nullväärtusi.
Nüüd looge teine tabel, hinnatabel:
CREATE TABLE Price( id INT NOT NULL AUTO_INCREMENT, price float NOT NULL, PRIMARY KEY (id));
Veerg ID on seatud tabeli primaarvõtmeks.
Kuvatakse tabelid
Nüüd, kui olete kaks tabelit loonud, on hea, kui saate vastavusse viia, kas tabelite loomine õnnestus või mitte. Saate kuvada andmebaasis olevate tabelite loendi, käivitades järgmise käsu:
SHOW TABLES;
Ülaltoodud ekraanipilt näitab, et kaks tabelit loodi demo andmebaasis edukalt.
Kuvatakse tabeli struktuur
Konkreetse tabeli struktuuri nägemiseks võite kasutada käsku DESCRIBE, mida tavaliselt nimetatakse DESC. See võtab järgmise süntaksi:
DESC TableName;
Näiteks, et näha tabeli nimega Book struktuuri, saate käivitada järgmise käsu;
DESC Book;
Tabelis on kaks veergu. Hindade tabeli struktuuri nägemiseks saate käivitada järgmise käsu:
DESC Price;
CRUD ja klauslid
INSERT
Andmete sisestamiseks a MariaDB tabelis, peaksite kasutama käsku INSERT INTO. See käsk võtab allpool toodud süntaksi:
INSERT INTO tableName (column_1, column_2, ... ) VALUES (value1, value2, ... ), (value1, value2, ... ), ...;
Ülaltoodud süntaks näitab, et peate määrama tabeli veerud, millesse soovite andmeid sisestada, ja ka andmed, mida peate sisestama.
Sisestame raamatu tabelisse kirje:
INSERT INTO book (id, name) VALUES(1, 'MariaDB Book');
Olete tabelisse lisanud ühe kirje. Sisestage kirje hinnatabelisse:
INSERT INTO price (id, price) VALUES(1, 200);
Kirje on loodud.
SELECT
SELECT-lause aitab meil vaadata või näha andmebaasi tabeli sisu. Näiteks tabeli Book sisu nägemiseks peate käivitama järgmise käsu:
SELECT * from book;
Nüüd vaadake hinnatabeli sisu:
SELECT * from price;
Mitme kirje sisestamine
Meil on võimalik a-sse sisestada mitu kirjet MariaDB laud korraga. Selle demonstreerimiseks käivitage järgmine näide:
INSERT INTO book (id, name) VALUES (2,'MariaDB Book2'), (3,'MariaDB Book3'), (4,'MariaDB Book4'), (5,'MariaDB Book5');
Saate teha tabelist päringu, et kontrollida, kas kirjed sisestati edukalt:
SELECT * FROM book;
Kirjete sisestamine õnnestus. Sisestage tabelisse Hind mitu kirjet, käivitades järgmise näite:
INSERT INTO price (id, price) VALUES (2, 250), (3, 220), (4, 190), (5, 300);
Kontrollime, kas kirjete loomine õnnestus:
SELECT * FROM price;
UPDATE
Käsk UPDATE aitab meil muuta või muuta kirjeid, mis on juba tabelisse sisestatud. Saate selle kombineerida WHERE-klausliga, et määrata värskendatav kirje. Siin on süntaks:
UPDATE tableName SET field=newValue, field2=newValue2,... [WHERE ...]
UPDATE käsku saab kombineerida ka selliste klauslitega nagu SET, WHERE, LIMIT ja ORDER BY. Peagi näete seda:
Mõelge tabelile Hind koos järgmiste kirjetega:
Muudame id-ga 1 raamatu hinna 200-lt 250-le:
UPDATE price SET price = 250 WHERE id = 1;
Käsk toimis edukalt. Nüüd saate tabelist küsida, kas muudatus toimus:
Ülaltoodud ekraanipilt näitab, et muudatus on rakendatud. Vaatleme tabelit Raamat järgmiste kirjetega:
Muudame raamatu nimega Book uueks nimeks MariaDB Raamat 1. Pange tähele, et raamatu ID on 1. Siin on käsk selle jaoks:
UPDATE book SET name = “MariaDB Book1” WHERE id = 1;
Kontrollige, kas muudatus on rakendatud:
Ülaltoodud ekraanipilt näitab, et muudatus on edukalt rakendatud.
Ülaltoodud näidetes oleme muutnud ainult ühte veergu korraga. Siiski on meil võimalik mitut veergu korraga muuta. Näitame seda näite abil.
Kasutame Hindade tabelit järgmiste andmetega:
Muutkem nii raamatu ID kui ka hind id-ga 5. Muudame selle id-ks 6 ja hinnaks 6. Käivitage järgmine käsk:
UPDATE price SET id = 6, price = 280 WHERE id = 5;
Nüüd küsige tabelist, kas muudatus tehti edukalt:
Muudatus tehti edukalt.
kustutama
Kasutame käsku DELETE, kui peame tabelist kustutama ühe või mitu kirjet. Siin on käsu süntaks:
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
Kaaluge hinnatabelit järgmiste kirjetega:
Peame tabelist viimase kirje kustutama. Selle ID on 6 ja hind 280. Kustutame kirje:
DELETE FROM price WHERE id = 6;
Käsk toimis edukalt. Küsige tabelist, kas kustutamine õnnestus:
Väljund näitab, et kirje kustutati edukalt.
Kus
WHERE-klausel aitab meil määrata täpse asukoha, kus peame muudatuse tegema. Seda kasutatakse koos selliste lausetega nagu INSERT, SELECT, UPDATE ja DELETE. Vaadake hinnatabelit järgmiste andmetega:
Oletame, et peame nägema kirjeid, mille hind on alla 250. Saame käivitada järgmise käsu:
SELECT * FROM price WHERE price < 250;
Kõik kirjed, milles hind on alla 250, on tagastatud.
WHERE-klauslit saab kombineerida AND-lausega. Oletame, et peame nägema hinnatabelis kõiki kirjeid, kus hind on alla 250 ja id on suurem kui 3. Saame käivitada järgmise käsu:
SELECT * FROM price WHERE id > 3 AND price < 250;
Tagastatud on ainult üks plaat. Põhjus on selles, et see peab vastama kõigile määratud tingimustele, st id üle 3 ja hind alla 250. Kui mõnda neist tingimustest rikutakse, siis rekordit ei tagastata.
Klauslit saab kombineerida ka käsuga VÕI. Asendame eelmise käsu AND-i käsuga VÕI ja vaatame, millist väljundit saame:
SELECT * FROM price WHERE id > 3 OR price < 250;
Nüüd saame 2 rekordit 1 asemel. Seda seetõttu, et kvalifitseerumise rekord peab vastama ainult ühele määratud tingimustest.
nagu
Seda klauslit kasutatakse andmemustri määramiseks, kui pääsete juurde tabeliandmetele, mille puhul on vajalik täpne vaste. Seda saab kombineerida käskudega INSERT, UPDATE, SELECT ja DELETE.
Peaksite klauslile edastama otsitavate andmete mustri ja see tagastab kas tõene või väär. Siin on metamärgid, mida saab koos klausliga kasutada:
- %: 0 või enama tähemärgi sobitamiseks.
- _: ühe märgi sobitamiseks.
Siin on LIKE-klausli süntaks:
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
Näitame, kuidas kasutada lauset % metamärgiga. Kasutame tabelit Book järgmiste kirjetega:
Peame nägema kõiki kirjeid, mille nimi algab tähega M. Saame käivitada järgmise käsu:
SELECT name FROM book WHERE name LIKE 'M%';
Kõik kirjed on tagastatud, kuna nende nimed algavad M-tähega. Kõigi 4-ga lõppevate nimede nägemiseks võite käivitada järgmise käsu:
SELECT name FROM book WHERE name LIKE '%4';
Tagastati ainult üks nimi, kuna see on ainus, mis vastab tingimusele.
Võime otsingumustri ümbritseda ka metamärgiga:
SELECT name FROM book WHERE name LIKE '%DB%';
Muud kui metamärk %, saab LIKE-klauslit kasutada koos metamärgiga _. See on allkriipsu metamärk ja see otsib ainult ühte tähemärki.
Töötame hinnatabeliga järgmiste kirjetega:
Kontrollime kirjet, milles hind on nagu 1_0. Käivitame järgmise käsu:
SELECT * FROM price WHERE price LIKE '1_0';
Ta on tagastanud rekordi, mille hind on 190. Võime proovida ka teist mustrit:
SELECT * FROM price WHERE price LIKE '_2_';
Meil on võimalik kasutada LIKE-klauslit koos operaatoriga NOT. See tagastab kõik kirjed, mis ei vasta määratud mustrile. Näiteks:
Kasutagem Hindade tabelit järgmiste kirjetega:
Leiame kõik kirjed, mille hind ei alga 2-ga:
SELECT * FROM price WHERE price NOT LIKE '2%';
Ainult üks kirje ei vasta määratud mustrile.
Telli
See klausel aitab meil kirjeid järjestada kas kasvavas või kahanevas järjekorras. Kasutame seda koos SELECT-lausega, nagu allpool näidatud:
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
Meil on võimalik seda klauslit kasutada ilma ASC või DESC osa lisamata. Näiteks:
Kasutame hinnatabelit järgmiste kirjetega:
Käivitage tabeli vastu järgmine käsk:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
Ülaltoodud käsus oleme tellinud hinna järgi. Plaadid on tellitud hindadega kasvavas järjekorras. See tähendab, et kui me järjekorda ei määra, toimub sortimine vaikimisi kasvavas järjekorras.
Käitame klausli valikuga DESC:
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
Kirjed on sorteeritud hindadega kahanevas järjekorras, nagu oleme täpsustanud.
Kasutame klauslit ORDER BY koos atribuudiga ASC:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
Plaadid on tellitud, kuid hinnad kasvavas järjekorras. See sarnaneb sellega, kui kasutame klauslit ORDER BY ilma atribuutideta ASC või DESC.
DISTINCT
See klausel aitab meil tabelist kirjete valimisel kaotada duplikaadid. See tähendab, et see aitab meil saada ainulaadseid kirjeid. Selle süntaks on toodud allpool:
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
Selle demonstreerimiseks kasutame hinnatabelit järgmiste andmetega:
Kui valime tabelist hinnaveeru, saame järgmise tulemuse:
SELECT price FROM Price;
Meil on kaks plaati hinnaga 250, luues duplikaadi. Meil peavad olema ainult ainulaadsed kirjed. Saame neid filtreerida DISTINCT-klausli abil, nagu allpool näidatud:
SELECT DISTINCT price FROM Price;
Nüüd pole meil ülaltoodud väljundis ühtegi duplikaati.
alates
FROM-klausel, mida kasutatakse andmebaasi tabelist andmete toomiseks. See võib aidata ka laudade ühendamisel. Siin on käsu süntaks:
SELECT columnNames FROM tableName;
Raamatutabeli sisu vaatamiseks käivitage järgmine käsk:
SELECT * FROM price;
See klausel aitab teil andmebaasitabelist tuua ainult ühe veeru. Näiteks:
SELECT price FROM Price;
Täpsemad ülesanded
Salvestatud protseduur
Protseduur on a MariaDB programm, millele saate parameetreid edastada. Protseduur ei tagasta väärtusi. Protseduuri loomiseks kasutame käsku CREATE PROCEDURE.
Protseduuri loomise ja kutsumise demonstreerimiseks loome protseduuri nimega myProcedure(), mis aitab meil raamatutabelist nimeveergu valida. Siin on protseduur:
DELIMITER $ CREATE PROCEDURE myProcedure() BEGIN SELECT name FROM book; END; ;
Protseduur on loodud. Oleme lihtsalt lisanud SELECT-lause protseduuri klauslitesse BEGIN ja END.
Nüüd saame protseduuri nimetada selle nime järgi, nagu allpool näidatud:
CALL myProcedure();
Protseduur tagastab kutsumisel raamatutabeli nime veeru.
Saame luua protseduuri, mis võtab parameetri. Näiteks peame valima raamatu nime ja filtreerima raamatu ID abil. Selleks saame luua järgmise protseduuri:
DELIMITER $ CREATE PROCEDURE myProcedure2(book_id int) BEGIN SELECT name FROM book WHERE id = book_id; END; ;
Eespool oleme loonud protseduuri nimega myProcedure2(). See protseduur võtab ühe täisarvulise parameetri nimega book_id, mis on selle raamatu ID, mille nime peame nägema. Raamatu nime nägemiseks ID-ga 3 saame protseduuri kutsuda järgmiselt:
CALL myProcedure2(3);
funktsioon
Erinevalt protseduuridest peame funktsioonidele edastama parameetrid ja funktsioon peab tagastama väärtuse. Funktsiooni loomiseks sisse MariaDB, kasutame lauset CREATE FUNCTION. Avaldus kasutab järgmist süntaksit:
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;
Ülaltoodud parameetreid kirjeldatakse allpool:
Parameeter | Kirjeldus |
---|---|
DEFINER klausel | See parameeter on valikuline. Kui te seda ei määra, saab defineerijast funktsiooni loonud kasutaja. Kui on vaja määrata mõni muu defineerija, lisage DEFINER-klausel, milles kasutajanimi on funktsiooni defineerija. |
funktsiooni_nimi | Nimi, mis tuleb sellele funktsioonile määrata MariaDB. |
parameeter | Funktsioonile edastatud parameeter(id). Funktsiooni loomise ajal käsitletakse kõiki parameetreid kui IN parameetrid (mitte OUT/INOUT parameetrid). |
tagastamise_andmetüüp | Funktsiooni tagastusväärtuse andmetüüp. |
KEEL SQL | See mõjutab kaasaskantavust, kuid mitte funktsiooni. |
DETERMINISTIK | Funktsioon tagastab ühe tulemuse ainult siis, kui sellele on antud mitu parameetrit. |
EI OLE DETERMINISTLIK | Funktsioonil on võimalik mitme parameetri korral tagastada erinev tulemus. |
SISALDAB SQL-i | Teatab MariaDB et see funktsioon sisaldab SQL-i. Andmebaas ei kontrolli, kas see on tõsi. |
EI OLE SQL-i | Seda klauslit ei kasutata ja see ei mõjuta teie funktsiooni. |
LOEB SQL ANDMEID | Ütleb MariaDB et see funktsioon kasutab andmete lugemiseks SELECT-lauseid, kuid ei muuda andmeid. |
MUUDAB SQL ANDMEID | Ütleb MariaDB et see funktsioon kasutab INSERT, DELETE, UPDATE ja muud DDL SQL-andmete muutmiseks. |
deklaratsiooni-osa | Siin tuleks deklareerida kohalikud muutujad. |
käivitatav sektsioon | Siia tuleks lisada funktsiooni kood. |
Siin on näide MariaDB funktsioon:
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 ;
Seejärel saame ülaltoodud funktsiooni kutsuda järgmiselt:
select sumFunc(1000);
Käsk tagastab järgmise:
Kui olete funktsiooniga lõpetanud, on hea see kustutada. See on lihtne, kuna peate helistama ainult DROP FUNCTION lausele, mis võtab järgmise süntaksi:
DROP FUNCTION function_name;
Näiteks funktsiooni myFunc loobumiseks saame käivitada järgmise käsu:
DROP FUNCTION myFunc;
LIITU
Kui teil on vaja andmeid hankida korraga rohkem kui ühest tabelist, kasutage MariaDB LIITUB. See tähendab, et a LIITU töötab kahel või enamal laual. Toetatud on kolm järgmist tüüpi JOINS-i MariaDB:
- SISEMINE/LIHTNE LIITUMINE
- LEFT OUT JOIN/LEFT JOIN
- RIGHT OUTTER JOIN/RIGHT JOIN
Arutame neid ükshaaval:
INNER JOIN
Sisemine liitumine tagastab kõik read tabelitest, milles liitumise tingimus on tõene. Selle süntaks on järgmine:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
Näiteks:
Kasutame oma kahte lauda, raamatut ja raamatut.
Raamatutabelil on järgmised andmed:
Hindade tabelis on järgmised andmed:
Eesmärk on ühendada tabelist Raamatud olev nimede veerg ja hinnatabeli hinnaveerg üheks tabelisse. See on võimalik sisemise ühendusega, nagu on näidatud allpool:
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
Käsk tagastab järgmise:
VASAKU VÄLIMISE LIITUMINE
See liitmine tagastab kõik vasakpoolse tabeli read ja teisest tabelist ainult need read, mille liitumise tingimus on tõene. Selle süntaks on järgmine:
SELECT columns FROM table-1 LEFT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Märksõna OUTER on paigutatud nurksulgudesse, kuna see on valikuline.
Näiteks:
SELECT book.name, price.price FROM book LEFT JOIN price ON book.id = price.id;
Käsk tagastab järgmise:
Ülaltoodud tabeli viimasel kirjel pole vasakul vastet. Seetõttu on see asendatud NULL-iga.
PAREM VÄLILINE LIITUMINE
See liitmine tagastab kõik parempoolse tabeli read ja teisest tabelist ainult need read, mille liitumise tingimus on tõene. Selle süntaks on järgmine:
SELECT columns FROM table-1 RIGHT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
Märksõna OUTER on paigutatud nurksulgudesse, kuna see on valikuline.
Näiteks:
SELECT book.name, price.price FROM book RIGHT JOIN price ON book.id = price.id;
Käsk tagastab järgmise:
Põhjus on selles, et parempoolse tabeli kõik read sobitati teise tabeli ridadega. Kui mõned read ei ühti, on esimeses veerus NULL-id.