Naucz się MySQL / Mariadb dla początkujących - część 1

Naucz się MySQL / Mariadb dla początkujących - część 1

W tym artykule pokażemy, jak utworzyć bazę danych (znaną również jako schemat), tabele (z typami danych) i wyjaśnić, jak wykonać Język manipulacji danymi (DML) Operacje z danymi na Mysql / Mariadb serwer.

Zakłada się, że wcześniej miałeś 1) zainstalował niezbędne pakiety w systemie Linux i 2) wykonany Mysql_Secure_Instalation Aby ulepszyć bezpieczeństwo serwera bazy danych. Jeśli nie, postępuj poniżej przewodników, aby zainstalować serwer MySQL/Mariadb.

  1. Zainstaluj najnowszą bazę danych MySQL w systemach Linux
  2. Zainstaluj najnowszą bazę danych MariaDB w systemach Linux

Aby uzyskać zwięzłość, będziemy się odnosić Mariadb wyłącznie w całym tym artykule, ale przedstawione tutaj pojęcia i polecenia Mysql również.

Część 1: Naucz się MySQL / Mariadb dla początkujących Część 2: Dowiedz się, jak korzystać z kilku funkcji MySQL i MARIADB

Tworzenie baz danych, tabel i autoryzowanych użytkowników

Jak wiecie, baza danych można zdefiniować w prostych kategoriach jako zorganizowany zbiór informacji. W szczególności, Mariadb to relacyjny system zarządzania bazą danych (RDBMS) i używa języka zapytania o strukturę do wykonywania operacji w bazach danych. Dodatkowo pamiętaj, że Mariadb używa warunków bazy danych i schematu zamiennego.

Aby przechowywać trwałe informacje w bazie danych, będziemy używać tabele te przechowują rzędy danych. Często dwa lub więcej tabel będzie w jakiś sposób powiązane. To część organizacji, która charakteryzuje użycie relacyjnych baz danych.

Tworzenie nowej bazy danych

Aby utworzyć nową bazę danych nazwaną Booksdb, Wprowadź wiersz MarIADB za pomocą następującego polecenia (otrzymasz monit o wprowadzenie hasła dla użytkownika root mariadb):

[[e -mail chroniony] ~]# mysql -u root -p Wprowadź hasło: Witamy w monitor Mariadb. Polecenia kończą się; lub \ g. Twój identyfikator połączenia Mariadb to 2 wersja serwerowa: 10.1.14-Mariadb Mariadb Server Copyright (C) 2000, 2016, Oracle, Mariadb Corporation AB i inni. Typ „Pomoc”; lub „\ h”, aby uzyskać pomoc. Typ „\ c”, aby wyczyścić bieżącą instrukcję wejściową. Mariadb [(brak)]> Utwórz bazę danych BookstoredB; Zapytanie OK, dotknięty 1 rząd (0.00 s) mariadb [(brak)]> 

Po utworzeniu bazy danych musimy utworzyć na niej co najmniej dwa tabele. Ale najpierw zbadajmy koncepcję typów danych.

Wprowadzenie typów danych MariaDB

Jak wyjaśniliśmy wcześniej, tabele to obiekty bazy danych, w których będziemy nadal trwałe informacje. Każda tabela składa się z dwóch lub więcej pól (znanych również jako kolumny) danego typu danych (typ informacji), które takie pole może przechowywać.

Najczęstsze typy danych w MariaDB są następujące (możesz zapoznać się z pełną listą w oficjalnej dokumentacji online MariaDB):

Numeryczne:
  1. Boolean Uważa 0 za fałszywe i wszelkie inne wartości za prawdziwe.
  2. Malutki, Jeśli jest używany z podpisem, obejmuje zakres od -128 do 127, podczas gdy zakres niepodpisany wynosi od 0 do 255.
  3. Smallint, Jeśli jest używany z podpisem, obejmuje zakres od -32768 do 32767. Zasięg niepodpisany wynosi od 0 do 65535.
  4. Int, Jeśli jest używany z niepodpisanem, obejmuje zakres od 0 do 4294967295 i -2147483648 do 2147483647 W przeciwnym razie.

Notatka: W Tinyint, SmallIt i Int, zakłada się, że domyślnie podpisano.

Podwójne (m, d), Gdzie M to całkowita liczba cyfr i D jest liczbą cyfr po punkcie dziesiętnym, reprezentuje podwójną precyzyjną liczbę zmiennoprzecinkową. Jeśli określono niepodpisane, wartości ujemne nie są dozwolone.

Strunowy:
  1. Varchar (m) reprezentuje ciąg o zmiennej długości, gdzie M to maksymalna dozwolona długość kolumny w bajtach (teoretycznie 65 535). W większości przypadków liczba bajtów jest identyczna z liczbą znaków, z wyjątkiem niektórych znaków, które mogą zająć nawet 3 bajty. Na przykład hiszpańska litera ñ reprezentuje jedną postać, ale zajmuje 2 bajty.
  2. Tekst (m) reprezentuje kolumnę o maksymalnej długości 65 535 znaków. Jednak tak się dzieje Varchar (m), Rzeczywista maksymalna długość jest zmniejszona, jeśli przechowywane są znaki wielu bytów. Jeśli M jest określony, kolumna jest tworzona jako najmniejszy typ, który może przechowywać taką liczbę znaków.
  3. MediaText (M) I LongText (m) są podobne do Tekst (m), Tylko to, że maksymalne dozwolone długości wynoszą odpowiednio 16 777 215 i 4 294 967 295 znaków.
Data i godzina:
  1. DATA reprezentuje datę w ROYYY-MM-DD format.
  2. CZAS reprezentuje czas w HH: MM: SS.SSS Format (godzina, minuty, sekundy i milisekundy).
  3. Datetime to połączenie DATA I CZAS W YYYY-MM-DD HH: MM: SS format.
  4. ZNAK CZASU służy do zdefiniowania momentu dodania lub zaktualizowanego wiersza.

Po przejrzeniu tych typów danych będziesz w lepszej pozycji, aby określić, który typ danych należy przypisać do danej kolumny w tabeli.

Na przykład imię osoby może łatwo zmieścić się w Varchar (50), podczas gdy post na blogu będzie wymagał TEKST Typ (wybierz M Zgodnie z twoimi konkretnymi potrzebami).

Tworzenie tabel z klawiszami podstawowymi i zagranicznymi

Zanim zagłębiamy się w tworzenie tabel, istnieją dwa podstawowe pojęcia dotyczące relacyjnych baz danych, które musimy przejrzeć: podstawowy I zagraniczny Klucze.

A główny klucz zawiera wartość, która jednoznacznie identyfikuje każdy wiersz lub rejestruje w tabeli. Z drugiej strony a Klucz obcy służy do utworzenia łącza między danymi w dwóch tabelach i do kontrolowania danych, które można przechowywać w tabeli, w której znajduje się klucz obcy. Zarówno kluczowe, jak i obce klucze są na ogół ints.

Aby to zilustrować, użyjmy BookstoredB i utwórz dwa nazwy TABELE Authorstbl I Bookstbl następująco. NIE JEST ZEREM ograniczenie wskazuje, że powiązane pole wymaga wartości innej niż ZERO.

Również, Auto_increment jest używany do zwiększenia o jeden wartość Int Kolumny klucza podstawowego, gdy nowy rekord zostanie włożony do tabeli.

Mariadb [(brak)]> Użyj BookstoredB; Mariadb [(brak)]> Utwórz tabelę Autorstbl (AuthorId Int Not Null Auto_increment, Authorname Varchar (100), klucz podstawowy (autorid)); Mariadb [(brak)]> Utwórz tablicę stołową (Bookid Int Not Null Auto_increment, BookName Varchar (100) Not Null, Authorid Int Not Null, BookPrice Decimal (6,2) Not Null, BooklastupDed Timestamp, Bookisavailable Boolean, Key podstawowy (Bookid), Key zagraniczny (autorid) Referencje Authorstbl (autorid)); 
Utwórz tabele MySQL z kluczowym i obcym kluczem
Mariadb [(brak)]> Użyj BookstoredB; Baza danych zmieniła Mariadb [BookstoredB]> Utwórz tabelę Autorstbl ( -> AuthorId Int Not Null Auto_increment, -> Authorname Varchar (100), -> Key podstawowe (autorid) ->); Zapytanie OK, 0 dotkniętych wierszy (0.05 s) Mariadb [BookstoredB]> Utwórz tablicę tabel ( -> bookid int not null auto_increment, -> bookName varchar (100) not null, -> autorid int not null, -> BookPrice dziesiętne (6,2) not null, -> booklastUpdated Timestamp, -> , -> Klucz podstawowy (bookid), -> zagraniczny klucz (autorid) referencje Authorstbl (autorid) ->); Zapytanie OK, 0 dotkniętych wierszy (0.05 s) Mariadb [BookstoredB]> 

Teraz możemy iść naprzód i zacząć wstawić rekordy Authorstbl I Bookstbl.

Wybieranie, wstawienie, aktualizacja i usuwanie wierszy

Najpierw wypełnimy Authorstbl tabela. Dlaczego? Ponieważ musimy mieć wartości Autorid Przed wstawieniem rekordów do Bookstbl.

Wykonaj następujące zapytanie z monitu MariaDB:

Mariadb [bookstoredB]> wstaw do Authorstbl (Authorname) Values ​​(„Agatha Christie”), („Stephen King”), („Paulo Coelho”); 

Następnie wybierzemy wszystkie rekordy z Authorstbl. Pamiętaj, że będziemy potrzebować Autorid dla każdego rekordu, aby utworzyć WSTAWIĆ zapytanie dla Bookstbl.

Jeśli chcesz pobrać jeden rekord na raz, możesz użyć GDZIE klauzula wskazująca na warunek, że rząd musi spełnić się, aby zwrócić. Na przykład,

Mariadb [BookstoredB]> Wybierz * z Authorstbl gdzie Authorname = "Agatha Christie"; 

Alternatywnie możesz wybrać wszystkie rekordy jednocześnie:

Mariadb [BookstoredB]> Wybierz * z Authorstbl; 
Wybierz i rekord zapytania w MySQL
Mariadb [BookstoredB]> Wybierz * z Authorstbl gdzie Authorname = "Agatha Christie"; +----------+-----------------+ |. Autorid | Authorname | +----------+-----------------+| 1 | Agatha Christie | +----------+-----------------+1 wiersz w zestawie (0.00 s) Mariadb [BookstoredB]> Wybierz * z Authorstbl; +----------+-----------------+ |. Autorid | Authorname | +----------+-----------------+| 1 | Agatha Christie | |. 2 | Stephen King | |. 3 | Paulo Coelho | +----------+-----------------+3 wiersze w zestawie (0.00 s) Mariadb [BookstoredB]> 
Wybierz i zapytaj o ciąg w bazie danych MySQL

Teraz stwórzmy WSTAWIĆ zapytanie dla Bookstbl, za pomocą odpowiedniego Autorid Aby dopasować autora każdej książki. Wartość 1 W BookisAvillable Wskazuje, że książka jest w magazynie, 0 W przeciwnym razie:

Mariadb [BookstoredB]> Wstaw do Bookstbl (nazwa BookName, autorid, BookPrice, Bookisavaillable) Wartości (a potem nie było żadnych ”, 1, 14.95, 1), („Mężczyzna w brązowym garniturze”, 1, 23.99, 1), („Stand”, 2, 35.99, 1), („Pet Sematary”, 2, 17.95, 0), („The Green Mile”, 2, 29.99, 1), („Alchemist”, 3, 25, 1), („nad rzeką Piedra i usiadłem i płakał”, 3, 18.95, 0); 
Wstaw zapytanie w tabeli MySQL
Mariadb [BookstoredB]> Wstaw do księgarni (nazwa BookName, autorid, BookPrice, Bookisavailable) -> Wartości (a potem nie było żadnych ”, 1, 14.95, 1), -> („Mężczyzna w brązowym garniturze”, 1, 23.99, 1), -> („Stand”, 2, 35.99, 1), -> („Pet Sematary”, 2, 17.95, 0), -> („The Green Mile”, 2, 29.99, 1), -> („Alchemist”, 3, 25, 1), -> („nad rzeką Piedra i usiadł i płakał”, 3, 18.95, 0); Zapytanie OK, 7 rzędów dotkniętych (0.03 s) Rekordy: 7 duplikatów: 0 Ostrzeżenia: 0 

W tym momencie zrobimy WYBIERAĆ Aby zobaczyć rekordy w Bookstbl. Potem AKTUALIZACJA Cena "Alchemik" przez Paulo Coelho I WYBIERAĆ ten konkretny rekord ponownie.

Zwróć uwagę, jak BooklastUpDated pole pokazuje teraz inną wartość. Jak wyjaśniliśmy wcześniej, ZNAK CZASU Pole pokazuje wartość, gdy rekord został wstawiony lub ostatnio zmodyfikowany.

Mariadb [BookstoredB]> Wybierz * z księgarni; Mariadb [BookstoredB]> Aktualizacja zestawu Bookstbl BookPrice = 22.75 gdzie Bookid = 6; Mariadb [BookstoredB]> Wybierz * z księgarni, gdzie bookid = 6; 
Włóż tabelę zapytania i aktualizacji w bazie danych MySQL
Mariadb [BookstoredB]> Wybierz * z księgarni; +--------+-----------------------------------------+----------+-----------+---------------------+-----------------+ |. Bookid | Nazwa książki | Autorid | BookPrice | BooklastUpDated | Bookisavailable | +--------+---------------------------------------- -+----------+-----------+---------------------+--- --------------+ | 1 | A potem nie było żadnego | 1 | 14.95 | 2016-10-01 23:31:41 | 1 | |. 2 | Mężczyzna w brązowym garniturze | 1 | 23.99 | 2016-10-01 23:31:41 | 1 | |. 3 | Stand | 2 | 35.99 | 2016-10-01 23:31:41 | 1 | |. 4 | Sematary dla zwierząt | 2 | 17.95 | 2016-10-01 23:31:41 | 0 | |. 5 | Zielona milę | 2 | 29.99 | 2016-10-01 23:31:41 | 1 | |. 6 | Alchemik | 3 | 25.00 | 2016-10-01 23:31:41 |. 1 | |. 7 | Nad rzeką Piedra usiadłem i płakałem | 3 | 18.95 | 2016-10-01 23:31:41 | 0 | +--------+---------------------------------------- -+----------+-----------+---------------------+--- --------------+ 7 wierszy w zestawie (0.00 s) Mariadb [BookstoredB]> Aktualizacja zestawu Bookstbl BookPrice = 22.75 gdzie Bookid = 6; Zapytanie OK, dotknięty 1 rząd (0.04 s) Dopasowane wiersze: 1 Zmieniono: 1 Ostrzeżenia: 0 MariaDB [BookstoredB]> Wybierz * z księgarni, gdzie bookid = 6; +--------+---------------+----------+-----------+---------------------+-----------------+ |. Bookid | Nazwa książki | Autorid | BookPrice | BooklastUpDated | Bookisavailable | +--------+---------------+----------+-----------+- --------------------+ -----------------+ | 6 | Alchemik | 3 | 22.75 | 2016-10-01 23:35:00 | 1 | +--------+---------------+----------+-----------+- --------------------+ -----------------+ 1 wiersz w zestawie (0.00 s) Mariadb [BookstoredB]> 
Wstaw i aktualizuj rekord tabeli bazy danych

Chociaż nie zrobimy tego tutaj, możesz również usunąć rekord, jeśli nie jest już używany. Załóżmy na przykład, że chcemy usunąć „Alchemik" z Bookstbl.

Aby to zrobić, użyjemy USUWAĆ stwierdzenie w następujący sposób:

Mariadb [BookstoredB]> Usuń z księgarni, gdzie bookid = 6; 

Jak w przypadku AKTUALIZACJA, Dobrym pomysłem jest zrobić WYBIERAĆ po pierwsze, aby zobaczyć rekordy, na które mogą potencjalnie wpłynąć USUWAĆ.

Nie zapomnij też dodać GDZIE klauzula i stan (Bookid = 6) Aby wybrać konkretny rekord do usunięcia. W przeciwnym razie ryzykujesz usunięcie wszystkich wierszy w tabeli!

Jeśli chcesz połączyć dwa (lub więcej) pól, możesz użyć Concat oświadczenie. Załóżmy na przykład, że chcemy zwrócić zestaw wyników, który składa się z jednego pola z nazwą książki i autorem w formie „Alchemik (Paulo Coelho)”I kolejna kolumna z ceną.

Będzie to wymagało DOŁĄCZYĆ między Authorstbl I Bookstbl na wspólnym polu udostępnionym obiemAutorid):

Mariadb [BookstoredB]> Wybierz Conat (Bookstbl.BookName, „(”, autorstbl.Authorname, ')') jako opis, księgarnia.BookPrice z Authorstbl Dołącz do Bookstbl na autora.Autorid = Bookstbl.Autorid; 

Jak możemy zobaczyć, Concat pozwala nam dołączyć do wielu wyrażeń ciągów oddzielonych przecinkami. Zauważyłeś również, że wybraliśmy pseudonim Opis reprezentować zestaw wyników konkatenacji.

Wyjście powyższego zapytania jest pokazane na poniższym obrazku:

Zapytaj wiele pól w tabeli MySQL
Mariadb [BookstoredB]> Wybierz Conat (Bookstbl.BookName, „(”, autorstbl.Authorname, ')') jako opis, księgarnia.BookPrice z Authorstbl Dołącz do Bookstbl na autora.Autorid = Bookstbl.Autorid; +--------------------------------------------------------+-----------+ |. Opis |. BookPrice | +------------------------------------------------- -------+ -----------+ | A potem nie było (Agatha Christie) | 14.95 | |. Człowiek w brązowym garniturze (Agatha Christie) | 23.99 | |. Stojak (Stephen King) | 35.99 | |. Pet Sematary (Stephen King) | 17.95 | |. Zielona milę (Stephen King) | 29.99 | |. Alchemista (Paulo Coelho) | 25.00 | |. Nad rzeką Piedra usiadłem i płakaj (Paulo Coelho) | 18.95 | +------------------------------------------------- -------+ -----------+ 7 wierszy w zestawie (0.00 s) 
Zapytaj wiele pól w tabeli bazy danych

Utwórz użytkownika, aby uzyskać dostęp do bazy danych BookstoredB

Za pomocą źródło wykonać wszystko DML Operacje w bazie danych to zły pomysł. Aby tego uniknąć, możemy stworzyć nowy Mariadb Konto użytkownika (nazwiemy to Bookstoreuser) i przypisać wszystkie niezbędne uprawnienia dla BookstoredB:

Mariadb [BookstoredB]> Utwórz użytkownika [chronione e -mail] zidentyfikowane przez „YourPasswordhere”; Mariadb [BookstoredB]> Przyznać wszystkie przywileje na BookstoredB.* do [e -mail chroniony]; Mariadb [BookstoredB]> Przywileje spłukiwane; 
Utwórz nowego użytkownika bazy danych z uprawnieniami
Mariadb [BookstoredB]> Utwórz użytkownika [chronione e -mail] zidentyfikowane przez „TecMint”; Zapytanie OK, 0 dotkniętych wierszy (0.00 s) Mariadb [BookstoredB]> Przyznać wszystkie przywileje na BookstoredB.* do [e -mail chroniony]; Zapytanie OK, 0 dotkniętych wierszy (0.00 s) Mariadb [BookstoredB]> Przywileje spłukiwane; Zapytanie OK, 0 dotkniętych wierszy (0.00 s) 

Posiadanie dedykowanego, oddzielnego użytkownika dla każdej bazy danych zapobiegnie szkodom dla całej bazy danych, jeśli jedno konto zostanie zagrożone.

Dodatkowe wskazówki MySQL

Aby wyczyścić Mariadb monit, wpisz następujące polecenie i naciśnij Wchodzić:

Mariadb [BookstoredB]> \! jasne 

Aby sprawdzić konfigurację danej tabeli, zrób:

Mariadb [BookstoredB]> Wybierz kolumny w [nazwa tabeli tutaj]; 

Na przykład,

Mariadb [BookstoredB]> Pokaż kolumny w Bookstbl; 
Wypisz kolumny w tabeli bazy danych
Mariadb [BookstoredB]> Pokaż kolumny w Bookstbl; +-----------------+--------------+------+-----+-------------------+-----------------------------+ |. Pole | Typ | NULL | Klucz | Domyślnie | Dodatkowe | +-----------------+--------------+------+-----+--- ----------------+ -----------------------------+ | Bookid | int (11) | Nie |. Pri | NULL | Auto_increment | |. Nazwa książki | varchar (100) | Nie |. |. NULL | |. |. Autorid | int (11) | Nie |. Mul | NULL | |. |. BookPrice | dziesiętne (6,2) | Nie |. |. NULL | |. |. BooklastUpDated | znacznik czasu | Nie |. |. Current_timestamp | W aktualizacji Current_timestamp | |. Bookisavailable | Tinyint (1) | Tak | |. NULL | |. +-----------------+--------------+------+-----+--- ----------------+ -----------------------------+ 6 wierszy w zestaw (0.02 s) 
Wypisz kolumny w tabeli bazy danych

Szybka inspekcja ujawnia, że BookisAvillable Field przyznaje ZERO wartości. Ponieważ nie chcemy na to pozwolić, my ZMIENIAĆ stół w następujący sposób:

Mariadb [BookstoredB]> Alter Table Bookstbl Zmodyfikuj Bookisavailable Boolean, a nie NULL; 

(Nie krępuj się ponownie pokazać kolumn - podświetlony TAK Na powyższym obrazie powinien być teraz NIE).

Wreszcie, aby wyświetlić wszystkie bazy danych na serwerze, zrób:

Mariadb [BookstoredB]> Pokaż bazy danych; LUB Mariadb [BookstoredB]> Pokaż schematy; 
Wymień wszystkie bazy danych mysql
[[e -mail chroniony] ~]# mysql -u księgarnia -p -p Wprowadź hasło: Witamy w monitor Mariadb. Polecenia kończą się; lub \ g. Twój identyfikator połączenia Mariadb to 3 wersja serwerowa: 10.1.14-Mariadb Mariadb Server Copyright (C) 2000, 2016, Oracle, Mariadb Corporation AB i inni. Typ „Pomoc”; lub „\ h”, aby uzyskać pomoc. Typ „\ c”, aby wyczyścić bieżącą instrukcję wejściową. Mariadb [BookstoredB]> Pokaż bazy danych; +--------------------+ |. Baza danych | + --------------------+ | BookstoredB | |. Information_Schema | + --------------------+ 2 wiersze w zestawie (0.00 s) Mariadb [BookstoredB]> Pokaż schematy; +--------------------+ |. Baza danych | + --------------------+ | BookstoredB | |. Information_Schema | + --------------------+ 2 wiersze w zestawie (0.00 s) 

Poniższy obraz pokazuje wynik powyższego polecenia po uzyskaniu dostępu do monitu mariadb jako Bookstoreuser (Zwróć uwagę, że to konto nie może „zobaczyć” żadnych baz danych inne niż BookstoredB I Information_Schema (Dostępne dla wszystkich użytkowników):

Wymień wszystkie bazy danych mysql

Streszczenie

W tym artykule wyjaśniliśmy, jak uruchomić DML Operacje i sposób tworzenia bazy danych, tabel i dedykowanych użytkowników w bazie danych MariaDB. Dodatkowo udostępniliśmy kilka wskazówek, które mogą ułatwić Ci życie jako administrator systemu / bazy danych.

  1. MySQL Database Administration Part - 1
  2. MySQL Database Administration Part - 2
  3. MySQL Performance Tunning and Optimization - Część 3

Jeśli masz jakieś pytania dotyczące tego artykułu, nie wahaj się daj nam znać! Możesz użyć poniższego formularza komentarza, aby do nas dotrzeć.