【初心者向け】SQLで新しいデータベースを作る方法

データベース・SQL

「新しいプロジェクトを始めるから、データベースを作りたい」 「練習用のデータベースを自分で作ってみたい」

そんなときに必要なのが、新しいデータベースを作成する方法です。

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

スポンサーリンク

データベース作成の基本知識

なぜ新しいデータベースを作るの?

プロジェクトごとに分ける ウェブサイト、アプリごとに専用のデータベースを作成

開発環境と本番環境を分ける テスト用と実際の運用用を分けて管理

練習・学習用 SQLの勉強をするための専用データベース

データの整理 用途別にデータベースを分けて管理しやすくする

データベース作成の基本的な流れ

  1. データベースサーバーに接続
  2. CREATE DATABASEコマンドを実行
  3. 作成されたかを確認
  4. 新しいデータベースに接続して使用開始

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)

対処法

  • ディスク容量を確認
  • 不要なファイルを削除
  • 別のディスクに作成

まとめ:データベース作成でプロジェクトをスタート

新しいデータベースの作成方法を覚えることで、いつでも新しいプロジェクトを始められます。

今日覚えたこと

  • MySQLCREATE DATABASE データベース名;
  • PostgreSQLCREATE DATABASE データベース名;またはcreatedbコマンド
  • SQLitesqlite3 ファイル名.dbでファイル作成
  • 確認方法:各システム専用のコマンドで一覧表示

まずは練習用のデータベースを作ってみましょう
慣れてきたら、文字コード指定やオプション設定も試してみてください。

コメント

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