and won't be lost even if a crash ensues shortly thereafter.
For example, if we are recording a cash withdrawal by Bob,
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 transaction are logged in permanent storage (i.e., on disk) before
the transaction is reported complete.
-
PostgreSQL supports the
usual
+
PostgreSQL supports the
standard
smallint, real, double
precision, char(N>),
While SELECT * is useful for off-the-cuff
- queries, it is considered bad style in production code for
- maintenance reasons: adding a column to the table changes the results.
+ queries, it is widely considered bad style in production code,
+ since adding a column to the table would change the results.
The output should be:
the cities table, and select the pairs of rows where these values match.
- This is only a conceptual model. The actual join may
- be performed in a more efficient manner, but this is invisible
- to the user.
+ This is only a conceptual model. The join is usually performed
+ in a more efficient manner than actually comparing each possible
+ pair of rows, but this is invisible to the user.
This would be accomplished by the following query:
aggregates are computed. Thus, the
WHERE clause must not contain aggregate functions;
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
HAVING clause always contains aggregate functions.
(Strictly speaking, you are allowed to write a HAVING
- 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 WHERE stage.)
- Observe that we can apply the city name restriction in
+ In the previous example, we can apply the city name restriction in
WHERE, since it needs no aggregate. This is
more efficient than adding the restriction to HAVING,
because we avoid doing the grouping and aggregate calculations
+ Rows can be removed from a table using the DELETE
+ command.
Suppose you are no longer interested in the weather of Hayward.
- Then you can do the following to delete those rows from the table.
- Deletions are performed using the DELETE
- command:
+ Then you can do the following to delete those rows from the table:
DELETE FROM weather WHERE city = 'Hayward';
operating system account. As it happens, there will always be a
PostgreSQL user account that has the
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
also specify the option everywhere to select
a
PostgreSQL user name to connect as.