【初心者向け】SQLでデータベースを選択する方法完全ガイド

データベース・SQL

「複数のデータベースがあるけど、どれを使っているかわからない…」
「間違ったデータベースでSQL文を実行してしまいそうで怖い」

そんなお悩みを解決するのが、データベースの選択方法です。

この記事では、MySQL、PostgreSQL、SQLiteでデータベースを正しく選択する方法を、初心者の方にもわかりやすく説明します。

スポンサーリンク

データベース選択の重要性

なぜデータベースを選択する必要があるの?

複数のプロジェクト管理 一つのサーバーに複数のデータベースがある場合

誤操作の防止 間違ったデータベースでデータを変更・削除してしまうリスクを防ぐ

作業効率の向上 どのデータベースで作業しているかを明確にする

チームでの協力 他の人が見ても、どのデータベースを使っているかがわかる

データベース選択のタイミング

接続時に指定 ログインするときに使用するデータベースを決める

作業中に切り替え 作業の途中で別のデータベースに変更する

スクリプト実行前 複数のSQLファイルを実行する前に対象を明確にする

MySQLでデータベースを選択する

USE文を使った選択

説明 MySQLでは、USE文を使って作業対象のデータベースを指定します。

基本構文

USE データベース名;

実際の例

USE blog_db;

実行結果

Database changed

解説

  • USE:「これから使うデータベースは」という意味
  • blog_db:選択するデータベース名
  • 成功すると「Database changed」と表示されます

MySQLでの完全な選択手順

手順1:MySQLに接続

mysql -u root -p

接続結果

Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 8.0.33 MySQL Community Server

Type 'help;' or '\h' for help. Type '\c' to clear the input.

mysql>

手順2:利用可能なデータベースを確認

mysql> SHOW DATABASES;

確認結果

+--------------------+
| Database           |
+--------------------+
| information_schema |
| blog_db            |
| shop_db            |
| test_db            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

手順3:使いたいデータベースを選択

mysql> USE blog_db;

手順4:選択されているか確認

mysql> SELECT DATABASE();

確認結果

+------------+
| DATABASE() |
+------------+
| blog_db    |
+------------+
1 row in set (0.00 sec)

接続時にデータベースを指定

説明 MySQLに接続するときに、最初から使いたいデータベースを指定できます。

コマンド

mysql -u root -p blog_db

実行結果

Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 8.0.33 MySQL Community Server

Type 'help;' or '\h' for help. Type '\c' to clear the input.

mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| blog_db    |
+------------+
1 row in set (0.00 sec)

解説

  • 接続と同時にblog_dbが選択されています
  • USE文を使わずに済むので効率的です

データベースを切り替える

説明 作業中に別のデータベースに切り替えることもできます。

例:blog_dbからshop_dbに切り替え

mysql> USE shop_db;

実行結果

Database changed

切り替え確認

mysql> SELECT DATABASE();

確認結果

+------------+
| DATABASE() |
+------------+
| shop_db    |
+------------+
1 row in set (0.00 sec)

PostgreSQLでデータベースを選択する

PostgreSQLの選択方式

説明 PostgreSQLでは、接続時にデータベースを指定する方式です。接続後にMySQLのUSE文のようなコマンドはありません。

PostgreSQLの特徴

  • 接続 = データベース選択
  • 接続後の切り替えは基本的にできない
  • 別のデータベースを使いたい場合は再接続が必要

基本的な接続と選択

説明 psqlコマンドでデータベースを指定して接続します。

基本構文

psql -U ユーザー名 -d データベース名

実際の例

psql -U postgres -d webapp_db

実行結果

Password for user postgres: 
psql (15.3)
Type "help" for help.

webapp_db=#

解説

  • -U postgres:postgresユーザーで接続
  • -d webapp_db:webapp_dbデータベースを選択
  • プロンプトにwebapp_db=#と表示され、選択されていることがわかります

利用可能なデータベースを確認してから選択

手順1:PostgreSQLにデフォルトデータベースで接続

psql -U postgres

手順2:データベース一覧を確認

postgres=# \l

確認結果

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 webapp_db | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 blog_db   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(5 rows)

手順3:目的のデータベースに再接続

postgres=# \c blog_db

実行結果

You are now connected to database "blog_db" as user "postgres".
blog_db=#

解説

  • \c データベース名:接続中のpsqlから別のデータベースに切り替え
  • プロンプトがblog_db=#に変わり、データベースが切り替わったことがわかります

現在のデータベースを確認

確認コマンド

blog_db=# SELECT current_database();

実行結果

 current_database 
------------------
 blog_db
(1 row)

リモート接続でのデータベース選択

説明 リモートサーバーのPostgreSQLに接続する場合も同様です。

コマンド例

psql -h hostname -U username -d database_name

具体例

psql -h 192.168.1.100 -U appuser -d production_db

SQLiteでデータベースを選択する

SQLiteの選択方式

説明 SQLiteはファイルベースなので、ファイルを開くこと自体がデータベースの選択になります。

SQLiteの特徴

  • 1ファイル = 1データベース
  • ファイルを指定 = データベース選択
  • 複数のファイルを同時に扱うことも可能

基本的な選択方法

説明 sqlite3コマンドでファイルを指定して接続します。

基本構文

sqlite3 データベースファイル名

実際の例

sqlite3 blog.db

実行結果

SQLite version 3.39.5 2022-10-14 20:58:05
Enter ".help" for usage hints.
sqlite>

解説

  • blog.dbファイルを開いて接続
  • このファイルがメインのデータベースになります

現在のデータベースを確認

確認コマンド

sqlite> PRAGMA database_list;

実行結果

seq  name             file                                    
---  ---------------  ----------------------------------------
0    main             /path/to/blog.db                        
1    temp                                                     

解説

  • main:メインのデータベース(blog.db)
  • temp:一時的なデータ用

複数のデータベースを同時に使用

説明 SQLiteでは、複数のデータベースファイルを同時に扱えます。

他のデータベースをアタッチ

sqlite> ATTACH DATABASE 'shop.db' AS shop_data;

アタッチ後の確認

sqlite> PRAGMA database_list;

実行結果

seq  name             file                                    
---  ---------------  ----------------------------------------
0    main             /path/to/blog.db                        
1    temp                                                     
2    shop_data        /path/to/shop.db                        

異なるデータベースのテーブルを使用

-- メインデータベースのテーブル
SELECT * FROM articles;

-- アタッチしたデータベースのテーブル
SELECT * FROM shop_data.products;

データベースをデタッチ

説明 不要になったデータベースを切り離すことができます。

デタッチコマンド

sqlite> DETACH DATABASE shop_data;

デタッチ後の確認

sqlite> PRAGMA database_list;

実行結果

seq  name             file                                    
---  ---------------  ----------------------------------------
0    main             /path/to/blog.db                        
1    temp                                                     

データベース選択ミスを防ぐ方法

現在のデータベースを常に確認

各システムでの確認方法

MySQL

SELECT DATABASE();

PostgreSQL

SELECT current_database();

SQLite

PRAGMA database_list;

プロンプト表示の活用

MySQLのプロンプト設定

mysql -u root -p --prompt="mysql [\d]> "

実行結果

mysql [blog_db]> 

PostgreSQLのプロンプト PostgreSQLでは自動的にデータベース名がプロンプトに表示されます:

blog_db=#

スクリプト実行時の安全策

実行前にデータベースを確認するスクリプト例

-- MySQL用スクリプトの例
SELECT DATABASE() AS current_db;
USE blog_db;
SELECT 'データベースを選択しました' AS status;

-- 実際の処理
SELECT * FROM articles LIMIT 5;

バックアップの重要性

作業前のバックアップ

  • 重要な操作前は必ずバックアップを取る
  • 特に本番環境では慎重に

MySQLバックアップ例

mysqldump -u root -p blog_db > backup_blog_db.sql

PostgreSQLバックアップ例

pg_dump -U postgres blog_db > backup_blog_db.sql

SQLiteバックアップ例

cp blog.db blog_backup.db

よくある質問と答え

Q. 間違ったデータベースでSQL文を実行してしまいました。どうすればいいですか?
A. まず実行を停止し、バックアップがあれば復元してください。バックアップがない場合は、可能な限り手動で修正します。

Q. PostgreSQLで接続後にデータベースを切り替える方法はありますか? A
. \c データベース名コマンドで切り替えできます。または、新しい接続を開く必要があります。

Q. SQLiteで複数のデータベースを使うときの注意点は?
A. アタッチしたデータベースは、テーブル名の前に「データベース名.」を付けてアクセスします。

Q. データベース選択を忘れやすいのですが、対策はありますか?
A. プロンプト表示を設定し、作業前に必ず現在のデータベースを確認する習慣をつけましょう。

トラブルシューティング

よくあるエラーと対処法

「Database doesn’t exist」エラー

ERROR 1049 (42000): Unknown database 'blog_db'

対処法

  1. データベース名のスペルチェック
  2. SHOW DATABASES;で存在確認
  3. 権限確認

「Permission denied」エラー

ERROR 1044 (42000): Access denied for user 'username'@'localhost' to database 'blog_db'

対処法

  1. 正しいユーザー名・パスワードで接続
  2. データベースへのアクセス権限を確認
  3. 管理者に権限付与を依頼

ファイルが見つからないエラー(SQLite)

Error: unable to open database "blog.db": unable to open database file

対処法

  1. ファイルパスが正しいか確認
  2. ファイルの存在確認
  3. 読み書き権限の確認

まとめ:正しいデータベース選択で安全な作業を

データベースの選択方法を正しく理解することで、安全で効率的なSQL作業ができるようになります。

おさらい:

  • MySQLUSE データベース名;で選択
  • PostgreSQL:接続時に-d データベース名で指定
  • SQLitesqlite3 ファイル名でファイル指定
  • 確認方法:各システム専用のコマンドで現在のデータベースを確認

まずは現在のデータベース確認から始めましょう
慣れてきたら、作業前の確認を習慣にして、安全なSQL操作を心がけてください。

コメント

タイトルとURLをコピーしました