Математика

Физика

Химия

Биология

Техника и    технологии

Beginning SQL Server 2005 Express for Developers From Novice to Professional -Robin Dewson 2007 iNDIX415
Beginning SQL Server 2005 Express for Developers From Novice to Professional -Robin Dewson 2007 iNDIX415

Contents at a Glance


About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
nCHAPTER 1 SQL Server 2005 Express Overview and Installation . . . . . . . . . . . . . . . . . . 1
nCHAPTER 2 SQL Server Management Studio Express . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
nCHAPTER 3 Database Design and Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
nCHAPTER 4 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
nCHAPTER 5 Defining Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
nCHAPTER 6 Creating Indexes and Database Diagramming . . . . . . . . . . . . . . . . . . . . . . 137
nCHAPTER 7 Database Backup, Recovery, and Maintenance . . . . . . . . . . . . . . . . . . . . 167
nCHAPTER 8 Working with the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
nCHAPTER 9 Building a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
nCHAPTER 10 Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
nCHAPTER 11 T-SQL Essentials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
nCHAPTER 12 Advanced T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
nCHAPTER 13 Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
nCHAPTER 14 SQL Server 2005 Reporting Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
nAPPENDIX Glossary of Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Contents

About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
nCHAPTER 1 SQL Server 2005 Express Overview and Installation . . . . . . 1
What Is SSE? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Evolution of SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Hardware Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Hard Disk Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Operating System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
The Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
A Standard Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Preparing to Install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Services Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Looking at the Authentication Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
The sa Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
nCHAPTER 2 SQL Server Management Studio Express . . . . . . . . . . . . . . . . . . 21
A Quick Overview of SSMSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Examining SSMSE’s Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Environment Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Query Results Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Query Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Surface Area Configuration Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
v
nCHAPTER 3 Database Design and Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Defining a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Databases Within SSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
tempdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
msdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
AdventureWorks/AdventureWorksDW . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Choosing the Database System Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
OLTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
OLAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Example System Choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Gathering the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Determining the Information to Store in the Database . . . . . . . . . . . . . . . . . . . 53
Financial Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Customers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Customer Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Shares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
External and Ignored Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Building Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Using Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Creating Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
More on Foreign Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Each Entity Should Have a Unique Identifier . . . . . . . . . . . . . . . . . . . . . . 63
Only Store Information That Directly Relates to That Entity . . . . . . . . . . . 63
Avoid Repeating Values or Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Normal Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Denormalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Creating the Sample Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Creating a Database in SQL Server Management
Studio Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Dropping the Database in SQL Server Management
Studio Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Creating a Database in a Query Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
vi nCONTENTS
nCONTENTS vii
nCHAPTER 4 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Logins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Server Logins and Database Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Fixed Server Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Database Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Application Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Schemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Before You Can Proceed with Your Solution . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
nCHAPTER 5 Defining Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
What Is a Table? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Defining a Table: SQL Server Management Studio Express . . . . . . . . . . . . . . 106
Different Table Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Different Program Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Columns Are More Than Simple Data Repositories . . . . . . . . . . . . . . . . . . . . 111
Default Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Generating IDENTITY Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
The Use of NULL Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Image and Large Text Storage in SSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Creating a Table in SQL Server Management Studio Express . . . . . . . . . . . . . 113
Defining a Table Through Query Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Defining a Table: Using a Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Creating and Altering a Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
The ALTER TABLE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Creating the Remaining Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Defining a Primary Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Creating a Relationship . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Check Existing Data on Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Enforce Foreign Key Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Delete Rule/Update Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Using the ALTER TABLE SQL Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
nCHAPTER 6 Creating Indexes and Database Diagramming . . . . . . . . . . . 137
What Is an Index? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Types of Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Uniqueness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Determining What Makes a Good Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Using Low-Maintenance Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Primary and Foreign Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Finding Specific Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Using Covering Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Looking for a Range of Information . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Keeping the Data in Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Determining What Makes a Bad Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Using Unsuitable Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Choosing Unsuitable Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Including Too Many Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Including Too Few Records in the Table . . . . . . . . . . . . . . . . . . . . . . . . 143
Reviewing Your Indexes for Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Creating an Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Creating an Index with the Table Designer . . . . . . . . . . . . . . . . . . . . . . 144
Indexes and Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
The CREATE INDEX Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
IGNORE_DUP_KEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
DROP_EXISTING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Creating an Index in Query Editor: Template . . . . . . . . . . . . . . . . . . . . . 149
Creating an Index in Query Editor: SQL Code . . . . . . . . . . . . . . . . . . . . 153
Dropping an Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Altering an Index in Query Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Diagramming the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Database Diagramming Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
The SQL Server Express Database Diagram Tool . . . . . . . . . . . . . . . . . . . . . . 158
The Default Database Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
The Database Diagram Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
nCHAPTER 7 Database Backup, Recovery, and Maintenance . . . . . . . . . 167
Transaction Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Backup Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
When Problems May Occur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Taking a Database Offline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Backing the Data Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Backing Up the Database Using T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . 177
Transaction Log Backup Using T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . 183
viii nCONTENTS
Restoring a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Restoring Using SQL Server Management Studio Express . . . . . . . . . . 187
Restoring Using T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Detaching and Attaching a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Detaching and Attaching Using SQL Server Management
Studio Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Detaching and Attaching Using T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . 200
Producing SQL Script for the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Maintaining Your Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
nCHAPTER 8 Working with the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
The T-SQL INSERT Statement Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
INSERT SQL Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Default Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Using NULL Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
DBCC CHECKIDENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Column Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
ADD CONSTRAINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Dealing with Several Rows at Once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Inserting Several Rows in a Query Batch . . . . . . . . . . . . . . . . . . . . . . . 223
Retrieving Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Using SSMSE to Retrieve Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
The SELECT Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Naming the Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
The First Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Varying the Output Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Limiting the Search: The Use of WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
SET ROWCOUNT n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
TOP n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
TOP n PERCENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
String Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Order! Order! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
The LIKE Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Creating Data: SELECT INTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Who Can Add, Delete, and Select Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Securables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Updating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
The UPDATE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Updating Data Within Query Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
nCONTENTS ix
Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
BEGIN TRAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
COMMIT TRAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
ROLLBACK TRAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Locking Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Updating Data: Using Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Nested Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Deleting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
DELETE Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Using the DELETE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Truncating a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Dropping a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
nCHAPTER 9 Building a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
What Is a View? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Using Views for Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Encrypting View Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Creating a View: SSMSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Creating a View Using a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
CREATE VIEW Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Creating a View: A Query Editor Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Creating a View: SCHEMABINDING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Indexing a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
nCHAPTER 10 Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
What Is a Stored Procedure? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
CREATE PROCEDURE Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Returning a Set of Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Creating a Stored Procedure: SSMSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Different Methods of Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
No EXEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
With EXEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Using RETURN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Controlling the Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
IF...ELSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
BEGIN...END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
WHILE...BREAK Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
CASE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Bringing It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
x nCONTENTS
nCHAPTER 11 T-SQL Essentials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Using More Than One Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Temporary Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Aggregations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
COUNT/COUNT_BIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
SUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
MAX/MIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
AVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Distinct Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Date and Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
System Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
RAISERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
@@ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
TRY...CATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
nCHAPTER 12 Advanced T-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
IN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
The APPLY Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
CROSS APPLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
OUTER APPLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Common Table Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Recursive CTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Pivoting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
PIVOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
UNPIVOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Ranking Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
ROW_NUMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
RANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
DENSE_RANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
NTILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Using the MAX Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Image LOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
nCONTENTS xi
nCHAPTER 13 Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
What Is a Trigger? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
The DML Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
CREATE TRIGGER Syntax for DML Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Why Not Use a Constraint? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Deleted and Inserted Logical Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Creating a DML FOR Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Checking Specific Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Using UPDATE() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Using COLUMNS_UPDATED() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
DDL Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
DDL_DATABASE_LEVEL_EVENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Dropping a DDL Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
EVENTDATA() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
nCHAPTER 14 SQL Server 2005 Reporting Services . . . . . . . . . . . . . . . . . . . . . . 395
What Is Reporting Services? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Reporting Services Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Reporting Services Architecture: A Closer Look . . . . . . . . . . . . . . . . . . . . . . . 396
The Application Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
The Server Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
The Data Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Building Your First Report Using Report Wizard . . . . . . . . . . . . . . . . . . . . . . . 402
Building a Report from Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Data-Related Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Report Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Reports Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
nAPPENDIX Glossary of Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

Цена: 200руб.

Назад

Заказ

На главную страницу