ここでは、PostgreSQL でデータベースを作成し、テーブルにデータを追加するまでの手順を簡単な例をとおして解説します。新規データベースユーザーの登録やデータベースの作成等、PostgreSQL に関する詳細な情報は、PostgreSQL オフィシャルマニュアルを参照してください。
Turbolinux 10 Server では、postgres ユーザーが PostgreSQL の管理者となり、このユーザー以外の Linuxユーザーは、インストール直後の PostgreSQL を使用することはできません。よって、Linux システムにアカウントを持つユーザーが PostgreSQL を使用できるように、必要に応じてデータベースユーザーを登録する必要があります。
最初に、postgres ユーザーでシステムにログインします。そして、データベースユーザーを登録するために、createuser コマンドを使用します。
$ createuser Enter name of user to add: taro Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) n CREATE USER |
コマンドを実行すると、登録するデータベースユーザー名を問われます。通常は、Linux システムにアカウントを持つ一般ユーザーのユーザー名を入力します。この例では、taro というユーザーを入力しています。次に、登録するデータベースユーザーにデータベースの作成権限を与えるかどうかを問われます。y を入力し権限を与えます。最後に、このデータベースユーザーに PostgreSQL の新規ユーザーを作成する権限を与えるかどうかを問われます。 y を選択すると PostgreSQL のスーパーユーザー(postgres)と同じ権限となりますので、通常は n を選択します。これで、作成したデータベースユーザーで、PostgreSQL を利用できるようになります。
なお、登録したデータベースユーザーを削除するには、dropuser コマンドを使用します。
$ dropuser taro |
データベースを作成するには、createdb コマンドを実行します。データベースユーザーの作成時にデータベースの作成権限を与えたユーザーだけが、データベースを作成できることに注意してください。単に、createdb を実行すると、自分のユーザー名と同じ名前のデータベースができます。他のデータベース名にするには、引数で作成するデータベース名を指定します。また、データベースで日本語を扱うために使用する文字コードを指定することを推奨します。以下の例では、日本語 EUC コードでデータベースを作成しています。
$ createdb -E EUC_JP testdb CREATE DATABASE |
これにより、testdb という日本語を EUC で管理するデータベースが作成されます。次に作成したデータベースへテーブルを作成し、データを挿入します。これらの操作を行えるツールには、さまざまなものがありますが、以下では、PostgreSQL に標準で付属する psql を使用します。
PostgreSQL には、psql というクライアントアプリケーション(データベース操作ツール)が標準で付属しています。作成したデータベースへ接続し、SQL文の実行とその結果を表示することが可能です。psql の詳細な使用方法については、PostgreSQL オフィシャルマニュアルを参照してください。
作成した testdb データベースへ接続するには、次のコマンドを実行します。この例では、ローカルホストからデータベースユーザーである taro を使用して、testdb データベースに接続します。リモートホストから接続する場合はデータベースが存在するホストを -h hostname オプションで指定します。
$ psql -U taro testdb |
-U オプションを指定しない場合は、現在ログインしているシステムユーザー名でデータベースへの接続を試みます。また、データベース名を指定しなかった場合は、ユーザー名と同じ名前のデータベースへ接続を試みます。データベースの接続にユーザー認証を行うように設定している場合は、パスワードの入力を求められます。
Password: |
![]() | 標準設定では、データベースユーザーのパスワードは設定されていません。また、データベースへのローカルホストからの接続はすべてのデータベースユーザーに許可されています。しかし、実際の運用ではパスワードによるユーザー認証を行うことを推奨します。パスワードの設定、およびユーザー認証に関する詳細は、PostgreSQL オフィシャルマニュアルを参照してください。 |
接続すると以下のように、プロンプトが接続したデータベース名になります。これが、SQL 文を実行するためのコマンドプロンプトとなります。
$ psql -U taro testdb
Password:
Welcome to psql 7.4.5, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
testdb=# |
SQL 文以外にも、psql へ命令を与えることができます。先頭がバックスラッシュ \ の文は SQL 文ではなく、psql に対する命令と解釈されます。例えば、\q は psql を終了するための命令です。また、\? は、psql へ与えることができる命令のヘルプを表示します。
psqlを終了するには、次のコマンドを実行します。
testdb=# \q |
以下は、psql で使用できる代表的なコマンドです。
表 24-2. psql 主なバックスラッシュコマンド
| コマンド | 説明 |
|---|---|
| \? | バックスラッシュコマンドのヘルプを表示します。 |
| \h | 利用可能なSQL文を表示します。\h command と実行すれば、その SQLコマンドの書式を表示します。 |
| \i | 他のファイルを取り込みます。一連のSQL文を、事前にファイルに記述しておき、\i filename と実行することで、一度に SQL文を実行することができます。 |
| \d | データベースの情報を表示します。\d tablename と実行すれば、そのテーブルの定義を表示します。 |
| \dS | システムテーブルの一覧を表示します。 |
| \dT | ユーザー定義テーブルの一覧を表示します。 |
| \encoding | クライアントの現在の文字コードを表示します。\encoding encoding と実行すれば、クライアントの文字コードを設定します。 |
| \l | データベースの一覧を表示します。 |
| \z | テーブルの一覧をアクセス権限とともに表示します。 |
| \q | psql を終了します。 |
testdb データベースにデータを格納するためのテーブルを作成します。ここでは、例として以下の簡単なテーブルを作成します。
表 24-3. meibo テーブルの仕様
| カラム名 | データ型 | 説明 |
|---|---|---|
| name | varchar(30) | 半角30文字までの可変長文字列 |
| age | integer | 整数 |
| address | varchar(80) | 半角80文字までの可変長文字列 |
meibo デーブルへ格納するデータは以下の通りです。
表 24-4. meibo テーブルのデータ
| name | age | address |
|---|---|---|
| Taro Yamada | 27 | 1-2-x Shibuya-ku Tokyo |
| Hanako Tanaka | 18 | 3-4-x Yokohama-shi Kanagawa |
| Ichiro Suzuki | 35 | 5-6-x Saitama-shi Saitama |
テーブルの作成は SQLの CREATE TABLE 文を使用します。SQL 文は、最後はセミコロン ; で終了します。その間は改行しても構いません。
testdb=# create table meibo ( testdb(# name varchar(30), testdb(# age integer, testdb(# address varchar(80)); CREATE TABLE testdb=> |
新規作成した meibo テーブルにデータを追加します。データの追加は SQL 文の INSERT INTO を使用します。
testdb=# insert into meibo values ('Taro Yamada',27,'1-2-x Shibuya-ku Tokyo');
INSERT 137640 1
testdb=# insert into meibo values ('Hanako Tanaka',18,'3-4-x Yokohama-shi Kanagawa');
INSERT 137641 1
testdb=# insert into meibo values ('Ichiro Suzuki',35,'5-6-x Saitama-shi Saitama');
INSERT 137642 1 |
テーブルに追加したデータの表示は SQL の SELECT 文を使用します。
testdb=# select * from meibo;
name | age | address
---------------+-----+------------------------
Taro Yamada | 27 | 1-2-x Shibuya-ku Tokyo
Hanako Tanaka | 18 | 3-4-x Yokohama-shi Kanagawa
Ichiro Suzuki | 35 | 5-6-x Saitama-shi Saitama
(3 rows) |
作成したテーブルを削除したい場合は、SQL 文の DROP TABLE を使用します。
testdb=# drop table meibo; DROP TABLE |
これで、meibo テーブルが削除されます。なお、当然のことながらテーブルに追加したデータも削除されます。