MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Използвайте mycli и научете MariaDB/MySQL удобно в терминал!

Целева аудитория за тази статия

  • MariaDB (или MySQL) вече е инсталиран

  • Познайте малко SQL
    Ако сте чували за SELECT и INSERT , трябва да сте добре.

  • Искате да си поиграете с DB с помощта на CLI (черния екран на терминала)
    Ако искате да работите с пълномащабна DB, е по-лесно да използвате GUI като Sequel Pro, но ако просто искате да докоснете DB, е по-лесно да използвате mycli на терминала.

※ Ако искате да прочетете японската версия на тази статия,
моля, отидете на този.

Подготовка Да настроим mycli!

Какво изобщо е mycli?

mycli е CLI интерфейс за общи системи за управление на DB като MySQL (и MariaDB).
※mycli означава MySQL db client.

И така, какво се радвате да използвате mycli?

Най-хубавото е, че завършването улеснява въвеждането на команди в терминала и намалява правописните грешки.

  • Основните команди ще бъдат допълнени.
  • Ще се покажат имената на таблици и други предложения за завършване.
  • Лесно се вижда с настройките за цвят.


Екранната снимка по-горе показва екрана за свързване с помощта на нормалната команда mysql. Трудно се вижда и завършването на командата не работи.


Ето екранна снимка на връзката с командата mycli. Цветно е и има хубав списък с кандидати!

Инсталирайте mycli

Можете да инсталирате mycli чрез homebrew или pip .

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

След това проверете дали mycli е инсталиран успешно.

$ mycli --version
Version: 1.21.1

Конфигурирайте настройката на mycli, цвят, свързване на клавиши и т.н.,,,

Ще променим конфигурационния файл ~/.myclirc като се позовавате на официалния уебсайт на 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

Нека опитаме да настроим MariaDB (MySQL) с mycli.

Свържете се с DB (база от данни)

Ако все още не сте създали БД или ако не си спомняте какъв вид БД сте имали, пропуснете името на базата данни и опитайте следния "Проверка на DB List".

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

-- example
$ mycli -uroot -pBARBAR foo_db

Проверете списъка с DB

> SHOW DATABASES;

Създаване на БД

> CREATE DATABASE IF NOT EXISTS test;

Изтриване на DB

> DROP DATABASE IF EXISTS test;

Проверете името на хоста на местоназначението на връзката.

> SHOW VARIABLES LIKE 'hostname';

Създаване на таблица

Следващата заявка ще създаде таблица като тази.

Ето как изглежда връзката (създадена от tbls)

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)
);

Показване на списък с таблици

> SHOW TABLES;

Проверете структурата на таблицата

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

-- example
> DESCRIBE members;

Показване на заявката за създаване на таблица

Можете да получите по-подробна информация от изразите DESCRIBE от следната заявка.

> SHOW CREATE TABLE TABLE_NAME;

Изтриване на таблица

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

Проверете индекса

> 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 |
+---------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------------------+

Значенията на горните индикации са както следва.

Елемент Описание
Таблица Име на таблица
Не_уникално 0, ако индексът не може да съдържа дубликати, 1, ако може.
Име_на_ключ Име на индекс, ако този индекс е първичен ключ, името на ключа винаги е PRIMARY
Seq_in_index Поредният номер на колоната в индекса, започващ от 1.
Име_на_колона Име на колона
Сравняване Как се сортира колоната; в MySQL това е или "A" (възходящо), или NULL (несортирано)
Кардиналност Отнася се за типовете стойности, които една колона може да приеме. Колкото по-висока е мощността, толкова по-вероятно е MySQL да използва този индекс при извършване на присъединяване.
Под_част Ако колоната е само частично индексирана, броят на индексираните знаци. NULL, ако цялата колона е индексирана.
Опакован Показва как ще бъде опакован ключът. NULL, ако не е опакован.
NULL Ако тази колона може да съдържа стойности NULL, тогава се използва YES; в противен случай се използва ''.
Тип_индекс Използван метод на индексиране (BTREE、FULLTEXT、HASH、RTREE)
Коментар Информация за този индекс (напр. деактивиран, ако индексът е деактивиран)
Коментар_индекс Всеки коментар, предоставен за индекса в атрибута COMMENT при създаването на индекса.

Добавете индекс към колона в таблица, която вече е създадена

> ALTER TABLE TABLE_NAME ADD INDEX INDEX_NAME(COLUMN_NAME);

Изтриване на индекс

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

Актуализиране на индексния коментар

> 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";

Вмъкване на данни

> 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');

Изтриване на данни

> DELETE FROM TABLE_NAME;

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

Изберете данни

> SELECT COLUMN_NAME, FROM TABLE_NAME;

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

+α Където авторът веднъж закъса.

Колони с AUTO_INCREMENT ограничението трябва да бъде настроено на ключ.

Нека добавим индекси и зададем 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')

Не може да DROP INDEX

Проверете следния индекс с помощта на SHOW INDEX и опитайте да изтриете PRIMARY но,,,

> 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")

Причината е, че индексното име на първичния ключ винаги е PRIMARY, но PRIMARY е запазена дума, така че трябва да го посочите като идентификатор в кавички, в противен случай ще възникне грешка. Ще работи, ако го поставите в обратна цитатка, както следва

> ALTER TABLE members DROP INDEX `PRIMARY`;

Забележка:не можете да ИЗПУСКАТЕ КЛЮЧА на колона, която има само един КЛЮЧ, защото AUTO_INCREMENT е зададено.

Справка

официален документ на mycli
MyCLI – MySQL/MariaDB клиент с автоматично довършване и подчертаване на синтаксиса / 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. Как работи RLIKE в MariaDB

  2. Как да настроите репликация на MariaDB 10.3 с помощта на Ansible и Vagrant

  3. Трансформационни истории на конференцията MariaDB OpenWorks

  4. Съвети за управление на схеми за MySQL и MariaDB

  5. Надстройките с нулев престой стават лесни с ClusterControl