Commit 92c001bb authored by Tom Lane's avatar Tom Lane

Minor copy-editing in tutorial.

parent 1ef38f26
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/advanced.sgml,v 1.46 2004/11/15 06:32:13 neilc Exp $ $PostgreSQL: pgsql/doc/src/sgml/advanced.sgml,v 1.47 2004/12/17 04:50:32 tgl Exp $
--> -->
<chapter id="tutorial-advanced"> <chapter id="tutorial-advanced">
...@@ -196,7 +196,7 @@ UPDATE branches SET balance = balance + 100.00 ...@@ -196,7 +196,7 @@ UPDATE branches SET balance = balance + 100.00
and won't be lost even if a crash ensues shortly thereafter. and won't be lost even if a crash ensues shortly thereafter.
For example, if we are recording a cash withdrawal by Bob, For example, if we are recording a cash withdrawal by Bob,
we do not want any chance that the debit to his account will we do not want any chance that the debit to his account will
disappear in a crash just as he walks out the bank door. disappear in a crash just after he walks out the bank door.
A transactional database guarantees that all the updates made by A transactional database guarantees that all the updates made by
a transaction are logged in permanent storage (i.e., on disk) before a transaction are logged in permanent storage (i.e., on disk) before
the transaction is reported complete. the transaction is reported complete.
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/query.sgml,v 1.40 2004/11/15 06:32:14 neilc Exp $ $PostgreSQL: pgsql/doc/src/sgml/query.sgml,v 1.41 2004/12/17 04:50:32 tgl Exp $
--> -->
<chapter id="tutorial-sql"> <chapter id="tutorial-sql">
...@@ -154,7 +154,7 @@ CREATE TABLE weather ( ...@@ -154,7 +154,7 @@ CREATE TABLE weather (
</para> </para>
<para> <para>
<productname>PostgreSQL</productname> supports the usual <productname>PostgreSQL</productname> supports the standard
<acronym>SQL</acronym> types <type>int</type>, <acronym>SQL</acronym> types <type>int</type>,
<type>smallint</type>, <type>real</type>, <type>double <type>smallint</type>, <type>real</type>, <type>double
precision</type>, <type>char(<replaceable>N</>)</type>, precision</type>, <type>char(<replaceable>N</>)</type>,
...@@ -297,8 +297,8 @@ SELECT * FROM weather; ...@@ -297,8 +297,8 @@ SELECT * FROM weather;
<footnote> <footnote>
<para> <para>
While <literal>SELECT *</literal> is useful for off-the-cuff While <literal>SELECT *</literal> is useful for off-the-cuff
queries, it is considered bad style in production code for queries, it is widely considered bad style in production code,
maintenance reasons: adding a column to the table changes the results. since adding a column to the table would change the results.
</para> </para>
</footnote> </footnote>
The output should be: The output should be:
...@@ -400,9 +400,9 @@ SELECT DISTINCT city ...@@ -400,9 +400,9 @@ SELECT DISTINCT city
the cities table, and select the pairs of rows where these values match. the cities table, and select the pairs of rows where these values match.
<note> <note>
<para> <para>
This is only a conceptual model. The actual join may This is only a conceptual model. The join is usually performed
be performed in a more efficient manner, but this is invisible in a more efficient manner than actually comparing each possible
to the user. pair of rows, but this is invisible to the user.
</para> </para>
</note> </note>
This would be accomplished by the following query: This would be accomplished by the following query:
...@@ -727,15 +727,15 @@ SELECT city, max(temp_lo) ...@@ -727,15 +727,15 @@ SELECT city, max(temp_lo)
aggregates are computed. Thus, the aggregates are computed. Thus, the
<literal>WHERE</literal> clause must not contain aggregate functions; <literal>WHERE</literal> clause must not contain aggregate functions;
it makes no sense to try to use an aggregate to determine which rows it makes no sense to try to use an aggregate to determine which rows
will be inputs to the aggregates. On the other hand, will be inputs to the aggregates. On the other hand, the
<literal>HAVING</literal> clause always contains aggregate functions. <literal>HAVING</literal> clause always contains aggregate functions.
(Strictly speaking, you are allowed to write a <literal>HAVING</literal> (Strictly speaking, you are allowed to write a <literal>HAVING</literal>
clause that doesn't use aggregates, but it's wasteful: The same condition clause that doesn't use aggregates, but it's wasteful. The same condition
could be used more efficiently at the <literal>WHERE</literal> stage.) could be used more efficiently at the <literal>WHERE</literal> stage.)
</para> </para>
<para> <para>
Observe that we can apply the city name restriction in In the previous example, we can apply the city name restriction in
<literal>WHERE</literal>, since it needs no aggregate. This is <literal>WHERE</literal>, since it needs no aggregate. This is
more efficient than adding the restriction to <literal>HAVING</literal>, more efficient than adding the restriction to <literal>HAVING</literal>,
because we avoid doing the grouping and aggregate calculations because we avoid doing the grouping and aggregate calculations
...@@ -788,10 +788,10 @@ SELECT * FROM weather; ...@@ -788,10 +788,10 @@ SELECT * FROM weather;
</indexterm> </indexterm>
<para> <para>
Rows can be removed from a table using the <command>DELETE</command>
command.
Suppose you are no longer interested in the weather of Hayward. Suppose you are no longer interested in the weather of Hayward.
Then you can do the following to delete those rows from the table. Then you can do the following to delete those rows from the table:
Deletions are performed using the <command>DELETE</command>
command:
<programlisting> <programlisting>
DELETE FROM weather WHERE city = 'Hayward'; DELETE FROM weather WHERE city = 'Hayward';
</programlisting> </programlisting>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/start.sgml,v 1.36 2004/06/29 19:57:40 petere Exp $ $PostgreSQL: pgsql/doc/src/sgml/start.sgml,v 1.37 2004/12/17 04:50:32 tgl Exp $
--> -->
<chapter id="tutorial-start"> <chapter id="tutorial-start">
...@@ -218,7 +218,7 @@ createdb: database creation failed: ERROR: permission denied to create database ...@@ -218,7 +218,7 @@ createdb: database creation failed: ERROR: permission denied to create database
operating system account. As it happens, there will always be a operating system account. As it happens, there will always be a
<productname>PostgreSQL</productname> user account that has the <productname>PostgreSQL</productname> user account that has the
same name as the operating system user that started the server, same name as the operating system user that started the server,
and it also happens that the user always has permission to and it also happens that that user always has permission to
create databases. Instead of logging in as that user you can create databases. Instead of logging in as that user you can
also specify the <option>-U</option> option everywhere to select also specify the <option>-U</option> option everywhere to select
a <productname>PostgreSQL</productname> user name to connect as. a <productname>PostgreSQL</productname> user name to connect as.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment