Ben Forta
SQL in 10 Minutes a Day, Sams Teach Yourself
23,99 €
inkl. MwSt.
Versandfertig in ca. 2 Wochen
12 °P sammeln
Ben Forta
SQL in 10 Minutes a Day, Sams Teach Yourself
- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Sams Teach Yourself SQL in 10 Minutes offers straightforward, practical answers when you need fast results. By working through the book's 22 lessons of 10 minutes or less, students will learn what they need to know to take advantage of the SQL language. Lessons cover IBM DB2, Microsoft SQL Server and SQL Server Express, MariaDB, MySQL, Oracle and Oracle express, PostgreSQL, and SQLite. Full-color code examples help you understand how SQL statements are structured Tips point out shortcuts and solutions Cautions help you avoid common pitfalls Notes explain additional concepts, and provide…mehr
Sams Teach Yourself SQL in 10 Minutes offers straightforward, practical answers when you need fast results. By working through the book's 22 lessons of 10 minutes or less, students will learn what they need to know to take advantage of the SQL language. Lessons cover IBM DB2, Microsoft SQL Server and SQL Server Express, MariaDB, MySQL, Oracle and Oracle express, PostgreSQL, and SQLite. Full-color code examples help you understand how SQL statements are structured Tips point out shortcuts and solutions Cautions help you avoid common pitfalls Notes explain additional concepts, and provide additional information 10 minutes is all students need to learn how to... * Use the major SQL statements * Construct complex SQL statements using multiple clauses and * operators * Retrieve, sort, and format database contents * Pinpoint the data you need using a variety of filtering techniques * Use aggregate functions to summarize data * Join two or more related tables * Insert, update, and delete data * Create and alter database tables * Work with views, stored procedures, and more
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Produktdetails
- Produktdetails
- Verlag: Pearson / Pearson Education Limited
- 5th edition
- Seitenzahl: 306
- Erscheinungstermin: 10. Dezember 2019
- Englisch
- Abmessung: 228mm x 153mm x 17mm
- Gewicht: 358g
- ISBN-13: 9780135182796
- ISBN-10: 0135182794
- Artikelnr.: 51254611
- Herstellerkennzeichnung
- Pearson
- St.-Martin-Straße 82
- 81541 München
- salesde@pearson.com
- www.pearson.de
- +4989541960460
- Verlag: Pearson / Pearson Education Limited
- 5th edition
- Seitenzahl: 306
- Erscheinungstermin: 10. Dezember 2019
- Englisch
- Abmessung: 228mm x 153mm x 17mm
- Gewicht: 358g
- ISBN-13: 9780135182796
- ISBN-10: 0135182794
- Artikelnr.: 51254611
- Herstellerkennzeichnung
- Pearson
- St.-Martin-Straße 82
- 81541 München
- salesde@pearson.com
- www.pearson.de
- +4989541960460
Ben Forta is Adobe’s Senior Director of Education Initiatives and has three decades of experience in the computer industry in product development, support, training, and product marketing. He is the author of the best-selling Sams Teach Yourself SQL in 10 Minutes (including spinoff titles on MariaDB, MySQL, SQL Server T-SQL, and Oracle PL/SQL), Learning Regular Expressions, as well as books on Java, Windows, and more. He has extensive experience in database design and development, has implemented databases for several highly successful commercial software programs and websites, and is a frequent lecturer and columnist on application development and Internet technologies. Ben lives in Oak Park, Michigan, with his wife, Marcy, and their children. He welcomes your email at ben@forta.com and invites you to visit his website at http://forta.com.
Introduction 1
Who Is the Teach Yourself SQL Book For? . . . . . . . . . . . . . . . .
. . . . . . . . . . 1
DBMSs Covered in This Book . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 2
Conventions Used in This Book . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 2
1 Understanding SQL 5
Database Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 5
What Is SQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 10
Try It Yourself . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 10
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 12
2 Retrieving Data 13
The SELECT Statement . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 13
Retrieving Individual Columns . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 14
Retrieving Multiple Columns . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 16
Retrieving All Columns . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 17
Retrieving Distinct Rows . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 17
Limiting Results . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 19
Using Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 21
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 22
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 23
3 Sorting Retrieved Data 25
Sorting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 25
Sorting by Multiple Columns . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 27
Sorting by Column Position . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 28
Specifying Sort Direction . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 29
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 30
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 31
4 Filtering Data 33
Using the WHERE Clause . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 33
The WHERE Clause Operators . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 34
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 39
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 40
5 Advanced Data Filtering 41
Combining WHERE Clauses . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 41
Using the IN Operator . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 45
Using the NOT Operator . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 46
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 48
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 49
6 Using Wildcard Filtering 51
Using the LIKE Operator . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 51
Tips for Using Wildcards . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 57
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 57
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 58
7 Creating Calculated Fields 59
Understanding Calculated Fields . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 59
Concatenating Fields . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 60
Performing Mathematical Calculations . . . . . . . . . . . . . . . . .
. . . . . . . . . . 65
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 67
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 68
8 Using Data Manipulation Functions 69
Understanding Functions . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 69
Using Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 70
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 77
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 78
9 Summarizing Data 79
Using Aggregate Functions . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 79
Aggregates on Distinct Values . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 85
Combining Aggregate Functions . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 86
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 87
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 88
10 Grouping Data 89
Understanding Data Grouping. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 89
Creating Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 90
Filtering Groups . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 91
Grouping and Sorting . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 94
SELECT Clause Ordering . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 96
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 96
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 97
11 Working with Subqueries 99
Understanding Subqueries . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 99
Filtering by Subquery . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 99
Using Subqueries as Calculated Fields . . . . . . . . . . . . . . . . .
. . . . . . . . . 103
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 105
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 106
12 Joining Tables 107
Understanding Joins . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 107
Creating a Join . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 109
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 115
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 116
13 Creating Advanced Joins 117
Using Table Aliases . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 117
Using Different Join Types . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 118
Using Joins with Aggregate Functions . . . . . . . . . . . . . . . . .
. . . . . . . . . . 123
Using Joins and Join Conditions . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 124
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 125
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 126
14 Combining Queries 127
Understanding Combined Queries. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 127
Creating Combined Queries . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 127
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 133
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 134
15 Inserting Data 135
Understanding Data Insertion . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 135
Copying from One Table to Another . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 141
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 142
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 143
16 Updating and Deleting Data 145
Updating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 145
Deleting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 147
Guidelines for Updating and Deleting Data . . . . . . . . . . . . . . .
. . . . . . . . 149
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 149
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 150
17 Creating and Manipulating Tables 151
Creating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 151
Updating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 155
Deleting Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 157
Renaming Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 158
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 158
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 159
18 Using Views 161
Understanding Views . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 161
Creating Views . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 164
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 169
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 170
19 Working with Stored Procedures 171
Understanding Stored Procedures . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 171
Understanding Why to Use Stored Procedures . . . . . . . . . . . . . .
. . . . . . . 172
Executing Stored Procedures . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 173
Creating Stored Procedures . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 174
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 178
20 Managing Transaction Processing 179
Understanding Transaction Processing . . . . . . . . . . . . . . . . .
. . . . . . . . . 179
Controlling Transactions . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 181
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 185
21 Using Cursors 187
Understanding Cursors . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 187
Working with Cursors . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 188
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 192
22 Understanding Advanced SQL Features 193
Understanding Constraints . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 193
Understanding Indexes . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 198
Understanding Triggers . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 200
Database Security . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 202
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 202
A Sample Table Scripts 203
B SQL Statement Syntax 209
C Using SQL Datatypes 215
D SQL Reserved Words 221
TOC, 9780135182796, 10/9/19
Who Is the Teach Yourself SQL Book For? . . . . . . . . . . . . . . . .
. . . . . . . . . . 1
DBMSs Covered in This Book . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 2
Conventions Used in This Book . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 2
1 Understanding SQL 5
Database Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 5
What Is SQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 10
Try It Yourself . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 10
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 12
2 Retrieving Data 13
The SELECT Statement . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 13
Retrieving Individual Columns . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 14
Retrieving Multiple Columns . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 16
Retrieving All Columns . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 17
Retrieving Distinct Rows . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 17
Limiting Results . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 19
Using Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 21
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 22
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 23
3 Sorting Retrieved Data 25
Sorting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 25
Sorting by Multiple Columns . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 27
Sorting by Column Position . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 28
Specifying Sort Direction . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 29
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 30
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 31
4 Filtering Data 33
Using the WHERE Clause . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 33
The WHERE Clause Operators . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 34
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 39
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 40
5 Advanced Data Filtering 41
Combining WHERE Clauses . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 41
Using the IN Operator . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 45
Using the NOT Operator . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 46
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 48
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 49
6 Using Wildcard Filtering 51
Using the LIKE Operator . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 51
Tips for Using Wildcards . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 57
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 57
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 58
7 Creating Calculated Fields 59
Understanding Calculated Fields . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 59
Concatenating Fields . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 60
Performing Mathematical Calculations . . . . . . . . . . . . . . . . .
. . . . . . . . . . 65
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 67
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 68
8 Using Data Manipulation Functions 69
Understanding Functions . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 69
Using Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 70
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 77
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 78
9 Summarizing Data 79
Using Aggregate Functions . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 79
Aggregates on Distinct Values . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 85
Combining Aggregate Functions . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 86
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 87
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 88
10 Grouping Data 89
Understanding Data Grouping. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 89
Creating Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 90
Filtering Groups . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 91
Grouping and Sorting . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 94
SELECT Clause Ordering . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 96
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 96
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 97
11 Working with Subqueries 99
Understanding Subqueries . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 99
Filtering by Subquery . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 99
Using Subqueries as Calculated Fields . . . . . . . . . . . . . . . . .
. . . . . . . . . 103
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 105
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 106
12 Joining Tables 107
Understanding Joins . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 107
Creating a Join . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 109
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 115
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 116
13 Creating Advanced Joins 117
Using Table Aliases . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 117
Using Different Join Types . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 118
Using Joins with Aggregate Functions . . . . . . . . . . . . . . . . .
. . . . . . . . . . 123
Using Joins and Join Conditions . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 124
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 125
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 126
14 Combining Queries 127
Understanding Combined Queries. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 127
Creating Combined Queries . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 127
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 133
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 134
15 Inserting Data 135
Understanding Data Insertion . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 135
Copying from One Table to Another . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 141
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 142
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 143
16 Updating and Deleting Data 145
Updating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 145
Deleting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 147
Guidelines for Updating and Deleting Data . . . . . . . . . . . . . . .
. . . . . . . . 149
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 149
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 150
17 Creating and Manipulating Tables 151
Creating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 151
Updating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 155
Deleting Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 157
Renaming Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 158
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 158
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 159
18 Using Views 161
Understanding Views . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 161
Creating Views . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 164
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 169
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 170
19 Working with Stored Procedures 171
Understanding Stored Procedures . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 171
Understanding Why to Use Stored Procedures . . . . . . . . . . . . . .
. . . . . . . 172
Executing Stored Procedures . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 173
Creating Stored Procedures . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 174
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 178
20 Managing Transaction Processing 179
Understanding Transaction Processing . . . . . . . . . . . . . . . . .
. . . . . . . . . 179
Controlling Transactions . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 181
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 185
21 Using Cursors 187
Understanding Cursors . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 187
Working with Cursors . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 188
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 192
22 Understanding Advanced SQL Features 193
Understanding Constraints . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 193
Understanding Indexes . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 198
Understanding Triggers . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 200
Database Security . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 202
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 202
A Sample Table Scripts 203
B SQL Statement Syntax 209
C Using SQL Datatypes 215
D SQL Reserved Words 221
TOC, 9780135182796, 10/9/19
Introduction 1
Who Is the Teach Yourself SQL Book For? . . . . . . . . . . . . . . . .
. . . . . . . . . . 1
DBMSs Covered in This Book . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 2
Conventions Used in This Book . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 2
1 Understanding SQL 5
Database Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 5
What Is SQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 10
Try It Yourself . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 10
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 12
2 Retrieving Data 13
The SELECT Statement . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 13
Retrieving Individual Columns . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 14
Retrieving Multiple Columns . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 16
Retrieving All Columns . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 17
Retrieving Distinct Rows . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 17
Limiting Results . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 19
Using Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 21
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 22
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 23
3 Sorting Retrieved Data 25
Sorting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 25
Sorting by Multiple Columns . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 27
Sorting by Column Position . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 28
Specifying Sort Direction . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 29
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 30
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 31
4 Filtering Data 33
Using the WHERE Clause . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 33
The WHERE Clause Operators . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 34
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 39
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 40
5 Advanced Data Filtering 41
Combining WHERE Clauses . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 41
Using the IN Operator . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 45
Using the NOT Operator . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 46
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 48
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 49
6 Using Wildcard Filtering 51
Using the LIKE Operator . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 51
Tips for Using Wildcards . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 57
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 57
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 58
7 Creating Calculated Fields 59
Understanding Calculated Fields . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 59
Concatenating Fields . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 60
Performing Mathematical Calculations . . . . . . . . . . . . . . . . .
. . . . . . . . . . 65
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 67
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 68
8 Using Data Manipulation Functions 69
Understanding Functions . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 69
Using Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 70
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 77
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 78
9 Summarizing Data 79
Using Aggregate Functions . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 79
Aggregates on Distinct Values . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 85
Combining Aggregate Functions . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 86
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 87
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 88
10 Grouping Data 89
Understanding Data Grouping. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 89
Creating Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 90
Filtering Groups . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 91
Grouping and Sorting . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 94
SELECT Clause Ordering . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 96
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 96
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 97
11 Working with Subqueries 99
Understanding Subqueries . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 99
Filtering by Subquery . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 99
Using Subqueries as Calculated Fields . . . . . . . . . . . . . . . . .
. . . . . . . . . 103
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 105
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 106
12 Joining Tables 107
Understanding Joins . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 107
Creating a Join . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 109
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 115
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 116
13 Creating Advanced Joins 117
Using Table Aliases . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 117
Using Different Join Types . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 118
Using Joins with Aggregate Functions . . . . . . . . . . . . . . . . .
. . . . . . . . . . 123
Using Joins and Join Conditions . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 124
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 125
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 126
14 Combining Queries 127
Understanding Combined Queries. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 127
Creating Combined Queries . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 127
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 133
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 134
15 Inserting Data 135
Understanding Data Insertion . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 135
Copying from One Table to Another . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 141
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 142
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 143
16 Updating and Deleting Data 145
Updating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 145
Deleting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 147
Guidelines for Updating and Deleting Data . . . . . . . . . . . . . . .
. . . . . . . . 149
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 149
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 150
17 Creating and Manipulating Tables 151
Creating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 151
Updating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 155
Deleting Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 157
Renaming Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 158
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 158
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 159
18 Using Views 161
Understanding Views . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 161
Creating Views . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 164
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 169
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 170
19 Working with Stored Procedures 171
Understanding Stored Procedures . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 171
Understanding Why to Use Stored Procedures . . . . . . . . . . . . . .
. . . . . . . 172
Executing Stored Procedures . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 173
Creating Stored Procedures . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 174
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 178
20 Managing Transaction Processing 179
Understanding Transaction Processing . . . . . . . . . . . . . . . . .
. . . . . . . . . 179
Controlling Transactions . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 181
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 185
21 Using Cursors 187
Understanding Cursors . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 187
Working with Cursors . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 188
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 192
22 Understanding Advanced SQL Features 193
Understanding Constraints . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 193
Understanding Indexes . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 198
Understanding Triggers . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 200
Database Security . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 202
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 202
A Sample Table Scripts 203
B SQL Statement Syntax 209
C Using SQL Datatypes 215
D SQL Reserved Words 221
TOC, 9780135182796, 10/9/19
Who Is the Teach Yourself SQL Book For? . . . . . . . . . . . . . . . .
. . . . . . . . . . 1
DBMSs Covered in This Book . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 2
Conventions Used in This Book . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 2
1 Understanding SQL 5
Database Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 5
What Is SQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 10
Try It Yourself . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 10
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 12
2 Retrieving Data 13
The SELECT Statement . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 13
Retrieving Individual Columns . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 14
Retrieving Multiple Columns . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 16
Retrieving All Columns . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 17
Retrieving Distinct Rows . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 17
Limiting Results . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 19
Using Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 21
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 22
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 23
3 Sorting Retrieved Data 25
Sorting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 25
Sorting by Multiple Columns . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 27
Sorting by Column Position . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 28
Specifying Sort Direction . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 29
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 30
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 31
4 Filtering Data 33
Using the WHERE Clause . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 33
The WHERE Clause Operators . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 34
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 39
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 40
5 Advanced Data Filtering 41
Combining WHERE Clauses . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 41
Using the IN Operator . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 45
Using the NOT Operator . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 46
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 48
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 49
6 Using Wildcard Filtering 51
Using the LIKE Operator . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 51
Tips for Using Wildcards . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 57
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 57
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 58
7 Creating Calculated Fields 59
Understanding Calculated Fields . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 59
Concatenating Fields . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 60
Performing Mathematical Calculations . . . . . . . . . . . . . . . . .
. . . . . . . . . . 65
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 67
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 68
8 Using Data Manipulation Functions 69
Understanding Functions . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 69
Using Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 70
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 77
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 78
9 Summarizing Data 79
Using Aggregate Functions . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 79
Aggregates on Distinct Values . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 85
Combining Aggregate Functions . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 86
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 87
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 88
10 Grouping Data 89
Understanding Data Grouping. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 89
Creating Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 90
Filtering Groups . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 91
Grouping and Sorting . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 94
SELECT Clause Ordering . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 96
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 96
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 97
11 Working with Subqueries 99
Understanding Subqueries . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 99
Filtering by Subquery . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 99
Using Subqueries as Calculated Fields . . . . . . . . . . . . . . . . .
. . . . . . . . . 103
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 105
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 106
12 Joining Tables 107
Understanding Joins . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 107
Creating a Join . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 109
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 115
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 116
13 Creating Advanced Joins 117
Using Table Aliases . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 117
Using Different Join Types . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 118
Using Joins with Aggregate Functions . . . . . . . . . . . . . . . . .
. . . . . . . . . . 123
Using Joins and Join Conditions . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 124
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 125
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 126
14 Combining Queries 127
Understanding Combined Queries. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 127
Creating Combined Queries . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 127
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 133
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 134
15 Inserting Data 135
Understanding Data Insertion . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 135
Copying from One Table to Another . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 141
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 142
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 143
16 Updating and Deleting Data 145
Updating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 145
Deleting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 147
Guidelines for Updating and Deleting Data . . . . . . . . . . . . . . .
. . . . . . . . 149
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 149
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 150
17 Creating and Manipulating Tables 151
Creating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 151
Updating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 155
Deleting Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 157
Renaming Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 158
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 158
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 159
18 Using Views 161
Understanding Views . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 161
Creating Views . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 164
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 169
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 170
19 Working with Stored Procedures 171
Understanding Stored Procedures . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 171
Understanding Why to Use Stored Procedures . . . . . . . . . . . . . .
. . . . . . . 172
Executing Stored Procedures . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 173
Creating Stored Procedures . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 174
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 178
20 Managing Transaction Processing 179
Understanding Transaction Processing . . . . . . . . . . . . . . . . .
. . . . . . . . . 179
Controlling Transactions . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 181
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 185
21 Using Cursors 187
Understanding Cursors . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 187
Working with Cursors . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 188
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 192
22 Understanding Advanced SQL Features 193
Understanding Constraints . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 193
Understanding Indexes . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 198
Understanding Triggers . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 200
Database Security . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 202
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 202
A Sample Table Scripts 203
B SQL Statement Syntax 209
C Using SQL Datatypes 215
D SQL Reserved Words 221
TOC, 9780135182796, 10/9/19