時間と技術が進歩し続けるにつれて、インターネットは現代の世界で中心的な地位を保持しています。 そのため、ほとんどの企業や企業は、ブランドのオンライン側面を表すウェブサイトやアプリケーションを持っています。 あなたが小規模または大規模なウェブサイトの所有者であるかどうかに関係なく、あなたの仕事を容易にするために特定のツールの助けが必要です。 これらの中には、データベース管理システムがあります。
リレーショナルデータベース管理システムを使用すると、ウェブサイト上のデータを適切に分類して整理することができます。 このようにして、デジタル情報の山から意味のある結論を導き出すことができます。
PostgreSQLとは何ですか?
PostgreSQLはオープンソースのデータベース管理システムであり、非常に人気があります。 管理を容易にするために、ウェブサイトやアプリケーションの作成者によって頻繁に使用されます。 この堅牢なプラットフォームは、SQLクエリ言語を実装します。
その人気の理由の一つは、その標準準拠です。 標準に準拠したデータベースシステムは、ウェブサイトの管理者が法的当局とのトラブルに取得しないことを保証します。 さらに、PostgreSQLは、ユーザーが便利にデータを保存、整理、実装できる高度なツールの数にアクセスできるようにします。 これらの機能の一部には、安全なオンライントランザクションと非ロック同時実行制御が含まれます。このガイドでは、CloudSigma上のUbuntu18.04クラウドサーバーにPostgreSQLをインストールして使用する方法について説明します。 また、データベース上で実行できる基本的な管理アクションについても触れます。 始めましょう!
インストール前の要件
PostgreSQLのインストール手順に進む前に、前提条件に注意する必要があります。 言うまでもなく、続行するにはUbuntu18.04サーバーが必要です。 Ubuntu18.04サーバーの少なくとも1つを設定する必要があります。 初期サーバー設定を実行した後、サーバーにsudo権限を持つ非rootユーザーがいることを確認する必要があります。 また、ファイアウォールを持っている必要があります。 Ubuntuサーバーのセットアップに関するチュートリアルに従うことで、サーバーを簡単にインストールできます。 この準備ができたら、システムへのPostgreSQLのインストールを開始できます。ステップ1:PostgreSQLをインストールする
UbuntuサーバーはすでにPostgreSQLをデフォルトとして提供しています。 あなたがする必要があるのは、ローカルパッケージインデックスを更新し、aptパッケージングシステムを使用することだけです。 この更新は、セッションで初めて使用する場合にのみ必要です。 Postgresパッケージをインストールするには、次のコマンドを使用します:
sudo apt updatesudo apt install postgresql postgresql-contrib
-contribパッケージを追加すると、いくつかの余分なユーティリティと機能が得られます。
ステップ2: PostgreSQLの役割とデータベース
システムにPostgreSQLをインストールしたので、データベース管理システムをうまく活用する方法を見てみましょう。 まず、データベース内の”ロール”の概念に慣れることから始めます。 Postgresの「ロール」は、認証と承認の目的で使用されます。 この用語は、ユーザーとグループの両方を包含します。 インストール時に、プログラムはあなたのための新しいユーザーアカウントを作成します。 このアカウントはpostgresと呼ばれ、デフォルトのPostgresロールにリンクされています。 Postgresを使用するには、このアカウントにログインする必要があります。
PostgreSQLをインストールするときは、基本的にPostgresの役割を対応するUnixまたはLinuxシステムアカウントにリンクします。 これは、Postgresがident認証方式を使用することを意味します。 したがって、一致するロールがPostgresに存在する場合は、UnixまたはLinuxのユーザー名を使用してシステムにサインインできます。 Postgresアカウントから抽出できるいくつかのユーティリティを次に示します:
-
Postgresアカウントに切り替える
postgresアカウントに切り替えたい場合は、サーバーで次のコマンドを入力して切り替えることができます:
sudo -i -u postgres
次のように入力して、新しいPostgresプロンプトを開きます:
psql
これで、PostgreSQLシステムのさまざまな機能との対話を開始できます。 完了したら、次のように入力して、プロンプトを閉じてpostgres Linuxコマンドプロンプトに戻ることができます:
\q
-
アカウントを切り替えずにPostgresプロンプトにアクセスする
アカウントを切り替えることなくPostgresプロンプトを開くことができます。 これは、sudoを使用してコマンドを直接実行することを意味します。 最初にpostgresユーザーに切り替える代わりに、sudoを使用してpsqlコマンドを直接実行します:
sudo -u postgres psql
このコマンドの結果、Postgresに直接ログインできるようになります。 中間のbashシェルはありません。 次のコマンドを使用して、セッションを再度終了することができます:
\q
ステップ3:ロールを設定する
これまで、単一のpostgresアカウントまたは”ロール”で作業してきました。 このロールは、PostgreSQLのインストール時にデータベースで構成されました。 多くの場合、Postgresで複数のロールが必要であることがわかります。 このニーズを満たすために、データベースに新しいロールを作成できます。 これは、createroleコマンドの助けを借りて行うことができます。 新しいロールまたはユーザーを設定する方法は次のとおりです:
postgres@server:~$ createuser --interactive
コマンドを実行する前に、postgresアカウントにログインしていることを確認してください。 -Interactiveフラグを追加すると、ロールに名前を付けてその権限を決定する機会が得られます。 この特定のユーザーにスーパーユーザー権限を付与するかどうかを決定できます。 さらに、アカウントから切り替えることなくこの操作を実行できます。 この目的には、次のようにsudoを使用できます:
sudo -u postgres createuser --interactive
その後、目的のロール名を入力し、スーパーユーザーのステータスを確認するよう求められます:
上記とは別に、新しいロールの他の仕様を作成することもできます。 追加のフラグを表示するには、次のプロンプトでmanページにアクセスします:
$ man createuser
ステップ4:データベースの構築
新しいロールまたはユーザーを追加する方法がわかったので、新しいデータベースの追加を開始できます。 新しいロールを作成すると、Postgres認証システムは自動的に名前が一致するデータベースに接続しようとします。 したがって、新しいロールにsammyという名前を付けた場合は、’sammy’という名前のデータベースを構築して、デフォルトで両者が接続するようにすることができます。 新しいデータベースを作成するには、createdbコマンドを使用します。 Postgresアカウントに切り替えた場合は、次のコマンドを実行します:
postgres@server:~$ createdb sammy
代わりにsudoを使用している場合は、このコマンドを使用します:
$ sudo -u postgres createdb sammy
ステップ5:新しいプロンプトを開く
新しいロールで新しいプロンプトを開くには、まずログインする必要があります。 前述のように、PostgreSQLはidentベースの認証方法を使用します。 したがって、Postgresのロールとデータベースに置いたものと同じ名前のLinuxユーザーアカウントが必要になります。 あなたがそのようなLinuxユーザーを持っていない場合には心配しないでください。 Adduserコマンドの助けを借りて簡単に作成できます:
sudo adduser sammy
このコマンドを実行する前に、必ずpostgresユーザーからログアウトしてください。 Sudoを使用して非rootアカウントからこれを実行する必要があります。 Postgresロールの名前を持つ新しいユーザーを追加したので、それに切り替えることができます。 データベースに接続するには、次のように入力します:
sudo -i -u sammypsql
この操作は、次を使用してインラインで実行することもできます:
sudo -u sammy psql
最終的には、すべてが適切に設定されている場合、ユーザーに自動的にログインできるようになります。 複数のパスがある場合は、次のコマンドを使用して接続するデータベースを指定できます:
psql -d postgres
デフォルト以外のユーザーまたはデータベースに接続しているときに、現在の接続情報を確認する必要がある場合があります。 接続情報を確認するには、次のように入力します:
sammy =# \conninfo
あなたはこのようなものが表示されます:
ステップ6:テーブルの作成と削除
ユーザーとデータベースの基本が邪魔になったので、Postgresの基本的な管理タスクに進むことができます。 最も重要なものの一つは、テーブルを作成することです。 データを格納するために使用できるように、テーブルを作成できる必要があります。 新しいテーブルを作成するには、次のように入力します:
CREATE TABLE table_name ( column_name1 col_type (field_length) column_constraints, column_name2 col_type (field_length), column_name3 col_type (field_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である。 これは自動インクリメント整数に設定されているため、値は一貫して増加します。 つまり、各値は一意でなければならず、nullにすることはできません。 Equip_id列またはinstall_date列にフィールド長を指定しませんでした。 これらの列が事前に決定されたフィールド長を必要としない理由は、データ型がすでに長さを意味しているためです。
次に、遊具の種類と色の列があります。 これらの値はどちらもnullにすることはできません。 後続のコマンドは、location列のためのものです。 制約が適用されるため、値は指定された8つのオプションのうちの1つのみになります。 最後のコマンドは日付列を作成するので、機器が遊び場にいつインストールされたかをメモすることができます。
テーブルの編集が完了したら、次のように入力して表示できます:
sammy=# \d
上記のように、機器とplayground_equip_id_seqという別のエントリをリストしたテーブルがあります。 これは、tableではなくsequence型です。 これは、テーブルのequip_id列に適用したシリアルタイプのために表示されます。 この自動入力の目的は、シーケンス内の数字を追跡することです。 必要に応じて、シーケンスなしでテーブルだけを視覚化することもできます。 タイプイン:
ステップ7: テーブルへのデータの挿入と編集
テーブルをフォーマットした後、データの挿入を開始できます。 前のステップからの例を続けて、私達はテーブルにスライドおよび振動のような装置を加えてもいい。 構文では、編集するテーブルと列を指定し、データを入力します。 ここに例があります:
sammy=# INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');
このコマンドでは、特に注意する必要があることがいくつかあります。 データを入力するときは、各値を引用符で囲むようにしてください。 また、列名を引用符で囲む必要はありません。 追加した情報を表示するには、次のコマンドを使用します:
sammy=# SELECT * FROM playground;
新しい行ごとに自動的に生成されるequip_id列の値を入力する必要はないことに注意してください。 上記の表でわかるように、各行はequip_id列に正しく自動的に番号を取得します。 項目を追加する代わりに項目を削除する場合は、次のコマンドを使用できます:
sammy=# DELETE FROM playground WHERE type = 'slide';
もう一度テーブルを呼び出して、エントリがどのように削除されたかを確認します:
sammy=# SELECT * FROM playground;
ステップ8:テーブル内の列の変更
テーブルを作成したら、それは石で設定されていません。 必要に応じて列を追加および削除することで、列を変更できます。 たとえば、個々の機器の最後のメンテナンス訪問の日付も追加する場合は、次のように入力します:
sammy=# ALTER TABLE playground ADD last_maint date;
テーブルを再度召喚すると、新しい列が追加されていることがわかります。 ただし、まだデータを追加していないため、空になります。
sammy=# SELECT * FROM playground;
を持つレコードの表示同様に、テーブルから列を削除することもできます。 列が削除されると、そのすべてのデータも削除されます。 ただし、テーブルの残りの部分は変更されません。 最後の保守訪問日列を削除するには、次のコマンドを使用します:
sammy=# ALTER TABLE playground DROP last_maint;
ステップ9:テーブルデータの更新
新しいエントリを追加してテーブルから削除する方法は知っていますが、既存のエントリを変更することは可能ですか? 既存のエントリの値を簡単に更新できます。 まず、更新するレコードを照会する必要があります。 次に、SETコマンドを使用して値を変更します。 スイングの色を赤に変更したいとしましょう。 ここでそれを行う方法です:
sammy=# UPDATE playground SET color = 'red' WHERE type = 'swing';
テーブルを照会して、変更が行われたことを確認します:
sammy=# SELECT * FROM playground;
結論
これらの手順を実行すると、Ubuntu18.04サーバーでPostgreSQLを正常にセットアップできます。 サーバーパッケージと拡張機能の経験を強化したい場合は、PostgreSQL Aptリポジトリにいくつかのパッケージを見つけることができます。 もう少しガイダンスを使用すると、このデータベース管理システムで多くのことを達成することができます。
PostgreSQLでより多くのことをしたい場合は、PostgreSQLでロールを使用して権限を管理する方法をカバーするチュートリアルを見てみることができます。