序章

リレーショナルデータベース管理システムは、多くのWebサイトやアプリケーションの重要なコンポーネントです。 これらは、情報を保存、整理、およびアクセスするための構造化された方法を提供します。

PostgreSQL 、またはPostgresは、SQLクエリ言語の実装を提供するリレーショナルデータベース管理システムです。 これは、多くの小規模および大規模プロジェクトで人気のある選択肢であり、標準に準拠し、信頼性の高いトランザクションや読み取りロックのない同時実行性などの多くの高度な機能を備えているという利点があります。

このガイドでは、Ubuntu 14.04 VPSインスタンスにPostgresをインストールする方法と、それを使用するためのいくつかの基本的な方法について説明します。

インストール

UbuntuのデフォルトのリポジトリにはPostgresパッケージが含まれているため、 apt 包装システム。

最近ローカルaptリポジトリを更新していないので、今すぐ更新しましょう。 次に、Postgresパッケージと、いくつかの追加のユーティリティと機能を追加する「contrib」パッケージを入手できます。

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

ソフトウェアがインストールされたので、それがどのように機能するか、そしてそれがあなたが使用したかもしれない同様のデータベース管理システムとどのように異なるかを調べることができます。

PostgreSQLの役割とデータベースの使用

デフォルトでは、Postgresは「ロール」と呼ばれる概念を使用して認証と承認を支援します。 これらは、いくつかの点で通常のUnixスタイルのアカウントに似ていますが、Postgresはユーザーとグループを区別せず、代わりに、より柔軟な用語「ロール」を好みます。

インストール時に、Postgresは「ident」認証を使用するように設定されます。つまり、Postgresの役割を一致するUnix/Linuxシステムアカウントに関連付けます。 Postgresの役割が存在する場合は、関連するLinuxシステムアカウントにログインすることでサインインできます。

インストール手順により、というユーザーアカウントが作成されました postgres これはデフォルトのPostgresロールに関連付けられています。 Postgresを使用するには、そのアカウントにログインする必要があります。 次のように入力すると、次のように入力できます。

sudo -i -u postgres

通常のユーザーパスワードの入力を求められた後、シェルプロンプトが表示されます。 postgres ユーザー。

次のように入力すると、Postgresプロンプトがすぐに表示されます。

psql

自動ログインし、データベース管理システムとすぐに対話できるようになります。

ただし、他の役割とデータベースの使用方法について少し説明し、操作するユーザーとデータベースを柔軟に設定できるようにします。

次のように入力して、PostgreSQLプロンプトを終了します。

\q

これで、に戻る必要があります postgres Linuxコマンドプロンプト。

新しい役割を作成する

から postgres Linuxアカウントでは、データベースシステムにログインすることができます。 ただし、追加の役割を作成する方法についても説明します。 The postgres Postgres管理ロールに関連付けられているLinuxアカウントは、ユーザーとデータベースを作成するためのいくつかのユーティリティにアクセスできます。

次のように入力して、新しい役割を作成できます。

createuser --interactive

これは基本的に、適切なPostgresコマンドを呼び出して仕様に合わせたユーザーを作成するインタラクティブなシェルスクリプトです。 役割の名前とスーパーユーザーにする必要があるかどうかという2つの質問のみが表示されます。 いくつかの追加のフラグを渡すことで、より詳細な制御を取得できます。 を見てオプションをチェックしてください man ページ:

man createuser

新しいデータベースを作成する

Postgresがデフォルトで設定される方法(一致するシステムアカウントによって要求される役割を認証する)には、接続する役割に対して一致するデータベースが存在するという前提もあります。

だから私が呼ばれるユーザーがいる場合 test1、そのロールはと呼ばれるデータベースへの接続を試みます test1 デフォルトでは。

このコマンドを次のように呼び出すだけで、適切なデータベースを作成できます。 postgres ユーザー:

createdb test1

新しいユーザーでPostgresに接続する

あなたがというLinuxシステムアカウントを持っていると仮定しましょう test1 (次のように入力して作成できます。 adduser test1)、Postgresの役割とデータベースを作成したこと test1.

次のように入力して、Linuxシステムアカウントに変更できます。

sudo -i -u test1

その後、に接続できます test1 としてのデータベース test1 次のように入力してPostgresの役割を指定します。

psql

これにより、すべてのコンポーネントが構成されていると想定して自動的にログインします。

ユーザーが別のデータベースに接続するようにする場合は、次のようにデータベースを指定することで接続できます。

psql -d postgres

次のように入力すると、ログインしているPostgresユーザーと現在接続しているデータベースに関する情報を取得できます。

\conninfo

You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

これは、デフォルト以外のデータベースまたはデフォルト以外のユーザーに接続している場合に、現在の設定を思い出させるのに役立ちます。

テーブルの作成と削除

PostgreSQLデータベースシステムに接続する方法がわかったので、いくつかの基本的なタスクを完了する方法について説明します。

まず、いくつかのデータを格納するためのテーブルを作成しましょう。 遊具を説明するテーブルを作成しましょう。

このコマンドの基本的な構文は次のようになります。

CREATE TABLE table_namecolumn_name1 col_typefield_lengthcolumn_constraintscolumn_name2 col_typefield_length )、 column_name3 col_typefield_length ));

ご覧のとおり、テーブルに名前を付けてから、必要な列、列の種類、フィールドデータの最大長を定義します。 オプションで、各列にテーブル制約を追加することもできます。

Postgres でテーブルを作成および管理する方法について詳しくは、こちらをご覧ください。

この目的のために、次のような単純なテーブルを作成します。

CREATE TABLE playground (
    equip_id serial PRIMARY KEY,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
    install_date date
);

私達は私達が持っている装置を目録にする遊び場のテーブルを作りました。 これは、機器IDで始まります。 serial タイプ。 このデータ型は自動インクリメント整数です。 この列に次の制約を与えました primary key これは、値が一意であり、nullであってはならないことを意味します。

2つの列については、フィールドの長さを指定していません。 これは、長さがタイプによって暗示されるため、一部の列タイプは設定された長さを必要としないためです。

次に、機器のタイプと色の列を示します。それぞれを空にすることはできません。 次に、場所の列を作成し、値が8つの可能な値のいずれかである必要がある制約を作成します。 最後の列は、機器を設置した日付を記録した日付列です。

次のように入力すると、新しいテーブルが表示されます。

\d

                   List of relations
 Schema |          Name           |   Type   |  Owner   
--------+-------------------------+----------+----------
 public | playground              | table    | postgres
 public | playground_equip_id_seq | sequence | postgres
(2 rows)

ご覧のとおり、遊び場のテーブルがありますが、 playground_equip_id_seq それはタイプです sequence. これは、私たちが提供した「シリアル」タイプの表現です。 equip_id 桁。 これにより、シーケンス内の次の番号が追跡されます。

表だけを表示したい場合は、次のように入力できます。

\dt

           List of relations
 Schema |    Name    | Type  |  Owner   
--------+------------+-------+----------
 public | playground | table | postgres
(1 row)

テーブル内のデータの追加、クエリ、および削除

テーブルが作成されたので、そこにデータを挿入できます。

スライドとスイングを追加しましょう。 これを行うには、追加するテーブルを呼び出し、列に名前を付けてから、各列のデータを提供します。 スライドとスイングは次のように追加できます。

 INSERT INTO playground(type、color、location、install_date)VALUES('slide'、'blue'、'south'、 '2014-04-28');  INSERT INTO playground(type、color、location、install_date)VALUES('swing'、'yellow'、'northwest'、 '2010-08-16');  

あなたはいくつかのことに気付くはずです。 まず、列名は引用符で囲まないでください。ただし、入力する列valuesには引用符が必要です。

覚えておくべきもう一つのことは、私たちはの値を入力しないということです equip_id 桁。 これは、テーブルに新しい行が作成されるたびにこれが自動生成されるためです。

次に、次のように入力して、追加した情報を取得できます。

SELECT * FROM playground;

 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        1 | slide | blue   | south     | 2014-04-28
        2 | swing | yellow | northwest | 2010-08-16
(2 rows)

ここで、あなたは私たちの equip_id 正常に入力され、他のすべてのデータが正しく整理されていること。

スライドが壊れて遊び場から削除した場合は、次のように入力してテーブルから行を削除することもできます。

DELETE FROM playground WHERE type = 'slide';

テーブルをもう一度クエリすると、スライドがテーブルの一部ではなくなっていることがわかります。

SELECT * FROM playground;

 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        2 | swing | yellow | northwest | 2010-08-16
(1 row)

テーブルに列を追加および削除する方法

作成後にテーブルを変更して列を追加する場合は、簡単に行うことができます。

次のように入力することで、各機器の最後のメンテナンス訪問を示す列を追加できます。

 ALTER TABLE playground ADD last_maint date;  

テーブル情報をもう一度表示すると、新しい列が追加されていることがわかります(ただし、データは入力されていません)。

SELECT * FROM playground;

 equip_id | type  | color  | location  | install_date | last_maint 
----------+-------+--------+-----------+--------------+------------
        2 | swing | yellow | northwest | 2010-08-16   | 
(1 row)

列を簡単に削除できます。 作業員が別のツールを使用してメンテナンス履歴を追跡していることがわかった場合は、次のように入力して列を削除できます。

ALTER TABLE playground DROP last_maint;

テーブル内のデータを更新する方法

テーブルにレコードを追加する方法とレコードを削除する方法はわかっていますが、既存のエントリを変更する方法についてはまだ説明していません。

必要なレコードを照会し、列を使用する値に設定することにより、既存のエントリの値を更新できます。 「swing」レコードを照会して(これは、テーブル内のすべてのスイングに一致します)、その色を「red」に変更できます。 これは、ペイントジョブを実行した場合に役立つ可能性があります。

UPDATE遊び場SETcolor='red' WHERE type ='swing';  

データを再度クエリすることで、操作が成功したことを確認できます。

SELECT * FROM playground;

 equip_id | type  | color | location  | install_date 
----------+-------+-------+-----------+--------------
        2 | swing | red   | northwest | 2010-08-16
(1 row)

ご覧のとおり、スライドは赤として登録されています。

結論

これで、Ubuntu14.04サーバーでPostgreSQLがセットアップされました。 ただし、Postgresで学ぶべきことはまだはるかにあります。 Postgresの使用方法をカバーするその他のガイドは次のとおりです。

ジャスティン・エリングウッド