[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 제한된 열에 키를 설정해야 합니다
  • index를 붙여서 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를 삭제하려면...
    drop_target.png
    > 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을 할 수 없다.

    소지식 총결산(수시 추기 예상)

  • varchar형 사이즈
  • [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 공식
  • 좋은 웹페이지 즐겨찾기