【初心者でも簡単】Mysqlコマンドの使い方!LinuxからSQLを使おう!

Mysqlコマンドの使い方

Webエンジニアであれば、Mysqlコマンドの使い方を覚えることは必須です。

Webサービスで利用されるデータのほとんどが、Mysqlなどのデータベースを利用しているからです。

この記事では、Linuxの中にあるMysqlを操作する方法について解説します。

Mysqlのインストールがまだ済んでいない方は、以下の記事を読みながら環境を準備しましょう!

SQLとは

Mysqlは、「SQL(エスキューエル)」というデータベース言語を使ってコマンドを実行します。

SQLとは、RDBMS(リレーショナルデータベース管理システム)を操作するための言語です。

言語といっても、プログラミング言語よりも簡単で、英語の文法に少し似ています。

このSQLはMysqlに限らず、ほかのRDBMSでも使えるので、一度覚えてしまえば他のデータベースでも応用できます。

キツネ

SQLは覚えておいて損はしないってことだね!

データベースの種類や詳しい内容は、以下の記事で解説しています。

SQLの種類

SQLの文法には、以下の3つの種類があります。

  • DDL(データ定義言語)…データベースの構成そのものに影響するSQL
  • DML(データ操作言語)…データのCRUD(クラッド)操作をするSQL
  • DCL(データ制御言語)…ユーザーの権限やトランザクションを設定するSQL

これは用語だけ覚えてもらえれば大丈夫です。

実際に操作するときは、これらの種別を意識することはありません。

キツネ

会話やドキュメントでたまに出てくるから知っておこう!

Mysqlコマンド一覧

Mysqlコマンドは、SQLを使って実行します。

SQLは読みやすさを考えて、大文字と小文字を組み合わせて表記することが多いですが、すべて小文字で入力しても問題なく実行できます。

ここから先は、業務でよく使うコマンドとその結果をセットで紹介していきます。

Mysqlにログイン

では、さっそくMysqlにログインしてみましょう。

ログインするユーザーは「root」です。この「root」はLinuxの管理者ではなく、Mysqlの管理者になります。

以下のコマンドを入力すると、パスワードが求められるので、入力して決定します。

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をログアウト
$ 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)

キツネ

さっきのdumpファイルを使えば簡単に復元できるよ!

文字コード確認

データベースの文字コードを確認したいときは、「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)

キツネ

Mysql5.7までは設定が必須だったよ!

まとめ

ここで紹介したMysqlコマンドを使えるようになれば、基礎は大丈夫だと思います。

高度なテクニックが必要な場合は、その都度調べるようにしましょう。

テキストのコピーはできません。