MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Gunakan mycli dan Pelajari MariaDB/MySQL dengan nyaman di terminal!

Target pemirsa untuk artikel ini

  • MariaDB (atau MySQL) sudah terinstal

  • Tahu beberapa SQL
    Jika Anda pernah mendengar tentang SELECT dan INSERT , kamu akan baik-baik saja.

  • Ingin bermain-main dengan DB menggunakan CLI (layar hitam terminal)
    Jika Anda ingin mengoperasikan DB skala penuh, lebih mudah menggunakan GUI seperti Sequel Pro, tetapi jika Anda hanya ingin menyentuh DB, lebih mudah menggunakan mycli di terminal.

Jika Anda ingin membaca versi Jepang dari artikel ini,
silakan buka yang ini.

Persiapan Ayo siapkan mycli!

Apa itu mycli?

mycli adalah antarmuka CLI untuk sistem manajemen DB umum seperti MySQL (dan MariaDB).
mycli adalah singkatan dari MySQL db client.

Jadi, apa yang membuat Anda senang menggunakan mycli?

Bagian terbaiknya adalah penyelesaiannya memudahkan mengetik perintah di terminal dan mengurangi kesalahan ketik.

  • Perintah dasar akan dilengkapi.
  • Nama tabel dan saran penyelesaian lainnya akan ditampilkan.
  • Mudah dilihat dengan setelan warna.


Tangkapan layar di atas menunjukkan layar koneksi menggunakan perintah mysql normal. Sulit dilihat dan penyelesaian perintah tidak berfungsi.


Berikut adalah tangkapan layar koneksi dengan perintah mycli. Itu berwarna dan memiliki daftar kandidat yang bagus!

Instal mycli

Anda dapat menginstal mycli dengan homebrew atau pip .

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

Setelah itu, centang mycli berhasil diinstal.

$ mycli --version
Version: 1.21.1

Konfigurasi pengaturan mycli, warna, ikatan kunci dll,,,

Kami akan mengubah file konfigurasi ~/.myclirc dengan merujuk ke situs resmi 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

Mari kita coba tweak MariaDB (MySQL) dengan mycli.

Hubungkan ke DB(DataBase)

Jika Anda belum membuat DB, atau jika Anda tidak ingat jenis DB yang Anda miliki, hilangkan nama database dan coba "Periksa Daftar DB" berikut ini.

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

-- example
$ mycli -uroot -pBARBAR foo_db

Periksa Daftar DB

> SHOW DATABASES;

Buat DB

> CREATE DATABASE IF NOT EXISTS test;

Hapus DB

> DROP DATABASE IF EXISTS test;

Periksa nama host tujuan koneksi.

> SHOW VARIABLES LIKE 'hostname';

Buat Tabel

Query berikut akan membuat tabel seperti ini.

Begini tampilan relasinya (dibuat oleh 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)
);

Tampilkan Daftar Tabel

> SHOW TABLES;

Periksa Struktur Tabel

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

-- example
> DESCRIBE members;

Tampilkan kueri Buat Tabel

Anda bisa mendapatkan informasi lebih rinci daripada pernyataan DESCRIBE dari kueri berikut.

> SHOW CREATE TABLE TABLE_NAME;

Hapus 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!

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

Arti dari indikasi di atas adalah sebagai berikut.

Item Deskripsi
Tabel Nama tabel
Non_unik 0 jika indeks tidak boleh berisi duplikat, 1 jika bisa.
Nama_kunci Nama indeks jika indeks ini adalah kunci utama, nama kuncinya selalu PRIMARY
Seq_in_index Nomor urut kolom dalam indeks, mulai dari 1.
Nama_kolom Nama kolom
Koleksi Bagaimana kolom diurutkan; di MySQL, ini adalah "A" (naik) atau NULL (tidak disortir)
Kardinalitas Ini mengacu pada jenis nilai yang dapat diambil oleh kolom. Semakin tinggi kardinalitas, semakin besar kemungkinan MySQL akan menggunakan indeks ini saat melakukan join.
Sub_part Jika kolom hanya diindeks sebagian, jumlah karakter yang diindeks. NULL jika seluruh kolom diindeks.
Dikemas Menunjukkan bagaimana kunci akan dikemas. NULL jika tidak dikemas.
NULL Jika kolom ini dapat berisi nilai NULL, maka YES digunakan; jika tidak, '' digunakan.
Tipe_indeks Metode pengindeksan yang digunakan (BTREE、FULLTEXT、HASH、RTREE)
Komentar Informasi tentang indeks ini (misalnya dinonaktifkan jika indeks dinonaktifkan)
Index_comment Komentar apa pun yang diberikan untuk indeks di atribut COMMENT saat indeks dibuat.

Menambahkan indeks ke kolom dalam tabel yang telah dibuat

> ALTER TABLE TABLE_NAME ADD INDEX INDEX_NAME(COLUMN_NAME);

Hapus indeks

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

Perbarui komentar indeks

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

Masukkan data

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

Hapus data

> DELETE FROM TABLE_NAME;

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

Pilih data

> SELECT COLUMN_NAME, FROM TABLE_NAME;

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

+α Tempat penulis pernah terjebak.

Kolom dengan AUTO_INCREMENT batasan harus disetel ke kunci.

Mari tambahkan indeks dan atur 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')

Tidak bisa DROP INDEX

Periksa indeks berikut menggunakan SHOW INDEX , dan coba hapus PRIMARY tetapi,,,

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

Alasannya adalah bahwa nama indeks dari kunci utama selalu PRIMARY, tetapi PRIMARY adalah kata yang dicadangkan, jadi Anda harus menentukannya sebagai pengenal yang dikutip atau kesalahan akan terjadi. Ini akan berfungsi jika Anda melampirkannya di backquote sebagai berikut

> ALTER TABLE members DROP INDEX `PRIMARY`;

Catatan:Anda tidak dapat MENGHAPUS KUNCI kolom yang hanya memiliki satu KUNCI karena AUTO_INCREMENT sudah diatur.

Referensi

dokumen resmi mycli
MyCLI – Klien MySQL/MariaDB dengan Pelengkapan Otomatis dan Penyorotan Sintaks / 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. Perbedaan Antara TRIM() dan TRIM_ORACLE() di MariaDB

  2. Membandingkan Pemulihan Point-in-Time Amazon RDS dengan ClusterControl

  3. Dukungan untuk MariaDB 10.4 di dbForge Studio yang Ditingkatkan untuk MySQL, v.8.1

  4. Otomasi Basis Data dengan Wayang:Menyebarkan Replikasi MySQL &MariaDB

  5. Bermigrasi dari Maxscale ke ProxySQL Load Balancer