![Ako nainštalovať Zabbix 3.4 na RHEL/CentOS a Debian/Ubuntu](/f/7d9348cca2b3d8052b61150660e8fe10.png?width=100&height=100)
V tomto článku si ukážeme, ako vytvoriť databázu (tiež známu ako schéma), tabuľky (s údajovými typmi) a vysvetlíme, ako vykonávať Jazyk manipulácie s údajmi (DML) operácie s údajmi na a MySQL / MariaDB server.
Predpokladá sa, že ste predtým 1) nainštalovali potrebné balíky do vášho systému Linux a 2) popravený mysql_secure_installation na zvýšenie zabezpečenia databázového servera. Ak nie, nainštalujte server MySQL/MariaDB podľa nižšie uvedených pokynov.
Pre stručnosť sa budeme odvolávať na MariaDB výlučne v tomto článku, ale koncepcie a príkazy, ktoré sú tu načrtnuté, sa vzťahujú na MySQL tiež.
Časť 1: Naučte sa MySQL / MariaDB pre začiatočníkov
Ako viete, databázu je možné zjednodušene definovať ako organizovaný zber informácií. Obzvlášť, MariaDB je systém na správu relačných databáz (
RDBMS) a používa jazyk Structure Query Language na vykonávanie operácií s databázami. Okrem toho majte na pamäti, že MariaDB používa termíny databáza a schéma zameniteľne.Na ukladanie trvalých informácií do databázy použijeme stoly ktoré ukladajú riadky údajov. Často budú dve alebo viac tabuliek navzájom nejakým spôsobom súvisieť. Je to súčasť organizácie, ktorá charakterizuje používanie relačných databáz.
Na vytvorenie novej databázy s názvom KnihyDB
, zadajte príkaz MariaDB pomocou nasledujúceho príkazu (budete vyzvaní na zadanie hesla pre užívateľa root MariaDB):
[[chránené e -mailom] ~]# mysql -u root -p
Zadajte heslo: Vitajte na monitore MariaDB. Príkazy končia na; alebo \ g. Vaše ID pripojenia MariaDB je 2. Verzia servera: 10.1.14-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab a ďalšie. Napíšte „pomoc“; alebo '\ h' o pomoc. Zadajte '\ c', aby ste vymazali aktuálny vstupný príkaz. MariaDB [(žiadny)]> VYTVORIŤ DATABÁZU BookstoreDB;
Dotaz je v poriadku, ovplyvnený je 1 riadok (0,00 s) MariaDB [(žiadny)]>
Keď je databáza vytvorená, musíme v nej vytvoriť najmenej dve tabuľky. Najprv sa však pozrime na koncept dátových typov.
Ako sme už vysvetlili, stoly sú databázové objekty, kde budeme uchovávať trvalé informácie. Každá tabuľka pozostáva z dvoch alebo viacerých polí (známych aj ako stĺpce) daného dátového typu (typ informácií), ktoré také pole môže uložiť.
Najbežnejšie typy údajov v MariaDB sú nasledujúce (kompletný zoznam si môžete pozrieť v oficiálna online dokumentácia MariaDB):
Poznámka: V TINYINT, SMALLINT a INT sa predpokladá predvolený PODPIS.
DVOJNÁSOBOK (M, D), kde M je celkový počet číslic a D je počet číslic za desatinnou čiarkou, predstavuje číslo s dvojitou presnosťou s plávajúcou desatinnou čiarkou. Ak je zadané UNSIGNED, záporné hodnoty nie sú povolené.
Po kontrole týchto dátových typov budete mať lepšiu pozíciu k určeniu, ktorý typ údajov musíte priradiť k danému stĺpcu v tabuľke.
Meno osoby sa napríklad ľahko zmestí do súboru VARCHAR (50), keďže na blogový príspevok bude potrebné a TEXT typ (vyberte si M podľa vašich konkrétnych potrieb).
Predtým, ako sa ponoríme do vytvárania tabuliek, existujú dva základné pojmy o relačných databázach, ktoré musíme preskúmať: primárny a zahraničné kľúče.
A primárny kľúč obsahuje hodnotu, ktorá jednoznačne identifikuje každý riadok alebo záznam v tabuľke. Na druhej strane a cudzí kľúč sa používa na vytvorenie prepojenia medzi údajmi v dvoch tabuľkách a na ovládanie údajov, ktoré je možné uložiť do tabuľky, kde sa nachádza cudzí kľúč. Primárny aj cudzí kľúč sú spravidla INT.
Na ilustráciu použijeme KníhkupectvoDB
a vytvorte dve tabuľky s názvom AutoriTBL
a KnihyTBL
nasledovne. The NIE NULL obmedzenie naznačuje, že priradené pole vyžaduje inú hodnotu ako NULOVÝ.
Tiež, AUTOMATICKÝ PRÍRASTOK sa používa na zvýšenie hodnoty o jednu INT stĺpce primárneho kľúča, keď je do tabuľky vložený nový záznam.
MariaDB [(žiadny)]> POUŽIJTE kníhkupectvoDB; MariaDB [(žiadny)]>VYTVORIŤ AUTOROV TABUĽKYTBL ( AuthorID INT NOT NULL AUTO_INCREMENT, AuthorName VARCHAR (100), PRIMARY KEY (AuthorID) );MariaDB [(žiadny)]>VYTVORIŤ TABUĽKU KnihyTBL ( BookID INT NOT NULL AUTO_INCREMENT, BookName VARCHAR (100) NOT NULL, AuthorID INT NOT NULL, BookPrice DECIMAL (6,2) NOT NULL, BookLastUpdated TIMESTAMP, BookIsAvailable BOOLEAN, PRIMARY KEY (BookID), FOREIGN KEY (AuthorID) REFERENCES AuthorsTBL (AuthorID) );
Vytvorte tabuľky MySQL s primárnym a cudzím kľúčom
MariaDB [(žiadny)]> POUŽIJTE kníhkupectvoDB; Databáza bola zmenená. MariaDB [BookstoreDB]> VYTVORIŤ TABUĽKU AuthorsTBL ( -> AuthorID INT NOT NULL AUTO_INCREMENT, -> AuthorName VARCHAR (100), -> PRIMARY KEY (AuthorID) ->); Dotaz je v poriadku, 0 ovplyvnených riadkov (0,05 s) MariaDB [BookstoreDB]> VYTVORIŤ TABUĽKU BooksTBL ( -> BookID INT NOT NULL AUTO_INCREMENT, -> BookName VARCHAR (100) NOT NULL, -> AuthorID INT NOT NULL, -> BookPrice DECIMAL (6,2) NOT NULL, -> BookLastUpdated TIMESTAMP, -> BookIsAvailable BOOLEAN, -> PRIMARY KEY (BookID), -> FOREIGN KEY (AuthorID) REFERENCES AuthorsTBL (AuthorID) -> ); Dotaz je v poriadku, 0 ovplyvnených riadkov (0,05 s) MariaDB [BookstoreDB]>
Teraz môžeme pokračovať a začať vkladať záznamy AutoriTBL
a KnihyTBL
.
Najprv vyplníme AutoriTBL
stôl. Prečo? Pretože musíme mať hodnoty pre AutorID
pred vložením záznamov do súboru KnihyTBL.
Vykonajte nasledujúci príkaz z výzvy MariaDB:
MariaDB [BookstoreDB]> VLOŽIŤ DO AUTOROV HODNOTY TBL (AutorMeno) ('Agatha Christie'), ('Stephen King'), ('Paulo Coelho');
Potom vyberieme všetky záznamy z AutoriTBL. Pamätajte si, že budeme potrebovať AutorID pre každý záznam vytvoriť príponu VLOŽIŤ dotaz na KnihyTBL.
Ak chcete načítať jeden záznam naraz, môžete použiť a KDE klauzula označujúca podmienku, ktorú musí riadok splniť, aby sa mohol vrátiť. Napríklad,
MariaDB [BookstoreDB]> VYBERTE * Z AUTOROVTBL KDE AuthorName = 'Agatha Christie';
Prípadne môžete vybrať všetky záznamy súčasne:
MariaDB [BookstoreDB]> VYBERTE * Z AUTOROVTBL;
Vyberte položku a spýtajte sa na záznam v MySQL
MariaDB [BookstoreDB]> VYBERTE * Z AUTOROVTBL KDE AuthorName = 'Agatha Christie';+++ | AutorID | Meno autora | +++ | 1 | Agatha Christie | +++ 1 riadok v sade (0,00 s) MariaDB [BookstoreDB]>VYBERTE * Z AUTOROVTBL;+++ | AutorID | Meno autora | +++ | 1 | Agatha Christie | | 2 | Stephen King | | 3 | Paulo Coelho | +++ 3 riadky v sade (0,00 s) MariaDB [BookstoreDB]>
Teraz vytvoríme VLOŽIŤ dotaz na KnihyTBL, pomocou zodpovedajúceho AutorID aby zodpovedal autorovi každej knihy. Hodnota 1 v Kniha je k dispozícii označuje, že kniha je na sklade, 0 inak:
MariaDB [BookstoreDB]>VLOŽIŤ DO BooksTBL (BookName, AuthorID, BookPrice, BookIsAvailable) VALUES ('And Then There Were None', 1, 14,95, 1), ('The Man in the Brown Suit', 1, 23,99, 1), ('The Stand', 2, 35,99, 1), ('Pet Sematary “, 2, 17,95, 0), („ Zelená míľa “, 2, 29,99, 1), („ Alchymista “, 3, 25, 1), („ Pri rieke Piedra som si sadol a plakal “, 3, 18.95, 0);
Vložte dotaz do tabuľky MySQL
MariaDB [BookstoreDB]> INSERT INTO BooksTBL (BookName, AuthorID, BookPrice, BookIsAvailable) -> VALUES ('And Then There Were None', 1, 14,95, 1), -> ('The Man in the Brown Suit', 1, 23,99, 1), -> ('The Stand ', 2, 35,99, 1), -> (' Pet Sematary ', 2, 17,95, 0), -> (' The Green Mile ', 2, 29,99, 1), -> (' The Alchemist ', 3, 25, 1), -> („Pri rieke Piedra som si sadol a plakal“, 3, 18,95, 0);Dotaz je v poriadku, dotknutých je 7 riadkov (0,03 s) Záznamy: 7 duplikátov: 0 Varovania: 0.
V tomto bode urobíme a VYBERTE vidieť záznamy v KnihyTBL. Potom poďme AKTUALIZÁCIA cena “Alchymista“Od Paulo Coelho a VYBERTE opäť ten konkrétny záznam.
Všimnite si, ako BookLastUpdated pole teraz zobrazuje inú hodnotu. Ako sme už vysvetlili, a ČASOVÁ ZNAČKA pole zobrazuje hodnotu, kedy bol záznam vložený alebo naposledy upravený.
MariaDB [BookstoreDB]> VYBERTE * Z BooksTBL; MariaDB [BookstoreDB]> UPDATE BooksTBL SET BookPrice = 22,75 KDE BookID = 6; MariaDB [BookstoreDB]> VYBERTE * Z BooksTBL KDE BookID = 6;
Vložte dotaz a aktualizujte tabuľku do databázy MySQL
MariaDB [BookstoreDB]> VYBERTE * Z BooksTBL;+++++++ | BookID | BookName | AutorID | Cena za knihu | BookLastUpdated | BookIsAvailable | +++++++ | 1 | A potom neboli žiadne | 1 | 14,95 | 2016-10-01 23:31:41 | 1 | | 2 | Muž v hnedom obleku | 1 | 23,99 | 2016-10-01 23:31:41 | 1 | | 3 | Stánok | 2 | 35,99 | 2016-10-01 23:31:41 | 1 | | 4 | Sematary domácich zvierat | 2 | 17,95 | 2016-10-01 23:31:41 | 0 | | 5 | Zelená míľa | 2 | 29,99 | 2016-10-01 23:31:41 | 1 | | 6 | Alchymista | 3 | 25,00 |2016-10-01 23:31:41| 1 | | 7 | Pri rieke Piedra som si sadol a plakal | 3 | 18,95 | 2016-10-01 23:31:41 | 0 | +++++++ 7 riadkov v sade (0,00 s) MariaDB [BookstoreDB]>UPDATE BooksTBL SET BookPrice = 22,75 KDE BookID = 6;Dotaz je v poriadku, dotknutý je 1 riadok (0,04 s) Zodpovedajúce riadky: 1 Zmenené: 1 Varovania: 0 MariaDB [BookstoreDB]>VYBERTE * Z BooksTBL KDE BookID = 6;+++++++ | BookID | BookName | AutorID | Cena za knihu | BookLastUpdated | BookIsAvailable | +++++++ | 6 | Alchymista | 3 | 22,75 | 2016-10-01 23:35:00 | 1 | +++++++ 1 riadok v sade (0,00 s) MariaDB [BookstoreDB]>
Aj keď to tu neurobíme, záznam môžete tiež odstrániť, ak sa už nepoužíva. Predpokladajme napríklad, že chceme odstrániť „Alchymista“Od KnihyTBL.
Na to použijeme VYMAZAŤ vyhlásenie nasledovne:
MariaDB [BookstoreDB]> ODSTRÁNIŤ Z BooksTBL KDE BookID = 6;
Rovnako ako v prípade AKTUALIZÁCIA, je dobré urobiť a VYBERTE najskôr na zobrazenie záznamov, ktoré môžu byť potenciálne ovplyvnené súborom VYMAZAŤ.
Nezabudnite tiež pridať KDE klauzula a podmienka (BookID = 6) vyberte konkrétny záznam, ktorý chcete odstrániť. V opačnom prípade riskujete vymazanie všetkých riadkov v tabuľke!
Ak chcete spojiť dve (alebo viac) polí, môžete použiť príponu CONCAT vyhlásenie. Povedzme napríklad, že chceme vrátiť množinu výsledkov, ktorá pozostáva z jedného poľa s názvom knihy a autorom v tvare „Alchymista (Paulo Coelho)”A ďalší stĺpec s cenou.
To bude vyžadovať a PRIPOJTE SA medzi AutoriTBL a KnihyTBL na spoločnom poli zdieľanom oboma tabuľkami (AutorID):
MariaDB [BookstoreDB]> VYBERTE CONCAT (BooksTBL.BookName, '(', AuthorsTBL.AuthorName, ')') AKO popis, BooksTBL.BookPrice OD AUTORA TBL PRIPOJTE sa BooksTBL NA AuthorsTBL.AuthorID = BooksTBL.AuthorID;
Ako vidíme, CONCAT umožňuje nám spojiť viacero reťazcových výrazov oddelených čiarkami. Tiež si všimnete, že sme vybrali alias Popis reprezentovať množinu výsledkov zreťazenia.
Výsledok vyššie uvedeného dotazu je zobrazený na nasledujúcom obrázku:
Dotaz na viac polí v tabuľke MySQL
MariaDB [BookstoreDB]> VYBERTE CONCAT (BooksTBL.BookName, '(', AuthorsTBL.AuthorName, ')') AKO popis, BooksTBL.BookPrice OD AUTORA TBL PRIPOJTE sa BooksTBL NA AuthorsTBL.AuthorID = BooksTBL.AuthorID;+++ | Popis | Cena za knihu | +++ | A potom tam neboli (Agatha Christie) | 14,95 | | Muž v hnedom obleku (Agatha Christie) | 23,99 | | Stánok (Stephen King) | 35,99 | | Sematary domácich zvierat (Stephen King) | 17,95 | | Zelená míľa (Stephen King) | 29,99 | | Alchymista (Paulo Coelho) | 25,00 | | Pri rieke Piedra som si sadol a plakal (Paulo Coelho) | 18,95 | +++ 7 riadkov v sade (0,00 s)
Použitím koreň vykonať všetky DML operácie v databáze sú zlý nápad. Aby sme tomu zabránili, môžeme vytvoriť nový MariaDB používateľský účet (pomenujeme ho kníhkupec) a priradiť všetky potrebné povolenia pre KníhkupectvoDB:
MariaDB [BookstoreDB]> VYTVORIŤ UŽÍVATEĽA [chránené e -mailom] IDENTIFIKOVANÉ „YourPasswordHere“; MariaDB [BookstoreDB]> UDELTE VŠETKY VÝHODY NA BookstoreDB.* Do [chránené e -mailom]; MariaDB [BookstoreDB]> FLUSH PRIVILEGES;
Vytvorte nového používateľa databázy s oprávneniami
MariaDB [BookstoreDB]> VYTVORIŤ UŽÍVATEĽA [chránené e -mailom] IDENTIFIKOVANÉ „tecmint“; Dotaz je v poriadku, 0 ovplyvnených riadkov (0,00 s) MariaDB [BookstoreDB]> UDELTE VŠETKY VÝHODY NA BookstoreDB.* Do [chránené e -mailom]; Dotaz je v poriadku, 0 ovplyvnených riadkov (0,00 s) MariaDB [BookstoreDB]> FLUSH PRIVILEGES; Dotaz je v poriadku, 0 ovplyvnených riadkov (0,00 s)
Mať vyhradeného, samostatného používateľa pre každú databázu zabráni poškodeniu celej databázy v prípade ohrozenia jedného účtu.
Na vyčistenie MariaDB zadajte nasledujúci príkaz a stlačte Zadajte:
MariaDB [BookstoreDB]> \! jasný.
Ak chcete skontrolovať konfiguráciu danej tabuľky, postupujte takto:
MariaDB [BookstoreDB]> VYBERTE SLOUPKY V [NÁZOV TABUĽKY TU];
Napríklad,
MariaDB [BookstoreDB]> ZOBRAZIŤ SLOUPKY V BooksTBL;
Zoznam stĺpcov v tabuľke databázy
MariaDB [BookstoreDB]> ZOBRAZIŤ SLOUPKY V BooksTBL;+++++++ | Pole | Typ | Nulové | Kľúč | Predvolené | Extra | +++++++ | BookID | int (11) | NIE | PRI | NULL | auto_increment | | BookName | varchar (100) | NIE | | NULL | | | AutorID | int (11) | NIE | MUL | NULL | | | Cena za knihu | desatinné (6,2) | NIE | | NULL | | | BookLastUpdated | časová pečiatka | NIE | | CURRENT_TIMESTAMP | pri aktualizácii CURRENT_TIMESTAMP | | BookIsAvailable | tinyint (1) | ÁNO | | NULL | | +++++++ 6 riadkov v sade (0,02 s)
Rýchla kontrola odhalí, že Kniha je k dispozícii pole priznáva NULOVÝ hodnoty. Keďže to nechceme dovoliť, povolíme ALTER tabuľka takto:
MariaDB [BookstoreDB]> ALTER TABLE BooksTBL MODIFY BookIsAvailable BOOLEAN NOT NULL;
(Nebojte sa znova zobraziť stĺpce - zvýraznené ÁNO na obrázku vyššie by teraz malo byť a NIE).
Nakoniec, ak chcete zobraziť všetky databázy na svojom serveri, postupujte takto:
MariaDB [BookstoreDB]> ZOBRAZIŤ DATABÁZY; ALEBO. MariaDB [BookstoreDB]> ZOBRAZIŤ SCHÉMA;
Zoznam všetkých databáz MySQL
[[chránené e -mailom] ~]# mysql -u kníhkupectvo -p
Zadajte heslo: Vitajte na monitore MariaDB. Príkazy končia na; alebo \ g. Vaše ID pripojenia MariaDB je 3. Verzia servera: 10.1.14-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab a ďalšie. Napíšte „pomoc“; alebo '\ h' o pomoc. Zadajte '\ c', aby ste vymazali aktuálny vstupný príkaz. MariaDB [BookstoreDB]> ZOBRAZIŤ DATABÁZY;++ | Databáza | ++ | KníhkupectvoDB | | information_schema | ++ 2 riadky v sade (0,00 s) MariaDB [BookstoreDB]>ZOBRAZIŤ SCHÉMA;++ | Databáza | ++ | KníhkupectvoDB | | information_schema | ++ 2 riadky v sade (0,00 s)
Nasledujúci obrázok ukazuje výsledok vyššie uvedeného príkazu po prístupe k výzve MariaDB ako kníhkupec (všimnite si, ako tento účet nemôže „zobrazovať“ žiadne iné databázy ako KníhkupectvoDB a informačná schéma (k dispozícii pre všetkých používateľov):
V tomto článku sme vysvetlili, ako behať DML operácie a ako vytvoriť databázu, tabuľky a vyhradených používateľov v databáze MariaDB. Okrem toho sme zdieľali niekoľko tipov, ktoré vám môžu uľahčiť život správcu systému / databázy.
Ak máte akékoľvek otázky k tomuto článku, neváhajte a dajte nám vedieť! Neváhajte sa na nás obrátiť pomocou nižšie uvedeného formulára komentárov.