Our Ironclad Guarantee
You must be satisfied. Try our print books for 30 days or our eBooks for 14 days. If they aren't the best you've ever used, you can return the books or cancel the eBooks for a prompt refund. No questions asked!
The fourth edition of our best-selling MySQL book works better than ever for teaching SQL and database design. We’ve carefully checked and updated every example to provide you the best possible learning experience. Whether you’re a complete beginner or a SQL expert, you’ll appreciate the easy-to-understand explanations, clear examples, and step-by-step instructions for efficiently using SQL to work with relational databases.
Go to our instructor’s site to learn more about this book and its instructor’s materials.
This is a fantastic book! It has more info than books at twice the cost, but it presents that info in a concise, digestible manner. I wish I had a resource like this when I was first starting with MySQL."
In this section, you’ll build a solid foundation by learning the concepts and terms for working with any relational database. In addition, you’ll learn how to use MySQL Workbench to code and run the basic SQL statements for retrieving, adding, updating, and deleting data in a MySQL database. When you’ve completed this section, you’ll be able to continue with any of the other sections in the book.
This section presents advanced SQL skills for retrieving data from a database including features like summary queries, subqueries, data types, and functions. And the chapters in this section are modular, so you can read them in whatever sequence you prefer.
This section shows how to design a database and how to implement that design either by coding SQL statements or by using MySQL Workbench. When you’re done, you’ll be able to design and implement your own databases. In addition, this section shows how to create and use views to simplify data access and improve data security.
This section takes you from being a good MySQL programmer to a great one by teaching you how to create stored programs. Here, you’ll learn how to use create stored procedures that use MySQL’s procedural language to manage transactions and locking. In addition, you’ll learn how to create user-defined functions, triggers, and events.
In this section, you’ll learn a starting set of skills for becoming a database administrator (DBA). First, you’ll learn how to secure, back up, and restore a database that’s running on a local server. Then, you’ll learn how to perform most of the same skills on a MySQL database that’s running remotely on Amazon’s cloud computing platform, AWS.
This book is for anyone who wants to learn how to work with a MySQL database, regardless of prior programming experience. This includes…
Like all our books, this book is designed to make it as easy as possible for you to learn new skills faster and retain them better. Here are a few of those features:
Although you can use this book with most versions of MySQL, we recommend that you use:
This software can be downloaded for free from MySQL’s website, and appendixes A (Windows) and B (macOS) provide complete instructions for installing it.
"A very solid book with plenty of breadth and lots of examples. As a developer with almost 10 years of MySQL experience, I still picked up a lot of new detail on things I thought I knew."
- David Bolton, C/C++/C# Guide, About.com
"I was amazed at how much information was packed into this book. The style of the book made it really easy to read and understand the information.... I learned a lot of new MySQL ideas reading this book, and I will be using it frequently as a reference."
- Paul Turpin Southeastern Inter-Relational Database Users Group
"If you ever want to learn to use MySQL, write SQL queries, create database elements, then this is the book to pick up. Rating: 10 Horseshoes."
- Review by Mohamed Sanaulla, JavaRanch.com
“Overall the book packs in a lot of material and moves very quickly from introductory to more advanced topics. The chapters on queries for example work really well even if you’re not using MySQL — those sections of the book can stand alone as a highly effective introduction to SQL. […] All in all, this is very highly recommended — one of the best MySQL books on the market.”
- Pan Pantziarka, www.techbookreport.com
"I’ve found that many technical books go into laborious details that make them difficult to read, let alone use, but Murach’s MySQL has already proven to be helpful in solving several challenges I’ve encountered on my current MySQL project.... One thing I enjoyed is that it’s well-indexed, and the material itself is concise, with stand-alone, real-world examples.... It’s not theoretical, it’s practical, and presents topics in a friendly style that can be consumed painlessly, a few chapters at a time.”
- Posted at an online bookseller
“Beautifully written, and encyclopedic. Concepts are presented on facing pages with explanation on left and examples/visuals on right. I’m constantly referring to it - and find it easy to use as a quick reference.”
- Posted at an online bookseller
"I found this to be a great introductory book to MySQL.... The examples make it easy to quickly see the differences between the database system you have been working on and how to do the same thing in MySQL. Because of this book, I know that I could easily transition my skills in developing, managing, and designing an Oracle database application to a MySQL database system."
- Eric "Morty" Mortensen, Northeast Ohio Oracle Users Group
"I love this book and refer back to it almost weekly."
- Posted at an online bookseller
View the table of contents for this book in a PDF: Table of Contents (PDF)
Click on any chapter title to display or hide its content.
The hardware components of a client/server system
The software components of a client/server system
Other client/server architectures
How a table is organized
How tables are related
How columns are defined
How to read a database diagram
A brief history of SQL
A comparison of four relational databases
An introduction to the SQL statements
How to work with database objects
How to query a single table
How to join data from two or more tables
How to add, update, and delete data in a table
SQL coding guidelines
The Home page of MySQL Workbench
How to open a database connection
How to view the status of the database server
How to navigate through the database objects
How to view and edit the data for a table
How to view and edit the column definitions for a table
How to enter and execute a SQL statement
How to handle syntax errors
How to open and save SQL scripts
How to enter and execute SQL scripts
How to view the manual
How to look up information
How to start and stop the MySQL Command Line Client
How to use the MySQL Command Line Client to work with a database
The basic syntax of the SELECT statement
SELECT statement examples
How to code column specifications
How to name the columns in a result set using aliases
How to code arithmetic expressions
How to use the CONCAT function to join strings
How to use functions with strings, dates, and numbers
How to test expressions by coding statements without FROM clauses
How to eliminate duplicate rows
How to use the comparison operators
How to use the AND, OR, and NOT logical operators
How to use the IN operator
How to use the BETWEEN operator
How to use the LIKE and REGEXP operators
How to use the IS NULL clause
How to sort by a column name
How to sort by an alias, expression, or column number
How to limit the number of rows
How to return a range of rows
How to code an inner join
How to use table aliases
How to join to a table in another database
How to use compound join conditions
How to use a self-join
How to join more than two tables
How to use the implicit inner join syntax
How to code an outer join
Outer join examples
How to join tables with the USING keyword
How to join tables with the NATURAL keyword
How to use cross joins
How to code a union
A union that combines result sets from different tables
A union that combines result sets from the same tables
A union that simulates a full outer join
How to create the tables for this book
How to create a copy of a table
How to insert a single row
How to insert multiple rows
How to insert default values and null values
How to use a subquery in an INSERT statement
How to update rows
How to use a subquery in an UPDATE statement
How to delete rows
How to use a subquery in a DELETE statement
How to code aggregate functions
Queries that use aggregate functions
How to code the GROUP BY and HAVING clauses
Queries that use the GROUP BY and HAVING clauses
How the HAVING clause compares to the WHERE clause
How to code compound search conditions
How to use the WITH ROLLUP operator
How to use the GROUPING function
How the aggregate window functions work
How to use frames
How to use named windows
Where to code subqueries
When to use subqueries
How to use the IN operator
How to use the comparison operators
How to use the ALL keyword
How to use the ANY and SOME keywords
How to code correlated subqueries
How to use the EXISTS operator
How to code subqueries in the HAVING clause
How to code subqueries in the SELECT clause
How to code subqueries in the FROM clause
A complex query that uses subqueries
A procedure for building complex queries
How to code a CTE
How to code a recursive CTE
Overview
The character types
The integer types
The fixed-point and floating-point types
The date and time types
The ENUM and SET types
The binary types
The large object types
How implicit data conversion works
How to convert data using the CAST and CONVERT functions
How to convert data using the FORMAT and CHAR functions
A summary of the string functions
Examples that use string functions
How to sort by a string column that contains numbers
How to parse a string
How to use the numeric functions
How to search for floating-point numbers
How to get the current date and time
How to parse dates and times with date/time functions
How to parse dates and times with the EXTRACT function
How to format dates and times
How to perform calculations on dates and times
How to search for a date
How to search for a time
How to use the CASE function
How to use the IF, IFNULL, and COALESCE functions
How to use the regular expression functions
How to use the ranking functions
How to use the analytic functions
The basic steps for designing a data structure
How to identify the data elements
How to subdivide the data elements
How to identify the tables and assign columns
How to identify the primary and foreign keys
How to enforce the relationships between tables
How normalization works
How to identify the columns to be indexed
The seven normal forms
How to apply the first normal form
How to apply the second normal form
How to apply the third normal form
When and how to denormalize a data structure
How to open an existing EER model
How to create a new EER model
How to work with an EER model
How to work with an EER diagram
How to create and drop a database
How to select a database
How to create a table
How to code a primary key constraint
How to code a foreign key constraint
How to alter the columns of a table
How to alter the constraints of a table
How to rename, truncate, and drop a table
How to create an index
How to drop an index
How to work with the columns of a table
How to work with the indexes of a table
How to work with the foreign keys of a table
An introduction to character sets and collations
How to view character sets and collations
How to specify a character set and a collation
An introduction to storage engines
How to view storage engines
How to specify a storage engine
How views work
Benefits of using views
How to create a view
How to create an updatable view
How to use the WITH CHECK OPTION clause
How to insert or delete rows through a view
How to alter or drop a view
Four types of stored programs
A script that creates and calls a stored procedure
A summary of statements for coding stored programs
How to display data
How to declare and set variables
How to code IF statements
How to code CASE statements
How to code loops
How to use a cursor
How to declare a condition handler
How to use a condition handler
How to use multiple condition handlers
How to commit and rollback transactions
How to work with save points
How concurrency and locking are related
The four concurrency problems that locks can prevent
How to set the transaction isolation level
How to lock selected rows
How to prevent deadlocks
How to create and call a stored procedure
How to code input and output parameters
How to set a default value for a parameter
How to validate parameters and raise errors
A stored procedure that inserts a row
How to work with user variables
How to work with prepared statements
How to drop a stored procedure
How to create and call a function
How to use function characteristics
A function that calculates balance due
How to drop a function
How to view and edit stored routines
How to create stored routines
How to drop stored routines
How to create a BEFORE trigger
How to use a trigger to enforce data consistency
How to create an AFTER trigger
How to view or drop triggers
How to turn the event scheduler on or off
How to create an event
How to view, alter, or drop events
Database administrator responsibilities
Types of database files
Types of log files
How to view the server status
How to view and kill processes
How to view the status variables
How to view the system variables
How to set system variables using MySQL Workbench
How to set system variables using a text editor
How to set system variables using the SET statement
How to enable and disable logging
How to configure logging
How to view text-based logs
How to manage logs
An introduction to SQL statements for user accounts
A summary of privileges
The four privilege levels
The grant tables in the mysql database
How to create, rename, and drop users
How to specify user account names
How to grant privileges
How to view privileges
How to revoke privileges
How to change passwords
A script that creates users
How to create, manage, and drop roles
A script that creates users and roles
How to work with users and privileges
How to connect as a user for testing
Strategies for backing up and restoring databases
How to use Workbench to create a full backup
How to use Workbench to restore a full backup
How to execute statements in the binary log
How to export data to a file
How to import data from a file
The AWS Management Console
The Amazon RDS Databases page
How to create a MySQL RDS instance
How to modify an RDS instance so it’s publicly accessible
How to add a firewall rule for your IP address
How to connect to an RDS instance
How to run scripts and SQL statements against an RDS database
How to work with the built-in backup
How to create a backup plan
How to work with snapshots
How to restore a database instance
How to check the AWS Billing Dashboard
How to delete an RDS database
How to install MySQL Community Server
How to start and stop the MySQL sever
How to install MySQL Workbench
How to download the files for this book
How to create the databases for this book
How to restore the databases
How to install MySQL Community Server
How to start and stop the MySQL sever
How to install MySQL Workbench
How to download the files for this book
How to create the databases for this book
How to restore the databases
See for yourself why this book has been the go-to MySQL resource for developers ever since the 1st Edition was published in 2012.
This appendix shows how to set up a Windows computer for this book, including instructions for installing the required software and downloading the files for the book examples and exercises. When you’re done, you’ll be able to work through the examples and exercises presented in this book.
Download Now
This appendix shows how to set up a macOS computer for this book, including instructions for installing the required software and downloading the files for the book examples and exercises. When you’re done, you’ll be able to work through the examples and exercises presented in this book.
Download Now
This chapter shows you how to use SQL SELECT statements to retrieve data from a single table. Our hope is that this will give you a better idea of how much there is to learn about SQL querying...and how well our MySQL book works.
Download Now
This download includes:
On this page, we’ll be posting answers to the questions that come up most often about this book. So if you have any questions that you haven’t found answered here at our site, please email us. Thanks!
There are no book corrections that we know of at this time. But if you find any, please email us, and we’ll post any corrections that affect the technical accuracy of the book here. Thank you!
For orders and customer service:
1-800-221-5528
Weekdays, 8 to 4 Pacific Time
If you're a college instructor who would like to consider a book for a course, please visit our website for instructors to learn how to get a complimentary review copy and the full set of instructional materials.