Webエンジニアであれば、MySQLコマンドの使い方を覚えることは必須。
Webサービスで利用されるデータのほとんどが、MySQLなどのデータベースを利用しているからです。
この記事では、Linuxの中にあるMySQL使って、データベースやテーブル、データを操作する方法について紹介します。
まだ、MySQLのインストールが済んでいない方は、以下の記事を読んで環境を準備しておきましょう!

もくじ
SQLとは
SQL(エスキューエル)とは、RDBMS(リレーショナルデータベース管理システム)を操作するための言語です。
MySQLは、この「SQL」というデータベース言語を使ってコマンドを実行します。
言語といっても、プログラミング言語よりも簡単で、英語の文法によく似ていますね。
ちなみに、このSQLはMySQLに限らず、ほかのRDBMSでも使えるので、一度覚えてしまえば他のデータベースでも応用できます。
データベースの種類については、以下の記事で詳しく紹介しています。

SQLの種類
SQLの文法には、以下の3つの種類があります。
- DDL(データ定義言語)…データベースの構成そのものに影響するSQL
- DML(データ操作言語)…データのCRUD(クラッド)操作をするSQL
- DCL(データ制御言語)…ユーザーの権限やトランザクションを設定するSQL
これは用語だけ覚えてもらえれば、大丈夫です。
実際に操作するときは、これらの種別を意識することはありませんので。
MySQLコマンドの使い方【一覧】
MySQLコマンドは、SQLを使って実行します。
SQLは読みやすさを考えて、大文字と小文字を組み合わせて表記することが多いですが、すべて小文字で入力しても問題なく実行できます。
ここからさきは
- ログイン、ログアウト
- データベースの操作
- テーブルの操作
- データの操作
など、業務でよく使うMySQLコマンドとその結果を、セットで紹介していきますね。
MySQLにログイン
では、さっそくMySQLにログインしてみましょう。
ログインするユーザーは「root」です。この「root」はLinuxの管理者ではなく、MySQLの管理者になります。
以下のコマンドを入力すると、パスワードが求められるので、入力して決定します。
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.15
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
こんな感じの表示になれば、ログイン成功です。
オプションの「-u」はユーザー、「-p」はパスワードを指定するためにつけています。
パスワードの設定が済んでいない方は、以下の記事を読んで設定しておきましょう。

MySQLをログアウト
MySQLからログアウトしたいときは、「exit」または「quit」コマンドを実行します。
$ mysql> exit
Bye
「Ctrl + d」のショートカットキーでも、ログアウトできます。
LinuxにMySQLをインストールしている場合は、ほかのLinuxのショートカットキーも使えるので、積極的に使っていきましょう。

データベース作成
データベースを作成したいときは、「CREATE DATABASE」コマンドを使います。
ここでは、「test_db」というデータベースを作成しています。
mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.00 sec)
データベース確認
作成したデータベースを確認したいときは、「SHOW DATABASES」コマンドを使います。
デフォルトで、「test_db」以外のデータベースも作られていることがわかります。
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_db |
+--------------------+
5 rows in set (0.00 sec)
データベース指定
使用するデータベースを指定したいときは、「USE」コマンドを使います。
mysql> USE test_db;
Database changed
ログインするときに、以下のようにデータベースを事前に指定することもできます。
$ mysql -u root -p test_db
データベース削除
データベースを削除したいときは、「DROP DATABASE」コマンドを使います。
mysql> DROP DATABASE test_db;
Query OK, 1 row affected (0.05 sec)
テーブル作成
データベースにテーブルを作成したいときは、「CREATE TABLE」コマンドを使います。
以下のSQLは、int型の「id」カラムとvarchar型の「name」カラムを持った「users」テーブルを作成しています。
mysql> CREATE TABLE users (id int, name varchar(255));
Query OK, 0 rows affected (0.02 sec)

テーブル確認
作成したテーブルを確認したいときは、「SHOW TABLES」コマンドを使います。
mysql> SHOW TABLES;
+-------------------+
| Tables_in_test_db |
+-------------------+
| users |
+-------------------+
1 row in set (0.00 sec)
テーブル構造確認
テーブルの構造を確認したいときは、「DESC」コマンドを使います。
mysql> DESC users;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
テーブル削除
テーブルを削除したいときは、「DROP TABLE」コマンドを使います。
mysql> DROP TABLE users;
Query OK, 0 rows affected (0.03 sec)
データ挿入
テーブルにデータを挿入したいときは、「INSERT INTO」コマンドを使います。
以下のSQLは、「id」カラムと「name」カラムに、それぞれ整数「1」と文字列「キツネ」を持つレコードを挿入しています。
mysql> INSERT INTO users (id, name) VALUES (1 ,'キツネ');
Query OK, 1 row affected (0.01 sec)
もし、すべてのカラムに対してデータを挿入することが決まっているなら、カラム名を以下のように省略できます。
mysql> INSERT INTO users VALUES (2, 'タヌキ');
Query OK, 1 row affected (0.01 sec)
また、バルクインサート(複数のレコードを同時に挿入)をしたいときは、以下の記述を使います。
mysql> INSERT INTO users VALUES (3, 'ネコ'), (4, 'イヌ'), (5, 'ヒツジ');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
データ検索
テーブルのデータを検索したい場合は、「SELECT」コマンドを使います。
mysql> SELECT * FROM users;
+------+-----------+
| id | name |
+------+-----------+
| 1 | キツネ |
| 2 | タヌキ |
| 3 | ネコ |
| 4 | イヌ |
| 5 | ヒツジ |
+------+-----------+
5 rows in set (0.00 sec)
「*」を指定することですべてのカラムを取得しますが、「name」を指定することで「name」カラムだけを取得することもできます。
mysql> SELECT name FROM users;
+-----------+
| name |
+-----------+
| キツネ |
| タヌキ |
| ネコ |
| イヌ |
| ヒツジ |
+-----------+
5 rows in set (0.00 sec)
データ検索の条件指定
「SELECT」コマンドで、条件に一致したレコードだけを取得したいときは、「WHERE」句を使います。
以下のSQLは、「name」カラムが「ヒツジ」のレコードを取得します。
mysql> SELECT * FROM users WHERE name = 'ヒツジ';
+------+-----------+
| id | name |
+------+-----------+
| 5 | ヒツジ |
+------+-----------+
1 row in set (0.00 sec)
以下のSQLは、「id」が「1」または「3」のレコードを取得します。
mysql> SELECT * FROM users WHERE id IN (1, 3);
+------+-----------+
| id | name |
+------+-----------+
| 1 | キツネ |
| 3 | ネコ |
+------+-----------+
2 rows in set (0.00 sec)
「WHERE」句の条件は、ほかにも色々ありますので、気になったら調べてみてください。
また、この「WHERE」句は「SELECT」コマンドに限らず、このあと登場する「UPDATE」、「DELETE」でも使うことができます。
データ更新
データを更新したいときは、「UPDATE」コマンドを実行します。
さきほどの「WHERE」句も一緒に使いましょう。
mysql> UPDATE users SET id = 6, name = 'キタキツネ' WHERE name = 'キツネ';
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0
もし、ここで「WHERE」句の条件を指定しなければ、すべてのレコードの「id」が「1」、「name」が「キタキツネ」になってしまいます。
データ削除
データを削除したいときは、「DELETE」コマンドを実行します。
ここでも「WHERE」句で、レコードを指定しています。
mysql> DELETE FROM users WHERE id = 6;
Query OK, 1 row affected (0.00 sec)
バックアップ作成と復元
データベースのバックアップを作成したいときは、「mysqldump」コマンドを使います。
一度、MySQLからログアウトして以下のコマンドを実行してください。
コマンド実行後は、パスワードの入力を求められます。
$ mysqldump -u root -p test_db > ~/test_db.dump
Enter password:
「>」コマンドで、「test_db.dump」ファイルの作成と同時に「mysqldump」の結果を上書きしています。
作成したバックアップからデータを復元したいときは、以下のコマンドを実行します。
さきほどと同じように、パスワードの入力が求められます。
$ mysql -u root -p test_db < ~/test_db.dump
Enter password:
データ全件削除
テーブルのデータを全件削除したいときは、「TRUNCATE」コマンドを使います。
mysql> TRUNCATE TABLE users;
Query OK, 0 rows affected (0.05 sec)
-- usersテーブルは空になっている
mysql> SELECT * FROM users;
Empty set (0.00 sec)
文字コード確認
データベースの文字コードを確認したいときは、「SHOW VARIABLES」コマンドを使います。
このコマンドはデータベースを作成したときに、文字コードが「utf8」になっているかを確認するためによく使います。
MySQL8.0からはデフォルトで「utf8」になっているので、とくに設定の必要はありません。
ちなみに、「urf8mb4」は4バイトまで扱えるUTF8のこと。
MySQLの「utf8」は3バイトまでしか扱えないので、日本語の絵文字なんかを表示させたいのであれば、「utf8mb4」に設定する必要があります。
mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------------------------------+
9 rows in set (0.01 sec)
まとめ
ここで紹介したMySQLコマンドを使えるようになれば、基礎は大丈夫だと思います。
高度なテクニックが必要な場合は、その都度調べるようにしましょう。
またね、キツネ(@kitaaaa_kitsune)でした!

