Acknowledgements xxiii
Introduction xxv
Part I SQL Basic Concepts and Principles
Chapter 1: SQL and Relational Database Management Systems 3
Desirable Database Characteristics 3
Sufficient capacity 4
Adequate security and auditing 4
Multiuser environment 4
Effectiveness and searchability 4
Scalability 5
User friendliness 5
Selecting Your Database Software 6
Market share 6
Total cost of ownership 6
Support and persistence 7
Major DBMS Implementations 7
Real-Life Database Examples 9
Order management system database 9
Health care provider database 10
Video sharing and editing database 10
Scientific database 11
Nonprofit organization database 11
Database Legacy 11
Flat file databases 11
Hierarchical databases 12
Network databases 14
Relational Databases 15
Tables 16
Relationships 17
Primary key 17
Foreign key 18
Invasion of RDBMS 18
Other DBMS Models 19
Brief History of SQL and SQL Standards 20
Humble beginnings: RDBMS and SQL evolution 20
A brief history of SQL standards 23
Summary 26
Chapter 2: Fundamental SQL Concepts and Principles 27
Promises and Deliverables 27
SQL: The First Look 32
Database example 32
Getting the data in and out 33
Slice and dice: Same data, different angle 35
Aggregation 37
Data security 38
Accessing data from a client application 39
New developments 40
Any Platform, Any Time 40
Summary 43
Chapter 3: SQL Data Types 45
No Strings Attached 46
Character strings 46
Binary strings 54
In Numbers Strength 56
Exact numbers 56
Approximate numbers 60
Once Upon a Time: Date and Time Data Types 61
Introduction to complex data types 62
Date and time implementations 63
XML Data Type 69
XML data type implementations 69
Constructed and User-Defined Data Types 70
SQL:2003 71
Oracle 11g 73
DB2 9.5 75
Microsoft SQL Server 2008 76
Other Data Types 77
BOOLEAN 77
ROWID 77
UROWID 78
BFILE 78
DATALINK 78
BIT 78
TIMESTAMP 78
SQL_VARIANT 78
Null 79
Summary 79
Part II Creating and Modifying Database Objects
Chapter 4: Creating RDBMS Objects 83
Tables 83
CREATE TABLE Statement 84
Indexes 113
CREATE INDEX statement 116
Views 120
CREATE VIEW statement 121
Creating complex views 127
Aliases and Synonyms 130
SQL:2003 131
Oracle 11 g CREATE SYNONYM statement 131
DB2 9.5 CREATE ALIAS statement 133
Microsoft SQL Server 2008 CREATE SYNONYM statement 133
Schemas 134
CREATE SCHEMA statement 134
Sequences 138
External sequence generators in SQL:2003 139
Sequences in Oracle 11 g 139
DB2 9.5 142
Other SQL:2003 and Implementation-Specific Objects 143
Domains (SQL:2003) 144
Character sets (SQL:2003) 144
Collations (SQL:2003) 144
Tablespaces and filegroups 144
Materialized views (Oracle 11 g) 147
Database links (Oracle 11 g) 149
Directories (Oracle 11 g) 150
CREATE Statement Cross-Reference 151
Summary 154
Chapter 5: Altering and Destroying RDBMS Objects 155
Tables 155
ALTER TABLE statement 156
DROP TABLE statement 166
Indexes 168
ALTER INDEX statement 168
DROP INDEX statement 170
Views 171
ALTER VIEW statement 171
DROP VIEW statement 173
Aliases and Synonyms 173
Oracle 11 g 174
DB2 9.5 174
Microsoft SQL Server 2008 174
Schemas 174
SQL:2003 174
DB2 9.5 175
Microsoft SQL Server 2008 175
Sequences 176
ALTER SEQUENCE statement 176
DROP SEQUENCE statement 177
Other Implementation-Specific Objects 178
Domains (SQL:2003) 178
Character sets (SQL:2003) 178
Collations (SQL:2003) 178
Tablespaces 178
Materialized views (Oracle 11 g) 180
Database Links (Oracle 11 g) 180
Directories (Oracle 11 g) 181
ALTER and DROP Statements Cross-Reference 181
Summary 186
Part III Data Manipulation and Transaction Control
Chapter 6: Data Manipulation Language (DML) 191
INSERT: Populating Tables with Data 191
Common INSERT statement clauses 192
INSERT statement vendor-related specifics 200
UPDATE: Modifying Table Data 208
Common UPDATE statement clauses 209
Vendor-specific UPDATE statement details 213
DELETE: Removing Data from Tables 216
Common DELETE statement clauses 216
Vendor-specific DELETE statement clauses 218
MERGE: Combining INSERT, UPDATE, and DELETE in One Statement 219
Common MERGE statement clauses 219
Vendor-specific MERGE statement clauses 220
TRUNCATE Statement 223
Differences between Oracle and Microsoft SQL Server TRUNCATE statements 224
Summary 225
Chapter 7: Sessions, Transactions, and Locks 227
Sessions 227
Transactions 237
What is a transaction? 237
Transactions COMMIT and ROLLBACK 241
Transaction isolation levels 248
Understanding Locks 251
Locking modes 252
Dealing with deadlocks 256
Summary 257
Part IV Retrieving and Transferring Data
Chapter 8: Understanding the SELECT Statement 261
Single Table SELECT Statement Syntax 261
SELECT Clause: What Do You Select? 262
Single-column select 262
Multicolumn SELECT 263
Using literals, functions, and calculated columns 267
Using subqueries in a SELECT clause 271
FROM Clause: Select from What? 272
Selecting from tables and views 272
Using aliases in a FROM clause 273
Using subqueries in a FROM clause (inline views) 273
WHERE Clause: Setting Horizontal Limits 274
Using comparison operators 275
Compound operators: Using AND and OR 276
Using the BETWEEN operator 277
Using the IN operator: Set membership test 278
The NOT operator 279
Using the IS NULL operator: Special test for NULLS 280
Using subqueries in a WHERE clause 281
GROUP BY and HAVING Clauses: Summarizing Results 285
ORDER BY Clause: Sorting Query Output 288
Combining the Results of Multiple Queries 291
Union 292
Intersect 295
Except (minus) 296
SQL Analytic Functions and Top N Queries 299
Analytic functions and the SQL:2003 standard 299
Designing top N queries 301
Limit N queries 303
Summary 304
Chapter 9: Multitable Queries 307
Inner Joins 307
Two syntaxes for inner joins 308
Equijoin 309
Nonequijoin 312
Self-join 314
Cross join (Cartesian product) 317
Joining more than two tables 318
Outer Joins: Joining Tables on Columns Containing NULL Values 321
Two syntaxes for outer joins 321
Left outer join 323
Right outer join 326
Full outer join 327
Union join 328
Joins Involving Inline Views 329
Multitable Joins with Correlated Queries 331
Improving Efficiency of Multitable Queries 333
Summary 334
Chapter 10: SQL Functions 335
Numeric functions 338
String functions 345
Date and time functions 357
Aggregate functions 368
Conversion functions 376
System Functions 393
Miscellaneous functions 397
User-defined functions 404
Summary 405
Chapter 11: SQL Operators 407
Arithmetic and String Concatenation Operators 407
Logical Operators 411
ALL 412
ANY | SOME 412
BETWEEN AND 413
IN 414
EXISTS 416
LIKE 417
AND 421
NOT 421
OR 422
Operator Precedence 422
Assignment Operator 425
Comparison Operators 425
Bitwise Operators 430
Summary 432
Part V Implementing Security Using the System Catalog
Chapter 12: SQL and RDBMS Security 435
Basic Security Mechanisms 435
Identification and authentication 436
Authorization and access control 436
Encryption 436
Integrity and consistency 436
Auditing 436
Defining a Database User 437
Managing Security with Privileges 443
GRANT statement 444
REVOKE privileges 460
Managing Security with Roles 465
Using Views for Security 472
Using Constraints for Security 475
Using Stored Procedures and Triggers for Security 477
Data encryption 480
Database Auditing 485
Security Standards 489
International security standards 490
Regulatory compliance 491
Summary 493
Chapter 13: The System Catalog and INFORMATION_SCHEMA 495
SQL System Catalogs 495
Oracle 11 g Data Dictionary 500
Oracle data dictionary structure 501
Oracle data dictionary and SQL:2007 standards 504
One level deeper: Data about metadata 505
IBM DB2 9.5 System Catalogs 507
The INFORMATION_SCHEMA objects in DB2 507
Obtaining information about INFORMATION_SCHEMA objects 510
Microsoft SQL Server 2008 System Catalog 511
MS SQL Server 2008 INFORMATION_SCHEMA Views 511
Microsoft SQL Server system stored procedures 515
Microsoft SQL Server 2008 system functions 520
Summary 523
Part VI Beyond SQL: Procedural Programming and Database Access Mechanisms
Chapter 14: Stored Procedures, Triggers, and User-Defined Functions 527
Procedural Extension Uses and Benefits 529
Performance and network traffic 529
Database security 529
Code reusability 530
Key Elements of a SQL Procedural Language 530
Variables and assignment 530
Modularity, subprograms, and block structure 532
Passing parameters 533
Oracle 11 g 536
DB2 9.5 536
Microsoft SQL Server 2008 537
Conditional execution 537
Repeated execution 539
Cursors 540
Error handling 544
Stored Procedures 547
CREATE PROCEDURE syntax 547
Creating a simple stored procedure 548
Removing a stored procedure 554
User-Defined Functions 554
CREATE FUNCTION syntax 554
Creating a simple function 555
Removing a user-defined function 559
Triggers 559
CREATE TRIGGER syntax 559
Removing a trigger 563
.NET Stored Procedures and Functions 563
Summary 565
Chapter 15: SQL and XML 567
Introduction 567
The Structure of XML 567
XML as a data source 573
Encoding XML 574
Presenting XML documents 575
XML and RDBMS 577
Oracle 11 g XML DB 579
IBM DB 9.5 pureXML 586
Microsoft SQL Server 2008 590
Summary 596
Chapter 16: SQL and Procedural Programming 599
SQL Statement Processing Steps 600
Embedded and Dynamic SQL 601
Embedded SQL 601
Dynamic SQL techniques 606
The future of Embedded and Dynamic SQL 614
SQL/CLI Standard 614
Open Database Connectivity and Object Linking and Embedding, Database 619
ODBC 619
OLEDB 621
SQL and Java 621
Java Database Connectivity (JDBC) 622
SQLJ 627
Oracle API options 629
Oracle Call Interface 629
Oracle Objects for OLE 631
Oracle Data Provider for .NET 632
IBM DB2 Call-Level Interface 632
Microsoft Data Access Interfaces 633
ActiveX Data Objects 634
Ado.net 634
Summary 640
Chapter 17: The Future of SQL 643
OLAP and Business Intelligence 644
Oracle 11 g 647
IBM DB2 9.5 647
Microsoft SQL Server 2008 648
LINQ to SQL 649
Objects 650
OOP Paradigm 650
Object Language Bindings (SQL/OLB) in SQL:2003 Standard 652
Oracle 11 g support 652
IBM DB2 9.5 support 653
Microsoft SQL Server 2008 654
Abstract data types 656
Object-oriented databases 656
Summary 658
Appendix A: Accompanying Website 661
Appendix B: The ACME Sample Database 663
General Information and Business Rules 663
Naming Conventions 664
Relationships between Tables 665
Column Constraints and Defaults 665
Indexes 667
Views 667
SQL Scripts to Create ACME Database Objects 667
Appendix C: Basics of Relational Database Design 679
Identifying Entities and Attributes 680
Normalization 681
First normal form 682
Second normal form 683
Third normal form 683
Specifying Constraints 686
OLTP versus OLAP Designs 687
Data warehouses and data marts 687
Star and snowflake schemas 688
Pitfalls of Relational Database Design 688
Appendix D: Installing RDBMS Software 691
Installing Oracle 11g 691
Installing Oracle 11g release 1 (11.1.0.6.0) Enterprise Edition on Linux 692
Installing Oracle 11g release 1 (11.1.0.6.0) Personal Edition on Windows 708
Installing IBM DB2 9.5 710
Installing DB2 9.5 software on Windows 710
Installing Microsoft SQL Server 2008 720
Prerequisites for the Microsoft SQL Server 2008 (CTP, November 2007 release) 720
Installing on Windows Vista Enterprise Edition 721
Appendix E: Accessing RDBMS 731
Using ORACLE 11g Utilities to Access RDBMS 731
SQL∗Plus 731
SQL Developer 736
Oracle Enterprise Manager (SQL Worksheet) 740
Using IBM DB2 9.5 Utilities to Access the RDBMS 741
Command-Line Processor (CLP) 741
Command Editor 744
Using Microsoft SQL Server 2008 Utilities to Access the RDBMS 745
Using SQLCMD 745
Using SQL Server Management Studio 747
Appendix F: Installing the ACME Database 749
Installing the ACME Database on Oracle 11g Using SQL∗Plus 749
Linux / Unix 749
Microsoft Windows 750
Installing the ACME Database on DB2 9.5 (Windows) Using CLP 751
Installing the ACME Database on Microsoft SQL Server 2008
Using the SQLCMD Utility 753
Appendix G: SQL Functions 755
Appendix H: SQL Syntax Reference 795
DDL Statements 796
Tables 796
Indexes 796
Views 796
Schemas 797
Stored procedures 797
User-defined functions 797
Triggers 798
dcl Statements 798
DML Statements 798
DQL Statements 799
Single-table SELECT 799
Multitable SELECT 799
Transactional Control Statements 800
Predicates 800
Appendix I: SQL-Reserved Keywords 803
Future Keywords 813
ODBC Reserved Keywords 815
Appendix J: The Other RDBMSs 819
Appendix K: A Brief Introduction to Number Systems, Boolean Algebra, and Set Theory 825
The Number Systems 825
The RDBMS connection 826
Converting numbers 826
Logic Elements of Boolean Algebra 828
NOT (complement or inverter) 828
AND (Boolean product) 829
OR (Boolean sum) 829
XOR (exclusive OR) 829
NAND (inversed AND) 830
NOR (inversed OR) 830
Rules of precedence 831
Set Theory 832
The listing of sets 832
Subsets 833
Set equality 834
Operations on sets 834
Identities of set algebra 838
Index 839
Alex Kriegel , PMP, MCSD/MCTS, works as a Systems Architect for the State of Oregon; prior to this he worked for Pope and Talbot, Inc., Psion Teklogix International, Inc., and for Belorussian Academy of Sciences. He received his MSc. in Physics of Metals from Belarus State Polytechnic Institute in 1988, discovered PC programming and relational databases in 1992, and has never looked back since. Alex is certified as a Project Management Professional (PMP) by the Project Management Institute, and also holds various Microsoft certifications. He is also the author of Microsoft SQL Server 2000 Weekend Crash Course (Wiley, 2001), SQL Functions (Wrox, 2005), and co-author of Introduction to Database Management (Wiley, 2007), and the first edition of this book. Boris M. Trukhnov , OCP, has been working as Senior Technical Analyst/Oracle DBA for Pope & Talbot, Inc., in Portland, Oregon, since 1998. His previous job titles include Senior Programmer Analyst, Senior Software Developer, and Senior Operations Analyst. He has been working with SQL and relational databases since 1994. Boris holds a B.S. in Computer Science from the University of Minnesota. He is a co-author of Introduction to Database Management (Wiley, 2007).
![]() |
Ask a Question About this Product More... |
![]() |