「新しいプロジェクトを始めるから、データベースを作りたい」 「練習用のデータベースを自分で作ってみたい」
そんなときに必要なのが、新しいデータベースを作成する方法です。
この記事では、MySQL、PostgreSQL、SQLiteで新しいデータベースを作る方法を、初心者の方にもわかりやすく説明します。
データベース作成の基本知識

なぜ新しいデータベースを作るの?
プロジェクトごとに分ける ウェブサイト、アプリごとに専用のデータベースを作成
開発環境と本番環境を分ける テスト用と実際の運用用を分けて管理
練習・学習用 SQLの勉強をするための専用データベース
データの整理 用途別にデータベースを分けて管理しやすくする
データベース作成の基本的な流れ
- データベースサーバーに接続
- CREATE DATABASEコマンドを実行
- 作成されたかを確認
- 新しいデータベースに接続して使用開始
MySQLでデータベースを作成する
基本的な作成方法
説明 MySQLでは、CREATE DATABASEコマンドを使って新しいデータベースを作成します。
基本的な構文
CREATE DATABASE データベース名;
実際の例
CREATE DATABASE myapp_db;
実行結果
Query OK, 1 row affected (0.01 sec)
解説
CREATE DATABASE
:新しいデータベースを作成するコマンドmyapp_db
:作成するデータベースの名前- セミコロン(
;
)で文の終わりを表す
MySQLに接続してデータベースを作成
手順1:MySQLに接続
mysql -u root -p
接続結果
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.33 MySQL Community Server
Type 'help;' or '\h' for help. Type '\c' to clear the input.
mysql>
手順2:データベースを作成
mysql> CREATE DATABASE blog_site;
手順3:作成を確認
mysql> SHOW DATABASES;
確認結果
+--------------------+
| Database |
+--------------------+
| information_schema |
| blog_site |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
文字コードを指定した作成
説明 日本語を使用する場合は、文字コードを指定することが重要です。
UTF-8対応での作成
CREATE DATABASE myapp_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
実行結果
Query OK, 1 row affected (0.02 sec)
解説
CHARACTER SET utf8mb4
:UTF-8の文字コードを指定COLLATE utf8mb4_unicode_ci
:文字の並び順ルールを指定- これで日本語や絵文字も正しく保存できます
同じ名前のデータベースがある場合の対処
問題 同じ名前のデータベースがすでに存在すると、エラーが発生します。
エラー例
CREATE DATABASE blog_site;
エラーメッセージ
ERROR 1007 (HY000): Can't create database 'blog_site'; database exists
解決方法:IF NOT EXISTSを使用
CREATE DATABASE IF NOT EXISTS blog_site;
実行結果(既に存在する場合)
Query OK, 1 row affected, 1 warning (0.00 sec)
解説
IF NOT EXISTS
:存在しない場合のみ作成- エラーではなく警告になり、処理が続行されます
PostgreSQLでデータベースを作成する

基本的な作成方法
説明 PostgreSQLでもCREATE DATABASEコマンドを使用します。
基本構文
CREATE DATABASE データベース名;
実際の例
CREATE DATABASE webapp_db;
実行結果
CREATE DATABASE
PostgreSQLに接続してデータベースを作成
手順1:PostgreSQLに接続
psql -U postgres
接続結果
Password for user postgres:
psql (15.3)
Type "help" for help.
postgres=#
手順2:データベースを作成
postgres=# CREATE DATABASE ecommerce_db;
手順3:作成を確認
postgres=# \l
確認結果
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+-------------+-------------+-----------------------
ecommerce_db| postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
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
(4 rows)
コマンドラインでの作成
説明 psqlに接続せずに、直接コマンドラインからデータベースを作成することもできます。
コマンド
createdb -U postgres myproject_db
実行結果
Password:
確認
psql -U postgres -l
解説
createdb
:PostgreSQL専用のデータベース作成コマンド-U postgres
:postgresユーザーで実行myproject_db
:作成するデータベース名
オプションを指定した作成
詳細設定での作成
CREATE DATABASE myapp_db
WITH ENCODING 'UTF8'
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
OWNER = myuser;
解説
ENCODING 'UTF8'
:文字コードをUTF-8に指定LC_COLLATE
:文字の並び順を指定LC_CTYPE
:文字の分類を指定OWNER = myuser
:データベースの所有者を指定
SQLiteでデータベースを作成する

SQLiteの特徴
説明 SQLiteは他のデータベースと違って、ファイルベースのデータベースです。
SQLiteの特徴
- サーバーが不要
- 1つのファイル = 1つのデータベース
- CREATE DATABASEコマンドは不要
- ファイルを作成するだけでデータベースが完成
基本的な作成方法
説明 SQLiteでは、sqlite3コマンドでファイルを指定するだけでデータベースが作成されます。
コマンド
sqlite3 myapp.db
実行結果
SQLite version 3.39.5 2022-10-14 20:58:05
Enter ".help" for usage hints.
sqlite>
解説
sqlite3
:SQLiteのコマンドラインツールmyapp.db
:作成するデータベースファイル名- このコマンドを実行した瞬間に、ファイルが作成されます
ファイルが作成されているか確認
現在のディレクトリを確認
ls -la *.db
実行結果
-rw-r--r-- 1 user user 0 Jun 2 10:30 myapp.db
解説
- ファイルが作成されていることを確認
- 最初はサイズが0バイト(空のデータベース)
SQLiteでの接続確認
データベース情報の確認
sqlite> PRAGMA database_list;
実行結果
seq name file
--- --------------- ----------------------------------------
0 main /path/to/myapp.db
1 temp
解説
main
:メインのデータベースtemp
:一時的なデータ用
複数のSQLiteデータベースの管理
別のデータベースを作成
sqlite3 blog.db
現在接続中のデータベースから別のデータベースをアタッチ
sqlite> ATTACH DATABASE 'blog.db' AS blog_data;
アタッチ状況の確認
sqlite> PRAGMA database_list;
実行結果
seq name file
--- --------------- ----------------------------------------
0 main /path/to/myapp.db
1 temp
2 blog_data /path/to/blog.db
作成したデータベースに接続する
MySQLでの接続
特定のデータベースに接続
mysql -u root -p myapp_db
または、接続後にデータベースを選択
mysql> USE myapp_db;
接続確認
mysql> SELECT DATABASE();
実行結果
+------------+
| DATABASE() |
+------------+
| myapp_db |
+------------+
1 row in set (0.00 sec)
PostgreSQLでの接続
特定のデータベースに接続
psql -U postgres -d webapp_db
接続確認
webapp_db=# SELECT current_database();
実行結果
current_database
------------------
webapp_db
(1 row)
SQLiteでの接続
データベースファイルに接続
sqlite3 myapp.db
接続確認
sqlite> .databases
実行結果
main: /path/to/myapp.db r/w
データベース作成時の注意点

命名規則
推奨される命名ルール
- 小文字を使用
- アンダースコア(_)で単語を区切る
- 数字で始めない
- 予約語(SELECT、INSERTなど)は避ける
良い例
CREATE DATABASE user_management;
CREATE DATABASE blog_site_2023;
CREATE DATABASE ecommerce_app;
避けるべき例
CREATE DATABASE 123database; -- 数字で始まっている
CREATE DATABASE SELECT; -- 予約語
CREATE DATABASE Blog-Site; -- ハイフンは使えない場合がある
権限の確認
MySQLでの権限確認
SHOW GRANTS;
PostgreSQLでの権限確認
\du
必要な権限
- CREATE権限
- 管理者権限(root、postgresなど)
バックアップとセキュリティ
作成時に考慮すべきこと
- 定期的なバックアップ計画
- ユーザー権限の設定
- パスワードポリシー
- データベースサイズの制限
よくある質問と答え
Q. データベース名に日本語は使えますか?
A. 技術的には可能ですが、トラブルの原因になりやすいので、英数字とアンダースコアのみの使用を推奨します。
Q. 作成したデータベースを削除するにはどうすればいいですか?
A. DROP DATABASE データベース名;
コマンドで削除できます。ただし、データは完全に失われるので注意してください。
Q. 他の人と共有するときはどうすればいいですか?
A. データベースのダンプ(エクスポート)を作成して共有するか、同じサーバーにアクセス権限を設定します。
Q. 作成に失敗する場合は何が原因ですか?
A. 権限不足、同名のデータベースの存在、ディスク容量不足、サーバー接続問題などが考えられます。
トラブルシューティング
よくあるエラーと対処法
「Access denied」エラー
ERROR 1044 (42000): Access denied for user 'username'@'localhost' to database 'dbname'
対処法
- 管理者権限で接続し直す
- ユーザーにCREATE権限を付与
「Database exists」エラー
ERROR 1007 (HY000): Can't create database 'myapp'; database exists
対処法
- 別の名前を使用
IF NOT EXISTS
を追加- 既存のデータベースを削除してから再作成
「Disk full」エラー
ERROR 3 (HY000): Error writing file (Errcode: 28 - No space left on device)
対処法
- ディスク容量を確認
- 不要なファイルを削除
- 別のディスクに作成
まとめ:データベース作成でプロジェクトをスタート
新しいデータベースの作成方法を覚えることで、いつでも新しいプロジェクトを始められます。
今日覚えたこと
- MySQL:
CREATE DATABASE データベース名;
- PostgreSQL:
CREATE DATABASE データベース名;
またはcreatedb
コマンド - SQLite:
sqlite3 ファイル名.db
でファイル作成 - 確認方法:各システム専用のコマンドで一覧表示
まずは練習用のデータベースを作ってみましょう。
慣れてきたら、文字コード指定やオプション設定も試してみてください。
コメント