Developer

【SQL基礎】MySQLの基本操作コマンド
2020.09.29
Lv1

【SQL基礎】MySQLの基本操作コマンド

MySQLの基本操作コマンド


今回は、いくつかの基本的な操作コマンドを見ていきましょう。

1.MySQLへの接続

確認作業ででてきましたが、下記でMySQLへ接続することができます。


"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u ユーザ名 -p

このコマンドで接続した場合、コマンド実行後にパスワードの入力を求められましたが、以下のようにするとパスワードも同時に渡すことができます。

注意点として、コマンドライン上にパスワードがそのまま表示されてしまうということと、「-p」と「パスワード」の間にスペースを入れると、後述するようにデータベース名と認識されてしまう点です。

また、自分の学習環境などあまりセキュリティを意識しない場合はいいですが、この方法だとコマンドログにパスワードが残ってしまいセキュリティ上あまりよくないので基本的にはやらないようにしましょう。


"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u ユーザ名 -pパスワード

下記のようにするとデータベースを指定して接続することも可能です。

接続と同時に指定したデータベースをUSEした状態になります。


"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u ユーザ名 -D データベース名 -p

もしくは


"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u ユーザ名 -p データベース名

c:\>”C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe” -u root -D mysql -ppassword
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.21 MySQL Community Server – GPL

Copyright (c) 2000, 2020, 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>


2.MySQLの切断

下記の二通りで切断することが可能です。


quit

もしくは


exit

mysql> quit
Bye

c:\>


3.既存ユーザの確認

MySQLのアカウント名は「ユーザ名」と「ホスト名」で構成されています。

ユーザ名@ホスト名

「ユーザ名」が「test」、「ホスト名」が「localhost」なアカウントがある場合、localhostからtestというユーザ名で接続が可能となります。localhost以外、例えば「192.168.1.10」から接続しようとしてもできません。

現在のユーザ情報は下記で取得できます。


select host, user, authentication_string from mysql.user;

mysql> select host, user, authentication_string from mysql.user;
+————–+—————————-+————————————————————————————+
| host        | user                    | authentication_string                                                  |
+————–+—————————-+————————————————————————————+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDP… |
| localhost | mysql.session       | $A$005$THISISACOMBINATIONOFINVALIDSALTANDP… |
| localhost | mysql.sys             | $A$005$THISISACOMBINATIONOFINVALIDSALTANDP… |
| localhost | root                     | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19    |
+————–+—————————-+————————————————————————————+
4 rows in set (0.01 sec)

mysql>

既存のユーザ情報は「mysql」データベースの「user」テーブルに格納されています。様々な情報が格納されていますが、ここでは、「ユーザ名(user)」「ホスト名(host)」「パスワード (authentication_string)」(※1)のみを取得しています。
なお、「パスワード (authentication_string)」はハッシュ値(※2)となっているため、この情報からはどんなパスワードが設定されたかは確認することはできません。パスワードが未設定の場合は空欄となります。

(*1) MySQL 5.7.5以前のバージョンでは「password」になります。

(*2)ハッシュ値とは、とある値(入力データ)から決められた計算(ハッシュ関数)で算出された固定長の値です。ハッシュ値は、それ自身から元になった値を逆算することができない、同じハッシュ値が得られる異なる値を求めることが非常に困難という特徴があります。


4.データベースの選択

下記で、接続後に既存のデータベースからデフォルトで使用するデータベースを選択できます。


use データベース名

mysql> use mysql
Database changed
mysql>

ここで簡潔におさらいしておくと、MySQLは複数のデータベースを管理しています。そして、テーブルはそのデータベースのどれかに属しています。そのため、例えば、SQLでテーブルに対して作成などの何らかの操作を実施するには、使用するデータベースを未選択の場合、どのデータベースのテーブルなのかを指定してあげる必要があります。選択済みの場合は、データベースを指定しない操作では、選択されているデータベースに属するテーブルに対して操作を実施します。

現在、どのデータベースを選択しているかは下記で確認可能です。


select database();

mysql> select database();
+—————-+
| database() |
+—————-+
| mysql        |
+—————-+
1 row in set (0.00 sec)

mysql>

なお、使用するデータベースが未選択の状態の場合は、NULLと表示されます。


5.既存のデータベース一覧の表示

下記で既存のデータベースの一覧を表示できます。

show databases;

mysql> show databases;
+——————————–+
| Database                  |
+——————————–+
| information_schema  |
| mysql                       |
| performance_schema |
| sys                           |
+——————————–+
4 rows in set (0.02 sec)

mysql>


6.既存テーブル一覧の表示

下記で選択中のデータベースに存在するテーブルの一覧を表示できます。

show tables;

mysql> show tables;
+—————————+
| Tables_in_test      |
+—————————+
| test_table1          |
| test_table2          |
+—————————+
2 rows in set (0.01 sec)

mysql>


7.既存テーブルのカラム一覧を表示

【SQL基礎】テーブルの構造にありますように、テーブルは行と列からなります。
また、列(カラム)には名前が付けられます。
テーブルがどのような列から構成されているか確認するには下記で見ることができます。

use等で使用するデータベースを選択済みの場合は、データベース名は省略することが可能です。

show fields from データベース名.テーブル名;

もしくは、

desc データベース名.テーブル名;

mysql> desc test.users;
+———–+—————–+——–+—————+————-+————————-+
| Field     | Type        | Null   | Key         | Default   | Extra               |
+———–+—————–+——–+—————+————-+————————-+
| id        | int            | NO    | PRI         | NULL      | auto_increment |
| name  | char(32)    | YES  |                |              |                        |
| addr    | char(32)    | YES  |               | –            |                        |
| age     | int             | YES  |               | 0            |                        |
+———–+—————–+——–+—————+————-+————————-+
4 rows in set (0.01 sec)

mysql>

各カラムの意味は下記となります。

「Field」    :テーブルの各カラム名を確認できます。

「Type」    :各カラムのデータ型(※1)を確認できます。

「Null」     :Null値を許可するかどうかを確認できます。Yesで許可、Noで不許可となります。
また、Null値とは何も値が入っていない状態のことを言います。

「Key」     :各カラムになんのキー設定(PRIMARY KEYやUNIQUE KEY等(※2))がされているかを確認できます。

「Default」:カラムに割り当てられる初期値を確認できます。

「Extra」   :カラムについて有効な追加情報(auto_increment等(※2))を確認できます。

※1 参考:【SQL基礎】データ型とは

※2 参考:【SQL基礎】制約の種類

 

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ