aboutsummaryrefslogtreecommitdiff
path: root/doc/src/sgml/manage.sgml
blob: 43dd8d5a955756b6316c8ced6c9c43f708a1338b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/Attic/manage.sgml,v 1.21 2002/01/20 22:19:56 petere Exp $
-->

 <Chapter Id="manage">
  <Title>Managing a Database</Title>

  <comment>
   This section is currently a thinly disguised copy of the
   Tutorial. Needs to be augmented.
    - thomas 1998-01-12
  </comment>

  <Para>
   Although the <FirstTerm>site administrator</FirstTerm> is responsible for overall management 
   of the <ProductName>PostgreSQL</ProductName> installation, some databases within the
   installation may be managed by another person, 
   designated the <FirstTerm>database administrator</FirstTerm>.
   This assignment of responsibilities occurs when a database is created. 
   A user may be assigned explicit privileges to create databases and/or to create new users. 
   A user assigned both privileges can perform most administrative tasks
   within <ProductName>PostgreSQL</ProductName>, but will
   not by default have the same operating system privileges as the site administrator.
  </Para>

  <Para>
   The <citetitle>Administrator's Guide</> covers these topics in
   more detail.
  </Para>

  <Sect1 id="db-creation">
   <Title>Database Creation</Title>

   <Para>
    Databases are created by the <Command>CREATE DATABASE</Command>
    command issued from within
    <ProductName>PostgreSQL</ProductName>. <Application>createdb</Application>
    is a shell script provided to give the same functionality from the
    Unix command line.
   </Para>

   <Para>
    The <ProductName>PostgreSQL</ProductName> backend must be running for either method
    to succeed, and the user issuing the command must be the <ProductName>PostgreSQL</ProductName>
    <FirstTerm>superuser</FirstTerm> or have been assigned database creation privileges by the
    superuser.
   </Para>

   <Para>
    To create a new database named <literal>mydb</literal> from the command line, type
<ProgramListing>
% createdb mydb
</ProgramListing>

    and to do the same from within <Application>psql</Application> type
<ProgramListing>
=> CREATE DATABASE mydb;
</ProgramListing>
   </Para>

   <Para>
    If you do not have the privileges required to create a database, you will see
    the following:
<ProgramListing>
ERROR:  CREATE DATABASE: Permission denied.
</ProgramListing>
   </Para>

   <Para>
    You  automatically  become  the
    database  administrator  of  the database you just created.  
    Database names must  have  an  alphabetic  first
    character and are limited to 31 characters in length.
    <ProductName>PostgreSQL</ProductName>  allows  you to create any number of
    databases at a  given  site.  
   </Para>

  <Para>
   The <citetitle>Administrator's Guide</> discusses database creation
   in more detail, including advanced options of the <command>CREATE
   DATABASE</> command.
  </Para>

  </Sect1>

<Sect1 id="db-accessing">
<Title>Accessing a Database</Title>

<Para>
     Once you have constructed a database, you can access it
     by:

    <itemizedlist spacing="compact" mark="bullet">
     <listitem>
      <para>
       Running the <productname>PostgreSQL</productname> interactive
       terminal program, called <application>psql</application>, which allows you
       to interactively enter, edit, and execute
       <acronym>SQL</acronym> commands.
      </para>
     </listitem>

     <listitem>
      <para>
       Using an existing graphical frontend tool like
       <application>PgAccess</application> or
       <application>ApplixWare</application> (via
       <acronym>ODBC</acronym>) to create and manipulate a database.
       These possibilities are not covered in this tutorial.
      </para>
     </listitem>

     <listitem>
      <para>
       Writing a custom application, using one of the several
       available language bindings.  These possibilities are discussed
       further in <citetitle>The PostgreSQL Programmer's
       Guide</citetitle>.
      </para>
     </listitem>
    </itemizedlist>

You probably 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:
<ProgramListing>
% psql mydb
</ProgramListing>

     You will be greeted with the following message:
<ProgramListing>
Welcome to psql, the PostgreSQL interactive terminal.
 
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

mydb=>
</ProgramListing>
</Para>

<Para>
This prompt indicates that <command>psql</command> is listening
  to you and that you can type <Acronym>SQL</Acronym> queries into a
     work space maintained by the terminal monitor.
The <Application>psql</Application> program itself responds to special
commands  that  begin
     with  the  backslash  character, <literal>\</literal>.  For example, you
     can get help on the syntax of various
 <ProductName>PostgreSQL</ProductName> <Acronym>SQL</Acronym> commands by typing:
<ProgramListing>
mydb=> \h
</ProgramListing>

     Once  you  have finished entering your queries into the
     work space, you can pass the contents of  the  work space
     to the <ProductName>PostgreSQL</ProductName> server by typing:
<ProgramListing>
mydb=> \g
</ProgramListing>

     This  tells  the  server  to process the query.  If you
     terminate your query with a semicolon, the  <literal>\g</literal> is  not
     necessary.   
<Application>psql</Application> will automatically process semicolon terminated queries.
     To read queries from a file,  say  <filename>myFile</filename>,  instead  of
     entering them interactively, type:
<ProgramListing>
mydb=> \i myFile
</ProgramListing>

     To get out of <Application>psql</Application> and return to Unix, type
<ProgramListing>
mydb=> \q
</ProgramListing>

     and  <Application>psql</Application>  will  quit  and  return  you to your command
     shell. (For more escape codes, type <Command>\?</Command> at  the  <command>psql</command>
     prompt.)
     White  space  (i.e.,  spaces, tabs and newlines) may be
     used freely in <Acronym>SQL</Acronym> queries.  Single-line comments  are  denoted  by
     <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>.
</Para>

</Sect1>
     
<Sect1 id="db-destroy">
<Title>Destroying a Database</Title>

<Para>
     If you are the owner of the  database
     <Database>mydb</Database>,  you can destroy it using the SQL command
<ProgramListing>
=> DROP DATABASE mydb;
</ProgramListing>
     or the Unix shell script
<ProgramListing>
% dropdb mydb
</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>
</Sect1>

</Chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
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:
-->