序章
リレーショナル データベース管理システムは、多くの Web サイトやアプリケーションの重要なコンポーネントです。これらは、情報を保存、整理、およびアクセスするための構造化された方法を提供します。
PostgreSQL、または Postgres は、次の実装を提供するリレーショナル データベース管理システムです。SQLクエリ言語。標準に準拠しており、信頼性の高いトランザクションや読み取りロックのない同時実行性など、多くの高度な機能を備えています。
このガイドでは、Ubuntu 20.04 サーバーに Postgres をインストールする方法を説明します。また、一般的なデータベース管理に関する手順もいくつか説明します。
前提条件
このチュートリアルを進めるには、次のように構成された Ubuntu 20.04 サーバーが 1 台必要です。Ubuntu 20.04の初期サーバーセットアップガイド。この前提条件チュートリアルを完了すると、サーバーには非根sudo 権限と基本的なファイアウォールを持つユーザー。
ステップ1-PostgreSQLのインストール
Ubuntu のデフォルト リポジトリには Postgres パッケージが含まれているため、これらを使用してインストールできます。適切な
包装システム。
最近行っていない場合は、サーバーのローカル パッケージ インデックスを更新します。
$ sudo aptアップデート
次に、Postgres パッケージを-貢献
追加のユーティリティと機能を追加するパッケージ:
- sudo apt install postgresql postgresql-contrib
ソフトウェアがインストールされたので、その仕組みと、これまでに使用したことのある他のリレーショナル データベース管理システムとの違いについて説明します。
ステップ2 — PostgreSQLのロールとデータベースの使用
デフォルトでは、Postgres は「ロール」と呼ばれる概念を使用して認証と認可を処理します。これらはある意味、通常の Unix スタイルのアカウントに似ていますが、Postgres ではユーザーとグループを区別せず、より柔軟な用語「ロール」を好んで使用します。
インストール時に、Postgres は使用するように設定されますアイデンティティこれは、Postgres ロールを一致する Unix/Linux システム アカウントに関連付けることを意味します。 Postgres 内にロールが存在する場合、同じ名前の Unix/Linux ユーザー名はそのロールとしてサインインできます。
インストール手順により、というユーザー アカウントが作成されました。ポストグレこれはデフォルトの Postgres ロールに関連付けられています。 Postgres を使用するには、そのアカウントにログインします。
このアカウントを利用して Postgres にアクセスするには、いくつかの方法があります。
postgres アカウントへの切り替え
に切り替えますポストグレ次のように入力して、サーバー上のアカウントを作成します。
次のように入力して、PostgreSQL プロンプトにすぐにアクセスできるようになりました。
そこから、必要に応じてデータベース管理システムと自由に対話できます。
次のように入力して、PostgreSQL プロンプトを終了します。
これにより、次の画面に戻ります。ポストグレ
Linuxのコマンドプロンプト。
アカウントを切り替えずに Postgres プロンプトにアクセスする
必要なコマンドを実行することもできますポストグレ直接アカウントを作成する須藤
。
たとえば、最後の例では、まず Postgres プロンプトに切り替えるように指示されました。ポストグレユーザーと実行中psql
をクリックして、Postgres プロンプトを開きます。単一のコマンドを実行することで、これを 1 つのステップで実行できます。psql
としてポストグレユーザーと須藤
、 このような:
これにより、仲介者を介さずに Postgres に直接ログインできます。バッシュ
間にシェル。
ここでも、次のように入力して対話型 Postgres セッションを終了できます。
多くのユースケースでは、複数の Postgres ロールが必要です。これらを構成する方法については、以下をお読みください。
ステップ3-新しい役割の作成
現在、あなたが持っているのはポストグレデータベース内で構成されたロール。コマンドラインから次のコマンドを使用して新しいロールを作成できます。ロールの作成
指図。の - 相互の作用
flag を使用すると、新しいロールの名前を入力するよう求められ、また、スーパーユーザー権限を持つ必要があるかどうかも尋ねられます。
としてログインしている場合は、ポストグレアカウントを作成するには、次のように入力して新しいユーザーを作成します。
代わりに使用したい場合は、須藤
通常のアカウントから切り替えることなく、コマンドごとに次のように入力します。
スクリプトはいくつかの選択肢を求めるプロンプトを表示し、その回答に基づいて正しい Postgres コマンドを実行して仕様に合わせたユーザーを作成します。
追加するロールの名前を入力してください:サミー新しい役割はスーパーユーザーでしょうか? (はい/いいえ)y
いくつかの追加フラグを渡すことで、より詳細な制御を得ることができます。を見てオプションを確認してください男
ページ:
- 男作成ユーザー
Postgres のインストールには新しいユーザーが追加されましたが、データベースはまだ追加されていません。次のセクションでは、このプロセスについて説明します。
ステップ4-新しいデータベースの作成
Postgres 認証システムがデフォルトで行うもう 1 つの前提は、ログインに使用されるロールには、アクセスできる同じ名前のデータベースがあるということです。
これは、前のセクションで作成したユーザーが次のように呼ばれる場合を意味します。サミーの場合、そのロールはデフォルトで「sammy」とも呼ばれるデータベースへの接続を試みます。次のコマンドを使用して適切なデータベースを作成できます。作成されましたb
指図。
としてログインしている場合は、ポストグレアカウントの場合は、次のように入力します。
- 作成されましたbサミー
代わりに使用したい場合は、須藤
通常のアカウントから切り替えることなく、コマンドごとに次のように入力します。
$ sudo -u postgres createdb
この柔軟性により、必要に応じてデータベースを作成するための複数のパスが提供されます。
ステップ5-新しいロールでPostgresプロンプトを開く
ログインするにはアイデンティティ
ベースの認証を使用するには、Postgres ロールおよびデータベースと同じ名前の Linux ユーザーが必要です。
利用可能な一致する Linux ユーザーがいない場合は、次のコマンドを使用して Linux ユーザーを作成できます。ユーザーを追加する
指図。これは、非ユーザーから行う必要があります。根のアカウント須藤
権限 (つまり、ユーザーとしてログインしていないことを意味します)ポストグレユーザー):
$ sudo 追加ユーザー
この新しいアカウントが使用可能になったら、次のように入力してデータベースに切り替えて接続できます。
$ sudo -i -u
- psql
または、これをインラインで行うこともできます。
$ sudo -u
すべてのコンポーネントが適切に構成されていると仮定すると、このコマンドは自動的にログインします。
ユーザーが別のデータベースに接続できるようにするには、次のようにデータベースを指定します。
- psql -dポストグレ
ログインしたら、次のように入力して現在の接続情報を確認できます。
- \conninfo
出力
データベースに接続しています」サミー「ユーザーとして」サミー" ポート "5432" の "/var/run/postgresql" のソケット経由。
これは、デフォルト以外のデータベースまたはデフォルト以外のユーザーに接続する場合に便利です。
PostgreSQL データベース システムに接続する方法がわかったので、基本的な Postgres 管理タスクをいくつか学ぶことができます。
テーブルを作成するための基本的な構文は次のとおりです。
テーブルの作成テーブル名(列名1 列の種類(フィールドの長さ)列の制約、列名2 列の種類(フィールドの長さ)、列名3 列の種類(フィールドの長さ));
ご覧のとおり、これらのコマンドはテーブルに名前を付け、列、列タイプ、フィールド データの最大長を定義します。必要に応じて、各列にテーブル制約を追加することもできます。
についてさらに詳しく知ることができますPostgres でテーブルを作成および管理する方法ここ。
デモのために、次のテーブルを作成します。
- CREATE TABLE プレイグラウンド (
- equip_id シリアル主キー、
- タイプ 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 日付
- );
このコマンドは、遊具の一覧表を作成します。テーブルの最初の列には、デバイスの機器 ID 番号が格納されます。シリアル
type は自動インクリメントされる整数です。この列には次の制約もあります。主キー
つまり、その中の値は一意であり、null であってはなりません。
次の 2 行は、機器の列を作成します。タイプ
と色
それぞれ、どちらも空にすることはできません。これらの後の行は、位置
列と、値が 8 つの可能な値のいずれかであることを要求する制約です。最後の行は、日にち
機器を設置した日付を記録する欄。
2 つの列について (装備ID
とインストール日
)、コマンドはフィールド長を指定しません。その理由は、一部のデータ型では長さまたは形式が暗黙的に設定されているため、長さを設定する必要がないためです。
次のように入力すると、新しいテーブルを確認できます。
- \d
出力
関係スキーマのリスト |名前 |タイプ |オーナー --------+--------------------------+----------+--- ---- 公開 |遊び場 |テーブル |サミーパブリック |プレイグラウンド_装備_id_seq |シーケンス |サミー(2列)
遊び場のテーブルはここにありますが、さらに次のようなものもありますplayground_equip_id_seq
それはタイプです順序
。これは、シリアル
あなたが指定したタイプ装備ID
桁。これはシーケンス内の次の番号を追跡し、このタイプの列に対して自動的に作成されます。
シーケンスを表示せずにテーブルだけを表示したい場合は、次のように入力します。
- \dt
出力
関係スキーマのリスト |名前 |タイプ |所有者 --------+-----------+----------+---------- 公開 |遊び場 |テーブル |サミー(1行)
テーブルを用意したら、それを使ってデータ管理を練習してみましょう。
ステップ 7 — テーブル内のデータの追加、クエリ、および削除
テーブルが作成されたので、そこにデータを挿入できます。例として、次のように、追加先のテーブルを呼び出し、列に名前を付け、各列のデータを指定することで、スライドとスイングを追加します。
- プレイグラウンドに挿入 (タイプ、色、場所、インストール日) 値 (「スライド」、「青」、「南」、「2017-04-28」);
- プレイグラウンドに挿入 (タイプ、色、場所、インストール日) 値 (「スイング」、「黄色」、「北西」、「2018-08-16」);
よくあるハングアップを避けるために、データを入力するときは注意してください。 1 つは、列名を引用符で囲まないことですが、入力する列値には引用符が必要です。
もう 1 つ留意すべき点は、装備ID
桁。これは、テーブルに新しい行を追加するたびにこれが自動的に生成されるためです。
次のように入力して、追加した情報を取得します。
- 遊び場から * を選択します。
出力
装備ID |タイプ |色 |場所 |インストール日 ----------+----------+----------+----------+--------- ----- 1 |スライド |青 |南 | 2017-04-28 2 |スイング |黄色 |北西 | 2018-08-16(2行)
ここで、あなたの装備ID
が正常に入力され、他のデータがすべて正しく整理されていることを確認します。
プレイグラウンドのスライドが壊れて削除する必要がある場合は、次のように入力してテーブルから行を削除することもできます。
- DELETE FROM プレイグラウンド WHERE type = ‘slide’;
テーブルを再度クエリします。
- 遊び場から * を選択します。
出力
装備ID |タイプ |色 |場所 |インストール日 ----------+----------+----------+----------+--------- ----- 2 |スイング |黄色 |北西 | 2018-08-16(1行)
注目してください。滑り台
行はテーブルの一部ではなくなりました。
ステップ8 — テーブルへの列の追加と削除
テーブルを作成した後、列を追加または削除してテーブルを変更できます。次のように入力して、各機器の最後のメンテナンス訪問を表示する列を追加します。
- ALTER TABLE プレイグラウンド ADD last_maint date;
テーブル情報を再度表示すると、新しい列が追加されていますが、データが入力されていないことがわかります。
- 遊び場から * を選択します。
出力
装備ID |タイプ |色 |場所 |インストール日 | last_maint ----------+----------+----------+-----------+--------- -----+----------- 2 |スイング |黄色 |北西 | 2018-08-16 | (1行)
作業スタッフがメンテナンス履歴を追跡するために別のツールを使用していることがわかった場合は、次のように入力して列を削除できます。
- ALTER TABLE プレイグラウンド DROP last_maint;
これにより、last_maint
列とその中で見つかった値はすべて削除されますが、他のすべてのデータはそのまま残ります。
ステップ9-テーブル内のデータの更新
ここまで、テーブルにレコードを追加する方法と削除する方法を学習しましたが、このチュートリアルでは、既存のエントリを変更する方法についてはまだ説明していません。
必要なレコードをクエリし、列を使用する値に設定することで、既存のエントリの値を更新できます。クエリを実行できます。スイング
レコード (これは一致します)毎日テーブルでスイング)、色を次のように変更します。赤
。これは、スイング セットにペイント ジョブを与える場合に便利です。
- プレイグラウンドを更新 SET color = ‘red’ WHERE type = ‘swing’;
データを再度クエリすることで、操作が成功したことを確認できます。
- 遊び場から * を選択します。
出力
装備ID |タイプ |色 |場所 |インストール日 ----------+----------+----------+-----------+---------- ----2 |スイング |赤 |北西 | 2018-08-16(1行)
ご覧のとおり、スライドは赤色として登録されています。
結論
これで、Ubuntu 20.04 サーバー上で PostgreSQL がセットアップされました。 Postgres とその使用方法について詳しく知りたい場合は、次のガイドを参照することをお勧めします。