前書き
リレーショナルデータベース管理システムは、多くのWebサイトやアプリケーションの重要なコンポーネントです。これらは、情報を保存、整理、およびアクセスするための構造化された方法を提供します。
[**PostgreSQL **](https://cloud.tencent.com/product/postgresql?from=10680)またはPostgresは、SQLクエリ言語の実装を提供するリレーショナルデータベース管理システムです。これは、多くの小規模および大規模プロジェクトで人気のある選択肢であり、標準に準拠し、信頼性の高いトランザクションや読み取りロックなしの同時実行性などの多くの高度な機能を備えているという利点があります。
このガイドでは、PostgresをUbuntu 16.04 VPSインスタンスにインストールする方法を示し、それを使用するためのいくつかの基本的な方法を紹介します。
sudo
コマンドを使用でき、ファイアウォールがオンになっている、root以外のアカウントを持つUbuntu サーバーが必要です。サーバーをお持ちでない方は、[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使用して実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。
UbuntuのデフォルトリポジトリにはPostgresパッケージが含まれているため、 apt
パッケージシステムを使用してこれらのパッケージを簡単にインストールできます。
これはこのセッションでの apt
の最初の使用であるため、ローカルパッケージインデックスを更新する必要があります。次に、Postgresパッケージといくつかの追加のユーティリティと関数を追加する -contrib
パッケージをインストールできます。
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
ソフトウェアがインストールされたので、それがどのように機能し、使用する可能性のある同様のデータベース管理システムとどのように異なるかを理解できます。
デフォルトでは、Postgresは「ロール」と呼ばれる概念を使用して認証と承認を処理します。いくつかの点で、これらは通常のUnixスタイルのアカウントに似ていますが、Postgresはユーザーとグループを区別せず、より柔軟な用語「ロール」を好みます。
インストール後、Postgresは** ID認証**を使用するように設定されます。これは、Postgresの役割を一致するUnix / Linuxシステムアカウントに関連付けることを意味します。 Postgresに役割が存在する場合、同じ名前のUnix / Linuxユーザー名がその役割としてログインできます。
このアカウントを使用してPostgresにアクセスする方法はいくつかあります。
インストールプロセスでは、デフォルトのPostgresロールに関連付けられた postgres
という名前のユーザーアカウントが作成されます。 Postgresを使用するために、このアカウントにログインできます。
次のように入力して、サーバーの postgres
アカウントに切り替えます。
sudo -i -u postgres
次のように入力すると、Postgresプロンプトにすぐにアクセスできます。
psql
すぐにログインして、データベース管理システムと対話できるようになります。
次のコマンドを入力して、PostgreSQLプロンプトを終了します。
\ q
これで、 postgres
Linuxコマンドプロンプトに戻るはずです。
sudo
権限を持つ postgres
アカウントを直接使用して、必要なコマンドを実行することもできます。
たとえば、最後の例では、Postgresプロンプトを入力するだけです。次のような sudo
権限を持つ postgres
ユーザーとして単一のコマンド psql
を実行することにより、これを1つのステップで実行できます。
sudo -u postgres psql
これにより、中間の「bash」シェルを介さずにPostgresに直接ログインします。
同様に、次のように入力して、インタラクティブなPostgresセッションを終了できます。
\ q
現在、データベースでは「postgres」ロールのみを構成しています。 createrole
コマンドを使用して、コマンドラインから新しい役割を作成できます。 --interactive
フラグは、必要な値を入力するように促します。
postgres
アカウントとしてログインしている場合は、次のように入力して新しいユーザーを作成できます。
createuser --interactive
逆に、通常のアカウントを切り替えずに各 sudo
コマンドを使用する場合は、次のように入力できます。
sudo -u postgres createuser --interactive
スクリプトは、いくつかのオプションの入力を求め、応答に基づいて正しいPostgresコマンドを実行して、仕様に従ってユーザーを作成します。
Enter name of role to add: sammy
Shall the newrole be a superuser?(y/n) y
いくつかの追加のフラグを渡すことで、より詳細な制御を得ることができます。 man
ページビューオプションを表示します。
man createuser
デフォルトでは、Postgres認証システムのもう1つの前提は、ログインに使用されたロールと同じ名前のデータベースがあり、そのロールがそのロールにアクセスできることです。
したがって、前のセクションで sammy
という名前のユーザーを作成した場合、ロールはデフォルトで呼び出される sammy
データベースに接続しようとします。 createdb
コマンドを使用して、適切なデータベースを作成できます。
postgres
アカウントとしてログインしている場合は、次のように入力できます。
createdb sammy
逆に、通常のアカウントを切り替えずに sudo
のすべてのコマンドを使用する場合は、次のように入力できます。
sudo -u postgres createdb sammy
「ident」認証ベースのログインを使用するには、Postgresロールおよびデータベースと同じ名前のLinuxユーザーが必要です。
一致するLinuxユーザーがいない場合は、 adduser
コマンドを使用して作成できます。これは、 sudo
権限を持つアカウント( postgres
ユーザーとしてログインしていない)から行う必要があります。
sudo adduser sammy
適切なアカウントを取得したら、次のように入力してデータベースに切り替えて接続できます。
sudo -i -u sammy
psql
または、これをインラインで実行することもできます。
sudo -u sammy psql
すべてのコンポーネントが適切に構成されていると仮定すると、自動的にログインします。
ユーザーが他のデータベースに接続できるようにする場合は、データベースを指定することでこれを行うことができます。
psql -d postgres
ログイン後、次のように入力して、現在の接続情報を確認できます。
\ conninfo
You are connected to database "sammy"as user "sammy" via socket in"/var/run/postgresql" at port "5432".
これは、デフォルト以外のデータベースまたはデフォルト以外のユーザーに接続する場合に役立ちます。
PostgreSQLデータベースシステムに接続する方法がわかったので、いくつかの基本的なタスクを完了する方法を理解できます。
まず、いくつかのデータを格納するためのテーブルを作成できます。遊具を説明するテーブルを作成しましょう。
このコマンドの基本的な構文は次のとおりです。
CREATE TABLE table_name(
column_name1 col_type(field_length) column_constraints,
column_name2 col_type(field_length),
column_name3 col_type(field_length));
ご覧のとおり、テーブルの名前を指定してから、必要な列、列の種類、フィールドデータの最大長を定義します。各列にテーブル制約を追加することもできます。
この目的のために、次のような単純なテーブルを作成します。
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
);
機材を数えることができる遊び場テーブルを作りました。これは、タイプ serial
のデバイスIDで始まります。このデータタイプは自動インクリメント整数です。この列にプライマリキー制約を割り当てました。つまり、値は一意であり、nullであってはなりません。
2つの列( equip_id
と install_date
)については、フィールドの長さを指定しませんでした。これは、タイプが長さを意味するため、一部の列タイプは長さを設定する必要がないためです。
次に、デバイスの列に「type」と「color」を指定します。それぞれを空にすることはできません。 location
列を作成し、値が8つの可能な値の1つである必要がある制約を作成します。最後の列は日付列で、機器を設置した日付を記録しています。
次のように入力すると、新しいテーブルを表示できます。
\ d
List of relations
Schema | Name | Type | Owner
- - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - +- - - - - - - public| playground | table | sammy
public| playground_equip_id_seq | sequence |sammy(2 rows)
遊び場のテーブルはここにありますが、「シーケンス」の一種であるいわゆる「playground_equip_id_seq」もあります。これは、 equip_id
列に提供する serial
タイプの表現です。これにより、シーケンス内の次の番号が追跡され、このタイプの列用に自動的に作成されます。
シーケンスなしでリストを表示したいだけの場合は、次のように入力できます。
\ dt
List of relations
Schema | Name | Type | Owner
- - - - - - - - +- - - - - - - - - - - - +- - - - - - - +- - - - - - - public| playground | table |sammy(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');
いくつかの一般的なハングアップを回避するために、データを入力するときは注意が必要です。まず、列名は引用符で囲まないでください。ただし、入力する列値には引用符が必要です。
もう1つ覚えておくべきことは、 equip_id
列の値を入力しないことです。これは、テーブルに新しい行が作成されるたびに自動的に生成されるためです。
次に、次のように入力して、追加した情報を取得できます。
SELECT * FROM playground;
equip_id | type | color | location | install_date
- - - - - - - - - - +- - - - - - - +- - - - - - - - +- - - - - - - - - - - +- - - - - - - - - - - - - - 1| slide | blue | south |2014-04-282| 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 playground SET color ='red' WHERE type ='swing';
データを再度クエリすることで、操作の成功を確認できます。
SELECT * FROM playground;
equip_id | type | color | location | install_date
- - - - - - - - - - +- - - - - - - +- - - - - - - +- - - - - - - - - - - +- - - - - - - - - - - - - - 2| swing | red | northwest |2010-08-16(1 row)
ご覧のとおり、スライドは赤で登録されています。
これで、Ubuntu16.04サーバーにPostgreSQLがセットアップされました。
その他のUbuntuチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。
参照:「Ubuntu16.04にPostgreSQLをインストールして使用する方法」
Recommended Posts