Errata
The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update
Version | Location | Description | Submitted By | Date submitted | Date corrected |
---|---|---|---|---|---|
Printed | Page xiv |
Next to chapter 5 Heading in TOC, "ver" should be "Ever" |
Anonymous | Nov 01, 2007 | |
Printed | Page xxix 3rd paragraph |
"But we assume that if you're holding this book, you really want to learn about project management." "project management" should be "SQL" |
Anonymous | Nov 01, 2007 | |
Printed | Page xxxiv 3rd paragraph, line 5 |
Missing period after "tennis" |
Anonymous | Jun 01, 2009 | |
Printed | Page p106 Results box |
On Page 106 the query is: SELECT drink_name FROM drink_info WHERE calories BETWEEN 30 AND 60; The results include "Soda and It." However, based on the table on page 105, "Soda and It" only has 19 calories and should not be included in the results set. The only ones that should be in the results are: Blackthorn Oh My Gosh Greyhound Indian Summer |
Anonymous | Sep 19, 2009 | Mar 01, 2011 |
Printed | Page 15, 16 3rd sentence, top of page |
"Come up some likely columns for each table" should be "come up with some likely columns for each table." |
Anonymous | Nov 01, 2007 | |
Printed | Page 19 In the annotation pointing to the comma in the third line of bolded code at the bottom of |
the page, "colums" should be "columns". |
Anonymous | May 01, 2008 | |
Other Digital Version | 19 In the annotation pointing to the comma in the third line of bolded code at the bottom of |
the page, "colums" should be "columns". |
Anonymous | May 01, 2008 | |
Printed | Page 19 table and associated CREATE statement |
doughnut_type is created for length 6.but the example table above that list has two entries using value 'cruller' which are too long for that field. Note from the Author or Editor: |
Anonymous | Nov 27, 2009 | Mar 01, 2011 |
Printed | Page 25 in handwritten text at top of rightmost column |
The text reads "These two numbers show how many digits the database should expect in front the decimal, and how many after." This is incorrect. It should read: "These two numbers show how many digits the database should expect, and how many after the decimal." |
Anonymous | Nov 01, 2007 | |
Printed | Page 25 Table. First row, last column and legend |
The description of the decimal type is wrong and the example number actually doesn't fit the datatype provided. The number before the comma in the DECIMAL data type is defined as the number of significant digits of the value. To store 5678.39, you would actually need DEC(6,2). MySQL accepts the value none the less, but a standards-compliant database should complain. |
Anonymous | Nov 01, 2007 | |
Printed | Page 26 Table with solutions |
tax_rate must be defined as dec(5,3) to hold values from 0.000 to 100.000 (99.999 being the significant number here) to correctly hold all the percentages in the format shown in the example. The provided solution dec(4,2) would not be sufficient to even hold the number provided in the question on page 25 because 3.755 requires three digits after the decimal point to store. |
Anonymous | Nov 01, 2007 | |
Printed | Page 26 tax_rate row, Best Choice of Data Type column |
In http://oreilly.com/catalog/9780596526849/errata/9780596526849.1113 you state this needs to be DEC(5,3) for tax rates of 0.000 to 100.000. Obviously if you were to tax at 100.000, you'd need DEC(6,3). Note from the Author or Editor: |
Anonymous | Jun 26, 2008 | Jun 01, 2009 |
Printed | Page 30 SQL Magnets Solution |
The CREATE DATABASE and USE DATABASE commands need to end in a semicolon |
Anonymous | Nov 01, 2007 | |
Printed | Page 31 Under there are no Dumb Questions, answer to 3rd Question |
In the line "Since there is no data in the table yet, we can simply get rid of the old one away and start over." Delete the word "away," so it just reads "get rid of the old one and start over." {62/63} 4th query/text beneath query: WHERE second = "orange juice"; Answer should be: Hot Gold Changed the annotation to: "This query works and doesn't cause an error even though you used single quotes when you inserted the value." |
Anonymous | May 01, 2008 | |
Other Digital Version | 31 Under there are no Dumb Questions, answer to 3rd Question |
In the line "Since there is no data in the table yet, we can simply get rid of the old one away and start over." Delete the word "away," so it just reads "get rid of the old one and start over." {62/63} 4th query/text beneath query: WHERE second = "orange juice"; Answer should be: Hot Gold Changed the annotation to: "This query works and doesn't cause an error even though you used single quotes when you inserted the value." |
Anonymous | May 01, 2008 | |
Printed | Page 42 annotation in the middle of the page |
"We're using the the version..." should be "We're using the version..." |
Anonymous | Nov 01, 2007 | |
Printed | Page 48 arrow pointing at DEC(3,2) |
This arrow should have a handwritten annotation that reads, "The total digits allowed are 3, with 1 before and 2 after the decimal." |
Anonymous | Nov 01, 2007 | |
Printed | Page 48 table and associated CREATE statement |
doughnut_type is created for length 6.but the example table above that list has two entries using value 'cruller' which are too long for that field. (same problem as on page 19) Note from the Author or Editor: |
Anonymous | Nov 27, 2009 | Mar 01, 2011 |
Printed | Page 53 1st paragraph |
"When it comes to databases, chances are you'll need to retrieve your data as often than you'll need to insert it." should read "When it comes to databases, chances are you'll need to retrieve your data as often as you'll need to insert it." |
Anonymous | Nov 01, 2007 | |
Printed | Page 76 Solution on the lower portion of the page doesn't include possible answer: WHERE drink_name = 'Bull Frog'. |
Added an annotation to the bottom part of the page: "You could also have used the obvious query SELECT drink_name FROM easy_drinks WHERE drink_name = 'Bull Frog';" |
Anonymous | May 01, 2008 | |
Other Digital Version | 76 Solution on the lower portion of the page doesn't include possible answer: WHERE drink_name = 'Bull Frog'. |
Added an annotation to the bottom part of the page: "You could also have used the obvious query SELECT drink_name FROM easy_drinks WHERE drink_name = 'Bull Frog';" |
Anonymous | May 01, 2008 | |
Printed | Page 77 First bullet point: removed extra "when" |
First bullet point - remove extra "when" |
Anonymous | May 01, 2008 | |
Printed | Page 82 Solution to third query |
Solution to third query should be the following: SELECT last_name, first_name, email FROM my_contacts WHERE location = 'San Antonio, TX' AND gender = 'M' AND status = 'single'; |
Anonymous | Nov 01, 2007 | |
Printed | Page 86 first sentence |
"So far we have only used the equal sign in our WHERE clause..." should be changed to "So far, we've mainly used the equal sign in our WHERE clause." |
Anonymous | Nov 01, 2007 | |
Printed | Page 87 |
In the bottom left corner, => should be <= |
Anonymous | Nov 01, 2007 | |
Printed | Page 87 Bottom Right |
In the bottom right of the page, the Greater to or Equal sign is listed as =>, should be >= (this is used correctly on the next page in demonstration) Note from the Author or Editor: |
Laurel Raven | May 27, 2009 | Sep 01, 2010 |
Printed | Page 89-90 bottom of the page -- last query |
The text, "...without using the names of the drinks in your query." should be added to the end of the last question on the page. |
Anonymous | Jun 01, 2009 | |
Printed | Page 90 Bottom (last solution) |
SELECT drink_name, color, ice FROM drink_info WHERE cost >=3.8; Removed "=" from ">=" in solution. Now the solution query reads: SELECT drink_name, color, ice FROM drink_info WHERE cost > 3.8; |
Anonymous | May 01, 2008 | |
Printed | Page 90 Bottom (last solution) |
Capitalization error Changed "LIps" to "Lips" |
Anonymous | May 01, 2008 | |
Other Digital Version | 90 Bottom (last solution) |
SELECT drink_name, color, ice FROM drink_info WHERE cost >=3.8; Removed "=" from ">=" in solution. Now the solution query reads: SELECT drink_name, color, ice FROM drink_info WHERE cost > 3.8; |
Anonymous | May 01, 2008 | |
Other Digital Version | 90 Bottom (last solution) |
Capitalization error Changed "LIps" to "Lips" |
Anonymous | May 01, 2008 | |
Printed | Page 93 1st paragraph, 3rd sentence |
"So, instead of two the two separate queries..." should be "So, instead of the two separate queries..." |
Anonymous | Nov 01, 2007 | |
Printed | Page 103-104 Second WHERE statement |
Wildcard character '_' stands for just one unknown character. Two letters are missing from Elsie's name 'El'sie. Changed the magnet on 103 and 104 to read: WHERE cow_name LIKE '_lsie'; |
Anonymous | May 01, 2008 | |
Other Digital Version | 103-104 Second WHERE statement |
Wildcard character '_' stands for just one unknown character. Two letters are missing from Elsie's name 'El'sie. Changed the magnet on 103 and 104 to read: WHERE cow_name LIKE '_lsie'; |
Anonymous | May 01, 2008 | |
Printed | Page 104 |
Sixth WHERE clause from the top should only have one semicolon at the end. It should be: WHERE state LIKE 'M%' or state LIKE 'A%'; |
Anonymous | Nov 01, 2007 | |
Printed | Page 107 First problem description |
Pedantic, but because you are in the "conditional" section of the book ... "... drinks that have more than 60 calories and less than 30." doesn't have a solution if you take it literally (i.e. drinks that are > 60 and < 30 calories). This line should probably read: ... drinks that have more than 60 calories or less than 30." which also better reflects the provided answer. |
Anonymous | Nov 09, 2009 | Mar 01, 2011 |
Printed | Page 108 Middle example comment related to query |
The comment says, "We'll get drink names that begin with G and O, and all the letters in between." Solution should read: "... drink_name BETWEEN 'G' AND 'P'..."; Changed the annotation to: "This one is a bit tricky! We need to use the letter after O to make sure we get drink names that begin with O. Test it out and see for yourself." |
Anonymous | May 01, 2008 | |
Other Digital Version | 108 Middle example comment related to query |
The comment says, "We'll get drink names that begin with G and O, and all the letters in between." Solution should read: "... drink_name BETWEEN 'G' AND 'P'..."; Changed the annotation to: "This one is a bit tricky! We need to use the letter after O to make sure we get drink names that begin with O. Test it out and see for yourself." |
Anonymous | May 01, 2008 | |
Printed | Page 111 Answer to fourth question |
"If you wanted to use it in and AND or OR clause ..." should probably read "If you wanted to use it in an AND or OR clause ..." [change and => an] |
Anonymous | Nov 09, 2009 | Mar 01, 2011 |
Printed | Page 113,115 First solution incorrect |
Changed the solution to: SELECT drink_name FROM easy_drinks WHERE main IN ('peach nectar', 'soda'); |
Anonymous | May 01, 2008 | |
Other Digital Version | 113,115 First solution incorrect |
Changed the solution to: SELECT drink_name FROM easy_drinks WHERE main IN ('peach nectar', 'soda'); |
Anonymous | May 01, 2008 | |
Printed | Page 115 Bottom of page |
The solution: ... WHERE date_name NOT BETWEEN 'A' AND 'B'; returns 8 hits including Boris. The clause should be: ... WHERE date_name NOT BETWEEN 'A' and 'C'; |
Anonymous | Nov 01, 2007 | |
Printed | Page 115 First solution (the answer) is incorrect |
Changed to: WHERE main BETWEEN 'P' and 'T'; Also, the first solution annotation was changed to: "You could also have used this WHERE clause: WHERE (BETWEEN 'P' and 'T'); This would have worked because we don't have any other main ingredients that satisfy the condition. But in general when you have a large table in the real world, you won't know what is in it, which is why you are querying in the first place. |
Anonymous | May 01, 2008 | |
Other Digital Version | 115 First solution (the answer) is incorrect |
Changed to: WHERE main BETWEEN 'P' and 'T'; Also, the first solution annotation was changed to: "You could also have used this WHERE clause: WHERE (BETWEEN 'P' and 'T'); This would have worked because we don't have any other main ingredients that satisfy the condition. But in general when you have a large table in the real world, you won't know what is in it, which is why you are querying in the first place. |
Anonymous | May 01, 2008 | |
Printed | Page 117 |
Single quote needed before the word "cherry" in fifth set of parentheses, Kiss on the Lips drink. |
Anonymous | Nov 01, 2007 | |
Page 117 3rd code input section |
In the INSERT into easy_drinks section on page 117 of the PDF, the line for the fifth drink, "Hot Gold", there is an extra, unnecessary space in the data for the second ingredient. In this case, it is orange juice. The line currently reads: ('Hot Gold', 'peach nectar', 3,' orange juice', 6, 'pour hot orange juice in mug and add peach nectar'), Notice the extra space in front of the words orange juice. This causes the forth query in the Sharpen your pencil exercise on page 60 to fail. This was noticed as I was copying and pasting the text into the MySQL console via the PDF version. |
boerner | Mar 23, 2010 | Mar 01, 2011 | |
Printed | Page 123, 125, 126, 129, 131, 140 Entire chapter |
Just a nit. It seems like the clown_info tables are missing a table name heading in the examples. The "other" tables seem to be (mostly) labeled whenever they are presented. Note from the Author or Editor: |
Anonymous | Nov 10, 2009 | Mar 01, 2011 |
Safari Books Online | 124 4th INSERT INTO clown_info statement (Sniffles) |
INSERT INTO clown_info VALUES ('Sniffles', 'Tracy\'s, 'M, green and purple suit, pointy nose', 'climbing into tiny car'); Missing single quote after 'Tracy\'s Should be: INSERT INTO clown_info VALUES ('Sniffles', 'Tracy\'s', 'M, green and purple suit, pointy nose', 'climbing into tiny car') |
Cathy Austin | Mar 09, 2010 | Mar 01, 2011 |
Printed | Page 126 First sentence |
"Our clown trackers work on a vounteer basis." should be "Our clown trackers work on a volunteer basis." [vounteer => volunteer ] |
Anonymous | Nov 10, 2009 | Mar 01, 2011 |
Printed | Page 128 Answer to the last question. |
Some of the best ones involving joins, a topic covered later in this book. should read: Some of the best ones involve joins, a topic covered later in this book. |
Anonymous | Nov 01, 2007 | |
Printed | Page 129-131 entire pages |
The example on page 129 (for the delete statement) shows the rows in a table for 'Zippo' the clown. According to the first paragraph we are trying to get rid of duplicate records. The exercise on the page is 'Delete Statement Magnets'. The solution shown on the next page (130) shows a delete statement to {DELETE FROM clown_info WHERE activities = 'dancing';} To my mind, this would delete the one non-duplicated row from the table on page 129. However, the table on page 131 shows an entirely different set of records in the table. Admittedly, it does highlight the one row which is actually deleted if the statement (for the solution on 130) is used on the table shown on that page. However, the whole solution has pretty much nothing to do with duplicate records or the example table on page 129. I reread the 3 pages several times before I realized that perhaps I did not read the instructions for the exercise on pg 129 closely enough; it stated 'a simple command that we could use to get rid of 'ONE' of the Zippo records'. I had assumed the exercise followed from the table above it, especially since the paragraphs at the top of pg 129 stated 'we should only have one row per clown' and we should 'get rid of some of the old Zippo records'. Just above the exercise it even shows the 'rows for Zippo' again', with many duplicated records. I thought the exercise was in reference to that table. I did understand the 'delete' statement - page 131 alone showed that. I guess it was pages 129 and 130 that threw me off. My understanding of the exercise and the solution on page 130 were so different and the results on page 131 so unexpected, things didn't 'compute' at first. My confusion could certainly have been due to the way my mind works, but things would have actually been clearer if pages 129 and 130 had not been there at all. I'm sorry this is so long, it is hard to convey confusion! Note from the Author or Editor: |
Mary | Aug 08, 2009 | Mar 01, 2011 |
Printed | Page 130 Bottom of the page (last paragraph, in bold) |
Text currently reads: "You can use WHERE clauses with DELETE statements the same way you can use them with INSERT statements." In the statement above "INSERT" should be replaced with "SELECT". Hence the corrected statement should be: "You can use WHERE clauses with DELETE statements the same way you can use them with SELECT statements." |
Anonymous | Nov 01, 2007 | |
Printed | Page 133-134 Final question |
The final question on page 133 and 134 should be: WHERE location = 'Snappy Bagel' OR rating = 3; |
Anonymous | Nov 01, 2007 | |
Printed | Page 134 Answers to questions 4 and 6. |
The arrows for Delete statement 4 point to the 1st, 3rd, and 4th row. They should point to the first, 2nd, and 4th row. Delete statement 6 says "No Matches, did not DELETE." This is incorrect; the 2nd row would be deleted. [NOTE: This correction to DELETE statement 6 is not needed if page 133 is corrected as listed above.] |
Anonymous | Nov 01, 2007 | |
Printed | Page 134 Answer to question 6 |
This is an error made in the November 2007 reprint, not the original printing. The line was changed to: WHERE location = 'Snappy Bagel' OR rating = 3; The answer should be "No matches, did not DELETE" and should have no arrows pointing to the table below. |
Anonymous | May 01, 2008 | |
Other Digital Version | 134 Answer to question 6 |
This is an error made in the November 2007 reprint, not the original printing. The line was changed to: WHERE location = 'Snappy Bagel' OR rating = 3; The answer should be "No matches, did not DELETE" and should have no arrows pointing to the table below. |
Anonymous | May 01, 2008 | |
Printed | Page 135 bottom of page |
Bottom big code block should be changed to: WHERE activities = 'yelling, dancing' AND name = 'Clarabelle'; |
Anonymous | Nov 01, 2007 | |
Printed | Page 140 last_seen column |
The last_seen column on this page should be changed to: lastSeen Cherry Hill Senior Center Jack Green's party Ball-mart Oakland Hospital* Belmont Senior Center Oakland Hospital Millstone Mall Earl's Autos Tracy's Millstone Mall Dickson Park* Ball-mart* Tracy's Dickson Park* Tracy's *changed This fixes problems with the exercise on page 141-142. |
Anonymous | Nov 01, 2007 | |
Printed | Page 144 SELECT statement |
Your SELECT throws an error. You need a star or column name before the FROM. In the first big code, the query should read: SELECT * FROM clown_info WHERE activities = 'dancing'; |
Anonymous | Nov 01, 2007 | |
Printed | Page 147 First Answer in "There are no dumb questions" |
The text currently reads: "Then every column in the SET clause in your table will be updated with the new value." This is wrong. It should read: "Every column specified in the SET clause for every row in your table will be updated with the new value." |
Anonymous | Nov 01, 2007 | |
Printed | Page 149 UPDATE in action |
The text paragraph after the headline "UPDATE in action" does not correctly relate to the SQL statement right after that. The text said: "Using the UPDATE statement, the last_seen columnn of Mr. Hobo's record is changed from Dickson Park to Tracy's" while the text in the last_seen condition in the WHERE clause of the UPDATE statement mentioned "Party for Eric Gray" Changed body text at top of page to read: "...is changed from Party for Eric Gray to Tracy's..." |
Anonymous | May 01, 2008 | |
Other Digital Version | 149 UPDATE in action |
The text paragraph after the headline "UPDATE in action" does not correctly relate to the SQL statement right after that. The text said: "Using the UPDATE statement, the last_seen columnn of Mr. Hobo's record is changed from Dickson Park to Tracy's" while the text in the last_seen condition in the WHERE clause of the UPDATE statement mentioned "Party for Eric Gray" Changed body text at top of page to read: "...is changed from Party for Eric Gray to Tracy's..." |
Anonymous | May 01, 2008 | |
Printed | Page 156 1st paragraph |
The first sentence says "age column", but it should read "cost column". |
Anonymous | Nov 01, 2007 | |
Printed | Page 156 First SQL query |
For this SQL query, the follow line should not end with a semicolon: SET cost = cost + 1; The semicolon causes the UPDATE query to update all rows. |
Anonymous | Nov 01, 2007 | |
Printed | Page 184 3rd paragraph |
Paragraph uses 'SHOW CREATE_TABLE', with an underscore in CREATE_TABLE, but example afterward uses 'SHOW CREATE TABLE', with no underscore. (Neither works with my version of postgres, so I don't know which is correct.) Note from the Author or Editor: |
georgeberger | Dec 16, 2008 | Jun 01, 2009 |
Printed | Page 189-190 Third query on middle of page |
Although the third query on 189 and 190 may work with some versions of MySQL, it throws a warning and some versions won't fix it. It should be changed to: INSERT INTO your_table VALUES (2, 'Bobby', 'Brady'); |
Anonymous | Nov 01, 2007 | |
Printed | Page 190 Middle of page |
The third INSERT statement in Exercise 3 solution does not complete without error. Annotated third insert statement: This may or may not work for you. On some SQL versions it will give you an error, and on some just a warning such as "Out of range value adjusted for column 'id' at row 1." If you get the error, Bobby's not in your table. With the warning, he will be. |
Anonymous | May 01, 2008 | |
Other Digital Version | 190 Middle of page |
The third INSERT statement in Exercise 3 solution does not complete without error. Annotated third insert statement: This may or may not work for you. On some SQL versions it will give you an error, and on some just a warning such as "Out of range value adjusted for column 'id' at row 1." If you get the error, Bobby's not in your table. With the warning, he will be. |
Anonymous | May 01, 2008 | |
Printed | Page 201-202 header of 201, magnets at bottom of 201, magnets on 202 |
In MySQL 5.0.51b on my Mac, ordinals beyond FIRST fail, as does BEFORE. So, ALTER TABLE my_contacts ADD COLUMN phone VARCHAR(10) FOURTH; fails altogether, as would ALTER TABLE my_contacts ADD COLUMN phone VARCHAR(10) BEFORE email; Note from the Author or Editor: |
Anonymous | Jun 25, 2008 | Jun 01, 2009 |
Printed | Page 210 middle |
ADD PRIMARY KEY ('proj_id'); Should be without quotes, i.e. ADD PRIMARY KEY (proj_id) |
Anonymous | Nov 01, 2007 | |
Printed | Page 212 Question in "There are no Dumb Questions" section |
Question reads, "What if I want ot..." but should be "What if I want to..." |
Anonymous | May 01, 2008 | |
Other Digital Version | 212 Question in "There are no Dumb Questions" section |
Question reads, "What if I want ot..." but should be "What if I want to..." |
Anonymous | May 01, 2008 | |
Printed | Page 212 First answer in There are no numb questions |
This page says "You can't actually change the column order once the table already has been created." Then on page 219, there is code that changes the column order in a table that already has been created. Note from the Author or Editor: |
Anonymous | Sep 25, 2008 | Jun 01, 2009 |
Printed | Page 214 First line of SQL code in Exercise solution is incorrect. |
ALTER TABLE project_table should be: ALTER TABLE project_list |
Anonymous | May 01, 2008 | |
Other Digital Version | 214 First line of SQL code in Exercise solution is incorrect. |
ALTER TABLE project_table should be: ALTER TABLE project_list |
Anonymous | May 01, 2008 | |
Printed | Page 216 Sharpen your Pencil Solution - command |
It reads yet: ALTER TABLE project_table ... should be ALTER TABLE project_list ... and the handwritten text above should read as "Here's our table name" |
Anonymous | May 01, 2008 | |
Other Digital Version | 216 Sharpen your Pencil Solution - command |
It reads yet: ALTER TABLE project_table ... should be ALTER TABLE project_list ... and the handwritten text above should read as "Here's our table name" |
Anonymous | May 01, 2008 | |
Printed | Page 219 ALL OF IT |
Code would not complete without error Changed the answer to: ALTER TABLE hooptie RENAME TO car_table, ADD COLUMN car_id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (car_id), ADD COLUMN VIN VARCHAR(16) AFTER car_id, CHANGE COLUMN mo model VARCHAR(20), MODIFY COLUMN color AFTER model, MODIFY COLUMN year SIXTH, CHANGE COLUMN howmuch price DECIMAL(7,2); Deleted the bottom annotation on the page. |
Anonymous | May 01, 2008 | |
Other Digital Version | 219 ALL OF IT |
Code would not complete without error Changed the answer to: ALTER TABLE hooptie RENAME TO car_table, ADD COLUMN car_id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (car_id), ADD COLUMN VIN VARCHAR(16) AFTER car_id, CHANGE COLUMN mo model VARCHAR(20), MODIFY COLUMN color AFTER model, MODIFY COLUMN year SIXTH, CHANGE COLUMN howmuch price DECIMAL(7,2); Deleted the bottom annotation on the page. |
Anonymous | May 01, 2008 | |
Printed | Page 219 Alter command |
The VIN column is sized at 16 characters, but the example database listing (from page 218) uses 17 characters[1]. So, the VIN column should really be: ADD COLUMN VIN VARCHAR(17) AFTER car_id Notes: [1] See http://en.wikipedia.org/wiki/Vehicle_Identification_Number |
Anonymous | Nov 11, 2009 | Mar 01, 2011 |
Printed | Page 223 first paragraph on page under Look for patterns |
Final sentence of first paragraph reads: "The that fact it's consistent and follows a pattern will help us break it down so it's more atomic." "that" and "fact" should be reversed to read: "The fact that it's..." |
Phillip Reed | Sep 02, 2009 | Mar 01, 2011 |
Printed | Page 224 Top left corner title |
Title of page is "string functionsr". an r is extra. Note from the Author or Editor: |
Anonymous | Nov 11, 2008 | Jun 01, 2009 |
Printed | Page 226 Bottom |
Point no. 4 says "Put the data we grabbed in step 2...... ". We haven't grabbed any data in step 2. Note from the Author or Editor: |
Anonymous | Nov 11, 2008 | Jun 01, 2009 |
Printed | Page 230 Middle of page left side first paragraph |
The line reads "Let's see it in action on this example table. First time through, it takes the location for the first column and operates on it." This should read "first row," not "column." (245/246) Sharpen your pencil; Instructions do not specify to add the G rating as part of the check as the answer implies on pg. 246. Added sentence to end of instructions on 245 and 246: "If a cartoon has a G rating, put it in the family category." |
Anonymous | May 01, 2008 | |
Other Digital Version | 230 Middle of page left side first paragraph |
The line reads "Let's see it in action on this example table. First time through, it takes the location for the first column and operates on it." This should read "first row," not "column." (245/246) Sharpen your pencil; Instructions do not specify to add the G rating as part of the check as the answer implies on pg. 246. Added sentence to end of instructions on 245 and 246: "If a cartoon has a G rating, put it in the family category." |
Anonymous | May 01, 2008 | |
Printed | Page 240 Sharpen your pencil example |
The categories I came up with differ from the book. If you run through the UPDATE queries, in the order provided on page 239, then: "End of the line" should be in category "?" because it's affected by the drama, horror, sci-fi, and misc updates. "Shark bait" should be labeled "family" because it's only affected by the "... family where for_kids = T" update. "Angry Pirate" should be labeled "?" because it's affected by the comedy and misc updates. |
Anonymous | Nov 11, 2009 | Mar 01, 2011 |
Printed | Page 248 Whole page |
In all cases, "movietable" should be changed to "movie_table" |
Anonymous | May 01, 2008 | |
Other Digital Version | 248 Whole page |
In all cases, "movietable" should be changed to "movie_table" |
Anonymous | May 01, 2008 | |
Printed | Page 258 Description of "Purchased dates", next-to-last line contains typo. |
"alwasy" was changed to "always" |
Anonymous | May 01, 2008 | |
Other Digital Version | 258 Description of "Purchased dates", next-to-last line contains typo. |
"alwasy" was changed to "always" |
Anonymous | May 01, 2008 | |
Printed | Page 261 2nd para |
The description of the SQL query: "This query gives us a list of movies ordered by the purchase date, with the newest ones first. For each date, the movies purchased on that date are listed in alphabetical order." doesn't match the provided query: SELECT title, purchased FROM movie_table ORDER BY title ASC, purchased DESC; The query first orders by title then purchase date which doesn't match the (above) description. Either the description or the query needs to be changed to match the other. Note from the Author or Editor: |
Anonymous | Nov 12, 2009 | Mar 01, 2011 |
Printed | Page 264 Example query |
The example query: SELECT first_name, sales FROM cookie_sales ORDER BY first_name; is supposed to order the results by first name (i.e. alphabetical order). The provided results, though, aren't in alphabetical order by first name (e.g. Nicole shows up before Britney). |
Anonymous | Nov 12, 2009 | Mar 01, 2011 |
Printed | Page 270 Sharpen your pencil solution |
The "Count the days" problem on the prior pages asks "Write a query that will give us the number of days that each girl sold cookies" The solution provided omits the statement WHERE sales <>0 The proposed solution shows each girl selling on days when their total sold was zero. In other words without the above WHERE statement, all girls have the result of 7. With the WHERE statement you get the correct result. Note from the Author or Editor: |
Nick Torres | Jul 12, 2010 | Mar 01, 2011 |
Printed | Page 275 In the paragraph beginning with the text "Remember our top 100 songs?", the second line was changed from |
"To see songs 20 through 30..." to "Suppose we wanted to see songs 20 through 29..." |
Anonymous | May 01, 2008 | |
Other Digital Version | 275 In the paragraph beginning with the text "Remember our top 100 songs?", the second line was changed from |
"To see songs 20 through 30..." to "Suppose we wanted to see songs 20 through 29..." |
Anonymous | May 01, 2008 | |
Printed | Page 277 In the crossword puzzle, the clue for 10 down should be: "Use this in a SELECT to return the total value of results rather rather than the results themselves." |
In the crossword puzzle, the clue for 10 down should be: "Use this in a SELECT to return the total value of results rather rather than the results themselves." |
Anonymous | Nov 01, 2007 | |
Printed | Page 277 Crossword Clue Across #5 |
Clue is: This function returns each unique value only once, with no duplicates. The correct answer is DISTINCT, which is not a function, it is a keyword. The correct clue should read: This keyword returns each unique value only once, with no duplicates. Note from the Author or Editor: |
Nick | Jul 12, 2010 | Mar 01, 2011 |
Printed | Page 279 Last line |
The last line on the answer page on 279 does not match the last line on page 272. It should read, "How am I? Somewhere in the middle." |
Anonymous | Nov 01, 2007 | |
Printed | Page 292 First caption for solution (the 'simpler columns' portion of the query. |
The caption says: "Regis wants to date a single girl born between 1970 and 1980, who lives in Massachusetts and wants to date a single guy." All the queries looking for dates for Regis to this point are supposed to and have been written to look for matches within five years of his birthday up and down, which means the years 1950 to 1960. The caption should say: "Regis wants to date a single girl born between 1950 and 1960, who lives in Massachusetts and wants to date a single guy." |
Adam Wickliffe | Sep 02, 2009 | Mar 01, 2011 |
Printed | Page 295 Description, caption and heading for first table |
1) "How the old clown_tracking table ..." Should probably read "How the old clown_info table ..." in order to match the table name from previous chapters (e.g. page 176) 2) The heading for the table should also be changed from clown_tracking over to clown_info 3) The column headers should be shifted to the left by one column. The current column haedings: clown_info|name|last_seen|activities should read name|last_seen|appearance|activities |
Anonymous | Nov 13, 2009 | Mar 01, 2011 |
Printed | Page 296 "old" table caption and column headings |
1) The heading for the table should also be changed from clown_tracking over to clown_info 2) The column headers should be shifted to the left by one column. The current column headings: clown_info|name|last_seen|activities should read name|last_seen|appearance|activities |
Anonymous | Nov 13, 2009 | Mar 01, 2011 |
Printed | Page 307 SQL command in middle of page |
At the end of the CREATE TABLE command, the final closing parenthesis should come before the semicolon. |
Anonymous | Nov 01, 2007 | |
Printed | Page 309 last comment on page |
Page 304 has the following statement: "Foreign keys don’t have to be unique—in fact, they often aren’t." So I don't see how the following comment on page 309 logically follows: "These tables also have a one-to-one relationship, since the primary key of the employee table, employee_id, is being used as the foreign key of the salary table." [Nit: since --> because, above] In fact, the interests table, which is the subject of the previous pages, has the same setup but is a one-to-many (i.e. many contact_id's in the interest table that map into one contact_id in the my_contacts table). Note from the Author or Editor: |
Anonymous | Nov 13, 2009 | Mar 01, 2011 |
Printed | Page 312 First sentence |
"Many woman ..." should read "Many women ..." |
Anonymous | Nov 13, 2009 | Mar 01, 2011 |
Printed | Page 314 Sharpen your pencil Solution |
The tables shown as the answer are incorrect. The first pair of tables show that the only person who has 'Crocs Clogs' is Charlotte. The answer table shows that Samantha is the only person with 'Crocs Clogs'. Assuming that the first set of tables is the data the answer should be derived from, I believe the answer will look like this: ------------------------ | woman_id | woman | ------------------------ | 1 | Carrie | | 2 | Samantha | | 3 | Charlotte | | 4 | Miranda | ------------------------ ------------------------------------------ | shoe_id | shoe_name | woman_id | ------------------------------------------ | 1 | Manolo Strappies | 2 | | 2 | Crocs Clogs | 3 | | 3 | Old Navy Flops | 1 | | 4 | Prada Boots | 1 | | 5 | Manolo Strappies | 3 | | 6 | Manolo Strappies | 4 | | 7 | Old Navy Flops | 3 | | 8 | Old Navy Flops | 4 | | 9 | Prada Boots | 3 | | 10 | Prada Boots | 4 | ------------------------------------------ |
Adam Wickliffe | Sep 03, 2009 | Mar 01, 2011 |
Printed | Page 318 4th example |
The exercise asks us what the database relationship is between a book and a publisher (ie is it One to Many, or Many to Many). The answer given is One to Many, on the assumption that modern books only have one publisher. Usually, this is right. But what about books like the Bible, or Dickens, or Shakespeare? Some books with lapsed copyrights are published by multiple publishers. Perhaps you could add a pencilled note to the answer mentioning this to avoid confusion. Thanks. Head First SQL is awesome. Lynn Beighley is my hero :) Note from the Author or Editor: |
Durand | Sep 10, 2009 | Mar 01, 2011 |
Printed | Page 324 Shorthand notations |
Removed semicolons after the arrows. For instance, T.x -> ; T.y should be: T.x -> T.y |
Anonymous | May 01, 2008 | |
Other Digital Version | 324 Shorthand notations |
Removed semicolons after the arrows. For instance, T.x -> ; T.y should be: T.x -> T.y |
Anonymous | May 01, 2008 | |
Printed | Page 324 Sharpen your pencil solution box |
The four examples "function dependencies" are NOT correct. These are NOT functional dependencies. Following from the formal definition (see Database Management Systems, Ramakrishnan and Gehrke), these cannot be functional dependencies, we can make the following (informal) definition: Attribute (a.k.a. field) A functionally determines attribute B exactly when: if two rows agree on a value for attribute A, then they will always agree on attribute B. This also shows that the definition on the preceding page is a slight misinterpretation (in fact, the definition given there is an unsafe generalization, since it permits different values for B in rows that agree on A). Incidentally, following the correct definition given above, it is clear that name does functionally determine initials as the example says (and not the other way round, since people with different names can have the same initials). This is a SERIOUS (and embarrassing) mistake. Note from the Author or Editor: |
Andrew Bate | Dec 23, 2010 | Mar 01, 2011 |
Printed | Page 333 Final line of text |
Final line of text in the instructions should read: "Finally, add these new columns to the appropriate tables: phone, manager, cost, and weight." |
Anonymous | Nov 01, 2007 | |
Printed | Page 333, 335 Sharpen Your Pencil Instructions |
Add another sentence to the end of the third paragraph of the Sharpen Your Pencil instructions that says, "You may have to create new toy_ids." |
Anonymous | Jun 01, 2009 | |
Printed | Page 335 store_inventory table solution |
The values in the first column, toy_id, in the store_inventory table need to be changed to: toy_id 1 2 3 4 5 6 7 8 9 10 |
Anonymous | Nov 01, 2007 | |
Printed | Page 339 Thought Cloud |
"...writing a hundreds of queries" should be "...writing hundreds of queries" |
Anonymous | May 01, 2008 | |
Other Digital Version | 339 Thought Cloud |
"...writing a hundreds of queries" should be "...writing hundreds of queries" |
Anonymous | May 01, 2008 | |
Printed | Page 340 Note on "Foreign key" |
The note on "Foreign key" is wrong. The note printed describes third normal form instead of foreign key. The note should read, "A column in a table that references the primary key of another table." |
Anonymous | Nov 01, 2007 | |
Printed | Page 349 2nd paragraph |
The second statement of the second paragraph on p. 349 is technically incorrect or explains incorrectly the usage of the SUBSTR function. To remedy the mistake, we removed "We're telling it to return the same part we just put in interest1, plus two more characters (for the comma and space)." |
Anonymous | May 01, 2008 | |
Other Digital Version | 349 2nd paragraph |
The second statement of the second paragraph on p. 349 is technically incorrect or explains incorrectly the usage of the SUBSTR function. To remedy the mistake, we removed "We're telling it to return the same part we just put in interest1, plus two more characters (for the comma and space)." |
Anonymous | May 01, 2008 | |
Printed | Page 350 In 'sharpen your pencil', in the hint text |
It says 'Rhe' instead of 'The' |
Anonymous | May 01, 2008 | |
Other Digital Version | 350 In 'sharpen your pencil', in the hint text |
It says 'Rhe' instead of 'The' |
Anonymous | May 01, 2008 | |
Printed | Page 354 second to last paragraph |
"SQL let's you" should be "SQL lets you". Note from the Author or Editor: |
Thomas Kennedy | Sep 09, 2010 | Mar 01, 2011 |
Printed | Page 355 Middle; Code returns error |
The 4th line of the big code query was changed from "profession varchar(20)" to mc_prof varchar(20) |
Anonymous | May 01, 2008 | |
Other Digital Version | 355 Middle; Code returns error |
The 4th line of the big code query was changed from "profession varchar(20)" to mc_prof varchar(20) |
Anonymous | May 01, 2008 | |
Printed | Page 356 SELECT proffession AS mcprof |
Should be mc_prof NOT mcprof |
Anonymous | Nov 01, 2007 | |
Printed | Page 359 there are no dumb questions |
"?" missing at the end of question "so I'd used his......." Note from the Author or Editor: |
Anonymous | Nov 12, 2008 | Mar 01, 2011 |
Printed | Page 359 Second question 'there are no Dumb Questions' |
The question of 'Say I'd use his query instead:' should read 'Say I'd use this query instead:' (The 't' is missing from the 'his', which would make it 'this'). |
Adam Wickliffe | Sep 17, 2009 | Mar 01, 2011 |
Printed | Page 360, 362 Last line of query |
Last line of query should be changed from "ON mc.contact_id = p.prof_id;" to "ON mc.prof_id = p.prof_id;" |
Anonymous | Nov 01, 2007 | |
Printed | Page 362 last two "blank" lines |
"... where the contact_id from my_contacts matches the id field in the profession table" Should be changed to "... where the prof_id field from my_contacts matches the prof_id field from the profession table" in order to match the provided field names. |
Anonymous | Nov 17, 2009 | Mar 01, 2011 |
Printed | Page 365 second block/question |
It says "Query that returns...... and status each person ......". "of is missing. Should be "Query that returns...... and status OF each person ......". Note from the Author or Editor: |
Anonymous | Nov 12, 2008 | Jun 01, 2009 |
Printed | Page 366 The third printed solution. |
A formatting problem with the stylized font in the 3rd solution given on page 366. Two minor but rather misleading typo/formatting problem where the full stop in "...z.state FROM my_contacts mc..." and "...z.zip_code;" has melded with the letter preceding it. Thus, it looks like 'zstate' and 'z zip_code" respectively to the naked eye. A slightly elongated 'z' perhaps, but unless you peer very closely at the print, the full stop is practically non-existent. |
Anonymous | Sep 06, 2009 | Mar 01, 2011 |
Other Digital Version | 370 The first and third queries on this page should use a NATURAL JOIN. The INNER JOIN will produce the wrong results. |
Changed "INNER" to "NATURAL" in first and third answers. |
Anonymous | May 01, 2008 | |
Printed | Page 370 The first and third queries on this page should use a NATURAL JOIN. The INNER JOIN will produce the wrong results. |
Changed "INNER" to "NATURAL" in first and third answers. |
Anonymous | Jun 01, 2009 | |
Other Digital Version | 378 Sharpen your pencil - Solution |
The annotation for the table states, "The interests column is empty after we run the command." This is incorrect. The interests column still has the value "fourth" in it. The annotation on the bottom of the page was changed to read "The interests column contains only the last interest at this point." Additionally, in the interests column on the table, the scratchy line was edited to only cross out the second and third part, leaving the fourth part unscratched. |
Anonymous | May 01, 2008 | |
Printed | Page 378 Sharpen your pencil - Solution |
The annotation for the table states, "The interests column is empty after we run the command." This is incorrect. The interests column still has the value "fourth" in it. The annotation on the bottom of the page was changed to read "The interests column contains only the last interest at this point." Additionally, in the interests column on the table, the scratchy line was edited to only cross out the second and third part, leaving the fourth part unscratched. |
Anonymous | Jun 01, 2009 | |
Printed | Page 378 Answer table diagram (on page 378) |
The table in the answer for the 'Sharpen your pencil' exercise (on page 378) indicates that the information in the orginal 'interests' column will be gone. However, after the value from 'interests' has been pared down to just the fourth item, it is assigned to the 'interest4' column, but isn't modified afterword (like the SUBSTR function did for the previous three interests). The end result would have 'fourth' as the value in the 'interests' column once the query has been run. Note from the Author or Editor: |
Adam Wickliffe | Sep 17, 2009 | Mar 01, 2011 |
Other Digital Version | 381 Old tables in the ER diagram; |
contact_interest.interest_id should link up with interests.interest_id and contact_seeking.seeking_id should link to seeking_id To correct this, I edited the arrow paths: The right arrow that points at contact_interest.contact_id was shifted down to contact_interest.interest_id. The right arrow that points at contact_seeking.contact_id was shifted down to contact_seeking.seeking_id. |
Anonymous | May 01, 2008 | |
Printed | Page 381 Old tables in the ER diagram; |
contact_interest.interest_id should link up with interests.interest_id and contact_seeking.seeking_id should link to seeking_id To correct this, I edited the arrow paths: The right arrow that points at contact_interest.contact_id was shifted down to contact_interest.interest_id. The right arrow that points at contact_seeking.contact_id was shifted down to contact_seeking.seeking_id. |
Anonymous | Jun 01, 2009 | |
Printed | Page 382 last paragraph |
"... But first, he wants to pull out all the Web Developers with ..." This statement implies to me that the query should look for people who are currently web developers versus people aspiring to be web developers (which is what the provided solution looks for). Also, the provided solution doesn't check for years of experience, so the requirement needs to be dropped from this page or fixed in the query. Note from the Author or Editor: |
Anonymous | Nov 18, 2009 | Mar 01, 2011 |
Printed | Page 384 Comment to the right of the page |
The comment on this page says: "These are just a few of the titles in Greg's job_current table.". But the Select statement selects from the job_listings. Note from the Author or Editor: |
Anonymous | Jun 09, 2008 | Jun 01, 2009 |
Printed | Page 391-392 SQL's Rules of Order puzzle and solution |
The words 'FROM' and 'HAVING' are used in the solution, but are not among the list of words for the puzzle. |
Anonymous | Nov 01, 2007 | |
Printed | Page 392 |
Second question refers to page 388, this should be page 387. |
Anonymous | Nov 01, 2007 | |
Printed | Page 398 Query |
Query says "SELECT jc.salary ..... WHERE email = ''". It should be "SELECT jc.salary ..... WHERE mc.email = '........'". "mc." is missing. Note from the Author or Editor: |
Anonymous | Nov 12, 2008 | Jun 01, 2009 |
Printed | Page 399 annotations for top query diagram |
Two of the annotations for the top query diagram should be changed to indicate that the subquery (inner query) is processed first. The top-left annotation should be changed from "The RDBMS processes this part first." to "The RDBMS processes this part second." And the bottom-right annotation should be changed from "This is processed second." to "This is processed first." |
Anonymous | Nov 01, 2007 | |
Printed | Page 409 right hand side column of the "what's my purpose" column |
In the sentence "If two contact_id are true, a condition is met.", "true" should be "equal" or "identical"? Note from the Author or Editor: |
Anonymous | Oct 21, 2008 | Jun 01, 2009 |
Printed | Page 428 First sentence in thought bubble |
"...use an outer join to to join a single..." should be "...use an outer join to join a single..." |
Anonymous | Nov 01, 2007 | |
Printed | Page 437 Second paragraph, last sentence |
The following statement seems incorrect to me: " Think of the results of the UNION like they’re the values from each SELECT that “overlap.”" The UNION statement doesn't just provide the "overlap" but combines all the results (with duplicates removed). Note from the Author or Editor: |
Anonymous | Nov 20, 2009 | Mar 01, 2011 |
Printed | Page 456 Multiple locations |
1) The job_listings.job_id field is listed as both a primary and foreign key even though it isn't being used as a foreign key. 2) The field interests.interest_id is mapped to contact_interest.contact_id instead of contact_interest.interest_id. 3) The field seeking.seeking_id is mapped to contact_seeking.contact_id instead of contact_seeking.seeking_id. Note from the Author or Editor: |
Anonymous | Nov 20, 2009 | Mar 01, 2011 |
Printed | Page 458 Under "He gets the status_id from the status table" |
The second annotation on this page should be changed from "And here's the status_id that corresponds to 'married'." to "And here's the status_id that corresponds to 'single'." Also, the value in the result table for status_id should be 3, not 4. |
Anonymous | Nov 01, 2007 | |
Printed | Page 461 Sharpen your pencil section |
Column names while creating tables are column3 & column4. When adding CHECK constraint, column names are written as column_3 & column_4. TYPO. :) Note from the Author or Editor: |
Anonymous | Nov 12, 2008 | Jun 01, 2009 |
Printed | Page 465 tech_writer_jobs CREATE VIEW statement |
There should be a ',' character after 'title' in the tech_writer_jobs CREATE VIEW statement. |
Anonymous | Nov 01, 2007 | |
Other Digital Version | 472 SQL for creating view |
The AS keyword is in the wrong place. AS in the statement was moved after pb_quarters, to read: CREATE VIEW pb_quarters AS SELECT... |
Anonymous | May 01, 2008 | |
Printed | Page 472 SQL for creating view |
The AS keyword is in the wrong place. AS in the statement was moved after pb_quarters, to read: CREATE VIEW pb_quarters AS SELECT... |
Anonymous | Jun 01, 2009 | |
Printed | Page 472 INSERT command |
The dates in the INSERT command line should be quoted because the table CREATE command (on page 472) lists those values as CHAR(4). Note from the Author or Editor: |
Anonymous | Nov 23, 2009 | Mar 01, 2011 |
Printed | Page 490, 557 'UPDATABLE VIEWS' tooltip |
"...all NOT NULL rows of the base table..." should be "...all NOT NULL columns of the base table..." |
Anonymous | Nov 01, 2007 | |
Printed | Page 506 Leftmost bottom: Arrow going from root to sleepy. |
Written "trys". Typo. Should be "tries". |
Anonymous | Nov 12, 2008 | Jun 01, 2009 |
Printed | Page 508 Solution to last problem |
Solution says "REVOKE GRANT INSERT(location).....". Should be "REVOKE INSERT(location)......". GRANT is extra. Wrong syntax, i am a little bit confused. Note from the Author or Editor: |
Anonymous | Nov 12, 2008 | Jun 01, 2009 |
Printed | Page 508 First solution |
Initial Grant statement is: GRANT SELECT, INSERT, DELETE ON locations FROM elsie; Answer in book: REVOKE INSERT, UPDATE, DELETE ON locations FROM elsie; Answer should be: REVOKE INSERT, DELETE ON locations FROM elsie; UPDATE permission was not given in the original GRANT statement. Note from the Author or Editor: |
Anonymous | Oct 08, 2010 | Mar 01, 2011 |
Printed | Page 518 GRANT statements at the bottom of the page |
"GRANT SELECT ON my_contacts * TO frank;" should be "GRANT SELECT ON my_contacts.* TO frank;" "GRANT SELECT, INSERT ON gregs_list * TO jim;" should be "GRANT SELECT, INSERT ON gregs_list.* TO jim;" |
Anonymous | Nov 01, 2007 | |
Printed | Page 520 First paragraph |
"...Greg's List to include to include local..." should be "...Greg's List to include local..." |
Anonymous | Nov 01, 2007 | |
Printed | Page 528 second table |
Used the '+' sign for subtraction and division. Should be '-' and '/', respectively. |
Anonymous | Nov 01, 2007 | |
Printed | Page 528 comparison operators table at the bottom of the page |
'Not less than' operator should be '!<' 'Less than or equal to' operator should be '<=' |
Anonymous | Nov 01, 2007 | |
Printed | Page 528 middle of page |
the arrows from the annotation "these are only wildcards..." should point to the rows for _ and %. Note from the Author or Editor: |
Anonymous | Oct 23, 2008 | Jun 01, 2009 |
Printed | Page 530 Last paragraph |
The last body text paragraph should read: "The query above will return Pizza House. We can also use >= and <= with ALL. The query below will give us both The Shack and Arthur's. We get the ratings greater than any in our set, as well as equal to the largest one in our set, which is 7:" |
Anonymous | Nov 01, 2007 | |
Printed | Page 535 Last sentence |
The last sentence of the page is nearly identical to the last sentence of the preceding section ('Some situations where you might want to use CAST()'). |
Anonymous | Nov 01, 2007 | |
Printed | Page 537 "what does it do?" for the Log(x) and Log(x,y) functions |
The "what does it do?" text for the Log(x) and Log(x,y) functions should be changed to "Returns the natural logarithm of x, or with two parameters returns the log of y for base x." |
Anonymous | Nov 01, 2007 | |
Printed | Page 541 Second to last highlighted code line at the bottom of the page |
" lose($conn);" should be "mysql_close($conn);" |
Anonymous | Nov 01, 2007 |