You are previewing Head First SQL.

Head First SQL

Cover of Head First SQL by Lynn Beighley Published by O'Reilly Media, Inc.
  1. Head First SQL
  2. Dedication
  3. SPECIAL OFFER: Upgrade this ebook with O’Reilly
  4. A Note Regarding Supplemental Files
  5. Advance Praise for Head First SQL
  6. Praise for other Head First books
  7. Praise for the Head First Approach
  8. Author of Head First SQL
  9. How to use this Book: Intro
    1. Who is this book for?
    2. Who should probably back away from this book?
    3. We know what you’re thinking.
    4. And we know what your brain is thinking.
    5. Metacognition: thinking about thinking
    6. Here’s what WE did
    7. Here’s what YOU can do to bend your brain into submission
    8. Read me
    9. The technical review team
    10. Acknowledgments
  10. 1. Data and Tables: A place for everything
    1. Defining your data
    2. Look at your data in categories
    3. What’s in a database?
    4. Your database viewed through x-ray specs...
    5. Databases contain connected data
    6. Take command!
    7. Setting the table: the CREATE TABLE statement
    8. Creating a more complicated table
    9. Look how easy it is to write SQL
    10. Create the my_contacts table, finally
    11. Your table is ready
    12. Take a meeting with some data types
    13. Your table, DESCribed
    14. You can’t recreate an existing table or database!
    15. Out with the old table, in with the new
    16. To add data to your table, you’ll use the INSERT statement
    17. Create the INSERT statement
    18. Variations on an INSERT statement
    19. Columns without values
    20. Peek at your table with the SELECT statement
    21. Controlling your inner NULL
    22. NOT NULL appears in DESC
    23. Fill in the blanks with DEFAULT
    24. Your SQL Toolbox
  11. 2. The SELECT Statement: Gifted data retrieval
    1. Date or no date?
    2. Making contact
    3. A better SELECT
    4. What the * is that?
    5. How to query your data types
    6. More punctuation problems
    7. Unmatched single quotes
    8. Single quotes are special characters
    9. INSERT data with single quotes in it
      1. Handle quotes with a backslash
      2. Handle quotes with an extra single quote
    10. SELECT specific data
    11. The old way
    12. SELECT specific columns to limit results
    13. SELECT specific columns for faster results
    14. Doughnut ask what your table can do for you...
    15. Ask what you can do for your doughnut
    16. Combining your queries
    17. Finding numeric values
    18. Once is enough
    19. Smooth Comparison Operators
    20. Finding numeric data with Comparison Operators
    21. Text data roping with Comparison Operators
    22. Selecting your ingredients
    23. To be OR not to be
    24. The difference between AND and OR
    25. Use IS NULL to find NULLs
    26. Meanwhile, back at Greg’s place...
    27. Saving time with a single keyword: LIKE
    28. The call of the Wild(card)
    29. That’s more LIKE it
      1. Selecting ranges using AND and comparison operators
    30. Just BETWEEN us... there’s a better way
    31. After the dates, you are either IN...
    32. ... or you are NOT IN
    33. More NOT
    34. Your SQL Toolbox
  12. 3. DELETE and UPDATE: A change will do you good
    1. Clowns are scary
    2. Clown tracking
    3. How our clown data gets entered
    4. Bonzo, we’ve got a problem
    5. Getting rid of a record with DELETE
    6. Using our new DELETE statement
    7. DELETE rules
    8. The INSERT-DELETE two step
    9. Be careful with your DELETE
    10. The trouble with imprecise DELETE
    11. Change your data with UPDATE
    12. UPDATE rules
    13. UPDATE is the new INSERT-DELETE
    14. UPDATE in action
    15. UPDATE your prices
    16. All we need is one UPDATE
    17. Your SQL Toolbox
  13. 4. Smart Table Design: Why be normal?
    1. Two fishy tables
    2. A table is all about relationships
    3. Atomic data
      1. 30 minutes or it’s free
      2. Location, location, location
    4. Atomic data and your tables
    5. Reasons to be normal
    6. The benefits of normal tables
    7. Clowns aren’t normal
    8. Halfway to 1NF
    9. PRIMARY KEY rules
    10. Getting to NORMAL
    11. Fixing Greg’s table
    12. The CREATE TABLE we wrote
    13. Show me the
    14. Time-saving command
    16. 1, 2, 3... auto incrementally
    17. Adding a PRIMARY KEY to an existing table
    18. ALTER TABLE and add a PRIMARY KEY
    19. Your SQL Toolbox
  14. 5. Alter: Rewriting the Past
    1. We need to make some changes
    2. Table altering
    3. Extreme table makeover
    4. Renaming the table
    5. We need to make some plans
    6. Retooling our columns
    7. Structural changes
    8. ALTER and CHANGE
    9. Change two columns with one SQL statement
    10. Quick! DROP that column
    11. A closer look at the non-atomic location column
    12. Look for patterns
    13. A few handy string functions
      1. To SELECT the last two characters
      2. To SELECT everything in front of the comma
    14. Use a current column to fill a new column
    15. How our UPDATE and SET combo works
    16. Your SQL Toolbox
  15. 6. Advanced Select: Seeing your data with new eyes
    1. Dataville Video is reorganizing
    2. Problems with our current table
    3. Matching up existing data
    4. Populating the new column
      1. The order does matter
    5. UPDATE with a CASE expression
    6. Looks like we have a problem
    7. Tables can get messy
    8. We need a way to organize the data we SELECT
    9. Try a little ORDER BY
    10. ORDER a single column
    11. ORDER with two columns
    12. ORDER with multiple columns
    13. An orderly movie_table
      1. and the ordered results from our query:
    14. Reverse the ORDER with DESC
    15. The Girl Sprout® cookie sales leader problem
    16. SUM can add them for us
    17. SUM all of them at once with GROUP BY
    18. AVG with GROUP BY
    19. MIN and MAX
    20. COUNT the days
    21. SELECT DISTINCT values
    22. LIMIT the number of results
    23. LIMIT to just second place
    24. Your SQL Toolbox
  16. 7. Multi-Table Database Design: Outgrowing your table
    1. Finding Nigel a date
    2. Why change anything?
    3. The query worked really well
    4. It worked too well
    5. Ignoring the problem isn’t the answer
    6. Too many bad matches
    7. Use only the first interest
    8. A possible match
    9. Mis-matched
    10. Add more interest columns
    11. Starting over
    12. All is lost...
    13. ... But wait
    14. Think outside of the single table
    15. The multi-table clown tracking database
    16. The clown_tracking database schema
    17. An easier way to diagram your tables
    18. How to go from one table to two
    19. Linking your tables in a diagram
    20. Connecting your tables
    21. Foreign key facts
    22. Constraining your foreign key
    23. Why bother with foreign keys?
    24. CREATE a table with a FOREIGN KEY
    25. Relationships between tables
    26. Patterns of data: one-to-one
    27. Patterns of data: when to use one-to-one tables
      1. When to use one-to-one tables
    28. Patterns of data: one-to-many
    29. Patterns of data: getting to many-to-many
    30. Patterns of data: we need a junction table
    31. Patterns of data: many-to-many
    32. Patterns of data: fixing gregs_list
    33. Not in first normal form
    34. Finally in 1NF
    35. Composite keys use multiple columns
    36. Even superheros can be dependent
    37. Shorthand notations
    38. Superhero dependencies
    39. Partial functional dependency
    40. Transitive functional dependency
    41. Second normal form
    42. We might be 2NF already...
    43. Third normal form (at last)
    44. And so, Regis (and gregs_list) lived happily ever after
    45. The End
    46. Your SQL Toolbox
  17. 8. Joins and Multi-Table Operations: Can’t we all just get along?
    1. Still repeating ourselves, still repeating...
    2. Prepopulate your tables
    3. We got the “table ain’t easy to normalize” blues
    4. The special interests (column)
    5. Keeping interested
    6. UPDATE all your interests
    7. Getting all the interests
    8. Many paths to one place
    9. CREATE, SELECT and INSERT at (nearly) the same time
    10. CREATE, SELECT and INSERT at the same time
    11. What’s up with that AS?
    12. Column aliases
    13. Table aliases, who needs ’em?
    14. Everything you wanted to know about inner joins
    15. Cartesian join
    16. Releasing your inner join
    17. The inner join in action: the equijoin
    18. The inner join in action: the non-equijoin
    19. The last inner join: the natural join
    20. Joined-up queries?
    21. Your SQL Toolbox
  18. 9. Subqueries: Queries within queries
    1. Greg gets into the job recruiting business
    2. Greg’s list gets more tables
    3. Greg uses an inner join
    4. But he wants to try some other queries
    5. Subqueries
    6. We combine the two into a query with a subquery
    7. Subquery rules
    8. Subquery rules
    9. A subquery construction walkthrough
    10. A subquery as a SELECT column
    11. Another example: Subquery with a natural join
    12. A noncorrelated subquery
    13. A noncorrelated subquery with multiple values: IN, NOT IN
    14. Correlated subqueries
    15. A (useful) correlated subquery with NOT EXISTS
    17. Greg’s Recruiting Service is open for business
    18. On the way to the party
    19. Your SQL Toolbox
  19. 10. Outer Joins, Self-Joins, and Unions: New maneuvers
    1. Cleaning up old data
    2. It’s about left and right
    3. Here’s a left outer join
      1. The results of the left outer join
    4. Outer joins and multiple matches
    5. The right outer join
    6. While you were outer joining...
    7. We could create a new table
    8. How the new table fits in
    9. A self-referencing foreign key
    10. Join the same table to itself
    11. We need a self-join
    12. Another way to get multi-table information
    13. You can use a UNION
    14. UNION is limited
    15. UNION rules in action
    16. UNION ALL
    17. Create a table from your union
    19. We’re done with joins, time to move on to...
    20. Subqueries and joins compared
    21. Turning a subquery into a join
    22. A self-join as a subquery
    23. Greg’s company is growing
    24. Your SQL Toolbox
  20. 11. Constraints, Views, and Transactions: Too many cooks spoil the database
    1. Greg’s hired some help
    2. Jim’s first day: Inserting a new client
    3. Jim avoids a NULL
    4. Flash forward three months
    5. CHECK, please: Adding a CHECK CONSTRAINT
    6. CHECKing the gender
    7. Frank’s job gets tedious
    8. Creating a view
    9. Viewing your views
    10. What your view is actually doing
    11. What a view is
    12. Inserting, updating, and deleting with views
    13. The secret is to pretend a view is a real table
    14. View with CHECK OPTION
    15. Your view may be updatable if...
    16. When you’re finished with your view
    17. When bad things happen to good databases
    18. What happened inside the ATM
    19. More trouble at the ATM
    20. It’s not a dream, it’s a transaction
    21. The classic ACID test
    22. SQL helps you manage your transactions
    23. What should have happened inside the ATM
    24. How to make transactions work with MySQL
    25. Now try it yourself
    26. Your SQL Toolbox
  21. 12. Security: Protecting your assets
    1. User problems
    2. Avoiding errors in the clown tracking database
    3. Protect the root user account
    4. Add a new user
    5. Decide exactly what the user needs
    6. A simple GRANT statement
    7. GRANT variations
    8. REVOKE privileges
    10. REVOKING with precision
    11. The problem with shared accounts
    12. Using your role
    13. Role dropping
    14. Using your role WITH ADMIN OPTION
      1. REVOKE role with CASCADE
      2. REVOKE role with RESTRICT
    15. Combining CREATE USER and GRANT
    16. Greg’s List has gone global!
    17. Your SQL Toolbox
    18. How about a Greg’s List in your city?
    19. Use SQL on your own projects, and you too could be like Greg!
  22. A. Leftovers: The Top Ten Topics (we didn’t cover)
    1. #1. Get a GUI for your RDBMS
      1. MySQL GUI tools
      2. Other GUI tools
    2. #2. Reserved Words and Special Characters
      1. Special Characters
      2. Reserved Words
    3. #3. ALL, ANY, and SOME
      1. Using ALL
      2. Using ANY
      3. Using SOME
    4. #4. More on Data Types
      1. BOOLEAN
      2. INT
      3. Other INT types
      4. DATE and TIME types
    5. #5. Temporary tables
      1. Reasons you might want a temporary table:
      2. Create a temporary table
      3. A temporary table shortcut
    6. #6. Cast your data
      1. Some situations where you might want to use CAST()
      2. You can’t use CAST() in these situations
    7. #7. Who are you? What time is it?
    8. #8. Useful numeric functions
    9. #9. Indexing to speed things up
    10. #10. 2-minute PHP/MySQL
      1. A closer look at each line
  23. B. MySQL Installation: Try it out for yourself
    1. Get started, fast!
    2. Instructions and Troubleshooting
    3. Steps to Install MySQL on Windows
      1. Download your installer
      2. Pick a destination folder
      3. Click “Install” and you’re done!
    4. Steps to Install MySQL on Mac OS X
  24. C. Tools Roundup: All your new SQL tools
  25. D.  
    1. Symbols
    2. A
    3. B
    4. C
    5. D
    6. E
    7. F
    8. G
    9. I
    10. L
    11. M
    12. N
    13. O
    14. P
    15. S
    16. T
    17. U
    18. V
    19. W
  26. Index
  27. About the Author
  28. SPECIAL OFFER: Upgrade this ebook with O’Reilly
  29. Copyright
O'Reilly logo

How to use this Book: Intro

image with no caption

In this section, we answer the burning question: “So why DID they put that in an SQL book?”

Who is this book for?

If you can answer “yes” to all of these:

  1. Do you have access to a computer with an RDBMS installed on it, like Oracle, MS SQL, or MySQL? Or one that you can install MySQL, or other RDBMS on?

  2. Do you want to learn, understand, and remember how to create tables, databases, and write queries using the best and most recent standards?


    We’ll help you learn SQL concepts and syntax in a way that will definitely make it easier for you to understand and actually use. SQL precisely the way you need to use it.

  3. Do you prefer stimulating dinner party conversation to dry, dull, academic lectures?

this book is for you.

Who should probably back away from this book?

If you can answer “yes” to any of these:

  1. Are you completely comfortable with beginning SQL syntax and seeking something that will help you with advanced database design?


    But if you would like a refresher, and never quite understood normal form and one-to-many and left outer joins, this book can help you.

  2. Are you already an experienced SQL programmer and looking for a reference book on SQL?

  3. Are you afraid to try something different? Would you rather have a root canal than mix stripes with plaid? Do you believe that a technical book can’t be serious if SQL concepts are anthropomorphized?

this book is not for you.

image with no caption

[Note from marketing: this book is for anyone with a credit card.]

We know what you’re thinking.

  • “How can this be a serious SQL book?”

  • “What’s with all the graphics?”

  • “Can I actually learn it this way?”

And we know what your brain is thinking.

Your brain craves novelty. It’s always searching, scanning, waiting for something unusual. It was built that way, and it helps you stay alive.

So what does your brain do with all the routine, ordinary, normal things you encounter? Everything it can to stop them from interfering with the brain’s real job—recording things that matter. It doesn’t bother saving the boring things; they never make it past the “this is obviously not important” filter.

How does your brain know what’s important? Suppose you’re out for a day hike and a tiger jumps in front of you, what happens inside your head and body?

Neurons fire. Emotions crank up. Chemicals surge.

And that’s how your brain knows...

image with no caption

This must be important! Don’t forget it!

But imagine you’re at home, or in a library. It’s a safe, warm, tiger-free zone. You’re studying. Getting ready for an exam. Or trying to learn some tough technical topic your boss thinks will take a week, ten days at the most.

Just one problem. Your brain’s trying to do you a big favor. It’s trying to make sure that this obviously non-important content doesn’t clutter up scarce resources. Resources that are better spent storing the really big things. Like tigers. Like the danger of fire. Like how you should never again snowboard in shorts.

And there’s no simple way to tell your brain, “Hey brain, thank you very much, but no matter how dull this book is, and how little I’m registering on the emotional Richter scale right now, I really do want you to keep this stuff around.”

image with no caption

Metacognition: thinking about thinking

If you really want to learn, and you want to learn more quickly and more deeply, pay attention to how you pay attention. Think about how you think. Learn how you learn.

Most of us did not take courses on metacognition or learning theory when we were growing up. We were expected to learn, but rarely taught to learn.

But we assume that if you’re holding this book, you really want to learn about project management. And you probably don’t want to spend a lot of time. And since you’re going to take an exam on it, you need to remember what you read. And for that, you’ve got to understand it. To get the most from this book, or any book or learning experience, take responsibility for your brain. Your brain on this content.

The trick is to get your brain to see the new material you’re learning as Really Important. Crucial to your well-being. As important as a tiger. Otherwise, you’re in for a constant battle, with your brain doing its best to keep the new content from sticking.

image with no caption

So just how DO you get your brain to think that SQL is a hungry tiger?

There’s the slow, tedious way, or the faster, more effective way. The slow way is about sheer repetition. You obviously know that you are able to learn and remember even the dullest of topics if you keep pounding the same thing into your brain. With enough repetition, your brain says, “This doesn’t feel important to him, but he keeps looking at the same thing over and over and over, so I suppose it must be.”

The faster way is to do anything that increases brain activity, especially different types of brain activity. The things on the previous page are a big part of the solution, and they’re all things that have been proven to help your brain work in your favor. For example, studies show that putting words within the pictures they describe (as opposed to somewhere else in the page, like a caption or in the body text) causes your brain to try to makes sense of how the words and picture relate, and this causes more neurons to fire. More neurons firing = more chances for your brain to get that this is something worth paying attention to, and possibly recording.

A conversational style helps because people tend to pay more attention when they perceive that they’re in a conversation, since they’re expected to follow along and hold up their end. The amazing thing is, your brain doesn’t necessarily care that the “conversation” is between you and a book! On the other hand, if the writing style is formal and dry, your brain perceives it the same way you experience being lectured to while sitting in a roomful of passive attendees. No need to stay awake.

But pictures and conversational style are just the beginning.

Here’s what WE did

We used pictures, because your brain is tuned for visuals, not text. As far as your brain’s concerned, a picture really is worth a thousand words. And when text and pictures work together, we embedded the text in the pictures because your brain works more effectively when the text is within the thing the text refers to, as opposed to in a caption or buried in the text somewhere.

image with no caption

We used redundancy, saying the same thing in different ways and with different media types, and multiple senses, to increase the chance that the content gets coded into more than one area of your brain.

We used concepts and pictures in unexpected ways because your brain is tuned for novelty, and we used pictures and ideas with at least some emotional content, because your brain is tuned to pay attention to the biochemistry of emotions. That which causes you to feel something is more likely to be remembered, even if that feeling is nothing more than a little humor, surprise, or interest.

image with no caption

We used a personalized, conversational style, because your brain is tuned to pay more attention when it believes you’re in a conversation than if it thinks you’re passively listening to a presentation. Your brain does this even when you’re reading.

We included more than 80 activities, because your brain is tuned to learn and remember more when you do things than when you read about things. And we made the exercises challenging-yet-do-able, because that’s what most people prefer.

We used multiple learning styles, because you might prefer step-by-step procedures, while someone else wants to understand the big picture first, and someone else just wants to see an example. But regardless of your own learning preference, everyone benefits from seeing the same content represented in multiple ways.

image with no caption

We include content for both sides of your brain, because the more of your brain you engage, the more likely you are to learn and remember, and the longer you can stay focused. Since working one side of the brain often means giving the other side a chance to rest, you can be more productive at learning for a longer period of time.

image with no caption

And we included stories and exercises that present more than one point of view, because your brain is tuned to learn more deeply when it’s forced to make evaluations and judgments.

We included challenges, with exercises, and by asking questions that don’t always have a straight answer, because your brain is tuned to learn and remember when it has to work at something. Think about it—you can’t get your body in shape just by watching people at the gym. But we did our best to make sure that when you’re working hard, it’s on the right things. That you’re not spending one extra dendrite processing a hard-to-understand example, or parsing difficult, jargon-laden, or overly terse text.

We used people. In stories, examples, pictures, etc., because, well, because you’re a person. And your brain pays more attention to people than it does to things.

image with no caption

Here’s what YOU can do to bend your brain into submission

So, we did our part. The rest is up to you. These tips are a starting point; listen to your brain and figure out what works for you and what doesn’t. Try new things.

image with no caption

cut this out and stick it on your refrigerator.

  1. Slow down. The more you understand, the less you have to memorize.

    Don’t just read. Stop and think. When the book asks you a question, don’t just skip to the answer. Imagine that someone really is asking the question. The more deeply you force your brain to think, the better chance you have of learning and remembering.

  2. Do the exercises. Write your own notes.

    We put them in, but if we did them for you, that would be like having someone else do your workouts for you. And don’t just look at the exercises. Use a pencil. There’s plenty of evidence that physical activity while learning can increase the learning.

  3. Read the “There are No Dumb Questions”

    That means all of them. They’re not optional sidebars—they’re part of the core content! Don’t skip them.

  4. Make this the last thing you read before bed. Or at least the last challenging thing.

    Part of the learning (especially the transfer to long-term memory) happens after you put the book down. Your brain needs time on its own, to do more processing. If you put in something new during that processing time, some of what you just learned will be lost.

  5. Drink water. Lots of it.

    Your brain works best in a nice bath of fluid. Dehydration (which can happen before you ever feel thirsty) decreases cognitive function.

  6. Talk about it. Out loud.

    Speaking activates a different part of the brain. If you’re trying to understand something, or increase your chance of remembering it later, say it out loud. Better still, try to explain it out loud to someone else. You’ll learn more quickly, and you might uncover ideas you hadn’t known were there when you were reading about it.

  7. Listen to your brain.

    Pay attention to whether your brain is getting overloaded. If you find yourself starting to skim the surface or forget what you just read, it’s time for a break. Once you go past a certain point, you won’t learn faster by trying to shove more in, and you might even hurt the process.

  8. Feel something!

    Your brain needs to know that this matters. Get involved with the stories. Make up your own captions for the photos. Groaning over a bad joke is still better than feeling nothing at all.

  9. Create something!

    Apply this to your daily work; use what you are learning to make decisions on your projects. Just do something to get some experience beyond the exercises and activities in this book. All you need is a pencil and a problem to solve...a problem that might benefit from using the tools and techniques you’re studying for the exam.

Read me

This is a learning experience, not a reference book. We deliberately stripped out everything that might get in the way of learning whatever it is we’re working on at that point in the book. And the first time through, you need to begin at the beginning, because the book makes assumptions about what you’ve already seen and learned.

We begin by teaching basic SQL syntax, then SQL database design concepts, and then advanced querying.

While it’s important to create well-designed tables and databases, before you can, you need to understand the syntax of SQL. So we begin by giving you SQL statements that you can actually try yourself. That way you can immediately do something with SQL, and you will begin to get excited about it. Then, a bit later in the book, we show you good table design practices. By then you’ll have a solid grasp of the syntax you need, and can focus on learning the concepts.

We don’t cover every SQL statement, function, or keyword.

While we could have put every single SQL statement, function, and keyword in this book, we thought you’d prefer to have a reasonably liftable book that would teach you the most important statements, functions, and keywords. We give you the ones you need to know, the ones you’ll use 95 percent of the time. And when you’re done with this book, you’ll have the confidence to go look up that function you need to finish off that kick-ass query you just wrote.

We don’t address every flavor of RDBMS.

There’s Standard SQL, MySQL, Oracle, MS SQL Server, PostgreSQL, DB2, and quite a few more RDBMSs out there. If we covered every variation in syntax for every command in the book, this book would have many more pages. We like trees, so we’re focusing on Standard SQL with a nod toward MySQL. All the examples in the book will work with MySQL. And most will work with any of the RDBMSs listed above. Remember that reference book we just suggested you buy? Buy one for the particular RDBMS that you use.

The activities are NOT optional.

The exercises and activities are not add-ons; they’re part of the core content of the book. Some of them are to help with memory, some are for understanding, and some will help you apply what you’ve learned. Don’t skip the exercises. The crossword puzzles are the only thing you don’t have to do, but they’re good for giving your brain a chance to think about the words and terms you’ve been learning in a different context.

The redundancy is intentional and important.

One distinct difference in a Head First book is that we want you to really get it. And we want you to finish the book remembering what you’ve learned. Most reference books don’t have retention and recall as a goal, but this book is about learning, so you’ll see some of the same concepts come up more than once.

The examples are as lean as possible.

Our readers tell us that it’s frustrating to wade through 200 lines of an example looking for the two lines they need to understand. Most examples in this book are shown within the smallest possible context, so that the part you’re trying to learn is clear and simple. Don’t expect all of the examples to be robust, or even complete—they are written specifically for learning, and aren’t always fully-functional.

We’ve placed many of the commands on the Web so you can copy and paste them into your terminal or database software. You’ll find them at

The Brain Power exercises don’t have answers.

For some of them, there is no right answer, and for others, part of the learning experience of the Brain Power activities is for you to decide if and when your answers are right. In some of the Brain Power exercises, you will find hints to point you in the right direction.

The technical review team

image with no caption

Our amazing reviewers:

Huge thanks go to our tech review team. They caught innumerable blatant mistakes, subtle errors, and pathtetic typos. Without them, this book wouldn’t be anywhere near as clean and correct as it is. They did a thorough job of getting the errors out of this book.

Cary Collett put his 15 years of experience working at startups, government labs, and currently in the financial sector to use while reviewing the book, and is looking forward to getting back to enjoying his non-work things like cooking, hiking, reading and terrorizing his dogs.

LuAnn Mazza found time in her busy Illinois professional life as a Software Developer and Analyst, to do some incredibly timely and detailed reviews, we’re happy that she can now spend her spare time enjoying her hobbies including biking, photography, computers, music, and tennis

When Steve Milano isn’t coding in half a dozen different languages at his day job, doing a top-notch review of Head First SQL, or playing punk rock with his band Onion Flavored Rings in unventilated basements throughout the land, he can be found at home with his cats Ralph and Squeak.

“Shelley” Moira Michelle Rheams, MEd, MCP, MCSE teaches and runs the Early Childhood Education Program at Delgado Community College in New Orleans: West Bank Campus. Currently she enjoys putting education courses online to meet the needs of the changing New Orleans community post-Katrina, and we thank her for being able to fit us into her overbooked schedule.

Jamie Henderson is a senior systems architect sporting purple hair and dividing what spare time she has between cello, reading, video games, and watching movies on DVD.

This fantastic team is the reason that the code and exercises in this book will actually do what they are supposed to, and why, when you are finished with this book, you’ll be a confident SQL programmer. Their attention to detail also kept us from being too cute or too patronizing, or even, sometimes, too weird.


My editors:

First of all, I want to thank my editor, Brett McLaughlin, for not one, but two Head First boot camps. Brett was more than an editor—he was a combination sounding board and sherpa. There’s absolutely no way this book would have been written without his guidance, support, and interest. Not only did he “get me” from the very first audition, his appreciation of my sometimes over-the-top humor made this the best book writing experience I’ve ever had. He gave me a whole lot of advice, hints, and more than a little coaching throughout this whole process. Thanks, Brett!

image with no caption

Editor Catherine Nolan has a huge ulcer now, thanks to some incredibly bad luck I had near the end of the editorial process. She’s the reason this book didn’t come out in 2008, and perhaps the reason it exists at all. It was a bit like kitten juggling at the end, and she didn’t drop a single one. I badly needed a schedule, and Catherine is the best scheduler I’ve ever met. And I think I’ve been her biggest challenge so far. Let’s hope her next project goes more smoothly, she’s more than earned it.

image with no caption

The O’Reilly team:

Design Editor Louise Barr has been both a great friend and an amazing graphic designer. Somehow she was able to channel my crazy ideas into impressive art that make the difficult concepts very clear. All the great design is hers, and I have no doubt that at many points in this book you’ll want to thank her too.

But we would have gone to press with a whole lot of errors had it not been for the technical review process, and Sanders Kleinfeld did a great job as production editor, getting this book ready for press. He also went far, far beyond the call of duty, pointing out some conceptual chasms that really needed to be bridged. Thanks, Sanders!

Finally, I want to thank Kathy Sierra and Bert Bates for creating this wonderful series and for the best and most mentally challenging training I’ve ever had at the first Head First boot camp. Without those three days, well, I don’t even want to think about how much harder it would have been to be Head First-y. And Bert’s final editorial comments were painfully accurate, and vastly improved this book.

image with no caption

The best content for your career. Discover unlimited learning on demand for around $1/day.