Postgresqlデータベースの紹介1-使用

1.1インストール

言うまでもなく、PostgreSQLを使用する前にインストールする必要があります。PostgreSQLがオペレーティングシステムにプリインストールされているか、システム管理者がインストールしている場合は、オペレーティングシステムのドキュメントまたはシステム管理者からPostgreSQLへのアクセス方法に関する情報を入手する必要があります。

PostgreSQLがすでにインストールされているかどうか、またはインストールされているPostgreSQLが利用可能かどうかわからない場合は、自分でインストールできます。PostgreSQLのインストールは難しくありません。インストール自体は良い練習の機会です。PostgreSQLは非特権ユーザーがインストールでき、スーパーユーザー(root)のアクセス権は必要ありません。

PostgreSQLを自分でインストールする場合は、第15章のインストール手順を参照し、インストールが完了したらこの手順に戻ってください。必ず関連する環境変数を設定してください。

サーバーの管理者がデフォルトの方法ではなくPostgreSQLをインストールする場合は、追加の作業を行う必要があります。たとえば、データベースサーバーがリモートコンピューター上にある場合は、PGHOST環境変数をデータベースサーバーのコンピューター名に設定する必要があり、環境変数PGPORTも設定する必要がある場合があります。最も一般的なのは、アプリケーションを起動してもデータベースに接続できない場合は、すぐにシステム管理者に連絡する必要があります。管理者の場合は、ドキュメントを参照して、環境変数が正しく設定されていることを確認する必要があります。それでも上記の内容がわからない場合は、まず次のセクションをお読みください。

1.2システムの基本概念

まず、PostgreSQLシステムの基本的なアーキテクチャを理解する必要があります。PostgreSQLシステムのさまざまな部分の間の相互関係を理解すると、この章がより明確になります。

PostgreSQLは、クライアント/サーバー(C / S)モデルを使用してサービスを提供します。PostgreSQLセッションは、次の関連プロセス(プログラム)で構成されます。

(1)サーバー側のプロセス。このプロセスは、データベースファイルを管理し、データベースへのクライアント接続を受け入れ、クライアントに代わってデータベースで操作を実行します。このプロセスのプログラム名はpostgresと呼ばれます。

(2)フロントエンドアプリケーション、つまりデータベース操作を必要とするクライアントアプリケーション。クライアントアプリケーション自体は多様である可能性があります。それらは、文字インターフェイスツール、グラフィカルインターフェイスアプリケーション、データベースにアクセスしてWebページを表示するWebサーバー、または特別なデータベース管理ツールです。一部のクライアントアプリケーションはPostgreSQLリリースで提供されますが、それらのほとんどはユーザーによって開発されています。

一般的なクライアント/サーバーアプリケーション(C / Sアプリケーション)と同様に、クライアントとサーバーは異なるホスト上に置くことができます。この時点で、TCP / IPを介して接続されています。クライアントでアクセスできるファイルは、データベースサーバーマシンではアクセスできない可能性があるため(または別のファイル名でのみアクセスできるため)、この点に注意してください。 。

PostgreSQLサーバーは、クライアントからの複数の同時リクエストを処理できます。これを可能にするために、リクエストごとに新しいプロセスを開始(「フォーク」)します。その後、クライアントと新しいサーバープロセスは、元のpostgresプロセスを介して直接通信しません。したがって、サーバー側のメインプロセスは常に実行され、クライアントからの接続を待機します。一方、クライアントと関連するサーバー側プロセスは、必要な場合にのみ実行されます。(もちろん、これらはユーザーに対して透過的であり、完全を期すためにここで説明します。)

 

1.3データベースを作成する

データベースサーバーにアクセスできるかどうかをテストする最初の例は、データベースの作成を試みることです。PostgreSQLサーバーは複数のデータベースを管理できます。通常、プロジェクトごとおよびユーザーごとに個別のデータベースを使用します。

システム管理者がデータベースを作成し、データベースの名前を指定した可能性があります。この場合は、このステップをスキップして次のセクションにスキップできます

mydb(この例ではmydb)という名前の新しいデータベースを作成するには、次のコマンドを使用できます。

   $ createdb mydb

コマンドの実行後に特別な情報が表示されない場合、コマンドは成功しているため、このセクションの残りの部分はスキップできます。

次のようなメッセージが表示された場合

   createdb: command not found 

その後、PostgreSQLが正しくインストールされません。まったくインストールされていないか、シェルの検索パス設定に含まれていません。絶対パスを使用してコマンドを呼び出してみてください。

   $ /usr/local/pgsql/bin/createdb mydb 

ノードのパスは異なる場合があります。正しい場所については、管理者に連絡するか、インストール手順を参照してください。

別の応答は次のようになります。

   createdb: could not connect to database postgres: could not connect to server:
   No such file or directory
       Is the server running locally and accepting
       connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

これは、サーバーが起動しなかったか、createdbが予期した場所で起動しなかったことを意味します。同様に、インストール手順を確認するか、管理者を見つける必要があります。

別の応答は次のようになります。

   createdb: could not connect to database postgres: FATAL: role "joe" does not exist 

あなたのログインアカウントはここに記載されています。管理者があなたのためにPostgreSQLユーザーアカウントを作成しない場合、これらの現象が発生します。(PostgreSQLユーザーアカウントとオペレーティングシステムユーザーアカウントは異なります。)管理者の場合は、ユーザーアカウントの作成について第20章を参照してください。最初のユーザーアカウントを作成するには、PostgreSQL(通常はpostgres)をインストールしたオペレーティングシステムユーザーのIDに切り替える必要があります。与えられたPostgreSQLユーザー名がオペレーティングシステムのユーザー名と異なる可能性もあります。この場合、-Uスイッチを使用するか、PGUSER環境変数を使用してPostgreSQLユーザー名を宣言する必要があります。

データベースユーザーアカウントを持っているが、データベースの作成に必要な権限がない場合は、次のプロンプトが表示されます。

   createdb: database creation failed: ERROR:  permission denied to create database

すべてのユーザーが新しいデータベースの作成を許可されているわけではありません。PostgreSQLがデータベースの作成を拒否した場合は、ノード管理者にデータベースを作成する権限を付与するように依頼する必要があります。その場合は、ノード管理者にご相談ください。PostgreSQLを自分でインストールした場合は、データベースサーバーを起動したユーザーとしてログインし、マニュアルを参照して認証作業を完了する必要があります。[1]

他の名前でデータベースを作成することもできます。PostgreSQLでは、特定のノードに任意の数のデータベースを作成できます。データベース名は文字で始まり、63文字未満である必要があります。便利な方法は、現在のユーザー名と同じ名前でデータベースを作成することです。多くのツールは、データベース名がデフォルトのデータベース名であると想定しているため、キーストロークを保存できます。このようなデータベースを作成するには、次のように入力します

   $ createdb

データベースを使用する必要がなくなった場合は、データベースを削除できます。たとえば、データベースmydbの所有者(作成者)である場合は、次のコマンドを使用してデータベースを削除できます。

   $ dropdb mydb

(このコマンドの場合、データベース名はデフォルトのユーザー名ではないため、宣言する必要があります。)このアクションは、データベースに関連するすべてのファイルを物理的に削除し、キャンセルできないため、これを行う前に必ずこれを行ってください。

createdbとdropdbに関する情報は、createdbとdropdbの別々のセクションにそれぞれあります。

注意:

[1]この理由について:PostgreSQLユーザー名はオペレーティングシステムのユーザーアカウントとは別のものです。データベースに接続するときに、接続するPostgreSQLユーザー名を選択できます。選択しない場合、デフォルトは現在のオペレーティングシステムアカウントです。その場合、サーバーを起動するためのオペレーティングシステムユーザーと同じ名前のPostgreSQLユーザーアカウントが常に存在し、通常、このユーザーにはデータベースを作成する権限があります。このユーザーとしてログインしたくない場合は、任意の場所で-Uオプションを指定して、接続するPostgreSQLユーザー名を選択することもできます。

1.4データベースへのアクセス

データベースを作成したら、次の方法でデータベースにアクセスできます。

  • PostgreSQLインタラクティブターミナルプログラムpsqlを実行します。これにより、SQLコマンドをインタラクティブに入力、編集、および実行できます。
  • データベースを作成および管理するには、PgadminやODBCまたはJDBCをサポートするオフィススイートなどの既存のグラフィカルフロントエンドツールを使用します。このチュートリアルでは、この方法については説明していません。
  • 複数の言語バインディングの1つを使用するクライアントアプリケーションを作成します。これらの可能性については、パートIVで詳しく説明します。

このチュートリアルの例を試すために、psqlを起動することをお勧めします。次のコマンドを入力して、mydbデータベースを起動できます。

   $ psql mydb

データベース名を指定しない場合、デフォルトでユーザーアカウント名になります。前のセクションでcreatedbの使用方法をすでに知っています。

psqlには、次の情報が表示されます。

   psql (9.1)
   Type "help" for help.
   mydb=>

最後の行も

   mydb=#

このプロンプトは、あなたがデータベースのスーパーユーザーであることを意味します。この状況の原因として最も可能性が高いのは、PostgreSQLの独自のインストールです。スーパーユーザーであるということは、アクセス制御によって制限されていないことを意味します。このチュートリアルでは、スーパーユーザーであるかどうかは関係ありません。

psqlの起動時に問題が発生した場合は、前のセクションに戻ってください。createdbを診断する方法は、psqlを診断する方法と非常に似ています。前者が機能する場合、後者も機能するはずです。

psqlによって出力される最後の行はプロンプトです。これは、psqlがあなたをリッスンしていることを意味します。この時点で、psqlによって管理されている作業領域にSQLクエリステートメントを入力できます。次のコマンドを試してください。

mydb=> SELECT version();
                              version
-----------------------------------------------------------------------
PostgreSQL 9.1 on i586-pc-linux-gnu, compiled by GCC 2.96, 32-bit
(1 row)
mydb=> SELECT current_date;
   date
------------
 2002-08-31
(1 row)
mydb=> SELECT 2 + 2;
 ?column?
----------
       4
(1 row)

psqlプログラムには、SQLコマンドではない内部コマンドがいくつかあります。それらはバックスラッシュ「\」で始まります。たとえば、次のコマンドを使用して、さまざまなPostgreSQLSQLコマンドのヘルプ構文を取得できます。

   mydb=> \h

psqlを終了するには、次のように入力します

   mydb=> \q

次に、psqlが終了し、シェルコマンドラインに戻ります。(内部コマンドの詳細を取得するには、psqlプロンプトで\?と入力します)。psqlの完全な機能は、psqlのドキュメントに記載されています。PostgreSQLが正しくインストールされている場合は、オペレーティングシステムのシェルプロンプトでman psqlと入力して、ドキュメントを読むこともできます。このドキュメントでは、これらの機能を明示的に使用することはしませんが、必要に応じて使用できます。

おすすめ

転載: blog.csdn.net/qq_37061368/article/details/112978393