MySQL超入門

なんやかんや前はいじっていたMySQLの使い方を完全に忘れたのでメモ。

MySQLをインストールする

下記からインストーラーをダウンロードしてインストールします。本記事執筆時点で「Windows (x86, 32-bit), MSI Installer(mysql-installer-community-5.7.40.0.msi)」を使用しました。バージョンは5.7.40です。

https://dev.mysql.com/downloads/windows/installer/5.7.html

インストール方法については省略しますが、基本的にデフォルト設定のままです。インストール時に設定したパスワードは後ほど使用しますので必ず覚えておいてください。インストールされる場所は下記の通りです。

C:\Program Files\MySQL\

特に「mysql.exe」がある場所は下記の通りです。おそらくバージョンが変わるとディレクトリも変わります。

C:\Program Files\MySQL\MySQL Server 5.7\bin

環境変数を設定する

Pathを変更します。先ほどの「mysql.exe」がある場所を追加します。

C:\Program Files\MySQL\MySQL Server 5.7\bin

コマンドプロンプトを起動する

必ず管理者モードで起動します。管理者モードでなければコマンドを入力した際に、

システム エラー 5 が発生しました。

アクセスが拒否されました。

等が表示されます。

MySQLを起動する

コマンドプロンプトに、

net start mysql57

と入力します。下記の通り表示されれば成功です。

MySQL57 サービスを開始します.
MySQL57 サービスは正常に開始されました。

おそらくバージョンが変わると「57」の数字も変化すると思われます。

MySQLにログインする

コマンドプロンプトに、

mysql --user=root --password

と入力します。下記の通り表示されるので、インストール時に設定したパスワードを入力します。

Enter password: ********

ログインに成功すると下記の通り表示されます。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.40-log MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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>

ここから先、コマンドプロンプトではなくMySQLのコマンドを使用します。

データベースの表示

次のコマンドでデータベースを表示できます。

mysql> SHOW DATABASES;

MySQLのインストール直後は次のように表示されます。

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.02 sec)

先頭一致した名前のデータベースを表示できます。例えば’my%’とすると’my’から始まる名前のデータベースだけ表示されます。コマンドと結果は下記の通りです。

mysql> SHOW DATABASES LIKE 'my%';
+----------------+
| Database (my%) |
+----------------+
| mysql          |
+----------------+
1 row in set (0.00 sec)

後方一致した名前のデータベースを表示できます。例えば’%schema’とすると’schema’で終わる名前のデータベースだけ表示されます。コマンドと結果は下記の通りです。

mysql> SHOW DATABASES LIKE '%schema';
+--------------------+
| Database (%schema) |
+--------------------+
| information_schema |
| performance_schema |
+--------------------+
2 rows in set (0.00 sec)

データベースの作成

コマンド「CREATE DATABASE データベース名;」でデータベースを作成できます。例えばpython_test_dbという名前のデータベースを作成したい場合のコマンドと結果は下記の通りです。

mysql> CREATE DATABASE python_test_db;
Query OK, 1 row affected (0.00 sec)

データベース一覧を表示すると追加されていることが分かります。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| python_test_db     |
| sakila             |
| sys                |
| world              |
+--------------------+
7 rows in set (0.00 sec)

文字コードを指定して作成することができます。例えばutf8を指定する場合、コマンドと結果は下記の通りです。

mysql> CREATE DATABASE python_test_db CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

データベースの削除

コマンド「DROP DATABASE データベース名;」でデータベースを削除できます。例えばpython_test_dbという名前のデータベースを削除したい場合のコマンドと結果は下記の通りです。

mysql> DROP DATABASE python_test_db;
Query OK, 0 rows affected (0.02 sec)

データベース一覧を表示すると削除されていることが分かります。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.00 sec)

いったんは削除しましたが、ここから先「python_test_db」というデータベースを作成した前提で進めます。

操作するデータベースを切り替える

コマンド「USE DATABASE データベース名;」で使用するデータベースを切り替えられます。例えばpython_test_dbという名前のデータベースを使用したい場合のコマンドと結果は下記の通りです。

mysql> USE python_test_db
Database changed

データベースにテーブルを作成する

コマンド「CREATE TABLE テーブル名 (カラム名 データ型, カラム名 データ型, …);」でテーブルを作成できます。例えばpersonという名前で、カラムにidとnameを持つテーブルを作成したい場合のコマンドと結果は下記の通りです。

mysql> CREATE TABLE person (id INT, name VARCHAR(100));
Query OK, 0 rows affected (0.02 sec)

データ型は下記の通りです。

説明備考
INT整数
DECIMAL(全体の桁数, 小数点以下の桁数)小数引数で整数部の桁数と小数の桁数を指定する。例えばDECIMAL(5, 2) と指定すると、123.45 のような数値が保存できる。
VERCHAR(文字数)文字列引数で文字数を指定する。例えばVARCHAR(100) と指定すると、100文字まで保存できる。
DATETIME日時
DATE日付

テーブルの表示

次のコマンドでテーブルを表示できます。

mysql> SHOW TABLES;
+--------------------------+
| Tables_in_python_test_db |
+--------------------------+
| person                   |
+--------------------------+
1 row in set (0.00 sec)

テーブルの構造を確認する

次のコマンドでテーブルの構造を確認できます。

mysql> DESCRIBE person;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | YES  |     | NULL    |       |
| name  | varchar(100) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

次のコマンドは同じ効果です。

mysql> DESC person;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | YES  |     | NULL    |       |
| name  | varchar(100) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> SHOW COLUMNS FROM person;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | YES  |     | NULL    |       |
| name  | varchar(100) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> SHOW FIELDS FROM person;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | YES  |     | NULL    |       |
| name  | varchar(100) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

テーブルの削除

次のコマンドでテーブルを削除できます。

mysql> DROP TABLE person;
Query OK, 0 rows affected (0.01 sec)

テーブルが削除されていることを確認します。

mysql> SHOW TABLES;
Empty set (0.00 sec)

MySQLからログアウトする

次のコマンドでログアウトできます。ログアウト後はコマンドプロンプトに戻ります。

mysql> exit;
Bye

MySQLを停止する

次のコマンドでMySQLを停止できます。

C:\Users\user>net stop mysql57
MySQL57 サービスを停止中です.
MySQL57 サービスは正常に停止されました。