kakiro-webカキローウェブ

システム開発情報とコンピューター書籍の紹介サイト

PostgreSQL データベースの作成

PostgreSQLでデータベースの作成に関するSQLについて、以下に示します。

※ここで説明に使用しているPostgreSQLは、当サイトのCentOS7 64bitのyumリポジトリにPostgreSQLを追加し、最新バージョンをインストールのページを元にインストールした、バージョン9.4になります。

※データベース接続ユーザーの作成については、当サイトのPostgreSQL データベース接続ユーザーの作成のページをご覧ください。

※テーブルの作成については、当サイトのPostgreSQL テーブルの作成のページをご覧ください。

データベースの作成

データベースを作成するには、以下のようなSQLを実行します。

postgres=# CREATE DATABASE db01 OWNER = user01 TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'C' LC_CTYPE = 'C';
  • 「CREATE DATABASE」に続けて、作成するデータベースの名前を指定します。

    ここでは「db01」という名前のデータベースを作成するようにしています。

  • 「OWNER =」に続けて、データベースの所有者を指定します。

    ここでは「user01」を所有者に指定しています。

  • 「TEMPLATE =」に続けて、データベースを作成する際に使用するテンプレートを指定します。

    データベースの作成は、テンプレートに指定したデータベースに設定されている照合順序や、作成済みのテーブル等の内容を引き継いで行われるようになっています。

    他のデータベースの内容を引き継ぐことなく、新しいデータベースの作成を行いたい場合は、テンプレートに「template0」を指定します。

  • 「ENCODING =」に続けて、データベースで使用する文字コードを指定します。

    ここでは「UTF8」を指定しています。

    文字コードはWeb等でもUTF8を使用することが主流となっていますので、特別な理由がなければ、UTF8を使用するのが良いかと思います。

  • 「LC_COLLATE」は、データベースで使用する照合順序の指定になります。

    照合順序は、ORDER BY句でのソート順等に影響する設定となります。

    「C」を指定すると、文字のソートはコード順に行われるようになります。

    日本語を考慮した「ja_JP.UTF-8」といった指定もできるのですが、パフォーマンスが悪くなることがあるようですので、シンプルに文字のコード順でソートする「C」を指定するのがよいかと思います。

  • 「LC_CTYPE」は、データベースで使用する文字の大文字、小文字、数字といった分類の指定になります。

    日本語を考慮した「ja_JP.UTF-8」を指定すると、LOWER関数で全角の英字も小文字への変換対象として扱われるようになったりするのですが、特別な処理は行わない「C」を指定するのがよいかと思います。

データベース一覧の確認

データベースの一覧を確認するには、以下のようなSQLを実行します。

postgres=# SELECT * FROM pg_database;
  datname  | datdba | encoding | datcollate  |  datctype   | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace |               datacl
-----------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------------------------------------
 template1 |     10 |        6 | ja_JP.UTF-8 | ja_JP.UTF-8 | t             | t            |           -1 |         13051 |         1880 |          1 |          1663 | {=c/postgres,postgres=CTc/postgres}
 template0 |     10 |        6 | ja_JP.UTF-8 | ja_JP.UTF-8 | t             | f            |           -1 |         13051 |         1880 |          1 |          1663 | {=c/postgres,postgres=CTc/postgres}
 postgres  |     10 |        6 | ja_JP.UTF-8 | ja_JP.UTF-8 | f             | t            |           -1 |         13051 |         1880 |          1 |          1663 |
 db01      |  16397 |        6 | C           | C           | f             | t            |           -1 |         13051 |         1880 |          1 |          1663 |
  • 「pg_database」は、データベースの情報を保持しているシステムカタログになります。

  • ここではデフォルトで作成されているデータベースに、「db01」を追加で作成した際の結果になっています。

上記では、データベースの所有者や文字コードは数値で表示されていますが、以下のコマンドでその内容を確認することもできます。

postgres=# \l
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |      アクセス権
-----------+----------+------------------+-------------+-------------------+-----------------------
 db01      | user01   | UTF8             | C           | C                 |
 postgres  | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
           |          |                  |             |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
           |          |                  |             |                   | postgres=CTc/postgres

データベースの削除

データベースを削除するには、以下のようなSQLを実行します。

postgres=# DROP DATABASE db01;
  • 「DROP DATABASE」に続けて、削除するデータベースの名前を指定します。

    ここでは「db01」という名前のデータベースを削除するようにしています。

PostgreSQL データベースの作成については、以上です。

SQLのテクニックに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのテクニックに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

SQLのパフォーマンスに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのパフォーマンスに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

DB設計、SQLに関するおすすめの書籍

当サイトの書籍紹介ページで、DB設計、SQLに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。