diff --git a/doc/src/sgml/queries.sgml b/doc/src/sgml/queries.sgml
index a3b0aa2d147d765b622e4378dbc59329d2518e17..185602c151ceb26f84d23ca03b64248934ddca51 100644
--- a/doc/src/sgml/queries.sgml
+++ b/doc/src/sgml/queries.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/queries.sgml,v 1.28 2003/11/29 19:51:37 pgsql Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/queries.sgml,v 1.29 2004/03/03 22:22:24 neilc Exp $ -->
 
 <chapter id="queries">
  <title>Queries</title>
@@ -108,8 +108,9 @@ SELECT random();
    <title>The <literal>FROM</literal> Clause</title>
  
    <para>
-    The <literal>FROM</> clause derives a table from one or more other
-    tables given in a comma-separated table reference list.
+    The <xref linkend="sql-from" endterm="sql-from-title"> derives a
+    table from one or more other tables given in a comma-separated
+    table reference list.
 <synopsis>
 FROM <replaceable>table_reference</replaceable> <optional>, <replaceable>table_reference</replaceable> <optional>, ...</optional></optional>
 </synopsis>
@@ -677,7 +678,8 @@ SELECT *
    </indexterm>
 
    <para>
-    The syntax of the <literal>WHERE</> clause is
+    The syntax of the <xref linkend="sql-where"
+    endterm="sql-where-title"> clause is
 <synopsis>
 WHERE <replaceable>search_condition</replaceable>
 </synopsis>
@@ -783,13 +785,14 @@ SELECT <replaceable>select_list</replaceable>
 </synopsis>
 
    <para>
-    The <literal>GROUP BY</> clause is used to group together those rows in
-    a table that share the same values in all the columns listed. The
-    order in which the columns are listed does not matter.  The
-    purpose is to reduce each group of rows sharing common values into
-    one group row that is representative of all rows in the group.
-    This is done to eliminate redundancy in the output and/or compute
-    aggregates that apply to these groups.  For instance:
+    The <xref linkend="sql-groupby" endterm="sql-groupby-title"> is
+    used to group together those rows in a table that share the same
+    values in all the columns listed. The order in which the columns
+    are listed does not matter.  The purpose is to reduce each group
+    of rows sharing common values into one group row that is
+    representative of all rows in the group.  This is done to
+    eliminate redundancy in the output and/or compute aggregates that
+    apply to these groups.  For instance:
 <screen>
 <prompt>=></> <userinput>SELECT * FROM test1;</>
  x | y
@@ -1058,7 +1061,7 @@ SELECT a AS value, b + c AS sum FROM ...
 <synopsis>
 SELECT DISTINCT <replaceable>select_list</replaceable> ...
 </synopsis>
-    (Instead of <literal>DISTINCT</> the word <literal>ALL</literal>
+    (Instead of <literal>DISTINCT</> the key word <literal>ALL</literal>
     can be used to select the default behavior of retaining all rows.)
    </para>
 
diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml
index c765329df11fde15c2f4419cc6a62d70a572a3d3..63a85b2a00df4ba9519bd52e6567f10e8f515d02 100644
--- a/doc/src/sgml/ref/select.sgml
+++ b/doc/src/sgml/ref/select.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/select.sgml,v 1.74 2003/12/14 00:15:03 neilc Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/select.sgml,v 1.75 2004/03/03 22:22:24 neilc Exp $
 PostgreSQL documentation
 -->
 
@@ -174,7 +174,8 @@ where <replaceable class="parameter">from_item</replaceable> can be one of:
    </para>
 
    <para>
-    <literal>FROM</literal>-clause elements can contain:
+    The <literal>FROM</literal> clause can contain the following
+    elements:
 
     <variablelist>
      <varlistentry>
@@ -289,16 +290,16 @@ where <replaceable class="parameter">from_item</replaceable> can be one of:
         A <literal>JOIN</literal> clause combines two
         <literal>FROM</> items.  Use parentheses if necessary to
         determine the order of nesting.  In the absence of parentheses,
-	<literal>JOIN</literal>s nest left-to-right.  In any case
-	<literal>JOIN</literal> binds more tightly than the commas
-	separating <literal>FROM</> items.
+        <literal>JOIN</literal>s nest left-to-right.  In any case
+        <literal>JOIN</literal> binds more tightly than the commas
+        separating <literal>FROM</> items.
        </para>
 
        <para>
         <literal>CROSS JOIN</> and <literal>INNER JOIN</literal>
         produce a simple Cartesian product, the same result as you get from
         listing the two items at the top level of <literal>FROM</>,
-	but restricted by the join condition (if any).
+        but restricted by the join condition (if any).
         <literal>CROSS JOIN</> is equivalent to <literal>INNER JOIN ON
         (TRUE)</>, that is, no rows are removed by qualification.
         These join types are just a notational convenience, since they
@@ -647,7 +648,7 @@ SELECT name FROM distributors ORDER BY code;
     <literal>INTERSECT</>, or <literal>EXCEPT</> clause may only
     specify an output column name or number, not an expression.
    </para>
-    
+
    <para>
     If an <literal>ORDER BY</> expression is a simple name that
     matches both a result column name and an input column name,
diff --git a/doc/src/sgml/ref/update.sgml b/doc/src/sgml/ref/update.sgml
index e95278af288c7cd47817af5338835b1f8c424cbd..6a6cf99137314ec811c37306b94867610c3656a6 100644
--- a/doc/src/sgml/ref/update.sgml
+++ b/doc/src/sgml/ref/update.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/update.sgml,v 1.27 2003/11/29 19:51:39 pgsql Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/update.sgml,v 1.28 2004/03/03 22:22:24 neilc Exp $
 PostgreSQL documentation
 -->
 
@@ -32,8 +32,8 @@ UPDATE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> SET <replacea
   <para>
    <command>UPDATE</command> changes the values of the specified
    columns in all rows that satisfy the condition. Only the columns to
-   be modified need be mentioned in the statement; columns not explicitly
-   <literal>SET</> retain their previous values.
+   be modified need be mentioned in the <literal>SET</literal> clause;
+   columns not explicitly modified retain their previous values.
   </para>
 
   <para>
@@ -43,6 +43,14 @@ UPDATE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> SET <replacea
    clause.
   </para>
 
+  <para>
+   There are two ways to modify a table using information contained in
+   other tables in the database: using sub-selects, or specifying
+   additional tables in the <literal>FROM</literal> clause. Which
+   technique is more appropriate depends on the specific
+   circumstances.
+  </para>
+
   <para>
    You must have the <literal>UPDATE</literal> privilege on the table
    to update it, as well as the <literal>SELECT</literal>
@@ -99,7 +107,12 @@ UPDATE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> SET <replacea
     <listitem>
      <para>
       A list of table expressions, allowing columns from other tables
-      to appear in the <literal>WHERE</> condition and the update expressions.
+      to appear in the <literal>WHERE</> condition and the update
+      expressions. This is similar to the list of tables that can be
+      specified in the <xref linkend="sql-from"
+      endterm="sql-from-title"> of a <command>SELECT</command>
+      statement; for example, an alias for the table name can be
+      specified.
      </para>
     </listitem>
    </varlistentry>
@@ -139,7 +152,7 @@ UPDATE <replaceable class="parameter">count</replaceable>
 
   <para>
    Change the word <literal>Drama</> to <literal>Dramatic</> in the
-   column <structfield>kind</> of the table <literal>films</literal>:
+   column <structfield>kind</> of the table <structname>films</structname>:
 
 <programlisting>
 UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';
@@ -148,7 +161,7 @@ UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';
 
   <para>
    Adjust temperature entries and reset precipitation to its default
-   value in one row of the table <literal>weather</literal>:
+   value in one row of the table <structname>weather</structname>:
 
 <programlisting>
 UPDATE weather SET temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = DEFAULT
@@ -156,13 +169,30 @@ UPDATE weather SET temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = DEFAULT
 </programlisting>
   </para>
 
+  <para>
+   Increment the sales count of the salesperson who manages the
+   account for Acme Corporation, using the <literal>FROM</literal>
+   clause syntax:
+<programlisting>
+UPDATE employees SET sales_count = sales_count + 1 FROM accounts
+  WHERE accounts.name = 'Acme Corporation'
+  AND employees.id = accounts.sales_person;
+</programlisting>
+
+   Perform the same operation, using a sub-select in the
+   <literal>WHERE</literal> clause:
+<programlisting>
+UPDATE employees SET sales_count = sales_count + 1 WHERE id =
+  (SELECT sales_person FROM accounts WHERE name = 'Acme Corporation');
+</programlisting>
+  </para>
  </refsect1>
 
  <refsect1>
   <title>Compatibility</title>
 
   <para>
-   This command conforms to the SQL standard.  The
+   This command conforms to the <acronym>SQL</acronym> standard.  The
    <literal>FROM</literal> clause is a
    <productname>PostgreSQL</productname> extension.
   </para>
diff --git a/doc/src/sgml/trigger.sgml b/doc/src/sgml/trigger.sgml
index 79a438da8fb40235473099b170186829c75b91bf..a8ee6c7d9515926ceeba37d2b6d6347ce01164b4 100644
--- a/doc/src/sgml/trigger.sgml
+++ b/doc/src/sgml/trigger.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.34 2004/01/22 19:50:21 neilc Exp $
+$PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.35 2004/03/03 22:22:24 neilc Exp $
 -->
 
  <chapter id="triggers">
@@ -449,9 +449,9 @@ typedef struct Trigger
 
    <para>
     The function <function>trigf</> reports the number of rows in the
-    table <literal>ttest</> and skips the actual operation if the
+    table <structname>ttest</> and skips the actual operation if the
     command attempts to insert a null value into the column
-    <literal>x</>. (So the trigger acts as a not-null constraint but
+    <structfield>x</>. (So the trigger acts as a not-null constraint but
     doesn't abort the transaction.)
    </para>