[DB 연결 클라이언트] mycli 가져오기 터미널에서MariDB/MySQL 쉽게 터치
전제 대상 독자
MariaDB(또는 MySQL)를 가져왔습니다.
아직 도입하지 않은 초보자는 필자가 쓴 이 글의MariaDB 도입부를 참고하세요.
왠지 SQL을 아시는 분.
SELECT
, INSERT
등이 들은 수준은 괜찮을 것 같다.※ SQL과 RDB를 제대로 배우고 싶은 사람은'간편한 SQL 시작 등 책부터 추천!
CLI (그 터미널의 검은색 화면) 로 DB를 가볍게 놀고 싶은 사람
정말 대규모 DB를 즐겼다면Sequel Pro 등 GUI를 사용했다면 역시 홀가분했다.
그냥 개인적으로 개발하거나 실험을 조금 접해보면 mycli가 편할 텐데...내 생각엔터치 터치도 훈련할 수 있어요!
미리 mycli 준비해주세요.
말하자면 mycli가 뭐예요?
mycli는'MySQL(또는MariaDB) 등 일반적인 DB 관리 시스템의 CLI 인터페이스'다.
※ mycli는 MySQL client의 생략입니다.CLI는 Command Line Interface입니다.
그렇다면 mycli를 사용하면 어떤 즐거움이 있을까요?
보충이 끝났기 때문에 종착역에서 쉽게 지령을 할 수 있고 typo를 줄이는 것이 가장 좋다.
일반적인 mysql 명령으로 연결된 화면입니다.잘 안 보여, 명령의 보충도 소용없어...
이것은 mycli 명령으로 연결된 화면입니다.색깔도 있고, 후보도 있고, 좋아요...!
mycli 설치
pip
또는 homebrew
를 사용하여 설치합니다.-- Mac使ってるなら下記で
$ brew update
$ brew install mycli
-- python使いなら下記でも
$ pip install mycli
mycli 가 있는지 확인하십시오.$ mycli --version
Version: 1.21.1
mycli 색상 등 설정 변경
참조mycli 공식 사이트 변경 설정 파일
~/.myclirc
.# 色変更(若草色のようになります。)
syntax_style = native
# キーのバインディングをviに(vimキーバインドわからないならemacsのままでおk!)
key_bindings = vi
# 候補選択を広めに表示
wider_completion_menu = True
mycli로 MariDB를 가지고 놀아봐요.
DB에 연결
아직 DB를 하지 않은 사람은 어떤 DB가 있어도 데이터베이스 이름을
생략하고 다음 데이터베이스 일람표를 확인해 보세요.
$ mycli -uユーザー名 -pパスワード データベース名
-- 例
$ mycli -uroot -pHOGEHOGE fuga_db
데이터베이스 목록 확인
> SHOW DATABASES;
데이터베이스 만들기
> CREATE DATABASE IF NOT EXISTS test;
데이터베이스 삭제
> DROP DATABASE IF EXISTS test;
접속된 호스트 이름 확인
> SHOW VARIABLES LIKE 'hostname';
테이블 작성
CREATE TABLE 기사/MySQL 공식
참고로 다음 조회에서 이런 표를 만듭니다.
관계는 이런 느낌tbls의 도구로 찍은 즉석임에도 불구하고)
CREATE TABLE テーブル名 (カラム名 データ型 制約,...
FOREIGN KEY インデックス名 (カラム名, ...)
REFERENCES 参照先テーブル名 (カラム名, ...),
INDEX インデックス名(カラム名) COMMENT 'こめんと');
-- 例
> 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 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;
테이블 구조 확인
EXPLAIN 구문
-- DESCRIBEはEXPLAINのシノニム(同義語)です
> DESCRIBE テーブル名;
-- 例
> DESCRIBE members;
※ 참조『 정수형(진수치)-INTER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT/MySQL 공식 』
테이블에서 CREATE 문 표시
SHOW CREATE TABLE 구문
DESCRIBE 문서보다 더 자세한 정보를 얻을 수 있습니다.
> SHOW CREATE TABLE テーブル名;
테이블 무시
> DROP TABLE IF EXISTS テーブル名
You're about to run a destructive command.
Do you want to proceed? (y/n): y
Your call!
index 확인
> SHOW INDEX FROM テーブル名;
-- 例
> 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 |
+---------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------------------+
상술한 의미는 다음과 같다.항목
설명
Table
테이블 이름
Non_unique
색인에 중복을 포함할 수 없는 경우는 0이고, 가능한 경우는 1입니다.
Key_name
색인 이름.색인이 주 키워드인 경우 이름은 항상 PRIMARY입니다.
Seq_in_index
색인에 있는 열 시퀀스 번호, 1부터 시작합니다.
Column_name
열 이름
Collation
열을 정렬하는 방법입니다.MySQL에서 A(오름차순) 또는 NULL(정렬되지 않음)의 임의의 값입니다.
Cardinality
열에서 얻을 수 있는 값의 종류를 가리킨다.MySQL이 결합을 실행할 때 가디건(농도)이 높을수록 이 인덱스를 사용할 가능성이 높다.
Sub_part
색인 열만 일부일 경우 색인 문자의 수입니다.열 전체가 색인을 설정할 때 NULL
Packed
키 포장 방법을 표시합니다.포장하지 않은 상태에서 NULL.
NULL
열에 NULL 값이 포함될 수 있는 경우 예(Yes), 그렇지 않으면\"\"
Index_type
사용한 색인 방법(BTREE, FULTEXT, HASH, RTREE)
Comment
이 인덱스에 대한 정보 (예를 들어 인덱스가 비활성화되었을 때disabled)
Index_comment
색인이 작성될 때 색인에 대한 COMMENT 속성의 주석
※ 참고
『 SHOW INDEX 구문/MySQL 공식 』
『 MySQL(InnoDB)의 저차 품질 열에 INDEX를 붙이다 』
참고로 색인 방법에 관한 B-tree는'B-tree 색인 입문/Qita 기사와'B-tree 알고리즘/B-tree algorithm'등을 추천한다.
어쨌든 이제 색인을 잘 붙이면 색인 종류가 나오고 검색도 빨라지겠죠.
작성된 테이블의 열에 index 추가
> ALTER TABLE テーブル名 ADD INDEX インデックス名(カラム名);
색인 삭제
DROP INDEX 구문/공식
Altertable 구문/공식
> DROP INDEX インデックス名 ON テーブル名
-- もしくは
> ALTER TABLE テーブル名 DROP INDEX インデックス名;
색인 수정
> ALTER TABLE テーブル名
DROP INDEX インデックス名,
ADD FULLTEXT INDEX インデックス名 (カラム名) COMMENT "コメント";
-- 例
> ALTER TABLE members
DROP INDEX idx_members_id_01,
ADD INDEX idx_members_01 (id) COMMENT "HOGE";
데이터 삽입(INSERT)
INSERT 구문
> INSERT INTO テーブル名 (カラム名) VALUES (値);
-- 例①(全カラムの情報入れる時はカラム名指定いりません、してもいいけど)
> INSERT INTO members
VALUES
(1, '織田信長', '[email protected]', 'HOGE', '/oda_icon.jpg', '2020-12-02 1:14:22', '2020-12-02 1:14:22');
-- 例②(特定のカラムに情報入れる時)
> INSERT INTO members
(name, email, password, picture, created)
VALUES
('豊臣秀吉', '[email protected]', 'FUGA', '/toyo_icon.jpg', '2020-12-01 10:00:00');
데이터 행 삭제(DELETE)
DELETE 문
> DELETE FROM テーブル名;
-- 例①(全部の行消えます)
DELETE FROM members;
-- 例②(限定したいならWHERE句使うとか)
DELETE FROM members WHERE id=3;
데이터 선택(SELECT)
SELECT 문
> SELECT カラム名, FROM テーブル;
-- 例①特定のカラム
> SELECT id, name FROM members;
-- 例②全てのカラム
> SELECT * FROM members;
-- 例③特定の行のみ
> 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')
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
KEY가 하나뿐인 열을 설치한 KEY는 DROP을 할 수 없다.소지식 총결산(수시 추기 예상)
[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]
varchar는 가변 길이의 문자열입니다.고정 길이에는 char형이 있습니다.위 M은 문자열의 최대 열 길이를 나타내며 0에서 65532까지의 범위를 설정합니다.가능하지만 유효한 최대 길이는 최대 행 크기와 사용되는 문자 세트에 따라 달라집니다.utf-8 문자는 문자당 최대 3바이트가 필요하기 때문에 utf-8 문자 집합을 사용하는 VARCHAR 열은 최대 21844글자로 성명할 수 있다.
※ 참고
UTF-8이란?만약 문자 인코딩의 구조를 알게 된다면, 아무리 부호가 어지러워도 당황하지 않을 것이다
공식 VARCHAR/MariadB
사이트 축소판 그림
mycli 공식 문서
MyCLI – A MySQL/MariaDB Client with Auto-completion and Syntax-highlighting )
mycli 너무 편해.
데이터베이스 객체의 이름 규약/Qita 기사
MySQL 데이터 유형/DBOnline
제11장 데이터형/MySQL 공식
Reference
이 문제에 관하여([DB 연결 클라이언트] mycli 가져오기 터미널에서MariDB/MySQL 쉽게 터치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kumamoto/articles/d2fa2826e0fc55텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)