The SQL Developer's Reading List for 2026 (10 Books That Matter)

 SQL (Structured Query Language) is one of the most essential skills of a programmer. I would rate this skill similar to UNIX if you are a professional programmer because it doesn't matter whether you are JavaC++, or a .NET developer, you are bound to write SQL queries. Since a database is an integral part of any modern Java or Web application, the Interviewer always preferred candidates with excellent SQL skills. Now, the big question comes, how a programmer can learn SQL? Does just knowing how to query a table is enough? If you remember, insert, update, delete, and select, then are you a competent SQL programmer?

What about indexes, query plans, triggers, views, stored procedures, and other advanced SQL concepts? What about writing complex queries involving joinssubqueries, derived tables, etc.? Well, all those are very important to be a competent full-stack developer.

I started learning SQL from my college days, and I am hooked to it because of its simplicity and power. I also found writing SQL queries exciting and challenging, similar to solving programming puzzles, but my SQL skills don't improve a lot for a long time, Why? Because I was satisfied with the limited knowledge of insert, update, delete, and select.

 I knew how to join multiple tables, and I thought I knew the whole SQL. Well, I was wrong, and my misconception hit severely when I started working on a project involving Murex, which has a vast database in Sybase with hundreds of tables, stored procedures, and other database objects.

At that time, I started learning advanced SQL, particularly Sybase and SQL Server. My quest also results in lots of good books to learn SQL, database design, normalization, and improve your SQL query skills, and this article is a collection of such books.

Though I have a separate collection of database-specific books, like books, to learn SQL Server, Sybase, or Oracle, I am only sharing books to learn generic and standard SQL, which applies to all relational databases, also known as ANSI SQL in this article. I'll write separate articles about SQL Server and Oracle books.

If you want to learn quickly, you can also combine these books with some of the comprehensive and engaging online SQL courses like The Complete SQL Bootcamp by Jose Pottila on Udemy. It's an incredible course full of useful information and practical tips to learn and master SQL very quickly.





10 Best Books to learn SQL and Database for Beginners in 2026

It doesn't matter whether you are a beginner programmer, just started your software development career or an experienced software professional with years of experience, you will find some of the books refreshing. You will learn a lot in terms of SQL concepts, database design, and SQL query skills.

So, what are we waiting for? Let's start with this list.

1. Head First SQL

This is the best book for any SQL beginners. I like the Head First style for their innovative teaching with diagrams, fireside chats, puzzles, explanations, and highlight the most important concepts.

I have been recommending this book to beginner programmers for years, and they always thank me for that. You can use this book for theory, for example, and understanding fundamental concepts of SQL, like Joins, Subqueries, Normalization, and a little bit of database design.

If you are an active learner like me then you can also combine this book with The Complete SQL Bootcamp: Go From Zero To Hero course by Jose Portilla on Udemy which is full of hands-on SQL exercises and lectures. It's also very affordable and you can buy this course for just %9.9 on Udemy sales which happen every now and then.

The Best book to learn SQL


2. SQL All-in-One For Dummies

The third edition of "SQL All-in-One For Dummies" by Allen G. Taylor stands as a comprehensive resource with a stellar rating of 4.6 out of 5 from 920 ratings. Geared towards a wide audience, from database administrators to application programmers, this book provides clear and concise explanations of the SQL language and its diverse applications within relational databases. 

In a rapidly evolving landscape where businesses are transitioning from spreadsheets to SQL databases like Access, Microsoft SQL Server, Oracle databases, MySQL, and PostgreSQL, this edition serves as a one-stop shop for anyone involved in designing, developing, and maintaining these databases. 

The book addresses the challenges that may arise in SQL database creation and management, keeps readers informed about the latest SQL updates and capabilities, and serves as a valuable reference for querying SQL-based databases in the SQL language.

 Emphasizing the significance of relational databases in today's organizations, "SQL All-In-One For Dummies" offers timely and detailed insights for those seeking a robust understanding of SQL databases and queries. 

A newer edition is also coming which means the book remains up-to-date, reflecting the dynamic nature of SQL technology. If you need active learning, you can also combine this book with the Complete Intro to SQL & PostgreSQL by Brian Holt  course , its a nice SQL course for beginners. "Learning SQL: Generate, Manipulate, and Retrieve Data, 3rd Edition" by Alan Beaulieu has earned a commendable rating of 4.6 out of 5 from 465 ratings, making it a well-received resource in the field of SQL education. 

In this latest edition, Beaulieu guides developers through the essentials of SQL, providing a solid foundation for writing database applications, executing administrative tasks, and generating reports. As organizations grapple with the influx of data, SQL emerges as a vital tool, and this guide equips developers to harness its power effectively. 

The book covers SQL basics and delves into advanced features, including new chapters on SQL and big data, analytic functions, and working with very large databases. Each chapter is designed as a self-contained lesson, featuring numerous illustrations and annotated examples to facilitate understanding. The inclusion of exercises enables readers to practice and reinforce the skills they acquire. 

The book also emphasizes the importance of SQL knowledge for interacting with data, making it an essential resource for those looking to leverage the language's power and flexibility. 

Whether you are a beginner or seeking to enhance your SQL proficiency, "Learning SQL" provides a comprehensive and practical guide to navigating SQL concepts and techniques, and if you need a course, you can also combine this with the SQL for Newbs: Data Analysis for Beginners course on Udemy. 



4. SQL Antipatterns

To be successful, it's not just essential to do the right things, but it is also necessary to avoid mistakes that can hamper your success. This universal truth is also applicable to SQL. It's just not enough to know all the best practices in the SQL world and keep repeating silly mistakes like using SELECT * query or having duplicate columns.

This book will help you to avoid the common mistake every SQL developer makes. If you don't know about SQL mistakes, it's also an excellent book to learn about them. Again, one of the must-read SQL books for programmers who are serious about improving their SQL and database design skills.

If you are learning SQL for data science then I also suggest you check out this SQL for Data Science course on Udemy which will teach you how to understand and write large queries which you often need while working with real-world data.

Best book to learn SQL design and schema




5. SQL Puzzles and Answers by Joe Celko

I didn't know about this book until last year, but ever since I come to know about it, I just fall in love. It's a great book to improve your SQL query skills. I always like to solve SQL query-based problems because they are also an excellent exercise for your mind, and this book is full of such issues.

The book is really advanced, and some of the problems are tough even for seasoned SQL programmers. Even though you will solve the problem, a good chance is that you will also learn a new way to answer the same question by reading explanations.

In short, one of the best SQL books for experienced programmers who want to improve their SQL query skills.

Good book to learn SQL Queries





6 . Beginning SQL queries

This is another beginner book, probably for the absolute beginner who doesn't know how to write SQL queries. As the title suggests, this book will help you not only to write SQL queries but also to write correct SQL queries and help you to become a professional SQL developer. Not a must-read, but a good SQL book for beginners.

Beginners book to learn SQL queries




7. SQL Performance Explained by Markus Winand

If I say that whatever I know about SQL indexes is due to this book, then it won't be wrong. I had a lot of misconceptions about database indices and didn't know how their order can affect performance.

I didn't even know what is table scan, index scan is, and index seeks, and, in general, how does index works in SQL in detail until to learn how indexing work and how they affect query performance.

This is an excellent book from Markus Winand, and I thank him a lot for explaining such an essential topic in great detail. One of the must-read SQL books for every programmer.

Best book to learn SQL index and performance



8. SQL Cookbook: Query Solutions and Techniques for Database Developers

The SQL Cookbook: Query Solutions and Techniques for Database Developers (Cookbooks (O’Reilly)) 1st Edition by Anthony Molinaro is another fantastic book for experienced programmers and anyone who codes SQL for a living.

I really like what this book says about SQL, that “SQL is a deceptively simple language,” and many programmers and DBAs don’t go far beyond the simple CRUD statements like SELECT, INSERT, UPDATE, etc. DELETE. Still, it is so much you can do with SQL; this is where SQL Cookbook helps you.

It will teach you how to take your SQL skills to the next level by using author Anthony Molinari’s favorite SQL techniques and features.

You will learn about advanced SQL concepts like window functions, powerful, database-specific features such as SQL Server’s PIVOT and UNPIVOT operators, the Oracle’s MODEL clause, and PostgreSQL’s handy GENERATE_SERIES function.

best SQL book for beginners


9. SQL Performance Tuning by Peter Gulutzan and Trudy Pelzer

Knowing to write SQL queries is one thing and writing SQL queries that are fast and gives high-performance is another skill. This is also the skill that separates beginners from experienced programmers.

This book provides many practical tips for improving SQL performance on all of the major database systems.

It does not teach you the SQL syntax and how to use a particular SQL command but instead helps you understand the differences between the major DBBS, including the big three, Oracle, SQL Server, and MySQL.

In this book, the author presents several practical tips to improve SQL performance across databases. This book will be a great asset if you deal with different database implementations, whether you are a programmer, consultant, DBA, or technical end-user.

best book to learn SQL performance Tuning

The tips given in this book can help you to decide which tuning techniques will work for which database. One trick that gives better performance in SQL Server doesn’t need to give you the best performance in Oracle.


10. SQL in Nutshell

The SQL in a Nutshell, 3rd edition by Kevin Kline, Daniel Kline, and Brand Hunt, is an essential reference for programmers, analysts, and database administrators (DBAs).

This book offers a great cross-platform syntax reference for SQL. It probably is not the easiest reference to find the exact syntax for one particular DBMS, but it is absolutely the best reference for those who work with multiple DBMSs.

best SQL books for beginners and experienced programmers

By the way, If you are learning SQL to become a Data Scientists, then I also recommend you check out the SQL for Data Science Course offered by UCDAVIS University of California on Coursera.


That's all in this list about 10 Best books to learn and master SQL. To be honest, it's easy to learn SQL, but it's tough to master it; that's why the last two books SQL Performance Explained and SQL Anti-Patterns are significant for both SQL developer and Java/C# developers who deal with databases and SQL.



Other Books and Courses Recommendations for Programmers
  • 10 Algorithm books for Programmers and Software engineers (see here)
  • 7 Free Courses to learn SQL and Database for Beginners (courses)
  • 5 Books to improve your Coding Skill (see here)
  • 10 Courses to learn Data Structure and algorithms (classes)
  • 10 Books Every Programmer Should Read (see here)
  • My Favorite courses to learn MySQL database (courses)
  • 10 Tips and 101 Problems to Crack Coding Interviews (tips)
  • 5 Books to learn Java 8 and Functional Programming (see here)
  • My favorite free courses to learn Java in-depth (courses)
  • 5 Books to prepare Programming/Coding Interviews (see here)
  • 10 Courses to Crack Programming Job Interviews (courses)
  • 5 Books to learn Concurrent programming and multi-threading (see here)
  • Top 5 Courses to learn Java Concurrency in-depth (courses)
  • 6 Books to learn Hibernate framework for Java developers (see here)
  • 5 books to learn Spring framework for Java developers (see here)
  • 5 of the Best courses to learn Spring Boot (courses)

Thanks for reading this article so far. If you like these best SQL and Database books, then please share them with your friends and colleagues. If you have any questions or feedback, then please drop a note.

P.S. - Along with books, online training courses on platforms like Udemy, Coursera, and Pluralsight are also useful to learn fundamentals and build skills. If you need some excellent classes to learn SQL and Database, I suggest you check this list of Top 5 SQL Courses for Programmers on HackerNoon to level up your SQL skill and learn new tricks to do well on your day-to-day job.

    Difference between WHERE vs HAVING Clause in SQL

    Disclosure: This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided in this article.

    Difference between WHERE and HAVING Clause in SQL

    Hello friends, SQL questions are quite common on programming interviews and one of the popular SQL question is "WHERE vs HAVING clause"? When it comes to filtering records in SQL query, there are two main options, either by using WHERE clause or by using HAVING clause.

    While both WHERE and HAVING are used for filtering rows, condition in WHERE clause is applied before grouping of data and condition on HAVING is applied after grouping

    I mean, the main difference between them is that you can use WHERE if you want to filter data before grouping, I mean before you group records using GROUP BY clause and use HAVING when you want to filter groups.

    This distinction is made by Query Engine on most of popular database like MySQL, Microsoft SQL Server, Oracle, and PostgreSQL

    For example,

    
    SELECT *
    FROM BOOK
    WHERE author="Joshua Bloch"
    
    
    

    will only show books where author is "Joshua Bloch", here we have used WHERE clause because there is no grouping.

    In case, we need grouping like authors with number of books we can use group by and having clause together and it will print only authors which have more than one book.

    
    
    SELECT author, count(*) as NumberOfBooks
    FROM BOOK
    GROUP BY author
    HAVING NumberOfBooks > 1
    
    
    

    You can also use WHERE and HAVING clause together in one query and in that case WHERE clause will filter before grouping and HAVING clause will filter after grouping as shown in following example:

    
    
    SELECT author, count(*) as NumberOfBooks
    FROM BOOK
    WHERE title like '%SQL%'
    GROUP BY author
    HAVING NumberOfBooks > 1
    
    
    

    This will only print author which have multiple books with title 'SQL in them.

    By the way, if you are new to SQL, then you can also use websites like Udemy, Coursera, Educative, ZTM Academy, freeCodeCamp, and VladMihalcea' SQL course to learn SQL in depth.


    Difference between WHERE and HAVING clause in SQL?

    Now that you know what is WHERE and HAVING clause in SQL and what the do, here are more useful difference between WHERE and HAVING clause in SQL :

    1. WHERE clause can be used with SELECT, UPDATE and DELETE statements and clauses but HAVING clause can only be used with SELECT statements.

    e.g.

    
    
    SELECT * FROM Employee WHERE EmployeeId=3
    
    
    

    This query will print details of employee with id = 3.

    Similarly,

    
    
    SELECT EmployeeName, COUNT(EmployeeName) AS NumberOfEmployee
    FROM Employee
    HAVING COUNT(EmployeeName) > 2;
    
    
    

    this query will print duplicate employees from table.

    2. We can't use aggregate functions in the where clause unless it is in a sub query contained in a HAVING clause whereas we can use aggregate function in Having clause. We can use column name in Having clause but the column must be contained in the group by clause.

    3. WHERE clause is used on the individual records whereas Having Clause in conjunction with Group By Clause work on the record sets ( group of records ).

    And, if you need more SQL questions like this then you can also see, Grokking the SQL Interview book which covers key topics for SQL interviews


    That's all about difference between WHERE and HAVING clause in SQL. This is one of the important SQL questions and if you are preparing for Java developer interview, you should know the answer of this question.
    While its a very common concept and we used it on daily basis, not many people can answer it correctly on interview.

    Mentioning about keywords like filtering and before and after grouping is key here.

    By the way, this is also a common SQL question on Java interviews and if you are preparing for Java interviews, you can also see my earlier articles like 35 Java Questions, 15 Spring Framework Questions and 6 System Design Problem to prepare other topics.

    All the best !!

      5 Free Oracle and Microsoft SQL Server Online Courses [2025] - Best of lot

      If you are an application developer, like someone developing a server-side application using Java or .NET or any other programming language which uses a database like Oracle and Microsoft SQL Server or a junior DBA, then you must learn these database technologies to effectively work in your Job. Even though your organization might have DBAs or Database Administrators to help you with the database, more often than not, it's application developers who end up writing SQL scripts to create data, upload data, query data, and writing complex stored procedures and triggers to implement application functionalities. DBAs job mostly does database installation, access control, security, and other database admin stuff.

      Can you join two unrelated tables in SQL? Cross Join Example

      In one of the recent programming job interviews, one of my readers was asked the question, how do you join two tables which are not related to each other? i.e. they don't have any common column? is it possible in SQL? My reader got confused because he only knows about INNER join and OUTER join which require a key column like dept_id which is the primary key in one table like Department and foreign key in another table like Employee. He couldn't answer the question, though he did tell them about you can select data from multiple tables by typing multiple table names in from clause using a comma. 

      How to solve Arithmetic overflow error converting IDENTITY to data type tinyint, smallint or int in Microsoft SQL Server database

      Last year we had a production issue where one of our backup jobs was failing while inserting Orders aggregated from other systems into our SQL Server database. The reason was dreaded "Arithmetic overflow error converting IDENTITY to data type int" because the table was using IDENTITY feature of SQL Server to generate OrderId, and Identity has breached it a maximum value, which is around 2.1 billion, precisely 2,147,483,647. The error "Arithmetic overflow error converting IDENTITY to data type int" comes when the IDENTITY value is inserted into a column of data type int, but the value is out-of-range. For example, if the current value of Identity becomes more than 2,147,483,647, then you cannot store that into an int column because it's more than the maximum value of int in SQL Server.

      Top 5 Free Microsoft SQL Server Books in 2025 - PDF Download or Online Read

      Hello Guys, if you want to learn SQL Server and looking for free resources then you have come to the right place. Earlier, I have shared free SQL and database courses and today, I am going to share some of the excellent database and SQL server books that are freely available on the internet for reading online or download as PDF. If you have been reading this blog then you know that I love books, I love to read books, and I love to collect books, that's why I have a significant online and offline library. Many people question me, do I really find to read all the books which I share? Well, I don't read all books page by page, unless and until it's something like Effective Java or Clean Code

      Difference between ROW_NUMBER(), RANK() and DENSE_RANK() in SQL

      The main difference between ROW_NUMBER() and RANK() in SQL server is that ROW_NUMBER doesn't handle ties while RANK() does. Though both ROW_NUMBER() and RANK() are window function used for ranking row, the way they handle duplicates differentiate them. ROW_NUMBER() function assigns a unique number to each row starting from 1 and arbitrarily assign values if two rows are equal, which means it's not guaranteed that which row will get 2nd or 3rd position if they are identical. In contrast, RANK() assigns an equivalent rank to similar rows, which creates gaps between RANK. 

      Top 50 Microsoft SQL Server Interview Questions Answers for 1 to 3 Years Experienced

      Hello guys, if you are preparing for an SQL Server Interview or a Java developer position where SQL Server skills are required and looking for SQL server interview questions then you have come to the right place. In the past, I have shared 10 SQL query Interview questions and 50 database and SQL questions, and today, I am going to share some SQL Server conceptual and theory questions which are very popular in interviews. The list not only includes Microsoft SQL server related questions, like isnull vs coalesce but also many general SQL and database design concepts like referential integrity, joins, normalization, window functions, etc. 

      Difference between VARCHAR and CHAR data type in SQL Server? [Explained]

      Hello all, today, I am going to share an interesting SQL Server interview question, which will not only help you in your interview but also in your day-to-day work. It explains one of the critical concepts of SQL Server, the difference between VARCHAR and CHAR data type. I am sure, you all have used both of them numerous times but because it's so common many of us ignore the difference between them and when asked to choose between VARCHAR and CHAR on interviews, they fail to give a convincing reason. The difference is not just significant from an interview point of view but also from a robust database design because an incorrect choice of data type not only limit what kind of data you can put on but also waste precious space and makes your query slower, particularly when you have to deal with the massive amount of data.

      How to Fix java.sql.BatchUpdateException: Error converting data type float to numeric - Java + SQL Server

      This error can come if you are inserting or updating a NUMERIC column in the Microsoft SQL Server database from a Java Program using the executeUpdate()method, I mean executing a  batch update query. It could also happen if you are calling a stored procedure and passing a float value corresponding to a NUMERIC column, and the value happened to be out-of-range like generating "Arithmetic overflow error converting numeric to data type numeric" on the SQL Server end. For example, if your column is defined as NUMERIC (6,2) the maximum value it can represent is 9999.99, not 999999.99

      How to use DROP command to remove tables in Oracle, MySQL and SQL Server

      Hello guys, if you want to learn about DROP command in SQL then you have come to the right place. Earlier, I have shared the best free SQL and Database courses and several tutorials to learn SELECT, GROUP BY, and other important commands, and in this article, I will show you to use the DROP command in SQL. DROP is one of the basic SQL commands, which is used to DROP database objects. Since it's part of ANSI SQL, the DROP command is supported by all major database vendors, including Oracle, MySQL, and Microsoft SQL Server. A SQL DROP TABLE statement is used to delete a table definition and all data from a table, but DROP can also be used to drop index, view, trigger, or any other database object. 

      What is Subquery in SQL? Correlated and Non-Correalted SubQuery Example

      If you are wondering what is correlated and non-correlated subqueries in SQL and looking to understand the difference between them then you have come to the right place. Earlier, I have shared free SQL and Database courses and today, I am going to talk about one of the common SQL concepts of subqueries, a query inside another query. There are two types of subqueries in SQL, correlated subquery and self-contained subquery, also known as nested, non-correlated, uncorrelated, or simply a subquery. The main difference between them is, self-contained (non-correlated) subqueries are independent of the outer query, whereas correlated subquery has a reference to an element from the table in the outer query.

      Difference between ISNULL() and COALESCE() function in SQL? Example

      Even though both ISNULL() and COALESCE() function provides alternate values to NULL in T-SQL and Microsoft SQL Server e.g. replacing NULL values with empty String, there are some key differences between them, which is often the topic of SQL Server interview. In this article, you will not only learn the answer to this question but also learn how to use COALESCE and ISNULL function properly. One of the main differences between them is that  COALESCE() is a standard SQL function but ISNULL() is Microsoft SQL Server-specific, which means it's not guaranteed to be supported by other database vendors like Oracle, MySQL, or PostgreSQL.

      Difference between table scan, index scan, and index seek in SQL Server Database? Example

      Hello guys, a good understanding of how the index works and how to use them to improve your SQL query performance is very important while working in a database and SQL and that's why you will find many questions based upon indexes on Programming Job interviews. One of such frequently asked SQL questions is the real difference between table scan, index scan, and index seek? which one is faster and why? How does the database chooses which scan or seek to use? and How you can optimize the performance of your SQL SELECT queries by using this knowledge. In general, there are only two ways in which your query engine retrieves the data, using a table scan or by using an index.

      How to find Nth Highest Salary in MySQL and SQL Server? Example LeetCode Solution

      Nth Highest Salary in MySQL and SQL Server - LeetCode Solution
      ---------------------------------------------------------------
      Write a SQL query to get the nth highest salary from the Employee table.

      +----+--------+
      | Id | Salary |
      +----+--------+
      | 1  | 100    |
      | 2  | 200    |
      | 3  | 300    |
      +----+--------+

      For example, given the above Employee table, the nth highest salary where n = 2 is 200. If there is no nth highest salary, then the query should return null.

      Difference between VARCHAR and NVARCHAR in SQL Server

      Hello guys, if you are confused between VARCHAR and NVARCHAR data types of SQL Server and wondering what is the difference between VARCHAR and NVARCHAR, or you have been asked this question on technical Interviews and you couldn't answer then you have come to the right place. There is a subtle difference between these two character data types in SQL Server, while both supports variable length, the VARCHAR data type is used to store non-Unicode characters while NVARCHAR is used to store Unicode characters. It also takes more space than VARCHAR. 

      Difference between WHERE and HAVING clause in SQL? Example

      The main difference between the WHERE and HAVING clauses comes when used together with the GROUP BY clause. In that case, WHERE is used to filter rows before grouping, and HAVING is used to exclude records after grouping. This is the most important difference, and if you remember this, it will help you write better SQL queries. This is also one of the important SQL concepts to understand, not just from an interview perspective but also from a day-to-day use perspective. I am sure you have used the WHERE clause because it's one of the most common clauses in SQL along with SELECT and used to specify filtering criteria or conditions.

      Top 5 Microsoft SQL Server Books for DBAs and Developers

      Top 5 Microsoft SQL SERVER Books for DBAs and Developers

      SQL Server Execution Plans by Grant Fritchey
      Learn the basics of capturing plans, how to interrupt
      them in their various forms, graphical or XML, and then
      how to use the information you find. Diagnose the most
      common causes of poor query performance so you
      can optimize your SQL queries and improve your
      indexing strategy.

      SQL Server Concurrency: Locking, Blocking
      and Row Versioning
      by Kalen Delaney
      Your application can have world-class indexes and
      queries, but they won’t help you if you can’t get your data
      because another application has it locked. That’s why
      every DBA and developer must understand SQL Server
      concurrency, and how to troubleshoot any issues.

      SQL Server Transaction Log Management
      by Tony Davis and Gail Shaw
      Tony Davis and Gail Shaw strive to offer just the right level
      of detail so that every DBA can perform all of the most
      important aspects of transaction log management.

      Troubleshooting SQL Server: A Guide for the
      Accidental DBA
      by Jonathan Kehayias and Ted Krueger
      Three SQL Server MVPs provide fascinating insight into
      the most common SQL Server problems, why they occur,
      and how they can be diagnosed using tools such as
      Performance Monitor, Dynamic Management Views, and
      server-side tracing performance, so you can optimize
      your SQL queries and improve your indexing strategy.


      Defensive Database Programming
      by Alex Kuznetsov
      The goal of defensive database programming is to
      help you to produce resilient T-SQL code that robustly
      and gracefully handles cases of unintended use,
      and is resilient to common changes to the database
      environment.

      That's all about top 5 good Microsoft SQL SERVER books.