SQL in a Nutshell by Kevin Kline with Daniel Kline Unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. If you have error reports or technical questions, you can send them to booktech@oreilly.com. (Please specify the printing date of your copy.) This page was last updated on June 15, 2004. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language or formatting problem (page-number): minor formatting problem, or language change ?page-number?: question or request for clarification UNCONFIRMED errors and comments: {2} last paragraph; Oracle is also not relational as per Codd's principals, as it violates the third principal, and is unable to distinguish between an empty string and a NULL value. {14, 15} Table 2-3; The table does not list NATIONAL as a prefix for some of the datatypes to force use of Unicode characters rather than ASCII. {15} Table 2-3; The table incorrectly lists 'NVARCHAR' as a MySQL datatype. This should be changed to 'NATIONAL VARCHAR'. {25} Joins; The third example of an outer join is exactly the same as the ANSI style example - it does not illustrate the preceding point (26) 2nd paragraph, end of second line; "equivalent to the ASNI" should be "equivalent to the ANSI" (34) 3rd paragraph, 2nd sentence; "may be to add" should be something like "may be used to add" {40} 4th paragraph; The book states that CASE is not supported in Oracle. >From Oracle 8i rel. 2 (8.1.6), CASE -- WHEN is implemented. Oracle claims that version 9 (recently released)is fully SQL99 compatible. {118} 3rd paragraph (last example); The example description states that the data is being loaded from "sales" into the "new_sales" table. In the code, however, it is the contrary: the data goes into "sales2 (INSERT sales ... ) and comes from "new_sales" (... FROM new_sales ...). {137} The second list term now reads: Full Join It should read: Full [Outer] Join (146) 2nd paragraph; The ORDER BY clause of the example above this paragraph says ORDER BY e.fname DESC, e.lname ASC Yet the text below it says: "...the result set is sorted by the authors' last names in descending order..." and "...the authors' first names are sorted in ascending order." That should be "FIRST names in descending order" and "LAST names in ascending order". [150] Middle with an owl; You mention here in the Oracle section that "select into" for Oracle is to be used only for assignment of variables in PL/SQL. True, but what the user is probably looking for is how to emulate the MS SQLServer "select into" statement in Oracle, which is commonly known as "CTAS", or Create Table As Select. A simplified syntax is: Create Table XX as select * from oldtable where y=1 This is a great statement to use while testing or creating test data, so it's worth mentioning. Also, why no mention of the UNION command for joining queries? Its an easy thing to stick in the select area, even if its deprecated. [162] second heading, "PostgreSQL Notes": PostgreSQL supports the SQL99 syntax for UPDATE, as described in the previous section, but it also supports a form such as: UPDATE table SET col = expression [, ...] [ FROM fromlist ] [ WHERE condition ] where the FROM clause may contain multiple tables to be joined. See http://www.postgresql.org/users-lounge/docs/7.0/user/sql-update.htm for the complete PostgreSQL documentation on its forms. {173} example at the top of the page: The output from the select statement is backwards. (176) item in table 4.7; entry to table 4.7 "containsable(..." should be "containstable(..." (183) description of substring() function in table 4-8; "Returns a substring 10 characters long.." should be "Returns a substring len characters long.." (183) function & description entries in table 4.8 for function right(); right(str, ten) | Returns the rightmost 10 characters.. should be right(str, len) | Returns the rightmost len characters.. should be (188) description of numtoyminterval function in table ; "INTERVAL DAY TO MONTH" should be "INTERVAL YEAR TO MONTH" (188) description of nvl2() function; "Similar to NLV" should be "Similar to NVL" (189) description of substr() function; Description is "Refer to earlier section on SUBSTR." There is no such section. (214++) next to last line in the Colophon; "stablize" should be "stabilize" {215} End of 2nd paragraph; In About the Author: Daniel Kline The URL of Kline's project "The Electronic Canterbury Tales" is wrong. It reads http://cwolf.uaa.alaska.edu/~afdtk/ext_main.htm (WRONG) instead of http://cwolf.uaa.alaska.edu/~afdtk/ect_main.htm (CORRECT)