使用するデータベースを選択する方法

MySQL で SQL を実行する場合、事前にデータベースを選択するか、SQL 実行時にデータベースを選択する必要があります。

  • mysql 接続時にデータベースを選択する方法
  • mysql 接続後にデータベースを選択する方法
  • SQL 実行時にデータベースを選択する方法

データベースを選択していない場合は、データベース未選択エラー「ERROR 1046 (3D000)」が発生します。

mysql 接続時にデータベースを選択する方法
mysql -u ユーザー名 -p データベース名
mysql 接続後にデータベースを選択する方法
USE データベース名
SQL実行時にデータベースを選択する方法
データベース名.テーブル名

ちなみに接続中のデータベースを確認するには、SHOW PROCESSLIST を使用します。

mysql 接続時にデータベースを選択する方法

以下の例では、MySQL に接続する際に「mytestdb」を選択し、接続後に SHOW PROCESSLIST を実行して接続先のデータベースを確認しています。

\G のオプションを使用することで、実行結果を垂直表示して、横幅が足りないことによる表示崩れを防止しています。

MySql 接続時にデータベース「mytestdb」を選択
D:\mysql\bin>mysql -u root -p mytestdb
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 28
Server version: 5.6.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2014, 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> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 28
   User: root
   Host: localhost:52146
     db: mytestdb
Command: Query
   Time: 0
  State: init
   Info: SHOW PROCESSLIST
1 row in set (0.00 sec)

mysql> 

mysql 接続後にデータベースを選択する方法

次は MySQL に接続した後に USE を使用してデータベースを選択している例です。

MySql 接続後に USE でデータベース「mytestdb」を選択
mysql> USE mytestdb
Database changed
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 28
   User: root
   Host: localhost:52146
     db: mytestdb
Command: Query
   Time: 0
  State: init
   Info: SHOW PROCESSLIST
1 row in set (0.00 sec)

SQL 実行時にデータベースを選択する方法

事前にデータベースを選択していない場合でも、テーブル名にデータベース名を付加することで、データベースを選択することができます。

以下の例では、どのデータベースに接続されていない状態で、データベース「mytestdb」の「num_test」テーブルにアクセスしています。データベースに接続していないので、SHOW PROCESSLIST の実行結果で db は NULL になっていいます。

SQL 実行時にデータベースを指定する方法
mysql> SELECT * FROM mytestdb.num_test;
+------+
| age  |
+------+
|    1 |
|   20 |
|   35 |
|   65 |
|  121 |
|  982 |
+------+
6 rows in set (0.00 sec)

mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 29
   User: root
   Host: localhost:53201
     db: NULL
Command: Query
   Time: 0
  State: init
   Info: SHOW PROCESSLIST
1 row in set (0.00 sec)

mysql> 
更新日: