<!--
$Header: /usr/prj/pg/cvsroot/doc/doc/src/sgml/start.sgml,v 1.10 2001/09/13 06:00:50 junichi Exp $
-->

 <chapter id="start">
  <title><!--Getting Started-->PostgreSQLの使用</title>

  <abstract>
   <para>
    <!--How to begin work with <productname>Postgres</productname> for a new user.-->
    初心者向け<productname>Postgres</productname>の使い方。
   </para>
  </abstract>

  <para>
   <!--Some  of the steps required to use <productname>Postgres</productname>
   can be performed by any Postgres user, and some must be done by
   the site database administrator.  This site administrator 
   is the person who installed the  software,  created
   the  database  directories  and  started the
   <application>postmaster</application>
   process.  This person does not  have  to  be  the  Unix
   superuser ("root")
   or the computer system administrator; a person can install and use
   <productname>Postgres</productname> without any special accounts or 
   privileges.-->

   <productname>Postgres</productname>を使用するにあたっては、どのPostgresユーザーでも行うことができる作業と、サイトのデータベース管理者だけが行う作業とがあります。ここでいうサイトのデータベース管理者というのは、ソフトウェアをインストールし、データベースのディレクトリを作成し、<application>postmaster</application>のプロセスを開始した人です。このデータベース管理者はUnixのスーパーユーザー（root）である必要はなく、また、コンピュータのシステムアドミニストレータである必要もありません。<productname>Postgres</productname>をインストールし、使用するにあたって、特別なUnixアカウントや権限は必要ありません。
  </para>

  <para>
   <!--If you are installing <productname>Postgres</productname> yourself, then
   refer to the Administrator's Guide for instructions on
   installation, and return
   to this guide when the installation is complete.-->

   <productname>Postgres</productname>を自分でインストールする際、インストールの手順については<citetitle>&admin-guide;</citetitle>を参照してください。インストールが終了したら、再びこのガイドに戻ってください。
  </para>

  <para>
   <!--Throughout this manual, any examples  that  begin  with
   the  character  "<literal>%</literal>" are commands that should be typed
   at the Unix shell prompt.  Examples that begin with the
   character "<literal>*</literal>" are commands in the Postgres query 
   language, Postgres <acronym>SQL</acronym>.-->

   このマニュアルでは、「<literal>%</literal>」の文字で始まる例はUnixのシェルプロンプトで入力してください。「<literal>*</literal>」の文字で始まるコマンドはPostgresの問い合わせ言語であるPostgres <acronym>SQL</acronym>で使用してください。
  </para>

  <sect1 id="start-env">
   <title><!--Setting Up Your Environment-->環境設定</title>
<indexterm><primary>PostgreSQL</primary><secondary sortas="かんきょうせってい">環境設定</secondary></indexterm>

   <para>
    <!--This section discusses how to set up
    your own environment  so  that  you  can  use  frontend
    applications.  We assume <productname>Postgres</productname> has
    already been 
    successfully installed and started; refer to the Administrator's Guide
    and the installation  notes
    for how to install Postgres.-->

    このセクションでは、フロントエンドアプリケーションを使用できるようにするための環境設定の方法を解説します。この時点では、<productname>Postgres</productname>が正常にインストールされていることとします。Postgresのインストールに関しては<citetitle>&admin-guide;</citetitle>を参照してください。
   </para>

   <para>
    <!--<productname>Postgres</productname> is a client/server
    application. As a user,
    you only need access to the client portions of the installation
    (an example
    of a client application is the interactive monitor
    <application>psql</application>).-->

    <productname>Postgres</productname>はクライアント/サーバーアプリケーションです。ユーザーとして利用する分にはインストールされたクライアント部分が使えるようになっていれば十分です。（クライアントアプリケーションの一例としては、インタラクティブモニタである<application>psql</application>が挙げられます）。

    <!--For simplicity,
    we will assume that <productname>Postgres</productname> has been
    installed in the
    directory  <filename>/usr/local/pgsql</filename>.   Therefore, wherever
    you see the directory <filename>/usr/local/pgsql</filename> you  should
    substitute  the name of the directory where
    <productname>Postgres</productname> is
    actually installed.-->

    話を簡単にするために、<productname>Postgres</productname>は<filename>/usr/local/pgsql</filename>ディレクトリにインストールされているものとします。したがって、このマニュアル内で<filename>/usr/local/pgsql</filename>ディレクトリと記述されているところは、実際に<productname>Postgres</productname>がインストールされたディレクトリに置き換えてください。

    <!--All <productname>Postgres</productname> commands are installed  in
    the directory
    <filename>/usr/local/pgsql/bin</filename>.   Therefore,  you should add
    this directory to your shell command path.  If you  use
    a variant of the Berkeley C shell, such as csh or tcsh,
    you would add-->

    <productname>Postgres</productname>のすべてのコマンドは<filename>/usr/local/pgsql/bin</filename>ディレクトリにインストールされています。したがって、このディレクトリをシェルのコマンドサーチパスに追加する必要があります。cshやtcshなどのバークレーCシェル系を使用している場合は、ホームディレクトリの<filename>.login</filename>ファイルに下記を追加してください。</para>

<programlisting>
% set path = ( /usr/local/pgsql/bin $path )
</programlisting>

    <!--in the <filename>.login</filename> file in your home directory.
    If you use
    a  variant  of  the  Bourne  shell, such as sh, ksh, or
    bash, then you would add-->

<para>sh、ksh、bashなどのBourneシェル系を使用している場合は、ホームディレクトリの.profileファイルに下記を追加してください。</para>

<programlisting>
% PATH=/usr/local/pgsql/bin:$PATH
% export PATH
</programlisting>

    <!--to the .profile file in your home directory.
    From now on, we will assume that  you  have  added  the
    <productname>Postgres</productname>  bin  directory to your path.-->

<para>ここから先の解説では、<productname>Postgres</productname>のbinディレクトリがパスに追加されていることを前堤としています。

    <!--In addition, we
    will make frequent reference to <quote>setting a shell  
     variable</quote>  or  <quote>setting an environment
     variable</quote> throughout
    this document.  If you did  not  fully  understand  the
    last  paragraph  on  modifying  your  search  path, you
    should consult the Unix manual pages that describe your
    shell before going any further.-->

    また、このドキュメントでは、<quote>シェル変数設定</quote>や、<quote>環境変数の設定</quote>を多く行います。上記のコマンドサーチパスに関する内容が完全に理解できなかった場合は、これより先に読み進める前に、Unixのマニュアルページを参照してください。
   </para>

   <para>
    <!--If your site administrator has not set things up in the
    default  way,  you may have some more work to do.  For example, if
    the database
    server machine is a remote machine, you
    will need to set the <acronym>PGHOST</acronym> environment
    variable to the name
    of the database server machine.   The  environment  variable
    <acronym>PGPORT</acronym> may also have to be set.
    The bottom line is this: if
    you try to start an application  program  and  it  complains
    that it cannot connect to the <application>postmaster</application>,
    you should immediately consult your site administrator to make
    sure that your
    environment is properly set up.-->

    サイト管理者がデフォルトと違う設定にしている場合は、行わなければいけない作業が少々増えてしまいます。たとえば、データベースサーバーがリモートマシンである場合、<acronym>PGHOST</acronym>環境変数にデータベースサーバーマシン名を設定する必要があります。また、<acronym>PGPORT</acronym>環境変数も設定しなければいけない可能性もあります。つまり、アプリケーションプログラムを起動したときに、<application>postmaster</application>に接続できない、といわれる場合は、ただちにサイト管理者に問い合わせ、環境が適切に設定されているかの確認を行ってください。
   </para>

  </sect1>

  <sect1 id="start-psql">
   <title><!--Starting the Interactive Monitor (psql)-->
          インタラクティブモニタ（psql）の起動
   </title>
<indexterm><primary sortas="いんたらくてぃぶもにた">インタラクティブモニタ</primary></indexterm>
<indexterm><primary>PostgreSQL</primary><secondary sortas="いんたらくてぃぶもにた">インタラクティブモニタ</secondary></indexterm>

   <para>
    <!--Assuming that  your  site  administrator  has  properly
    started  the  <application>postmaster</application>  process and
    authorized you to
    use the database, you (as a user) may begin to start up
    applications.   As previously mentioned, you should add
    <filename>/usr/local/pgsql/bin</filename> to your  shell  search path.
    In  most  cases,  this  is all you should have to do in
    terms of preparation.-->

    サイト管理者が適切に<application>postmaster</application>を起動させ、ユーザーに対してのデータベースの利用を許可したら、ユーザーはアプリケーションを使用することができます。もちろん、前述したように、シェルのコマンドサーチパスに<filename>/usr/local/pgsql/bin</filename>が追加されている必要があります。ほとんどの場合、下準備として行わなければいけないのはこれだけです。
   </para>

   <para>
    <!--Two different styles of connections
    are supported. The site administrator will have chosen to allow
    TCP/IP network connections
    or will have restricted database access to local (same-machine)
    socket connections only.
    These choices become significant if you encounter problems in
    connecting to a database, since you will want to confirm that you
    are choosing an allowed connection option.-->

    Postgresでは、2つの異なった接続方法がサポートされています。TCP/IPネットワーク接続を許可するようにしているか、データベース接続をローカルな（同一のマシンの）ソケットのみに制限しているか、サイト管理者がどちらかに設定しているはずです。どちらが許可されているかはとても重要で、データベースとの接続上の問題が発生した際には、許可されている方の接続方法を選択しているか確認する必要があります。

   </para>

   <para>
    <!--If  you get the following error message from a
    <productname>Postgres</productname>
    command (such as <application>psql</application> or
    <application>createdb</application>):-->

    以下の2つのようなエラーメッセージを<productname>Postgres</productname>コマンド（<application>psql</application>や<application>createdb</application>など）から受け取る場合があるかもしれません。</para>

<programlisting>
% <userinput>psql template1</userinput>
psql: connectDBStart() -- connect() failed: No such file or directory
        Is the postmaster running locally
        and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
</programlisting>

    <!--or-->

<programlisting>
% <userinput>psql -h localhost template1</userinput>
psql: PQconnectPoll() -- connect() failed: Connection refused
        Is the postmaster running (with -i) at 'localhost'
        and accepting connections on TCP/IP port 5432?
</programlisting>


<para><!--it is usually because-->これは多くの場合、以下のような可能性があります。</para>

    <itemizedlist mark="bullet" spacing="compact">
     <listitem>
      <para>
       <!--the <application>postmaster</application>  is  not  running,
       or-->
       <application>postmaster</application>が起動していない。
      </para>
     </listitem>

     <listitem>
      <para>
       <!--you are attempting to connect to the wrong server host.-->
       間違ったサーバーホストに接続しようとしている。
      </para>
     </listitem>
    </itemizedlist>

   <para>
    <!--If you get the following error message:-->
    下記のようなエラーメッセージを受け取った場合は、サイト管理者は間違ったユーザーで<application>postmaster</application>を起動させた可能性があります。この場合は、サイト管理者は、<productname>Postgres</productname>スーパーユーザーとして<application>postmaster</application>を再起動させてください。</para>

<programlisting>
FATAL 1:Feb 17 23:19:55:process userid (2360) != database owner (268)
</programlisting>

    <!--it means that the site administrator started the
    <application>postmaster</application>
    as  the  wrong user.  Tell him to restart it as
    the <productname>Postgres</productname> superuser.-->

  </sect1>

  <sect1 id="start-manage-db">
   <title><!--Managing a Database-->データベース管理</title>
<indexterm><primary sortas="でーたべーすかんり">データベース管理</primary></indexterm>
<indexterm><primary>PostgreSQL</primary><secondary sortas="でーたべーすかんり">データベース管理</secondary></indexterm>


   <para>
    <!--Now that <productname>Postgres</productname> is up and running we
    can create  some
    databases  to  experiment  with.  Here, we describe the
    basic commands for managing a database.-->

    この時点で<productname>Postgres</productname>は正常に稼働していると仮定し、ここからは実際にデータベースを作成し、データベースを管理するための基本的なコマンドを紹介します。
   </para>

   <para>
    <!--Most <productname>Postgres</productname>
    applications assume that the database name, if not specified, is
    the same as the name on your computer
    account.-->

    ほとんどの<productname>Postgres</productname>アプリケーションは、データベース名が特に指定されてなければ、コンピュータでのアカウント名をデータベース名として使います。
   </para>

   <para>
    <!--If your database administrator has set up your account without
    database creation privileges,
    then she should have told you what the name of your database is. If
    this is the case, then you
    can skip the sections on creating and destroying databases.-->

    データベース管理者が、あなたのアカウントにデータベース作成権限を与えていない場合、あなたは管理者から使用する（すでに存在する）データベース名を教えてもらっているはずです。この場合、データベースの作成/削除のセクションは読み飛ばしてください。
   </para>

   <sect2>
    <title><!--Creating a Database-->データベースの作成</title>
<indexterm><primary sortas="でーたべーす">データベース</primary><secondary sortas="さくせい">作成</secondary></indexterm>
<indexterm><primary>PostgreSQL</primary><secondary sortas="でーたべーすのさくせい">データベースの作成</secondary></indexterm>
    <para>
     <!--Let's say you want to create  a  database  named
     <database>mydb</database>.
     You can do this with the following command:-->

     <database>mydb</database>という名前のデータベースを作成したいとします。この場合、以下のコマンドで作成することができます。</para>

<programlisting>
% <userinput>createdb mydb</userinput>
</programlisting>

    <para>
     <!--If you do not have the privileges required to create a database,
     you will see
     the following:-->

     データベースを作成する権限がない場合、以下のようなメッセージが表示されます。</para>

<programlisting>
% <userinput>createdb mydb</userinput>
NOTICE:user "your username" is not allowed to create/destroy databases
createdb: database creation failed on mydb.
</programlisting>

    <para>
     <!--<productname>Postgres</productname>  allows  you to create any
     number of databases
     at a  given  site  and  you  automatically  become  the
     database  administrator  of  the database you just created.
     Database names must  have  an  alphabetic  first
     character and are limited to 32 characters in length.
     Not  every  user has authorization to become a database
     administrator.  If <productname>Postgres</productname> refuses to 
     create databases
     for you, then the site administrator needs to grant you
     permission to  create  databases.   Consult  your  site
     administrator if this occurs.-->

     <productname>Postgres</productname>ではデータベース数の作成制限はありません。また、データベースを作成した人がそのデータベースの管理者となります。データベース名は、必ずアルファベットから始まり、32文字以内である必要があります。すべてのユーザーはデータベース管理者の権限を持っているのではなく、もし作成しようとしても<productname>Postgres</productname>が拒否した場合は、サイト管理者から、データベースを作成できる権限を与えてもらってください。この場合は、サイト管理者に問い合わせてください。
    </para>
   </sect2>

   <sect2>
    <title><!--Accessing a Database-->データベースとの接続</title>
<indexterm><primary sortas="でーたべーす">データベース</primary><secondary sortas="せつぞく">接続</secondary></indexterm>
<indexterm><primary>PostgreSQL</primary><secondary sortas="でーたべーすへのせつぞく">データベースへの接続</secondary></indexterm>

    <para>
     <!--Once you have constructed a database, you can access it
     by:-->

     データベースを作成できたら、以下に示す方法でそのデータベースと接続します。</para>

     <itemizedlist spacing="compact" mark="bullet">
      <listitem>
       <para>
	<!--Running the <productname>Postgres</productname>  terminal
	monitor  programs
	(e.g. <application>psql</application>) which allows you to
	interactively
        enter, edit, and execute <acronym>SQL</acronym> commands.-->

        <productname>Postgres</productname>ターミナルモニタプログラム（<application>psql</application>など）を起動させ、<acronym>SQL</acronym>コマンドを使って対話的に入力、編集、実行する。
       </para>
      </listitem>

      <listitem>
       <para>
	<!--Using an existing native frontend tool like
	<application>pgaccess</application> or
	<application>ApplixWare</application> (via
	<acronym>ODBC</acronym>) to create and manipulate a 
	database.-->

        <application>pgaccess</application>や
        <acronym>ODBC</acronym>を使った<application>ApplixWare</application>などの、既存のツールを使用してデータベースを作成/操作する。
       </para>
      </listitem>

      <listitem>
       <para>
	<!--Using a language like perl or tcl which has a supported
	interface for <productname>Postgres</productname>. Some of
	these languages also have convenient and powerful GUI toolkits 
	which can help you construct custom
	applications. <application>pgaccess</application>, mentioned
	above, is one such application written in tk/tcl and can be
	used as an example.-->

        Perlやtclのような、<productname>Postgres</productname>でサポートされているインターフェイス言語を使用する。これらの言語の中には便利で、強力なGUIツールキットが用意されているものもあり、カスタムアプリケーションを作成するのを補助するものがあります。たとえば、上で説明した<application>pgaccess</application>はtk/tclで書かれたアプリケーションツールの実例です。
       </para>
      </listitem>

      <listitem>
       <para>
	<!--Writing a <acronym>C</acronym>  program  using
	the  LIBPQ  subroutine
        library.   This  allows  you  to submit
	<acronym>SQL</acronym> commands
        from <acronym>C</acronym> and get answers and
	status messages  back  to
        your  program.   This interface is discussed further
        in <citetitle>The PostgreSQL Programmer's Guide</citetitle>.-->

        LIBPQのサブルーチンライブラリを使用して<acronym>C</acronym>言語プログラムを書く。この方法は、<acronym>C</acronym>言語から<acronym>SQL</acronym>コマンドを発行し、結果とステータスメッセージをプログラムに返します。このインターフェイスは<citetitle>&programmer-guide;</citetitle>で詳しく紹介されています。
       </para>
      </listitem>
     </itemizedlist>

     <!--You might want to start up <application>psql</application>, 
     to try out the examples in this manual.
     It can be activated for the <database>mydb</database>
     database by typing the command:-->

<para>このマニュアルに書かれている例を実際に実行するためには、<application>psql</application>を起動させてください。下記のコマンドを入力することによって、<database>mydb</database>という名前のデータベースに接続することができます。</para>

<programlisting>
% <userinput>psql mydb</userinput>
</programlisting>

     <!--You will be greeted with the following message:-->

<para>実行したら、下記のようなメッセージが表示されます。</para>

<!--     <programlisting>
Welcome to the POSTGRESQL interactive sql monitor:
  Please read the file COPYRIGHT for copyright terms of POSTGRESQL

   type &bsol;? for help on slash commands
   type &bsol;q to quit
   type &bsol;g or terminate with semicolon to execute query
 You are currently connected to the database: template1

mydb=>
</programlisting> -->
<programlisting>
Welcome to psql, the PostgreSQL interactive terminal.

Type:  &bsol;copyright for distribution terms
       &bsol;h for help with SQL commands
       &bsol;? for help on internal slash commands
       &bsol;g or terminate with semicolon to execute query
       &bsol;q to quit

mydb=>
</programlisting>

    <para>
     <!--This prompt indicates that the terminal monitor is listening
     to you and that you can type <acronym>SQL</acronym> queries into a
     workspace maintained by the terminal monitor.
     The <application>psql</application> program responds to escape
     codes  that  begin
     with  the  backslash  character, "<literal>&bsol;</literal>"  For example, you
     can get help on the syntax of various
     <productname>Postgres</productname> <acronym>SQL</acronym>
     commands by typing:-->

     このプロンプトは、ターミナルモニタは<acronym>SQL</acronym>の問い合わせの入力待ち状態であることを意味しています。<application>psql</application>プログラムはバックスラッシュ「<literal>&bsol;</literal>」文字で始まるエスケープコードに答えることができます。たとえば、<productname>Postgres</productname>のさまざまな<acronym>SQL</acronym>コマンドのヘルプは、下記のコマンドを実行すると表示されます。</para>

<programlisting>
mydb=> <userinput>&bsol;h</userinput>
</programlisting>

    <para>
     <!--Once  you  have finished entering your queries into the
     workspace, you can pass the contents of  the  workspace
     to the <productname>Postgres</productname> server by typing:-->

     問い合わせがワークスペースに入力できたら、下記のコマンドを実行してワークスペースの内容を<productname>Postgres</productname>サーバーに引き渡すことができます。</para>

<programlisting>
mydb=> <userinput>&bsol;g</userinput>
</programlisting>

     <!--This  tells  the  server  to process the query.  If you
     terminate your query with a semicolon, the  "<literal>&bsol;g</literal>" is  not
     necessary.
     <application>psql</application> will automatically process
     semicolon terminated queries.
     To read queries from a file,  say  myFile,  instead  of
     entering them interactively, type:-->

<para>これは、サーバーに問い合わせを実行するように指示します。問い合わせをセミコロンで終了させた場合は、「<literal>&bsol;g</literal>」コマンドを実行する必要はありません。<application>psql</application>は、セミコロンで終了している問い合わせは自動的に実行します。ファイルから問い合わせを読み込む場合は、対話的にそれらを入力するのではなく、下記のように入力します。</para>

<programlisting>
mydb=> <userinput>&bsol;i fileName</userinput>
</programlisting>

     <!--To get out of <application>psql</application> and return to Unix, type-->

<para><application>psql</application>を終了させ、Unixに戻るには、下記のコマンドを実行します。</para>

<programlisting>
mydb=> <userinput>&bsol;q</userinput>
</programlisting>

     <!--and  <application>psql</application>  will  quit  and  return
     you to your command
     shell. (For more escape codes, type <command>&bsol;h</command> at  the 
     monitor prompt.)
     White  space  (i.e.,  spaces, tabs and newlines) may be
     used freely in <acronym>SQL</acronym> queries. -->

<para><application>psql</application>は終了し、コマンドシェルに戻ります。（その他のエスケープコードに関しては、モニタプロンプトで<command>&bsol;h</command>を実行してください）。スペース、タブ、改行などの空白は<acronym>SQL</acronym>問い合わせ内で自由に使用することができます。

     <!--Single-line  comments  are  denoted  by-->
     1行のコメントは「<literal>--</literal>」を使用します。

     <!--Everything  after the dashes up to the end of the
     line is ignored. Multiple-line comments, and comments within a line,
     are denoted by "<literal>/* ... */</literal>".-->

     ハイフンから行の最後までを無視します。複数行に渡るコメントや行内の部分的なコメントには「<literal>/* ... */</literal>」を使用します。
    </para>
   </sect2>

   <sect2>
    <title><!--Destroying a Database-->
           データベースの削除
    </title>
<indexterm><primary sortas="でーたべーす">データベース</primary><secondary sortas="さくじょ">削除</secondary></indexterm>
<indexterm><primary>PostgreSQL</primary><secondary sortas="でーたべーすのさくじょ">データベースの削除</secondary></indexterm>


    <para>
     <!--If you are the database administrator for the  database
     <database>mydb</database>,  you can destroy it using the
     following Unix command:-->

     データベースの削除はそのデータベースの管理者のみが行えます。たとえば、<database>mydb</database>という名のデータベースの管理者が、そのデータベースを削除したい場合には、下記のコマンドを入力して削除することができます。</para>

<programlisting>
% <userinput>dropdb mydb</userinput>
</programlisting>

     <!--This action physically removes all of  the  Unix  files
     associated  with  the database and cannot be undone, so
     this should only be done with a  great  deal  of  forethought.-->

<para>これは、このデータベースと関連のあったすべてのUnixファイルを物理的に削除してしまいます。したがって、この作業を一度行ったら、元の状態に戻すことはできませんので、実行する際には細心の注意を払ってください。

    </para>
   </sect2>
  </sect1>

 </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"./reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->
