My Cart (0)

Customer Service 1-800-221-5528

Murach’s SQL Server 2019 for Developers

by Bryan Syverson and Joel Murach
19 chapters, 674 pages, 291 illustrations
Published April 2020
ISBN 978-1-943872-57-2
Print: $59.50
eBook: $54.50
Print + eBook: $72.00

When we published the first edition of this book, we heard from plenty of people who thought it was a great way to learn SQL Server from scratch. But we also heard from a lot of experienced developers who read it and were amazed to discover how much they didn’t know about SQL. That’s why we’ve dubbed this book "the SQL book that most developers don’t even know they need."

College Instructors

Go to our instructor’s site to learn more about this book and its instructor’s materials.

Although I have used SQL Server on a daily basis for over 15 years, I was amazed at the number of new things that I learned while reading this book. I used a couple of the ideas to create a noticeable improvement in response time for one of my client/server projects."

Brian Mishler, Orlando .NET User Group

  • About this Book
  • Table of Contents
  • FREE Downloads
  • Book FAQs
  • Corrections
  • Reviews

What you'll learn in this book

Section 1: An introduction to SQL

In this section, you’ll learn the concepts and terms you need for working with any relational database. You’ll also learn how to use Microsoft SQL Server 2019 and the Management Studio to run SQL statements on your own computer.

Section 2: The essential SQL skills

In this section, you’ll learn all the skills for retrieving data from a database and for adding, updating, and deleting that data. These skills move from the simple to the complex so you won’t have any trouble if you’re a SQL novice. And they present skills like using outer joins, summary queries, and subqueries that will raise your SQL expertise if you already have SQL experience.

Section 3: Database design and implementation

In this section, you’ll learn how to design a database and how to implement that design by using either SQL statements or the Management Studio. When you’re done, you’ll be able to design and implement your own databases. But even if you’re never called upon to do that, this section will give you the perspective that will make you a better SQL programmer.

Section 4: Advanced SQL skills

In this section, you’ll learn the skills for working with database features like views, scripts, stored procedures, functions, triggers, cursors, and transactions. You’ll also learn how to manage database security, and you’ll learn how to use the features for working with XML and BLOB data. These are the features that give a database management system much of its power. 

Who this book is for

Application developers

I think it’s fair to say that most developers don’t know enough about SQL and the database management system they’re using. As one customer put it, "I know just enough about SQL Server to be a little bit dangerous!"

That’s why developers often code SQL statements that don’t perform as efficiently as they ought to. That’s why they aren’t able to code some of the queries that they need for their applications. And that’s why they don’t take advantage of all the features that SQL Server has to offer.

That’s also why this book should be required reading for every application programmer who uses SQL Server.

Anyone who wants to become a database administrator

This book is also the right first book for anyone who wants to become a database administrator. Although this book doesn’t present all of the skills that are needed by a DBA, it will get you started. Once you’ve finished it, you’ll be prepared for more advanced books on the subject.

Anyone who wants to learn standard SQL

SQL is a standard language for accessing database data. So most of the SQL code in this book will work with any database management system. As a result, once you use this book to learn how to use SQL to work with a SQL Server database, you can transfer most of what you have learned to another DBMS such as Oracle, DB2, or MySQL.

What the prerequisites are

There aren't any.

Although you will progress through this book more quickly if you have some development experience, everything you need to know about databases and SQL is presented in this book.

What software you need

Operating system

  • Windows 10 or later

For all chapters

To work with SQL Server as shown in this book, you can download all the software you need from Microsoft’s website for free. That includes:

  • SQL Server 2019 Express
  • SQL Server Management Studio

In appendix A in the book, you’ll find complete instructions for installing these items on your computer. And in chapter 2, you’ll learn how to use them.

For chapter 19

To use C# or Visual Basic to work with BLOBs as shown in chapter 19, you can use:

  • Visual Studio Community

This is available from Microsoft’s website for free, and appendix A shows how to install it.

What people say about this book

"Looking to get started with SQL Server? This is a fantastic place to start. Looking for a solid reference as you polish your SQL? Grab a copy."
--Stephen Wynkoop, SQL Server Worldwide Users Group

"The Perfect Book for Application Programmers: If you’re new to using SQL Server in your applications, this book will save you a lot of time. It teaches you about SQL, database design, a lot about admin (which many developers have to do; not everywhere has dedicated DBAs), and the advanced SQL is excellent. Highly recommended."
--David Bolton, Software Developer/Technical Writer and Reviewer

"Although I have used SQL Server on a daily basis for over 15 years, I was amazed at the number of new things that I learned while reading this book. I used a couple of the ideas to create a noticeable improvement in response time for one of my client/server projects."
--Brian Mishler, Orlando .NET User Group

"The most positive feature of the book is the simple informative writing. Wow! I think a lot of thought went into this book before they ever wrote a word."
--Michael Robbins, Denver Visual Studio .NET Users Group

"There are areas where I am an expert and other areas that I have picked up enough to just be ‘a little bit dangerous.’ SQL Server was one of the latter areas, and I wanted to round out my knowledge, and this book proved to be the perfect tool…."
--Posted at an online bookseller

"I have recommended this book and others in the series to developers and architects as an outstanding reference for application and database development."
--Eric Nothiesen, Enterprise Developers Guild

"This book exceeds my expectations for books that teach database and software development. A wonderful book for both learning and mastering SQL Server."
--David Haertzen; posted at Infogoal.com

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.

Section 1 An introduction to SQL

Chapter 1 An introduction to relational databases and SQL

An introduction to client/server systems

The hardware components of a client/server system

The software components of a client/server system

Other client/server system architectures

An introduction to the relational database model

How a database table is organized

How the tables in a relational database are related

How the columns in a table are defined

How relational databases compare to other data models

An introduction to SQL and SQL-based systems

A brief history of SQL

A comparison of Oracle, DB2, MySQL, and SQL Server

The Transact-SQL statements

An introduction to the SQL statements

Typical statements for working 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

How to work with other database objects

How to work with views

How to work with stored procedures, triggers, and user-defined functions

How to use SQL from an application program

Common data access models

How to use ADO.NET from a .NET application

Visual Basic code that retrieves data from a SQL Server database

C# code that retrieves data from a SQL Server database

Chapter 2 How to use the Management Studio

An introduction to SQL Server 2019

A summary of the SQL Server 2019 tools

How to start and stop the database engine

How to enable remote connections

An introduction to the Management Studio

How to connect to a database server

How to navigate through the database objects

How to manage the database files

How to attach a database

How to detach a database

How to back up a database

How to restore a database

How to set the compatibility level for a database

How to view and modify the database

How to create database diagrams

How to view the column definitions of a table

How to modify the column definitions

How to view the data of a table

How to modify the data of a table

How to work with queries

How to enter and execute a query

How to handle syntax errors

How to open and save queries

An introduction to the Query Designer

How to view the documentation for SQL Server

How to display SQL Server documentation 

How to look up information in the documentation

Section 2 The essential SQL skills

Chapter 3 How to retrieve data from a single table

An introduction to the SELECT statement

The basic syntax of the SELECT statement

SELECT statement examples

How to code the SELECT clause

How to code column specifications

How to name the columns in a result set

How to code string expressions

How to code arithmetic expressions

How to use functions

How to use the DISTINCT keyword to eliminate duplicate rows

How to use the TOP clause to return a subset of selected rows

How to code the WHERE clause

How to use 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 operator

How to use the IS NULL clause

How to code the ORDER BY clause

How to sort a result set by a column name

How to sort a result set by an alias, an expression, or a column number

How to retrieve a range of selected rows

Chapter 4 How to retrieve data from two or more tables

How to work with inner joins

How to code an inner join

When and how to use correlation names

How to work with tables from different databases

How to use compound join conditions

How to use a self-join

Inner joins that join more than two tables

How to use the implicit inner join syntax

How to work with outer joins

How to code an outer join

Outer join examples

Outer joins that join more than two tables

Other skills for working with joins

How to combine inner and outer joins

How to use cross joins

How to work with unions

The syntax of a union

Unions that combine data from different tables

Unions that combine data from the same table

How to use the EXCEPT and INTERSECT operators

Chapter 5 How to code summary queries

How to work with aggregate functions

How to code aggregate functions

Queries that use aggregate functions

How to group and summarize data

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 complex search conditions

How to summarize data using SQL Server extensions

How to use the ROLLUP operator

How to use the CUBE operator

How to use the GROUPING SETS operator

How to use the OVER clause

Chapter 6 How to code subqueries

An introduction to subqueries

How to use subqueries

How subqueries compare to joins

How to code subqueries in search conditions

How to use subqueries with the IN operator

How to compare the result of a subquery with an expression

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

Other ways to use subqueries

How to code subqueries in the FROM clause

How to code subqueries in the SELECT clause

Guidelines for working with complex queries

A complex query that uses subqueries

A procedure for building complex queries

How to work with common table expressions

How to code a CTE

How to code a recursive CTE

Chapter 7 How to insert, update, and delete data

How to create test tables

How to use the SELECT INTO statement

How to use a copy of the database

How to insert new rows

How to insert a single row

How to insert multiple rows

How to insert default values and null values

How to insert rows selected from another table

How to modify existing rows

How to perform a basic update operation

How to use subqueries in an update operation

How to use joins in an update operation

How to delete existing rows

How to perform a basic delete operation

How to use subqueries and joins in a delete operation

How to merge rows

How to perform a basic merge operation

How to code more complex merge operations

Chapter 8 How to work with data types

A review of the SQL data types

Data type overview

The numeric data types

The string data types

The date/time data types

The large value data types

How to convert data

How data conversion works

How to convert data using the CAST function

How to convert data using the CONVERT function

How to use the TRY_CONVERT function

How to use other data conversion functions

Chapter 9 How to use functions

How to work with string data

A summary of the string functions

How to solve common problems that occur with string data

How to work with numeric data

A summary of the numeric functions

How to solve common problems that occur with numeric data

How to work with date/time data

A summary of the date/time functions

How to parse dates and times

How to perform operations on dates and times

How to perform a date search

How to perform a time search

Other functions you should know about

How to use the CASE function

How to use the IIF and CHOOSE functions

How to use the COALESCE and ISNULL functions

How to use the GROUPING function

How to use the ranking functions

How to use the analytic functions

Section 3 Database design and implementation

Chapter 10 How to design a database

How to design a data structure

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

How to normalize a data structure

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

Chapter 11 How to create a database and its tables with SQL Statements

An introduction to DDL

The SQL statements for data definition

Rules for coding object names

How to create databases, tables, and indexes

How to create a database

How to create a table

How to create an index

How to use snippets to create database objects

How to use constraints

An introduction to constraints

How to use check constraints

How to use foreign key constraints

How to change databases and tables

How to delete an index, table, or database

How to alter a table

How to work with sequences

How to create a sequence

How to use a sequence

How to delete a sequence

How to alter a sequence

How to work with collations

An introduction to encodings

An introduction to collations

How to view collations

How to specify a collation 

The script used to create the AP database

How the script works

How the DDL statements work

Chapter 12 How to create a database and its tables with the Management Studio

How to work with a database

How to create a database

How to delete a database

How to work with tables

How to create, modify, or delete a table

How to work with foreign key relationships

How to work with indexes and keys

How to work with check constraints

How to examine table dependencies

How to generate scripts

How to generate scripts for databases and tables

How to generate a change script when you modify a table

Section 4 Advanced SQL skills

Chapter 13 How to work with views

An introduction to views

How views work

Benefits of using views

How to create and manage views

How to create a view

Examples that create views

How to create an updatable view

How to delete or modify a view

How to use views

How to update rows through a view

How to insert rows through a view

How to delete rows through a view

How to use the catalog views

How to use the View Designer

How to create or modify a view

How to delete a view

Chapter 14 How to code scripts

An introduction to scripts

How to work with scripts

The Transact-SQL statements for script processing

How to work with variables and temporary tables

How to work with scalar variables

How to work with table variables

How to work with temporary tables

A comparison of the five types of Transact-SQL table objects

How to control the execution of a script

How to perform conditional processing

How to test for the existence of a database object

How to perform repetitive processing

How to use a cursor

How to handle errors

How to use surround-with snippets

Advanced scripting techniques

How to use the system functions

How to change the session settings

How to use dynamic SQL

A script that summarizes the structure of a database

How to use the SQLCMD utility

Chapter 15 How to code stored procedures, functions, and triggers

Procedural programming options in Transact-SQL

Scripts

Stored procedures, user-defined functions, and triggers

How to code stored procedures

An introduction to stored procedures

How to create a stored procedure

How to declare and work with parameters

How to call procedures with parameters

How to work with return values

How to validate data and raise errors

A stored procedure that manages insert operations

How to pass a table as a parameter

How to delete or change a stored procedure

How to work with system stored procedures

How to code user-defined functions

An introduction to user-defined functions

How to create a scalar-valued function

How to create a simple table-valued function

How to create a multi-statement table-valued function

How to delete or change a function

How to code triggers

How to create a trigger

How to use AFTER triggers

How to use INSTEAD OF triggers

How to use triggers to enforce data consistency

How to use triggers to work with DDL statements

How to delete or change a trigger

Chapter 16 How to manage transactions and locking

How to work with transactions

How transactions maintain data integrity

SQL statements for handling transactions

How to work with nested transactions

How to work with save points

An introduction to concurrency and locking

How concurrency and locking are related

The four concurrency problems that locks can prevent

How to set the transaction isolation level

How SQL Server manages locking

Lockable resources and lock escalation

Lock modes and lock promotion

Lock mode compatibility

How to prevent deadlocks

Two transactions that deadlock

Coding techniques that prevent deadlocks

Chapter 17 How to manage database security

How to work with SQL Server login IDs

An introduction to SQL Server security

How to change the authentication mode

How to create login IDs

How to delete or change login IDs or passwords

How to work with database users

How to work with schemas

How to work with permissions

How to grant or revoke object permissions

The SQL Server object permissions

How to grant or revoke schema permissions

How to grant or revoke database permissions

How to grant or revoke server permissions

How to work with roles

How to work with the fixed server roles

How to work with user-defined server roles

How to display information about server roles and role members

How to work with the fixed database roles

How to work with user-defined database roles

How to display information about database roles and role members

How to deny permissions granted by role membership

How to work with application roles

How to manage security using the Management Studio

How to work with login IDs

How to work with the server roles for a login ID

How to assign database access and roles by login ID

How to assign user permissions to database objects

How to work with database permissions

Chapter 18 How to work with XML

An introduction to XML

An XML document

An XML schema

How to work with the xml data type

How to store data in the xml data type

How to work with the XML Editor

How to use the methods of the xml data type

An example that parses the xml data type

Another example that parses the xml data type

How to work with XML schemas

How to add an XML schema to a database

How to use an XML schema to validate the xml data type

How to view an XML schema

How to drop an XML schema

Two more skills for working with XML

How to use the FOR XML clause of the SELECT statement

How to use the OPENXML statement

Chapter 19 How to work with BLOBs

An introduction to BLOBs

Pros and cons of storing BLOBs in files

Pros and cons of storing BLOBs in a column

When to use FILESTREAM storage for BLOBs

How to use SQL to work with a varbinary(max) column

How to create a table with a varbinary(max) column

How to insert, update, and delete binary data

How to retrieve binary data

A .NET application that uses a varbinary(max) column

The user interface for the application

The event handlers for the form

A data access class that reads and writes binary data

How to use FILESTREAM storage

How to enable FILESTREAM storage on the server

How to create a database with FILESTREAM storage

How to create a table with a FILESTREAM column

How to insert, update, and delete FILESTREAM data

How to retrieve FILESTREAM data

A data access class that uses FILESTREAM storage

Appendix

Appendix A How to set up your computer for this book

Three editions of SQL Server 2019 Express

The tool for working with all editions of SQL Server

How to install SQL Server 2019 Express 

How to install SQL Server Management Studio  

How to install the files for this book

How to create the databases for this book

How to restore the databases for this book

How to install Visual Studio 2019 Community

Sample chapters

Chapter 3: How to retrieve data from a single table

After two introductory chapters (not included in this download), chapter 3 shows 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 well our book works and how much there is to learn about SQL.

Chapter 3 PDF (877Kb) Download Now

Book examples and exercises

This download includes:

  • The databases that are used in the book examples and chapter exercises
  • The scripts for every SQL example presented in the book
  • C# and Visual Basic projects for the application presented in chapter 19
  • Solutions to the exercises in the book so you can check your work

Appendix A in the book describes how to install and use these files.

Exe file for Windows (2.12Mb) Download Now

Zip file for any system (2.09Mb) Download Now

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!

To view the corrections for this book in a PDF, just click on this link: View the corrections

Then, if you find any other errors, please email us so we can correct them in the next printing of the book. Thank you!

Nadir Doctor

Saturday, 19 June 2021

This book is a great pleasure to read and explains each concept well with a helpful example. Whether you're using Microsoft SQL Server on Windows, Linux or Azure, it is a very informative resource.

One topic which isn't included is PolyBase which allows Microsoft SQL Server to query data from multiple relational and NoSQL database flavors without install of any additional software components. Hope it can be discussed in a newer edition of this book.

To leave a review, please log in to your account.     Log In Here

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!

Contact Murach Books

For orders and customer service:

1-800-221-5528

Weekdays, 8 to 4 Pacific Time

College Instructors

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.