MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Korzystaj z mycli i ucz się MariaDB/MySQL wygodnie w terminalu!

Docelowi odbiorcy tego artykułu

  • MariaDB (lub MySQL) już zainstalowana

  • Poznaj trochę SQL
    Jeśli słyszałeś o SELECT i INSERT , powinno być dobrze.

  • Chcesz pobawić się z DB za pomocą CLI (czarny ekran terminala)
    Jeśli chcesz obsługiwać pełnowymiarową bazę danych, łatwiej jest użyć graficznego interfejsu użytkownika, takiego jak Sequel Pro, ale jeśli chcesz po prostu dotknąć bazy danych, łatwiej jest użyć mycli na terminalu.

※ Jeśli chcesz przeczytać japońską wersję tego artykułu,
proszę przejdź do tego.

Przygotowanie Skonfigurujmy mycli!

Czym właściwie jest mycli?

mycli to interfejs CLI dla popularnych systemów zarządzania bazami danych, takich jak MySQL (i MariaDB).
※mycli oznacza klienta bazy danych MySQL.

Więc co Ci się podoba w używaniu mycli?

Najlepsze jest to, że uzupełnianie ułatwia wpisywanie poleceń na terminalu i zmniejsza liczbę literówek.

  • Podstawowe polecenia zostaną uzupełnione.
  • Zostaną wyświetlone nazwy tabel i inne sugestie uzupełnienia.
  • Łatwe do zobaczenia dzięki ustawieniom kolorów.


Powyższy zrzut ekranu pokazuje ekran połączenia przy użyciu normalnego polecenia mysql. Trudno to zobaczyć, a uzupełnianie poleceń nie działa.


Oto zrzut ekranu połączenia z poleceniem mycli. Jest kolorowy i ma ładną listę kandydatów!

Zainstaluj mycli

Możesz zainstalować mycli przez homebrew lub pip .

-- If you're Mac user
$ brew update
$ brew install mycli
-- If you're not
$ pip install mycli

Następnie sprawdź, czy mycli zostało zainstalowane pomyślnie.

$ mycli --version
Version: 1.21.1

Skonfiguruj ustawienia mycli, kolor, przypisania klawiszy itp.,

Zmienimy plik konfiguracyjny ~/.myclirc odwołując się do oficjalnej strony mycli.

# Change coloro(The text will be a young grass color.)
syntax_style = native
# Change key bindings
key_bindings = vi
# Display a wider selection of candidates
wider_completion_menu = True

Spróbujmy ulepszyć MariaDB (MySQL) za pomocą mycli.

Połącz z bazą danych (baza danych)

Jeśli nie utworzyłeś jeszcze bazy danych lub nie pamiętasz, jaki rodzaj posiadałeś, pomiń nazwę bazy danych i spróbuj wykonać następujące czynności:„Sprawdź listę baz danych”.

$ mycli -u(USER_NAME) -p(PASSWORD) [DATABASE_NAME]

-- example
$ mycli -uroot -pBARBAR foo_db

Sprawdź listę baz danych

> SHOW DATABASES;

Utwórz bazę danych

> CREATE DATABASE IF NOT EXISTS test;

Usuń bazę danych

> DROP DATABASE IF EXISTS test;

Sprawdź nazwę hosta docelowego połączenia.

> SHOW VARIABLES LIKE 'hostname';

Utwórz tabelę

Poniższe zapytanie utworzy taką tabelę.

Oto jak wygląda relacja (utworzona przez tabele)

CREATE TABLE TABLE_NAME (COLUMN_NAME DATA_TYPE CONSTRAINT,...
FOREIGN KEY INDEX_NAME (COLUMN_NAME, ...) 
   REFERENCES TABLE_NAME_TO_REFERENCE (COLUMN_NAME, ...),
INDEX INDEX_NAME(COLUMN_NAME) COMMENT 'COMMENT');

-- example
> CREATE TABLE IF NOT EXISTS members (
id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL UNIQUE,
email varchar(255) NOT NULL UNIQUE,
password varchar(100) NOT NULL,
picture varchar(255) NOT NULL DEFAULT '/default_icon.jpg',
created DATETIME NOT NULL,
modified TIMESTAMP NOT NULL,
-- Index queries tend to be long, so I divide them as follows
INDEX idx_members_id_01(id) COMMENT 'for search member quickly'
);

> CREATE TABLE IF NOT EXISTS posts (
post_id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id MEDIUMINT NOT NULL,
content VARCHAR(900),
posted_at TIMESTAMP NOT NULL,
FOREIGN KEY fk_posts_userid_01(user_id)
    REFERENCES members (id)
);

Pokaż listę tabel

> SHOW TABLES;

Sprawdź strukturę tabeli

-- DESCRIBE is a synonym for EXPLAIN.
> DESCRIBE TABLE_NAME;

-- example
> DESCRIBE members;

Pokaż zapytanie tworzenia tabeli

Możesz uzyskać bardziej szczegółowe informacje niż instrukcje DESCRIBE z następującego zapytania.

> SHOW CREATE TABLE TABLE_NAME;

Usuń tabelę

> DROP TABLE IF EXISTS TABLE_NAME
You're about to run a destructive command.
Do you want to proceed? (y/n): y
Your call!

Sprawdź indeks

> SHOW INDEX FROM TABLE_NAME;
-- example
> SHOW INDEX FROM members;
+---------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------------------+
| Table   | Non_unique | Key_name          | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment             |
+---------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------------------+
| members | 0          | PRIMARY           | 1            | id          | A         | 0           | <null>   | <null> |      | BTREE      |         |                           |
| members | 0          | name              | 1            | name        | A         | 0           | <null>   | <null> |      | BTREE      |         |                           |
| members | 0          | email             | 1            | email       | A         | 0           | <null>   | <null> |      | BTREE      |         |                           |
| members | 1          | idx_members_id_01 | 1            | id          | A         | 0           | <null>   | <null> |      | BTREE      |         | for search member quickly |
+---------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------------------+

Znaczenie powyższych wskazań jest następujące.

Przedmiot Opis
Tabela Nazwa tabeli
Nieunikatowe 0, jeśli indeks nie może zawierać duplikatów, 1, jeśli może.
Nazwa_klucza Nazwa indeksu jeśli ten indeks jest kluczem podstawowym, nazwa klucza to zawsze PRIMARY
Seq_in_index Numer sekwencyjny kolumny w indeksie, zaczynając od 1.
Nazwa_kolumny Nazwa kolumny
Składanie Jak sortowana jest kolumna; w MySQL jest to „A” (rosnąco) lub NULL (niesortowane)
Kardynalność Odnosi się do typów wartości, jakie może przyjąć kolumna. Im wyższa kardynalność, tym większe prawdopodobieństwo, że MySQL użyje tego indeksu podczas wykonywania złączenia.
Podczęść Jeśli kolumna jest tylko częściowo indeksowana, liczba indeksowanych znaków. NULL, jeśli indeksowana jest cała kolumna.
Pakiety Wskazuje, jak klucz zostanie spakowany. NULL, jeśli nie jest spakowany.
NULL Jeśli ta kolumna może zawierać wartości NULL, używane jest TAK; w przeciwnym razie używany jest ''.
Typ_indeksu Użyta metoda indeksowania (BTREE、FULLTEXT、HASH、RTREE)
Komentarz Informacje o tym indeksie (np. wyłączony, jeśli indeks jest wyłączony)
Komentarz_indeksowy Wszelkie komentarze dostarczone do indeksu w atrybucie COMMENT podczas tworzenia indeksu.

Dodaj indeks do kolumny w tabeli, która została już utworzona

> ALTER TABLE TABLE_NAME ADD INDEX INDEX_NAME(COLUMN_NAME);

Usuń indeks

> DROP INDEX INDEX_NAME ON TABLE_NAME;
-- Or that following is also OK
> ALTER TABLE TABLE_NAME DROP INDEX INDEX_NAME;

Zaktualizuj komentarz do indeksu

> ALTER TABLE TABLE_NAME
 DROP INDEX INDEX_NAME,
 ADD FULLTEXT INDEX INDEX_NAME (COLUMN_NAME) COMMENT "COMMENT";

-- example
> ALTER TABLE members 
 DROP INDEX idx_members_id_01, 
 ADD INDEX idx_members_01 (id) COMMENT "ARA ARA";

Wstaw dane

> INSERT INTO TABLE_NAME (COLUMN_NAME) VALUES (VALUE);

-- example1
> INSERT INTO members 
VALUES
(1, 'Nobunaga Oda', '[email protected]', 'HOGE', '/oda_icon.jpg', '2020-12-02 1:14:22', '2020-12-02 1:14:22');

-- example2
> INSERT INTO members
(name, email, password, picture, created)
VALUES
('Hideyoshi Toyotomi', '[email protected]', 'FUGA', '/toyo_icon.jpg', '2020-12-01 10:00:00');

Usuń dane

> DELETE FROM TABLE_NAME;

-- example1
DELETE FROM members;
-- example2
DELETE FROM members WHERE id=3;

Wybierz dane

> SELECT COLUMN_NAME, FROM TABLE_NAME;

-- example1
> SELECT id, name FROM members;
-- example2
> SELECT * FROM members;
-- example3
> SELECT * FROM members WHERE id=3;

+α Tam, gdzie autor utknął.

Kolumny z AUTO_INCREMENT ograniczenie musi być ustawione na klucz.

Dodajmy indeksy i ustawmy PRIMARY KEY .

CREATE TABLE members (
id INT NOT NULL AUTO_INCREMENT,
name varchar(255)
);
(1075, 'Incorrect table definition; there can be only one auto column and it must be defined as a key')

Nie można DROP INDEX

Sprawdź następujący indeks za pomocą SHOW INDEX i spróbuj usunąć PRIMARY ale,,,

> ALTER TABLE members DROP INDEX PRIMARY;
(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'PRIMARY ON members' at line 1")

Powodem jest to, że nazwa indeksu klucza podstawowego to zawsze PRIMARY, ale PRIMARY jest słowem zastrzeżonym, więc musisz podać go jako identyfikator w cudzysłowie, w przeciwnym razie wystąpi błąd. Zadziała, jeśli umieścisz go w cudzysłowie w następujący sposób

> ALTER TABLE members DROP INDEX `PRIMARY`;

Uwaga:nie możesz UPUŚĆ KLUCZA kolumny, która ma tylko jeden KLUCZ, ponieważ AUTO_INCREMENT jest ustawiony.

Odniesienie

oficjalny dokument mycli
MyCLI – klient MySQL/MariaDB z automatycznym uzupełnianiem i podświetlaniem składni / TecMint


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wdrożyć klaster MariaDB 10.5 w celu zapewnienia wysokiej dostępności

  2. Operatory zbiorów SQL MariaDB

  3. Uruchamianie ProxySQL jako kontenera pomocniczego na Kubernetes

  4. Jak zaktualizować MariaDB 5.5 do MariaDB 10.1 w CentOS/RHEL 7 i systemach Debian

  5. Pełna lista zestawień obsługiwanych przez MariaDB