MariaDB
 sql >> Database >  >> RDS >> MariaDB

Usa mycli e impara MariaDB/MySQL comodamente in un terminale!

Pubblico di destinazione per questo articolo

  • MariaDB (o MySQL) già installato

  • Conoscere un po' di SQL
    Se hai sentito parlare di SELECT e INSERT , dovresti stare bene.

  • Vuoi giocare con il DB usando la CLI (lo schermo nero del terminale)
    Se vuoi utilizzare un DB completo, è più facile usare una GUI come Sequel Pro, ma se vuoi solo toccare il DB, è più facile usare il terminale mycli on.

※ Se vuoi leggere la versione giapponese di questo articolo,
per favore vai a questo.

Preparazione Prepariamo mycli!

Che cos'è mycli comunque?

mycli è un'interfaccia CLI per i comuni sistemi di gestione di DB come MySQL (e MariaDB).
※mycli sta per MySQL db client.

Allora, cosa sei felice di usare mycli?

La parte migliore è che il completamento semplifica la digitazione dei comandi sul terminale e riduce gli errori di battitura.

  • I comandi di base verranno integrati.
  • Verranno visualizzati i nomi delle tabelle e altri suggerimenti per il completamento.
  • Facile da vedere con le impostazioni del colore.


Lo screenshot sopra mostra la schermata di connessione usando il normale comando mysql. È difficile da vedere e il completamento del comando non funziona.


Ecco uno screenshot della connessione con il comando mycli. È colorato e ha una bella lista di candidati!

Installa mycli

Puoi installare mycli tramite homebrew o pip .

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

Successivamente, controlla mycli installato correttamente.

$ mycli --version
Version: 1.21.1

Configura l'impostazione di mycli, il colore, le associazioni dei tasti ecc,,,

Cambieremo il file di configurazione ~/.myclirc facendo riferimento al sito ufficiale 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

Proviamo a modificare MariaDB (MySQL) con mycli.

Connessione a DB(DataBase)

Se non hai ancora creato un DB, o se non ricordi che tipo di DB avevi, ometti il ​​nome del database e prova il seguente "Check DB List".

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

-- example
$ mycli -uroot -pBARBAR foo_db

Verifica elenco DB

> SHOW DATABASES;

Crea DB

> CREATE DATABASE IF NOT EXISTS test;

Elimina DB

> DROP DATABASE IF EXISTS test;

Verifica il nome host della destinazione della connessione.

> SHOW VARIABLES LIKE 'hostname';

Crea tabella

La query seguente creerà una tabella come questa.

Ecco come appare la relazione (creata da 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)
);

Mostra elenco tabelle

> SHOW TABLES;

Verifica la struttura della tabella

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

-- example
> DESCRIBE members;

Mostra la query di creazione della tabella

È possibile ottenere informazioni più dettagliate rispetto alle istruzioni DESCRIBE dalla query seguente.

> SHOW CREATE TABLE TABLE_NAME;

Elimina tabella

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

Controlla l'indice

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

I significati delle indicazioni di cui sopra sono i seguenti.

Articolo Descrizione
Tabella Nome tabella
Non_unico 0 se l'indice non può contenere duplicati, 1 se può.
Nome_chiave Nome indice se questo indice è chiave primaria, il nome della chiave è sempre PRIMARIA
Seq_in_index Il numero di sequenza della colonna nell'indice, a partire da 1.
Nome_colonna Nome colonna
Fascicolazione Come è ordinata la colonna; in MySQL, questo è "A" (crescente) o NULL (non ordinato)
Cardinalità Si riferisce ai tipi di valori che una colonna può assumere. Maggiore è la cardinalità, più è probabile che MySQL utilizzi questo indice durante l'esecuzione di un join.
Sotto_parte Se la colonna è solo parzialmente indicizzata, il numero di caratteri indicizzati. NULL se l'intera colonna è indicizzata.
Imballato Indica come verrà imballata la chiave. NULL se non è imballato.
NULLO Se questa colonna può contenere valori NULL, viene utilizzato YES; in caso contrario, viene utilizzato ''.
Tipo_indice Metodo di indicizzazione utilizzato (BTREE、FULLTEXT、HASH、RTREE)
Commenta Informazioni su questo indice (ad es. disabilitato se l'indice è disabilitato)
Commento_indice Qualsiasi commento fornito per l'indice nell'attributo COMMENT al momento della creazione dell'indice.

Aggiungi indice a una colonna in una tabella che è già stata creata

> ALTER TABLE TABLE_NAME ADD INDEX INDEX_NAME(COLUMN_NAME);

Elimina indice

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

Aggiorna il commento all'indice

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

Inserisci dati

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

Elimina i dati

> DELETE FROM TABLE_NAME;

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

Seleziona i dati

> SELECT COLUMN_NAME, FROM TABLE_NAME;

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

+α Dove l'autore una volta si è bloccato.

Colonne con AUTO_INCREMENT il vincolo deve essere impostato su chiave.

Aggiungiamo gli indici e impostiamo 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')

Impossibile DROP INDEX

Controlla un indice seguente usando SHOW INDEX e prova a eliminare PRIMARY ma,,,

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

Il motivo è che il nome dell'indice della chiave primaria è sempre PRIMARY, ma PRIMARY è una parola riservata, quindi è necessario specificarla come identificatore tra virgolette, altrimenti si verificherà un errore. Funzionerà se lo racchiudi in una virgoletta come segue

> ALTER TABLE members DROP INDEX `PRIMARY`;

Nota:non puoi DROP la KEY di una colonna che ha una sola KEY perché AUTO_INCREMENT è impostato.

Riferimento

documento ufficiale mycli
MyCLI – Un client MySQL/MariaDB con completamento automatico ed evidenziazione della sintassi / TecMint