Beruflich Dokumente
Kultur Dokumente
O F F I C I A L M I C R O S O F T L E A R N I N G P R O D U C T
2778A
Writing Queries Using Microsoft SQL
Server 2008 Transact-SQL
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Information in this document, including URL and other Internet Web site references, is subject to change without notice.
Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people,
places, and events depicted herein are fictitious, and no association with any real company, organization, product, domain
name, e-mail address, logo, person, place or event is intended or should be inferred. Complying with all applicable copyright
laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be
reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic,
mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft
Corporation.
Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject
matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this
document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.
The names of manufacturers, products, or URLs are provided for informational purposes only and Microsoft makes no
representations and warranties, either expressed, implied, or statutory, regarding these manufacturers or the use of the
products with any Microsoft technologies. The inclusion of a manufacturer or product does not imply endorsement of
Microsoft of the manufacturer or product. Links may be provided to third party sites. Such sites are not under the control of
Microsoft and Microsoft is not responsible for the contents of any linked site or any link contained in a linked site, or any
changes or updates to such sites. Microsoft is not responsible for webcasting or any other form of transmission received from
any linked site. Microsoft is providing these links to you only as a convenience, and the inclusion of any link does not imply
endorsement of Microsoft of the site or the products contained therein.
Microsoft, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or
other countries.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Acknowledgements
Microsoft Learning would like to acknowledge and thank the following for their contribution towards
developing this title. Their effort at various stages in the development has ensured that you have a good
classroom experience.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Contents
Module 1: Getting Started with Databases and Transact-SQL in
SQL Server 2008
Lesson 1: Overview of SQL Server 2008 1-3
Lesson 2: Overview of SQL Server Databases 1-8
Lesson 3: Overview and Syntax Elements of T-SQL 1-14
Lesson 4: Working with T-SQL Scripts 1-23
Lesson 5: Using T-SQL Querying Tools 1-27
Lab: Using SQL Server Management Studio and SQLCMD 1-34
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Course Description
This three-day instructor-led course provides students with the technical skills required to write basic
Transact-SQL queries for Microsoft SQL Server 2008.
Audience
This course is intended for SQL Server database administrators, implementers, system engineers, and
developers who are responsible for writing queries.
Student Prerequisites
This course requires that you meet the following prerequisites:
Knowledge of data integrity concepts
Core Windows Server skills
Relational database design skills.
Programming skills
Course Objectives
After completing this course, students will be able to:
Describe the uses of and ways to execute the Transact-SQL language.
Use querying tools.
Write SELECT queries to retrieve data.
Group and summarize data by using Transact-SQL.
Join data from multiple tables.
Write queries that retrieve and modify data by using subqueries.
Modify data in tables.
Query text fields with full-text search.
Describe how to create programming objects.
Use various techniques when working with complex queries.
Course Outline
This section provides an outline of the course:
Module 1, Getting Started with Databases and Transact-SQL in SQL Server 2008
This module covers how client/server architecture works, and the various database and business tasks that
can be performed by using the components of SQL Server 2008. It also covers SQL Server database
concepts such as relational databases, normalization, and database objects. As well as, how to use T-SQL
to query databases and generate reports.
Module 2, Querying and Filtering Data
This module covers the basic Transact-SQL (T-SQL) statements that are used for writing queries, filtering
data, and formatting result sets.
Module 3, Grouping and Summarizing Data
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This module covers grouping and summarizing data when generating reports in Microsoft SQL Server
2008 by using aggregate functions and the COMPUTE clause.
This module covers basic and correlated subqueries and how these compare with joins and temporary
tables. It also covers using common table expressions in queries.
Module 6, Modifying Data in Tables
This module covers modifying the data in tables by using the INSERT, DELETE, and UPDATE statements. In
addition, it covers transactions work in a database, the importance of transaction isolation levels, and how
to manage transactions.
This module covers best practices for querying complex data. It also covers how to query complex table
structures such as data stored in hierarchies and self-referencing tables. It also covers the recommended
guidelines for executing queries and how to optimize query performance.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Course Materials
The following materials are included with your kit:
Course Handbook A succinct classroom learning guide that provides all the critical technical
information in a crisp, tightly-focused format, which is just right for an effective in-class learning
experience.
Lessons: Guide you through the learning objectives and provide the key points that are critical to
the success of the in-class learning experience.
Labs: Provide a real-world, hands-on platform for you to apply the knowledge and skills learned
in the module.
Module Reviews and Takeaways: Provide improved on-the-job reference material to boost
knowledge and skills retention.
Lab Answer Keys: Provide step-by-step lab solution guidance at your finger tips when its
needed.
Course evaluation At the end of the course, you will have the opportunity to complete an online
evaluation to provide feedback on the course, training facility, and instructor.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Important: At the end of each lab, you must close the virtual machine and must not save any
changes. To close a virtual machine without saving the changes, perform the following steps: 1. On
the virtual machine, on the Action menu, click Close. 2. In the Close dialog box, in the What do you
want the virtual machine to do? list, click Turn off and delete changes, and then click OK.
The following table shows the role of each virtual machine used in this course:
Software Configuration
The following software is installed on each VM:
Windows Server 2008 Enterprise Edition
SQL Server 2008
Course Files
There are files associated with the labs in this course. The lab files are located in the folder E:\Labfiles on
the student computers.
Classroom Setup
Each classroom computer will have the same virtual machine configured in the same way.
This course requires that you have a computer that meets or exceeds hardware level 5.5, which specifies a
2.4gigahertz (GHz) (minimum) Pentium 4 or equivalent CPU, at least 2 gigabytes (GB) of RAM, 16
megabytes (MB) of video RAM, and two 7200 RPM 40-GB hard disks.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-1
Module 1
Getting Started with Databases and Transact-SQL in SQL
Server 2008
Contents:
Lesson 1: Overview of SQL Server 2008 1-3
Lesson 2: Overview of SQL Server Databases 1-8
Lesson 3: Overview and Syntax Elements of T-SQL 1-14
Lesson 4: Working with T-SQL Scripts 1-23
Lesson 5: Using T-SQL Querying Tools 1-27
Lab: Using SQL Server Management Studio and SQLCMD 1-34
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module Overview
Transact SQL or T-SQL is the primary programming language of Microsoft SQL Server 2008. A
comprehensive understanding of T-SQL commands and the T-SQL language is important for all SQL
Server Administrators. T-SQL commands can be used for querying a SQL Server. A query is a request for
data that is stored in SQL Server.
By understanding how SQL Server 2008 utilizes TSQL and how to apply it to business needs, the
administrator can be more responsive and comprehensive in design and troubleshooting. By
understanding the underlying design of SQL Server 2008, the database administrator will be better
prepared for new projects and challenges.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-3
Lesson 1
Overview of SQL Server 2008
It is important to understand the basic underlying principles of SQL Server. The SQL Server 2008 Database
Engine is a service for storing and processing data in either a relational format or as XML documents.
Understanding these components and their related tools is fundamental to building and managing SQL
Server systems.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Client/Server Architecture is the use of a client to connect to a server for processing.
In a two-tier client/server system, users run an application on their local computer, known as a client,
which connects over a network to the server running SQL Server.
The client application runs both business logic and the code to display output to the user, and is also
known as a thick client.
You can also use SQL Server in a Client/Server Application where the databases are on a server and
you use an application that connects for backend process.
Question: What types of Client/Server architecture systems do you use at your current organization?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-5
Key Points
There are many optional components of SQL Server.
Use the Feature Selection page of the SQL Server Installation Wizard to select the components to
include in an installation of SQL Server.
By default, none of the features in the tree are selected.
Question: Have you used any of these SQL Server components before?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are several important management tools in SQL Server.
Use the Feature Selection page of the SQL Server Installation Wizard to select the SQL Server
Management Tools to include in an installation of SQL Server.
The Connectivity Components installs components for communication between clients and servers,
and network libraries for DB-Library, ODBC, and OLE DB.
Question: Have you used any of these SQL Server management tools before?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-7
Key Points
The Database Engine is the core service for storing, processing, and securing data.
The Database Engine provides controlled access and rapid transaction processing to meet the
requirements of the most demanding data consuming applications.
Use the Database Engine to create relational databases for online transaction processing or online
analytical processing data.
The latest version of SQL Server features SQLOSa user level highly configurable operating system
with powerful API, enabling automatic locality and advanced parallelism.
SQLOS provides operating system services such as a non-preemptive scheduling, memory
management, deadlock detection, exception handling, hosting for external components such as
Common Language Runtime (CLR) and other services.
SQLOS exposes cohesive API to developers so that they can easily exploit features of hardware and
the operating system.
The SOS scheduling subsystem consists of scheduling nodes, schedulers, tasks, workers and system
threads.
SQLOS memory management consists of memory nodes, memory clerks, caches, pools, and memory
objects.
SQLOS contains several threads to provide self monitoring and adequate resource distribution.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 2
Overview of SQL Server Databases
Relational databases are powerful tools. Behind just about any complex application is a relational
database. The tables, views, indexes, and stored procedures that constitute a relational database are the
gears of these applications.
Understanding the basic principles of relational databases, database normalization, and data types
provides administrators with the knowledge to build powerful, highly scalable, reliable SQL Server
enterprises.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-9
Key Points
A relational database is a complex database that stores data in multiple tables that are interrelated.
Usually the tables in a relational database have one-to-many relationships.
The relational database server of SQL Server has two main parts: the relational engine and the storage
engine.
The two engines work independently, interacting with each other through native data access
components such as Object Linking and Embedding and Database (OLE DB).
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
What Is Normalization?
Key Points
Normalization is the process of organizing data in a database.
The normalization process includes creating tables and establishing relationships between those
tables according to rules designed to protect the data and to make the database more flexible by
eliminating redundancy.
Reasonable normalization of a database design yields the best performance.
Question: Have you ever implemented normalization before? Did you find that it improved SQL Server
performance?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-11
Key Points
The normalization process includes the first, second, and third normal form.
With SQL Server, reasonable normalization often helps rather than hurts performance.
As normalization increases, so do the number and complexity of joins required to retrieve data.
There are a few rules for database normalization. Each rule is called a normal form. If the first rule is
observed, the database is said to be in first normal form. If the first three rules are observed, the
database is considered to be in third normal form.
Although other levels of normalization are possible, third normal form is considered the highest level
necessary for most applications.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are many different database objects.
Tables are the main form for collection of information. Tables are objects that contain all the data in
SQL Server databases.
A view can be thought of as either a virtual table or a stored query. The data accessible through a
view is not stored in the database as a distinct object. What is stored in the database is a SELECT
statement.
An index is an on-disk structure associated with a table or view that speeds retrieval of rows from the
table or view.
The main difference between a trigger and a stored procedure is that the former is attached to a
table and is only fired when an INSERT, UPDATE or DELETE occurs.
Stored procedures in SQL Server are similar to procedures in other programming languages in that
they can: accept input parameters and return multiple values in the form of output parameters to the
calling procedure or batch.
The primary job of a constraint is to enforce a rule in the database.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-13
Key Points
SQL Server supplies a set of system data types that define all the types of data that can be used with SQL
Server.
You can also define your own data types in T-SQL or the Microsoft .NET Framework.
Alias data types are based on the system-supplied data types.
User-defined types obtain their characteristics from the methods and operators of a class that you
create.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 3
Overview and Syntax Elements of T-SQL
It is important to not only understand how to use and write T-SQL code, but also understand the
organizational types of T-SQL commands. Comprehensive knowledge of T-SQL allows administrators to
manage SQL Server systems and the code that operates them.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-15
Key Points
SQL was developed by IBM in the early 1970s. SQL was adopted as a standard by the American National
Standards Institute (ANSI) in 1986 and the International Standards Organization (ISO) in 1987.
Microsofts implementation of SQL is known as T-SQL. It is the language that is used to create queries
for SQL Server.
There are other implementations of SQL such as Oracles PL/SQL, Procedural Language/SQL and
IBMs SQL Procedural Language.
Question: Have you used any other implementation of SQL besides T-SQL?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are five categories of SQL statements.
DML is the category of SQL statements that included changes to the data within the database. These
include the UPDATE, DELETE, and INSERT statements.
DCL is the category of SQL statements that are associated with rights to objects within the database.
These include GRANT, REVOKE, and DENY.
DDL is the category of SQL statements that are associated with the implementation, changing, or
deletion of objects for or within a database. These include CREATE, TRUNCATE, DROP, and ALTER.
TCL is abbreviation of Transactional Control Language. It is used to manage different transactions
occurring within a database. These include COMMIT, SAVE POINT, ROLLBACK.
SQL Queries are often considered part of the DML. But when started with a SELECT, there are no
changes to the data used in the query.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-17
Key Points
There are four primary properties to the SELECT statement.
The SELECT statement retrieves data from SQL Server and returns it to the user in one or more result
sets.
A result set is a tabular arrangement of the data from the SELECT. Like an SQL table, the result set is
made up of columns and rows.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Operators provide various ways of manipulating and comparing information.
Logical Operators are used to specify how multiple search terms are combined in a search query.
Logical operators also create more complicated search expressions from simpler ones, and thus refine
your search.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-19
Key Points
The above list is a sample of what is available in T-SQL.
Additional user-defined functions are also available.
Scalar functions can be used wherever an expression is valid.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A Transact-SQL local variable is an object that can hold a single data value of a specific type.
The variable has a data type that is defined.
When a variable is first declared, its value is set to NULL.
To assign a value to a variable, use the SET statement.
A variable can also have a value assigned by being referenced in the select list of a SELECT statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-21
Key Points
Expressions are combination of symbols and operators that the SQL Server Database Engine evaluates to
obtain a single data value.
Simple expressions can be a single constant, variable, column, or scalar function.
Operators can be used to join two or more simple expressions into a complex expression.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Control-of-flow Statements
Key Points
T-SQL provides special words called control-of-flow language that control the flow of execution of T-SQL
statements, statement blocks, user-defined functions, and stored procedures.
Without control-of-flow language, separate T-SQL statements are performed sequentially, as they
occur.
Control-of-flow language permits statements to be connected, related to each other, and made
interdependent using programming-like constructs.
These control-of-flow words are useful when you need to direct T-SQL to take some kind of action.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-23
Lesson 4
Working with T-SQL Scripts
Writing T-SQL scripts is easy, but it is important to understand the basic principles, like commenting code
in order to write scripts that will have solid underlying structure.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Batch directives control movement within a T-SQL file.
Batch directives impose conditions on the execution of T-SQL statements.
GO is a batch directive which signals to SQL Server to execute the batch.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-25
Key Points
TRY...CATCH implements error handling for T-SQL that is similar to the exception handling in the
Microsoft Visual C# and Microsoft Visual C++ languages.
A group of SQL statements are enclosed within a TRY statement. If an error is found control is passed
to the CATCH block. The CATCH block follows immediately after the TRY block.
RAISERROR allows the creation of an error message. These can be used within a TRY/CATCH to create
an event that displays a customized message.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Comments are non-executing text strings in program code (also known as remarks).
Comments can be used to document code or temporarily disable parts of T-SQL statements and
batches being diagnosed.
Using comments to document code makes future program code maintenance easier.
Comments are often used to record the program name, the author name, and the dates of major
code changes.
Comments can be used to describe complicated calculations or explain a programming method.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-27
Lesson 5
Using T-SQL Querying Tools
There are many tools available for creating and maintaining SQL Server T-SQL code structures. It is
important to understand how T-SQL scripts are grouped and organized into projects.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are four main tools for querying SQL Server databases.
The bcp utility bulk copies data between an instance of SQL Server and a data file in a user-specified
format.
The sqlps utility starts a Microsoft PowerShell session with the SQL Server PowerShell provider and
cmdlets loaded and registered.
Question: Have you used any of these tools for querying SQL Server databases?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-29
Key Points
Microsoft SQL Server Management Studio is a single, integrated environment for SQL Server Database
Engine management and authoring. Within SQL Server Management Studio:
The error and informational message box presents information, allows you to send Microsoft a
comment about the messages, allows you to copy messages to the clipboard, and allows you to e-
mail the messages to your support team.
The SQL Server Management Studio has an activity monitor with filtering and automatic refresh.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A solution includes projects and files that define the solution.
SQL Server Management Studio provides two containers for managing database projects such as
scripts, queries, data connections, and files: solutions and projects.
A project is a set of files, plus related metadata such as connection information. The files in a project
depend on which SQL Server component the project is for.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-31
Key Points
Solutions contain scripts, queries, connection information and files that you need to create your database
solution.
When you create a project, SQL Server Management Studio creates a solution to contain it.
You can only open one solution at a time.
SQL Server Management Studio does not allow you to create folders within projects.
To organize your work, create multiple projects.
You can use Solution Explorer to handle the details of file management while you focus on the
items that make up your database solution.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
In the Database Engine Query window, you can interactively code Transact-SQL and XQuery statements to
query databases and change the data.
The Database Engine Query Editor supports dynamic F1 help, auto-completion, code outlining, a T-
SQL debugger, IntelliSense, and other productivity aids.
In the Object Explorer, you can right-click tables or views and select menu items that let you select
or edit rows.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-33
Key Points
There are four steps to generating report in Microsoft Office Excel.
You can use an Office Data Connection (.odc) file to connect to a SQL Server database from a
Microsoft Office Excel 2007 file.
MS Query can also be used to customize the type of information you would like to retrieve.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-35
Management Studio | Tutorial: SQL Server Management Studio | Lesson 1: Basic Navigation in SQL
Server Management Studio.
View the Lesson 1: Basic Navigation in SQL Server Management Studio page.
View the Connecting with Registered Servers and Object Explorer page.
Task 3: Resize, hide, and close Object Explorer and Solution Explorer
Resize the Contents pane.
Close the Help window.
Auto Hide the Solution Explorer pane.
Auto Hide the Object Explorer pane.
Task 4: Create a new solution and explore the solution objects in Object Explorer
Dock the Object Explorer pane.
View the AdventureWorks2008 tables.
Create a new query.
Dock the Solution Explorer pane.
Add a new project.
Name: PersonAddress
Create a new connection.
Task 5: Add projects to an existing solution and create queries in the projects
Create a new query.
Enter the query window.
Query: USE AdventureWorks2008
Execute the query.
Notice the active database is changed from master to AdventureWorks2008.
Add additional text to the query window.
Query: SELECT DISTINCT CITY FROM Person.Address
Execute the query.
Rename SQLQuery1.sql.
Query: Address.sql
Save Address.sql.
Save PersonAddress.ssmssqlproj.
Add a new project.
Name: HumanResourcesDepartment
Create a new connection.
Create a new query.
Rename the query.
Name: Department.sql
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have explored the components and executed queries in the SQL
Server Management Studio.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-37
Task 1: Start the sqlcmd utility and connect to a default instance of SQL Server
Open Command Prompt.
Type sqlcmd.
End the sqlcmd session.
Task 3: Run a Transact-SQL script file and save the output to a text file
In the Command Prompt window, type a sqlcmd command:
Command: sqlcmd -S NY-SQL-01 -i E:\MOD01\Labfiles\Starter\Department.sql -o
E:\MOD01\Labfiles\Solution\DeptList.txt
Close Command Prompt.
Results: After this exercise, you should have started and used sqlcmd to create reports.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should create a report from a SQL Server database using Microsoft
Office Excel.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Getting Started with Databases and Transact-SQL in SQL Server 2008 1-39
Review Questions
1. What examples of a third tier client server architecture have you seen at work?
2. Which server management tool do we use to create optimal sets of indexes and partitions?
3. How would you quickly create graphs and reports from SQL data?
4. What are the two main parts of the relational database server?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Tools
Tool Use for Where to find it
Microsoft SQL Server Managing SQL server Start | All Programs | Microsoft SQL Server 2008
Management Studio databases and tables.
SQL Server Business Managing SQL server Start | All Programs | Microsoft SQL Server 2008
Intelligence Development applications.
Studio
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module 2
Querying and Filtering Data
Contents:
Lesson 1: Using the SELECT Statement 2-3
Lesson 2: Filtering Data 2-7
Lesson 3: Working with NULL Values 2-16
Lesson 4: Formatting Result Sets 2-20
Lesson 5: Performance Considerations for Writing Queries 2-27
Lab: Querying and Filtering Data 2-31
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module Overview
The SELECT statement is the most fundamental statement type in Transact-SQL. By using a SELECT
statement, you can retrieve data from a database for viewing or printing.
In this module, you will learn the format of the SELECT statement as well as some of the finer points of
querying different types of data.
You will also learn some basics for formatting the selected data for easier interpretation.
The SELECT statement is the primary statement used for ad hoc queries against a database. Ad hoc
queries are special purpose queries that are typically used a limited number of times, and therefore
discarded after the data has been retrieved. These queries are typically created by end users or developers
who need a quick view into the database.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 1
Using the SELECT Statement
By using SELECT, you are able to retrieve data from a data source in its entirety or as a subset of the data.
This allows you to retrieve data relevant to your particular needs at a given time, and format the data for
easy readability or print output.
In this lesson, you will learn how to use the basic SELECT and how to retrieve specific rows from the data
source.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A SELECT statement requires:
Select list of columns to retrieve
FROM clause to establish the data source
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The select list of a SELECT statement can use a list of column names to retrieve or the '*' wildcard. If the '*'
wildcard is used, then all columns in the data source will be retrieved and displayed.
The FROM clause allows you to designate the data source to retrieve the data rows from. A data source
can be the name of table or a view in the database.
Column names are designated in the select list.
The '*' wildcard can be used to display all data columns.
Retrieving all columns from a data source can degrade network performance.
Retrieving all columns from a data source can make the result set difficult to read.
The FROM clause contains the names of tables or views that the data is to be retrieved from.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: Considering the two ways of requesting columns from a table, which tables in the databases
you work with are probably fine for using the generic * instead of listing each column?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 2
Filtering Data
Filtering data is the process of specifying criteria so that you only receive the specific data rows that you
require. This can be done in Microsoft SQL Server by using comparison operators, string value
comparisons, logical operators, ranges of values, and lists of values.
Nearly all queries and reports that you will be asked to create for your organization will require that the
data be filtered to meet specific requirements. The requirements will differ by department and user.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The WHERE clause is used to set criteria for the result set. These criteria can be based on specific column
data, ranges of data, or comparisons of the data in the data source. You can even test for NULL values, or
empty columns.
SELECT statements do not require a WHERE clause. However, the result set can be very large if you do not
filter the data by designating criteria.
The WHERE clause is an optional part of the SELECT statement.
WHERE designates criteria for the data that is to be retrieved.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Comparison operators check two values, or expressions, to see if they are the same. If the values are the
same, the comparison returns a TRUE result. If they are different, a FALSE value is returned
If either of the values is NULL, or empty, the comparison will return a value of UNKNOWN. This requires
special handling that you will learn about later in this module.
Comparison operators include:
= (equal)
<> or != (not equal)
> (greater than)
<(less than)
>= (greater than or equal)
<= (less than or equal)
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
String comparisons are different than regular comparison operators. String comparisons allow you to
check the entire string in a column or only part of the string by using wildcards. You also have special
comparisons available that look to see if a given string is a substring of a value.
= checks to see if the string value is the same as the expression.
LIKE with wildcards checks for a specified pattern in a given string value.
% wildcard replaces any string of zero or more characters
_ (underline character) wildcard replaces any single character
FREETEXT searches columns for values that match the meaning and not just the exact wording in the
search condition.
CONTAINS conducts a "fuzzy" search.
Question: When searching string data within a table which comparison do you think would be used the
most? Why would this be most common?
Question: In the LIKE statement, where is the appropriate location to place the % sign and why?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Logical operators, AND, OR, and NOT allow expressions to be combined for filtering data.
AND combines both expressions and requires them to be TRUE.
OR tests to see if either one or both of the expressions returns TRUE.
NOT tests to see if the first expression is TRUE and that the second expression is FALSE for each row
returned in the result set.
Question: In a very large table why would do you think the NOT operator might be the least efficient one
to use?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Operator Precedence
Key Points
Operator precedence designates the order in which each operator is evaluated in an equation. The more
complex the equation, the more important it is to consider precedence. Along with evaluation of
operators based on the order above also consider:
All operators that are at the same precedence level are evaluated from left to right.
Parentheses are used to change the order of evaluation. Everything in parentheses is evaluated before
the default precedence order is used.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Sometimes a range of values can be defined for filtering data. Instead of writing a WHERE clause with
multiple expressions connected by the OR operator or using = and <= expressions, you can use the
BETWEEN predicate to specify a low and high value. This is equivalent to using a >= AND <= expressions.
BETWEEN is most commonly used to define data ranges, but is also used to define other ranges of values
as well.
BETWEEN is equivalent to >= AND <=.
BETWEEN uses a low value and a high value to create the filter.
BETWEEN includes the low and high values in the result set.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are times when filtering for data that can have many possible values in a single column can get
cumbersome. This will typically be expressions like the second example above that are all evaluated with
an OR operator.
Transact-SQL has a special IN operator that allows the entry of possible values separated by commas.
These values are then used like multiple OR expressions to filter the data. IN can also accept a single
column result set from a sub query to populate the list.
IN is the same as many expressions with OR between them.
IN accepts a comma separated list of values.
IN can accept a single column result set from a sub query.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 3
Working with NULL Values
NULL values require special handling. NULL values are essentially undefined values they can create
unexpected results when encountered in filtered columns. Usually, the result set will simply not include
data that you wish to see just because of the presence of a NULL value.
By using IS NULL, IS NOT NULL, NULLIF, and COALESCE, you can test for and handle NULL values so that
all of the data you are expecting will be included in the result set.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
NULL values can be the result of creating rows in a table and neglecting to set an explicit value for one of
the columns. They can also occur in columns that are created with the SPARSE keyword to conserve space
when an explicit value is not given.
Some characteristics of NULL values include:
NULL returns a value of UNKNOWN.
NULL is not a zero value.
NULL is not an empty string.
NULL compared to any other value or another NULL always returns UNKNOWN.
NULL values in calculations will return an UNKNOWN value.
IS NULL in the WHERE or HAVING clause tests for NULL values.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Because NULL values can turn up unexpectedly, it is a good idea to have some tools to deal with them
when they are encountered. Special functions such as ISNULL(), NULLIF(), and COALESCE() allow you to
substitute actual values when NULL values are encountered.
The ISNULL function assigns a value that will be returned if the argument value is NULL. The example
above will return 0 if the MaxQty column value is NULL.
The NULLIF function returns NULL if both arguments are equal. The example above will return the
MakeFlag value if both values are different or a NULL value if both values are equal.
The COALESCE function tests multiple arguments and returns the first one in the argument list that
does not have a NULL value. The example above assumes that an employee can only have one wage
type and returns the value of the wage assigned.
Question: When working with data, which data types would you expect to contain NULL values? How can
you determine exactly which columns in your organizations tables are allowed to have NULL values?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: Handling a NULL value is a very important part of retrieving accurate data for your
organization. Considering these three functions, in what types of queries do you anticipate using each
one?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 4
Formatting Result Sets
Retrieving the data is only the beginning. Once you have the data you are looking for, it needs to be
formatted and grouped to make it more readable. Transact-SQL provides many ways to format your data
including: grouping and sorting, eliminating duplicate rows and creating custom column labels.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Sorting Data
Key Points
Sorting of data is performed using the ORDER BY clause.
ORDER BY takes a list of column names.
Each column name is a field the data will be sorted on.
If more than one column is present, the sorts will be nested.
Ascending is the assumed sort order.
Sort order is designated with ASC (ascending) and DESC (descending) keywords.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The data being queried will often contain duplicate rows. This is especially the case when you are
querying for only a few of many columns in a table.
Duplicate data can make the result set very long, making it difficult to interpret properly.
To eliminate the duplicate rows in the result set, use the DISTINCT keyword in the SELECT list. When
DISTINCT is used, the result set will contain only one instance of each unique row.
Question: Knowing that DISTINCT processes only those columns returned in the result set, are there
situations where these results may not reflect an accurate representation of unique data?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
SELECT statements can be made easier to read by using aliases. Aliases can be assigned to columns in the
select list and to data sources in the FROM clause.
Aliases for both columns and tables are within the SELECT statement as references to make typing and
reading the statement simpler.
Not only can aliases make the statement easier to read, they can make the result set easier to read and
interpret.
Use column aliases in the result set as column headers. The example above uses column aliasing to
change BusinessEntityID to the more meaningful Employee.
Use the optional AS clause between the column name and alias for easier readability.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
String literals are static strings that inserted into derived columns, such as a comma between
concatenated name parts. They can also be used as alternate values instead of column values in functions
such as NULLIF() and COALESCE().
Column and table aliases are not string literals.
String literals can be used by functions as alternate return values.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
U
Using Expre
essions
K Points
Key
Exxpressions can
n make a queryy more useful by allowing yo
ou to use calcu
ulations and fu
unctions to cre
eate
deerived columnns and complexx search argum
ments.
Functions can
c be included in either the
e select list or the WHERE cla
ause.
Derived collumns created by expression
ns require that you assign an
n alias.
Calculations can be used to create com
mplex mathema
atical criteria for filtering data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: Formatting the result sets helps the reader interpret the data. What other reasons are there for
creating result sets with a specific formatting?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 5
Performance Considerations for Writing Queries
Queries are examined by the query optimizer before they are used to access data. The query optimizer
parses the query and creates a list of steps that need to be taken to retrieve the data for the result set.
This list of steps is then run through an algorithm that determines the best order of steps and method for
each step.
There are a few simple things that can be done to help the query optimizer choose the best plan for
executing a query. You will learn some of these techniques in this lesson.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
When the query optimizer examines a query it first parses the query into its logical units and then builds a
list of steps that are needed to access the data source. The steps are then evaluated to determine a
number of possible ways that they can be accomplished. Each of these possibilities is called an execution
plane.
At this point, the optimizer calculates the resource cost of each execution plan and decides which one is
least costly.
That plan is then passed on to the relational engine for execution and the result set is formatted and
returned for viewing.
The query optimizer may create many different execution plans for a query.
Each plan is weighted as to its cost in resources and the lowest perceived cost plan is executed.
You can include commands in the query to enable you to view the selected plan.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
It is hard to know if your query is truly efficient unless you have a complex query with a considerable
amount of data to go through. However, there are some things that you can avoid, or do that can help
the optimizer find the best execution plan for any query.
Things to avoid:
Columns in the WHERE clause that do not have an index.
Wildcards at the beginning of a LIKE clause.
Expressions that include column values in the WHERE clause.
Things that will help:
Use constants for comparisons against column values whenever possible.
Use indexed columns in search arguments.
Use variables that have known values instead of variables that require frequent recalculation.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Sometimes the query is as efficient as you can make them but performance is not optimal. In these cases,
you may have to take some of the following suggestions to your Database Administrator for help:
Have the administrator look at the columns you use most often for filtering data and create or update
indexes on those columns.
Have the administrator create views for the most frequently used queries.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Generate a report by using the SELECT * statement with the FROM clause
Start SQL Server Management Studio and connect to NY-SQL-01.
In a new query window, create a query that uses the AdventureWorks2008 database and displays all
columns and all rows from the Person.Person table.
Execute the query and browse the results.
Task 3: Generate a report by using the SELECT statement with the FROM clause
In a new query window, type and execute an SQL statement that:
Accesses the Person.Person table in the AdventureWorks2008 database.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have learned how to create a basic SELECT statement to retrieve
data from a table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
In this exercise, you will learn the different methods used to query for specific rows of data from a table.
The main tasks for this exercise are as follows:
Task 1: Generate a report by using the SELECT statement with a COMPARISON operator
In a new query window enter and execute a SELECT statement that:
Accesses the Production.Product table in the AdventureWorks2008 database.
Includes the ProductNumber, Name, ListPrice, Color, Size, and Weight columns.
The ListPrice must be lower than $100.
Browse the result set.
Task 2: Generate a report by using the SELECT statement with the AND and LIKE
operators
Change the SELECT statement so that it:
Accesses information in the Production.Product table of the AdventureWorks2008 database.
Includes ProductNumber, Name, ListPrice, Color, Size, and Weight
The ListPrice is less than $100
The ProductNumber column begins with the string SO.
Browse the result set and notice that all of the rows returned contain the word "SO".
Task 3: Generate a report by using the SELECT statement with the OR operator
Change the query to include rows with the TG as well as SO in the Name column.
Execute the query.
Browse the result set and note the additional rows for tights.
Task 4: Generate a report by using the SELECT statement with the BETWEEN operator
Change the query to select rows that:
Display rows with SO included in the Product Number.
Or rows of tights that have a list price between $50 and $180.
Execute the query.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Browse the result set and note that the number of rows has changed and the column data matches
the new search conditions.
Task 5: Generate a report by using the SELECT statement with the IN operator
Add a search condition that limits 'tights' to sizes 'M' and 'L'.
Execute the query.
Note the additional filtering of the data rows within the result set.
Results: After this exercise, you should have learned how to use several different comparison operators
to create reports specific to different user needs.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
In this exercise, you will learn ways to locate and handle NULL values when querying data.
1. Generate a report by using the SELECT statement with the NULL function.
2. Generate a report by using the SELECT statement with the IS NULL function.
3. Generate a report by using the SELECT statement with the ISNULL function to rename values.
4. Generate a report by using the SELECT statement with the ISNULL function and a column alias.
5. Generate a report by using the SELECT statement with the ISNULL function and the COALESCE and
CONVERT functions.
Task 1: Generate a report by using the SELECT statement with the NULL function
In a new query window, enter and execute a SELECT statement that:
Retrieves rows from the Production.Product table in the AdventureWorks2008 database.
Includes ProductNumber, Name, and Weight.
Uses the = operator to check ProductLine for a NULL value.
Browse the result set and note the total number of rows.
Task 2: Generate a report by using the SELECT statement with the IS NULL function
Change the statement to use IS NULL to select rows with a value of NULL in the ProductLine column.
Execute the query.
Browse the result set and notice the number of rows returned and the data displayed in the
ProductLine column.
Task 3: Generate a report by using the SELECT statement with the ISNULL function to
rename values
In a new query window, enter and execute a SELECT statement that:
Accesses the Production.Product table in the AdventureWorks2008 database.
Displays the ProductNumber, Name, Weight, and ProductLine columns.
Use the ISNULL() function to display 'NA' when a NULL value is encountered in the ProductLine
column.
Browse the result set and note the additional column and values.
Also make note of the column headings.
Task 4: Generate a report by using the SELECT statement with the ISNULL function and a
column alias
Change the statement to add "Product Line" as a column heading for the ProductLine column.
Execute the query.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Note that the result set is identical but with a column heading over the new column.
Task 5: Generate a report by using the SELECT statement with the ISNULL function and
the COALESCE and CONVERT functions
Rewrite the statement to use the COALESCE() function to create a new column named Measurement
so that:
If the Weight column has a value it is shown in the Measurement column.
If the Weight column is NULL but the Size column is not NULL, display the value in the
Measurement column.
If both columns have NULL values display 'NA'.
Execute the query.
Browse the result set and notice the new values in the 'Measurement' column.
Results: After this exercise, you should have learned to handle NULL values in a result set by identifying
them and replacing them with alternate values when necessary.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Format a result set by using the ORDER BY clause and the DESC keyword
Rewrite the SELECT statement to:
Add the ListPrice column.
Sort the data by Class.
Sort by ListPrice in descending order within each class.
Execute the query.
Browse the new result set.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 5: Format a result set by concatenating strings and using column aliasing
Rewrite the query to assign the column name 'Contacts'.
Execute the query.
Note the new column name in the result set.
Results: After this exercise, you should have learned how to format the result sets to make them more
readable.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review Questions
1. When creating a WHERE clause by entering search conditions that include column data, what do you
need to consider to help the query optimizer create the lowest cost execution plan? Why or how do
these make a difference?
2. NULL values are present in many databases, usually by design. What can you do to discover where
NULL values may be stored? Why is it important to know where NULL values can be encountered?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module 3
Grouping and Summarizing Data
Contents:
Lesson 1: Summarizing Data by Using Aggregate Functions 3-3
Lesson 2: Summarizing Grouped Data 3-9
Lesson 3: Ranking Grouped Data 3-19
Lesson 4: Creating Crosstab Queries 3-26
Lab: Grouping and Summarizing Data 3-31
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module Overview
The ability to perform grouping and summaries of data is very important .for a developer to deliver
meaningful reports to .users. This ability is delivered via aggregate functions, usually with grouped data.
Aggregate functions are functions that operate on sets, or rows, of data, as opposed to set functions
which operate on individual values. Aggregates can be applied in several ways, including the use of
custom aggregates.
This module begins with an introduction of how to summarize data using aggregate functions. It then
discusses how to apply these functions to grouped data. It also describes how to rank grouped data .as
well as using special operators to create crosstab queries.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 1:
Summarizing Data by Using Aggregate Functions
Microsoft SQL Server 2008 provides several aggregate functions to help the developer summarize
data. These functions can compute averages, sum values and count results. NULL values often require
special attention when using aggregate functions. The ability to create custom aggregate functions is also
present.
In this lesson, you will learn how to summarize data by using aggregate functions, whether built in or
custom, and how to work with NULL values when using these functions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Some common functions are AVG, MIN, MAX, SUM, COUNT, GROUPING and VAR.
Aggregate functions perform calculations on a set, or group, of values and return .a single value.
Note that the various aggregate functions work on differing date types for instance AVG and SUM
only work with numeric types.
Aggregate functions usually obtain their sets of values to work on via the GROUP BY clause. When
there is no GROUP BY, the functions get their groups from the entire table filtered by the WHERE
clause.
Aggregate functions can only appear in the SELECT statement, COMPUTE/COMPUTE BY clause and
the HAVING clause.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Most aggregate functions ignore NULL values. This can have unpredictable results. For instance,
should you need to average records with potential NULL values, you may want to have the NULL
values represent zero.
The use of the ISNULL set function easily works .in cases where you want to include special handling
for NULL values.
Note the difference between COUNT(column) and COUNT(*). .If you want to count records that have
a null value, you might get incorrect results because the COUNT() function, when used on a column,
ignores null. In this case, COUNT(*) would be the correct choice.
Question: Why is it important to be aware of and handle NULL values in aggregate functions?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Beginning with Microsoft SQL Server 2005, SQL Server features the integration of the common
language runtime (CLR) component of the .NET Framework for Microsoft Windows.
Stored procedures, triggers, user-defined types, user-defined functions, user-defined aggregates, and
streaming table-valued functions, can be written using any .NET Framework language (such as C# and
VB.NET).
Your custom code is compiled into CLR assemblies to later be loaded into the SQL Server Process via
T-SQL commands.
This allows you to leverage the entire .NET API in your triggers, stored procedures, or wherever CLR
code is allowed.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Custom aggregate functions are developed for use in SQL Server via CLR Integration.
Custom aggregates are essentially programs you create in .NET to be used to perform complex logic
and calculations.
You compile custom aggregates into .NET assemblies and load them into a CLR enabled SQL Server
by using the CREATE ASSEMBLY statement.
You then create the aggregate with the CREATE AGGREGATE statement.
Once a User Defined Aggregate (UDA) is loaded into a SQL Server instance, it is readily used like any
other built in aggregate function.
Question: Why use a custom aggregation function if youre comfortable with handling the logic in T-
SQL?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: What would be the best aggregate function to use when counting records in a table?
Question: How can you restrict one of the sample queries in this demo to only account for a certain
range of employees?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 2
Summarizing Grouped Data
Aggregate functions can be applied to whole and unfiltered tables, but these functions really show their
usefulness when used in conjunction with grouped sets of data. In SQL Server, the grouping of data can
come via the use of several T-SQL clauses and operators.
In this lesson, you will learn how to summarize grouped data by using these clauses and operators.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The GROUP BY clause is used to group rows together into result sets.
When performing grouping in a query, the query results will be grouped by the columns listed in the
GROUP BY clause. It is this grouping that creates the sets that aggregate functions work with. Hence if
you want to SUM the LineTotal for each SalesOrderDetail record, you would want to group on a
column that identifies each sales order uniquely; the SalesOrderID column in this case.
When using the GROUP BY clause, all columns in the SELECT list not part of an aggregate expression
will be used to group the results via the GROUP BY clause. If you dont want to group on a column,
dont put it in the SELECT list.
NULL values are included in a columns grouping - all NULL values are considered equal and thus
placed into their own group.
Question: Why might you want to group results is this absolutely necessary?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
The HAVING clause is an optional clause that can be used to narrow down a result set by setting
criteria on aggregate values, effectively replacing the WHERE clause.
The HAVING clause is used to filter rows after the grouping has been applied, but before the results
are returned to the client.
You can only include aggregate expressions and columns that are listed in the GROUP BY clause.
It is a good practice to filter your aggregate results using a HAVING clause, not in a WHERE clause.
The HAVING clause can also be used like a WHERE clause if GROUP BY is not used in the query.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
GROUP BY HAVING
When using aggregation functions, columns in Filters grouping data after the grouping has
SELECT list must either be in a function or in occurred but before sent as results.
the GROUP BY.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Both ROLLUP and CUBE are new operators used in the GROUP BY clause. They both generate
summary information in a query.
ROLLUP CUBE
One row with a subtotal is generated for each Outputs a grouping for all combinations of
unique combination of the columns in the expressions.
select list.
Column order affects output groupings (rollup Column order doesnt affect CUBE output.
direction)
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The ROLLUP example generates a subtotal for each unique combination of values for (a,b,c), (a,b),
and (a). A grand total row is also created.
The CUBE example generates a row for each unique combination of values of (a,b,c), (a,b), (a,c), (b,c),
(a), (b), and (c) with a subtotal for each row and a grand total row.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: What could be some determining factors on whether you chose to use a ROLLUP vs. a CUBE
query?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
COMPUTE generates totals that appear as additional summary columns at the end of the result set.
COMPUTE creates two result sets for each group. The first result set contains detail rows from the
SELECT statement for that group, the second has one row that contains the subtotals of the
aggregate functions specified in the COMPUTE clause.
COMPUTE BY allows both detail (subtotal) and summary (grand total) rows to be created with one
SELECT statement. Use of COMPUTE BY requires the ORDER BY clause.
You should avoid the COMPUTE and COMPUTE BY clauses as they have been deprecated in favor of
the ROLLUP operator.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Both the COMPUTE and COMPUTE BY examples contain aggregation functions in the COMPUTE
clause.
The first example simply produces grand totals for the SalesOrderDetail table.
In the second example, note the specification of group boundary of SalesPersonID as well as the
ORDER BY clause.
The second example returns subtotals demarcated by SalesPersonID via the BY statement. This is
followed by the grand totals, as in the first example.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
GROUPING SETS is a new GROUP By operator that changes how one can perform relational grouping.
Instead of multiple queries with GROUP BY clauses with a UNION ALL, GROUPING SETS lets you do
the same thing in a single query.
GROUPING SETS have additional support for optional grand total rows and can be used in
conjunction with ROLLUP and CUBE operators.
Since GROUPING SETS provide a new angle on grouping data, there are many equivalent operations
to queries which use the standard GROUP BY clause.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 3
Ranking Grouped Data
Ranking refers to the numbering of rows in a set of data given a type of ranking and set of qualifiers.
Ranking can further be applied to a user defined window, or partition, of data.
In this lesson, you will learn how to apply the ranking functions to sets of data in SQL Server.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
What Is Ranking?
Key Points
SQL Server 2008 provides four ranking functions. The four ranking functions each provide differing
ranking output. For instance, some functions return consecutive numbers where others do not.
Ranking functions operate similarly to aggregate functions when it comes to partitions, or windows,
of data.
Ranking functions return a ranking value for each row in a partition depending on what type of
ranking function is used based on its relationship to other rows and the values of the partitioned
column.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
In this example, a RANK query is used to assign rank values based on quantity values in the database.
You could use this same approach to provide a top ten list of customers based on purchase amounts.
Note how the ORDER BY in the OVER clause order the RANK while the ORDER BY of the SELECT
orders the result set.
Tied rows receive the same rank.
Returns the rank of each row within the specified partition of a result set.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
In this example, a DENSE_RANK query is used to provide categorized ranking without any gaps in the
ranking. Exactly like RANK, two items can still tie in their ranking.
DENSE_RANK works the same as RANK except there are no gaps in the ranking sequence.
The rank of a row is one plus the number of distinct ranks that come before the row in question.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
In this example, ROW_NUMBER is being used to categorize and rank rows in a result set. The
sequence in which the rows are assigned row numbers is determined by the ORDER BY clause.
Can be used with or without a PARTITION BY clause which, if used, divides the result set into
partitions to which ROW_NUMBER is applied.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
NTILE has the capability to distribute rows in an ordered partition into a specified number of groups.
In this example, the determining factor that is used to decide the groupings is specified as the
ListPriceas that is the column the partition is ordered by. The groups are partitioned by Category
name.
NTILE is often used in data warehousing.
Distributes rows in an ordered partition on a specified number of groups.
For each row, NTILE returns the number of the group to which the row belongs.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
This table describes the different advantages the various rank functions have.
Some possible business scenarios for the various ranking functions are:
NTILE
Data Warehousing
Divide sales teams into equal sized groupings based on sales figures
RANK, DENSE_RANK
Rank best sales days of the year
Rank best selling products
ROW_NUMBER
Number your contacts in a custom ordering
Question: What ranking function would be most useful in ranking the teams in a sports league where you
dont want gaps in the rankings?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 4
Creating Crosstab Queries
The creation of crosstab queries can be a laborious and error prone process without help from the
platform. SQL Server provides the PIVOT operator to ease this process and the UNPIVOT operator to
reverse data that has previously been PIVOTed.
In this lesson, you will learn how to apply both the PIVOT and UNPIVOT operators to data in SQL Server.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
PIVOT rotates a table-valued expression by turning the unique values from one column in the
expression into multiple columns in the output, and performs aggregations where they are required
on any remaining column values that are wanted in the final output.
PIVOT works by taking values such as EmployeeID and translating them into columns. Note that
PIVOT is commonly used in generating cross tab reports.
UNPIVOT performs the opposite operation to PIVOT by rotating columns of a table-valued expression
into column values.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
You can see that this example is querying the PurchaseOrderHeader table to determine the number
of purchase orders placed by certain employees, ordered by vendor.
The syntax for PIVOT is simpler than would otherwise be used in a complex series of SELECTCASE
statements to achieve similar results.
A common scenario where PIVOT can be useful is when you want to generate cross-tabulation
reports to summarize data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Here you see an example of the use of UNPIVOT to break crosstab result sets into table-valued result
sets.
UNPIVOT does not reproduce the original table-valued expression result because rows have been
merged. If you page back to the PIVOT example, you will see that the results produced by the
UNPIVOT operation do not match exactly the input that the PIVOT operation started with.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Probably the most effective new feature for performing relational grouping is the GROUPING SETS
operator addition to the GROUP BY clause. This new operator allows you to perform several grouping
sets in one query. The older method was to perform several GROUP BY queries and then perform a
UNION ALL between them.
The ROLLUP and CUBE operators arent new features per se but rather syntax changes. Prior to SQL
Server 2008, you would specify WITH ROLLUP or WITH CUBE. In SQL Server 2008, you use ROLLUP
and CUBE almost like functions as you pass the grouped columns into these operators.
There is a new function, GROUPING_ID which returns the level of grouping for a particular column.
This function is an enhancement from the older GROUPING() function which returns a 0 or a 1 to
indicate if the column is aggregated or not.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 1: Start the 2778A-NY-SQL-01 virtual machine, log on as Administrator, and launch
SQL Server Management Studio
Start 6235A-NY-SQL-01, and log on as Administrator with the password of Pa$$w0rd.
Launch SQL Server Management Studio.
Task 2: Create and execute a query that displays a single summary value for all the rows
Create a query that will return the average vacation hours and the total sick leave hours for Vice
Presidents.
Use the AVG and SUM aggregate functions.
Execute the query and review the results.
Task 3: Create and execute a second query that displays a single summary value for all
the rows
Create a query that returns a count of employees.
Use the COUNT function.
Execute the query and review the results.
Task 4: Create and execute a third query that computes the total number of employees
with the Addressline2 value as NULL
Create a query that returns a count of employees where the AddressLine2 column has NULL values.
Use the COUNT and ISNULL functions.
Execute the query and review the results.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have launched SQL Server Management Studio and created
queries to display summary values for rows. You should have also created queries to compute totals and
eliminate NULL values.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 1: Create and execute a query that computes the average number of days to
manufacture a product
Create a query that returns the product ID and average days to manufacture from the Products table.
Use AVG.
Execute the query and review the results.
Task 2: Create and execute a query that displays the various colors of a particular
product and computes the average ListPrice of the colors
Create a query that returns the color and average ListPrice for a specific product.
Use a GROUP BY to ensure the averages are computed for the correct column.
Use a WHERE clause to restrict the query to a single product number.
Execute the query and review the results.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 3: Create and execute a query to generate a report that lists the average order
quantity and sum of line total for each product with a line total that exceeds
$1000000.00, and with average quantity less than 3
Create a query that returns the ProductID, average OrderQty and total of LineTotal.
Use a GROUP BY to ensure the averages are computed for the correct column.
Use a HAVING clause to restrict the query to run for cases where the total and averages of LineTotal
and OrderQty respectively are in the proper ranges.
Dont be afraid to use functions in the HAVING clause.
Execute the query and review the results.
Task 4: Create and execute a query to group the products and then compute the sum of
the quantity shelf-wise
Create a query that returns the ProductID Shelf and total Quantity for a group of products.
Use a GROUP BY with the ROLLUP operator to calculate the columns in a specific order.
Execute the query and review the results.
Task 6: Distinguish the rows generated by the summary or aggregations and actual table
rows
Create a query that summarizes sales quotas and total YTD sales from the SalesPerson table using
the CUBE operator.
Use the GROUPING operator in tandem with the CUBE operator to indicate the column not being
aggregated.
Sum the SalesYTD column.
Execute the query and review the results.
Task 7: Create and execute a query to generate a report of the summary columns by
using the GROUPING function
Create a query that summarizes information about the ProductInventory table using the CUBE
operator and GROUPING operator.
The CUBE operator should be used with multiple columns and the GROUPING should be used with
one of those columns.
Sum the Quantity column.
Execute the query and review the results.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 8: Create and execute a query to generate a report that displays all the products,
the unit price, the unit price discount, and the sum of the columns
Create a query to summarize information about the SalesOrderDetail table using the COMPUTE
clause.
Sum the UnitPrice and UnitPriceDiscount columns without using aggregate functions and GROUP BY
- use the COMPUTE clause.
Execute the query and review the results.
Results: After this exercise, you have learned how to create queries to compute averages, display
additional data and perform summations. You should have also learned how to create queries using
aggregation functions and the GROUPING function.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 1: Generate row numbers for each of the rows in the year-to-date sales of the
salespersons
Create a query that returns numbered rows for the SalesPerson table.
Use the ROW_NUMBER function, specifying the ordering.
Filter the results to prune away sales persons with null territories and no sales.
Execute the query and review the results.
Task 2: Create and execute a second query using the RANK function
Create a query that returns numbered rows for the ProductInventory table.
Use the RANK function, specifying the ordering.
Execute the query and review the results.
Task 3: Create and execute a third query using the DENSE_RANK function
Create a query that returns numbered rows for the ProductInventory table.
Use the DENSE_RANK function, specifying the ordering.
Execute the query and review the results.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 4: Create and execute a fourth query that sorts data in descending order and
groups data into categories
Create a query that returns numbered rows for the SalesPerson table.
Use the NTILE function, using the SalesYTD column for the ordering.
Filter the results to prune away sales persons with null territories and no sales.
Execute the query and review the results.
Results: After this exercise, you have learned how to create queries that use the various ranking functions
to organize and rank grouped data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 1: Create and execute a query using SELECT and the PIVOT operator
Create a query that returns a pivoted table expression from the Product table.
Use the PIVOT operator.
Filter the input to only use "helmet" products.
Sum the amount of each helmet by the colors of Red, Blue and Black.
Order the output by product name.
Execute the query and review the results.
Task 2: Create and execute a second query using SELECT and the UNPIVOT operator
Create a query that uses the UNPIVOT operator to turn a table expression into column values.
Execute the query and review the results.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you have learned how to use the PIVOT operator to create a crosstab query
and also how to use the UNPIVOT operator.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lab Shutdown
After you complete the lab, you must shut down the 2778A-NY-SQL-01 virtual machine and discard any
changes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review Questions
1. When would you use a HAVING clause and not a WHERE clause?
2. What are the differences between COMPUTE and SUM?
3. If you wanted to group products by the average price of the product into four equal groups, what
function would you use?
4. How many ranking functions are there?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module 4
Joining Data from Multiple Tables
Contents:
Lesson 1: Querying Multiple Tables by Using Joins 4-3
Lesson 2: Applying Joins for Typical Reporting Needs 4-11
Lesson 3: Combining and Limiting Result Sets 4-17
Lab: Joining Data from Multiple Tables 4-24
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module Overview
Joins in Microsoft SQL Server 2008 allow you to retrieve data from two or more tables based on
logical relationships between those tables. Joins indicate how SQL Server uses data from one table to
select the rows in another table. In this module, you will learn how to query multiple tables by using joins,
how to apply joins to typical reporting needs, and how to combine and limit join result sets.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 1
Querying Multiple Tables by Using Joins
A join condition defines the way two tables are related in query by specifying the column from each table
to be used for the join and by specifying a logical operator to be used in comparing values from those
columns. In this lesson, you will be introduced to the concepts of joins including what joins are and what
they do, categorizing the types of joins, and joining data using inner, outer, and cross joins.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Fundamentals of Joins
Key Points
Join conditions can be specified in either the FROM or WHERE clauses; specifying them in the FROM
clause is recommended. WHERE and HAVING clauses can also contain search conditions to further filter
the rows selected by the join conditions.
The tables or views in the FROM clause can be specified in any order with an inner join or full outer
join.
Specifying the join conditions in the FROM clause helps separate them from any other search
conditions that may be specified in a WHERE clause, and is the recommended method for specifying
joins.
Joins can be categorized as inner joins, outer joins, or cross joins.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Joins can be categorized as:
Inner joins that use a comparison operator to match rows from two tables based on the values in
common columns from each table.
Outer joins which can be left, right, or full outer joins.
The result set of a left outer join includes all the rows from the left table specified in the LEFT
OUTER clause, not just the ones in which the joined columns match.
A right outer join is the reverse of a left outer join. All rows from the right table are returned.
A full outer join returns all rows in both the left and right tables.
Cross joins that return all rows from the left table. Each row from the left table is combined with all
rows from the right table. Cross joins are also called Cartesian products.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
An inner join is a join in which the values in the columns being joined are compared using a comparison
operator.
In the ISO standard, inner joins can be specified in either the FROM or WHERE clause. This is the only
type of join that ISO supports in the WHERE clause. Inner joins specified in the WHERE clause are
known as old-style inner joins.
An inner join joins all the columns in both tables, and returns only the rows for which there is an
equal value in the join column is known as an equi-join.
You can also join values in two columns that are not equal. The same operators and predicates used
for inner joins can be used for not-equi-joins which will be covered later in this module.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Outer joins return all rows from at least one of the tables or views mentioned in the FROM clause, as long
as those rows meet any WHERE or HAVING search conditions.
All rows are retrieved from the left table referenced with a left outer join.
All rows from the right table are referenced in a right outer join.
All rows from both tables are returned in a full outer join.
To retain the non-matching information by including non-matching rows in the results of a join, use a
full outer join. SQL Server provides the full outer join operator, FULL OUTER JOIN, which includes all
rows from both tables, regardless of whether or not the other table has a matching value.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A Cross Join that does not have a WHERE clause produces the Cartesian product of the tables involved in
the join.
A Cartesian product is defined as all possible combinations of rows in all tables.
The size of a Cartesian product result set is the number of rows in the first table multiplied by the
number of rows in the second table.
Cross Joins should be used with caution because they can be very resource intensive.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The size of a Cartesian product result set is the number of rows in the first table multiplied by the number
of rows in the second table.
A Cross Join that does not have a WHERE clause produces the Cartesian product of the tables
involved in the Join.
If a WHERE clause is added, the cross join behaves as an inner join.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: When would it make sense to use an outer join instead of an inner join?
Question: Can you think of any scenarios in which you would use a cross join?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 2
Applying Joins for Typical Reporting Needs
Although each join specification joins only two tables, FROM clauses can contain multiple join
specifications. This allows many tables to be joined for a single query. In this lesson, you will learn about
joining more than two tables, joining a table to itself, joining tables using non-equi joins, and joining a
table to a user-defined function.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Although each join specification joins only two tables, FROM clauses can contain multiple join
specifications. This allows many tables to be joined for a single query.
When there is more than one join operator in the same statement, either to join more than two tables
or to join more than two pairs of columns, the join expressions can be connected with AND or with
OR.
In the case of the ProductVendor table of the AdventureWorks database, joining three or more tables
allows you to retrieve data showing the links between the Product, ProductVendor, and Vendor tables
to better determine which products are sold by which vendors.
One of the tables in the FROM clause, ProductVendor, does not contribute any columns to the
results.
None of the joined columns, ProductID and VendorID, appear in the results.
The middle table of the join, the ProductVendor table, can be called the translation table or
intermediate table, because ProductVendor is an intermediate point of connection between the
other tables involved in the join.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A table can be joined to itself in a self-join. For example, you could use a self-join to find the products
that are supplied by more than one vendor in order to better determine which vendor to purchase those
products from.
A self-join involves joining a table to itself by using the same table twice in the query but
distinguishing each instance of the table with aliases.
In the example shown here, pv1 and pv2 are aliases for the Purchasing.ProductVendor table. These
aliases are used to qualify the column names in the rest of the query.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
You can join values in two columns that are not equal.
The same operators and predicates used for inner joins can be used for not-equal joins.
The not-equal join (<>) is rarely used.
As a general rule, not-equal joins make sense only when used with a self-join.
Non-equal joins can be useful for example on the ProductVendor table of the AdventureWorks
database to determine which products have more than one vendor.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Inline user-defined functions are a subset of user-defined functions that return a table data type.
Inline user-defined functions follow these rules:
The RETURNS clause contains only the keyword table. You do not define the format of a return
variable because it is set by the format of the result set of the SELECT statement in the RETURN
clause.
There is no function_body delimited by BEGIN and END.
The RETURN clause contains a single SELECT statement in parentheses. The result set of the
SELECT statement forms the table returned by the function. The SELECT statement used in an
inline function is subject to the same restrictions as SELECT statements used in views.
The table-valued function accepts only constants or @local_variable arguments.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: What is a translation (or intermediate) table and what is it used for?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 3
Combining and Limiting Result Sets
Many times, you will want to combine or limit result sets to make them clearer. In this lesson, you will
learn how to combine result sets by using the UNION operator, how to limit result sets with EXCEPT and
INTERSECT, how to identify the order of precedence of UNION, EXCEPT, and INTERSECT, and how to limit
result sets with TOP and TABLESAMPLE.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
UNION combines the results of two or more queries into a single result set that includes all the rows that
belong to all queries in the union. Using a UNION query can be useful for example when you simply need
to retrieve all of the data from two tables and do not actually need to join the data in any way.
The following are basic rules for combining the result sets of two queries by using UNION:
The number and the order of the columns must be the same in both queries.
The data types must be compatible in both queries.
When the data types are the same but differ in precision, scale, or length, the result is determined
based on the same rules for combining expressions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
You can use the EXCEPT and INTERSECT operators to compare the results of two or more SELECT
statements and return distinct values.
EXCEPT returns any distinct values from the left query that are not also found on the right query.
INTERSECT returns any distinct values that are returned by both the queries on the left and right sides
of the INTERSECT operand.
The basic rules for combining the result sets of two queries that use EXCEPT or INTERSECT are the
following:
The number and the order of the columns must be the same in all queries.
The data types must be compatible.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
If EXCEPT or INTERSECT is used together with other operators in an expression, it is evaluated in the
context of the following precedence:
Expressions in parentheses
The INTERSECT operand
EXCEPT and UNION evaluated from left to right based on their position in the expression
If EXCEPT or INTERSECT is used to compare more than two sets of queries, data type conversion is
determined by comparing two queries at a time, and following the previously mentioned rules of
expression evaluation.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
If a SELECT statement that includes TOP also has an ORDER BY clause, the rows to be returned are
selected from the ordered result set.
TABLESAMPLE cannot be applied to derived tables, tables from linked servers, and tables derived
from table-valued functions, rowset functions, or OPENXML.
TABLESAMPLE can be used to quickly return a sample from a large table when either of the following
conditions is true:
The sample does not have to be a truly random sample at the level of individual rows.
Rows on individual pages of the table are not correlated with other rows on the same page.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
We can categorize statements that limit result sets into four types.
UNION specifies that multiple result sets are to be combined and returned as a single result set.
EXCEPT returns any distinct values from the query to the left of the EXCEPT operand that are not also
returned from the right query.
INTERSECT returns any distinct values that are returned by both the query on the left and right sides
of the INTERSECT operand.
The TOP and TABLESAMPLE statements can use either a number or a percent of the rows.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: What are the basic rules for combining the result sets of two queries by using UNION?
Question: How do you think rows are returned from a SELECT TOP statement that also has an ORDER BY
clause?
Question: What conditions must be met in order to use TABLESAMPLE to return a sample from a large
table?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 3: Create and execute a Left Outer Join and a Right Outer Join
Create a Left Outer Join that uses the Product and ProductReview tables on their ProductID columns
to show only those products for which reviews have been written.
Create a Right Outer Join that uses the SalesTerritory and SalesPerson tables on their TerritoryID
columns to show any territory that has been assigned to a salesperson.
Execute the query and review the results.
Results: After this exercise, you should have launched SQL Server Management Studio and created and
executed an Inner Join. You should have also created and executed a Left Outer Join and a Right Outer
Join.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Create and execute a query using a Self Join and the DISTINCT clause
Create a query that will return a list of all products on the Purchasing.ProductVendor table that are
produced by vendors.
Use a Self Join that uses the DISTINCT clause, and order the results by ProductID.
Execute the query and review the results.
Task 3: Create and execute a Non-Equi Join with an equality and a non-equality operator
Create a query that will return a list of all product subcategories that have at least two different prices
less than $15.
Use an Inner Join to join the Production.Product table to itself and a non-equality operator on the
ListPrice column to select two different prices.
Execute the query and review the results.
Results: After this exercise, you should have created and executed a query using a self join, created and
executed a query using a self join and the DISTINCT clause, and created and executed a non-equi join
with both an equality and non-equality operator.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
1. Combine the result sets of two queries by using the UNION ALL operator.
2. Limit result sets by using the EXCEPT clause with the SELECT statement.
3. Limit result sets by using the INTERSECT clause with the SELECT statement.
4. Limit result sets by using the TOP and TABLESAMPLE operators.
Task 1: Combine the result sets of two queries by using the UNION ALL operator
Create a query that will return a combined list of all columns on the TestA and TestB tables.
Do not limit the results of the query with any operators.
Execute the query and review the results.
Task 2: Limit result sets by using the EXCEPT clause with the SELECT statement
Create a query using EXCEPT that lists all product IDs from the Production.Product table that are not
on the Production.WorkOrder table.
Execute the query and review the results.
Task 3: Limit result sets by using the INTERSECT clause with the SELECT statement
Create a query using INTERSECT that lists all product IDs from the Production.Product table that are
not on the Production.WorkOrder table.
Execute the query and review the results.
Task 4: Limit result sets by using the TOP and TABLESAMPLE operators
Create a query that lists of the top 15% of products from the Production.Product table, ordered by
ProductID.
Execute the query and review the results.
Create a query that randomly generates a list of 10% of people from the Person.Person table
including first name and surname.
Execute the query and review the results.
Results: After this exercise, you should have combined the result sets of two queries by using the
UNION ALL operator. You should have also limited result sets by using the EXCEPT and INTERSECT
clauses. Finally, you should have limited result sets using the TOP and TABLESAMPLE operators.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lab Shutdown
After you complete the lab, you must shut down the 2778A-NY-SQL-01 virtual machine and discard any
changes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review Questions
1. How does a join condition define the way two tables are related in a query?
2. How can multiple join operators be combined in the same statement?
3. What options are available to the TABLESAMPLE clause and what are they used for?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
conversion is supplied. However, a UNION will work between a column of money data type and one
of int data type, because they can be implicitly converted.
Corresponding result set columns in the individual statements that are being combined with UNION
must occur in the same order, because UNION compares the columns one-to-one in the order given
in the individual queries.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module 5
Working with Subqueries
Contents:
Lesson 1: Writing Basic Subqueries 5-3
Lesson 2: Writing Correlated Subqueries 5-10
Lesson 3: Comparing Subqueries with Joins and Temporary Tables 5-16
Lesson 4: Using Common Table Expressions 5-20
Lab: Working with Subqueries 5-25
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module Overview
A subquery in Microsoft SQL Server 2008 is a query that is nested inside a statement or another
subquery. Common Table Expressions (CTE) can be thought of as temporary result sets. In this module,
you will learn about writing basic subqueries and writing correlated subqueries. You will also compare
subqueries with joins and temporary tables. Finally, you will see how to use Common Table Expressions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 1
Writing Basic Subqueries
A subquery is a query that is nested inside a SELECT, INSERT, UPDATE, or DELETE statement, or inside
another subquery that can be used anywhere an expression is allowed. In this lesson, you will learn how
subqueries work. You will learn about using subqueries as expressions and using the ANY, ALL, and SOME
operators. You will also discuss the differences between scalar and tabular subqueries and finally you will
review considerations for writing basic subqueries.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A subquery is also called an inner query or inner select, while the statement containing a subquery is also
called an outer query or outer select.
Many Transact-SQL statements that include subqueries can be alternatively formulated as joins.
There is usually no performance difference between a statement that includes a subquery and a
semantically equivalent version that does not. However, in some cases where existence must be
checked, a join yields better performance.
The subquery shown here is used as a column expression named MaxUnitPrice in a SELECT statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Subqueries can be specified in many places, including in place of an expression.
A subquery can be substituted anywhere an expression can be used in SELECT, UPDATE, INSERT, and
DELETE statements, except in an ORDER BY list.
The query shown here finds the prices of all mountain bike products, their average price, and the
difference between the price of each mountain bike and the average price.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Comparison operators that introduce a subquery can be modified by the keywords ALL or ANY. SOME is
an ISO standard equivalent for ANY.
ALL compares a scalar value with a single-column set of values and returns TRUE when the
comparison specified is TRUE for all pairs (scalar_expression, x), when x is a value in the single-column
set; otherwise, ALL returns FALSE.
SOME and ANY also compare a scalar value with a single-column set of values, but return TRUE when
the comparison specified is TRUE for any pair (scalar_expression, x) where x is a value in the single-
column set; otherwise, each would return FALSE.
Using the > comparison operator as an example, >ALL means greater than every value. In other
words, it means greater than the maximum value. For example, >ALL (1, 2, 3) means greater than 3.
>ANY means greater than at least one value, that is, greater than the minimum. So >ANY (1, 2, 3)
means greater than 1.
For a row in a subquery with >ALL to satisfy the condition specified in the outer query, the value in
the column introducing the subquery must be greater than each value in the list of values returned
by the subquery.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A scalar subquery is a subquery that returns a single row.
A tabular subquery is a subquery that returns tabular data.
The subquery in this example uses an aggregate that ensures that it produces only a single row on
each execution.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Writing subqueries requires that you have an understanding of the rules that subqueries follow.
Subqueries can be specified in many places including:
With aliases.
With IN or NOT IN.
In UPDATE, DELETE, and INSERT statements.
With comparison operators.
With ANY, SOME, or ALL.
With EXISTS or NOT EXISTS.
In place of an expression.
Subqueries have several restrictions imposed upon them including:
The select list of a subquery introduced with a comparison operator can include only one
expression or column name.
If the WHERE clause of an outer query includes a column name, it must be join-compatible with
the column in the subquery select list.
The ntext, text, and image data types cannot be used in the select list of subqueries.
The general rule in qualifying column names is that column names in a statement are implicitly
qualified by the table referenced in the FROM clause at the same level.
A subquery can itself include one or more subqueries and any number of subqueries can be nested in
a statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: How would you rewrite the basic subquery demonstrated to you here as a join?
Question: What results were returned by the SELECT statement that contained an ANY expression and
why?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 2
Writing Correlated Subqueries
Many queries can be evaluated by executing the subquery once and substituting the resulting value or
values into the WHERE clause of the outer query, turning the subquery into a correlated, or repeating,
subquery. In this lesson, you will learn how correlated subqueries work. You will also discuss how to build
a correlated subquery, writing repeating queries by using correlated subqueries, and using the EXISTS
clause with correlated subqueries.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A correlated subquery is a subquery that contains a reference to a column or columns in the outer query.
Correlated subqueries are also called repeating subqueries because they are executed multiple times
during processingone time for each row in the outer query.
In queries that include a correlated subquery (also known as a repeating subquery), the subquery
depends on the outer query for its values. This means that the subquery is executed repeatedly, once
for each row that might be selected by the outer query.
Correlated subqueries can also include table-valued functions in the FROM clause by referencing
columns from a table in the outer query as an argument of the table-valued function. In this case, for
each row of the outer query, the table-valued function is evaluated according to the subquery.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A subquery depends on the outer query for its values. Because of this, building a correlated subquery
involves creating both an outer and inner query.
The correlated subquery shown here retrieves one instance of each employees first and last name for
which the bonus in the SalesPerson table is 5000 and for which the employee identification
numbers match in the Employee and SalesPerson tables.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The query shown here depends on the outer query for its values. The query is executed repeatedly,
one time for each row that may be selected by the outer query.
The query retrieves one instance of the first and last name of each employee for which the bonus in
the SalesPerson table is 5000.00 and for which the employee identification numbers match in the
Employee and SalesPerson tables.
SQL Server considers each row of the Employee table for inclusion in the results by substituting the
value in each row into the inner query.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Subqueries introduced with the EXISTS clause do not actually produce any data, instead they return a
value of TRUE or FALSE.
The EXISTS operator is used to test for the existence of rows, and returns TRUE if a subquery contains
any rows.
The keyword EXISTS is not preceded by a column name, constant, or other expression.
The select list of a subquery introduced by EXISTS almost always consists of an asterisk (*). There is no
reason to list column names because you are just testing whether rows that meet the conditions
specified in the subquery exist.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 3
Comparing Subqueries with Joins and Temporary
Tables
While joins and temporary tables can sometimes be used in the place of subqueries, subqueries can
sometimes produce similar or better results. In this lesson, you will learn the differences between
subqueries and joins, discuss the concept of temporary tables, and learn to describe the differences
between subqueries and temporary tables.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
In Transact-SQL, there is usually no performance difference between a statement that includes a subquery
and a semantically equivalent version that does not.
Joins can yield better performance in some cases where existence must be checked. However, in some
cases where existence must be checked, a join yields better performance.
Subqueries, unlike joins, can operate on lists introduced with IN or EXISTS, and can also operate on
lists with a comparison operator modified by ANY or ALL.
Generally speaking, subqueries are written to answer questions that are too complex to answer with
joins or, more appropriately, are easier to write with a subquery than a join. It is often easier to see
nesting and query organization in a subquery than it is in a query that requires a number of joins to
arrive at the same conclusionif that query with multiple joins can even duplicate the subquery in
the first place.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Temporary Tables
Key Points
Temporary tables are similar to permanent tables, except temporary tables are stored in tempdb and are
deleted automatically when they are no longer used.
Local temporary tables are visible only to their creators during the same connection to an instance of
SQL Server as when the tables were first created or referenced and are deleted after the user
disconnects from SQL Server.
Global temporary tables are visible to any user and any connection after they are created, and are
deleted when all users that are referencing the table disconnect from the instance of SQL Server.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are several differences between subqueries and temporary tables that may cause you to use one
instead of the other depending on system performance and personal preference.
Subqueries are appropriate when you have a lot of RAM since subqueries occur in memory.
Temporary tables are more appropriate when you have a database server or servers with a lot of hard
disk space because they require more hard disk resources when executing.
Subqueries are often easier to maintain than temporary tables. However, if a subquery becomes very
complex, you may want to consider breaking it down into multiple temporary table queries in order
to filter through smaller chunks of data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 4
Using Common Table Expressions
A Common Table Expression (CTE) can be thought of as a temporary result set that is defined within the
execution scope of a single SELECT, INSERT, UPDATE, DELETE, or CREATE VIEW statement. In this lesson,
you will learn how Common Table Expressions work and how to write Common Table Expressions. You
will also learn how to write and build recursive queries by using Common Table Expressions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A Common Table Expression (CTE) is similar to a derived table since it is not stored as an object and lasts
only for the duration of the query.
A CTE can be used to create a recursive query, substitute for a view when the general use of a view is
not required, enable grouping by a column that is derived from a scalar subselect, or reference the
resulting table multiple times in the same statement.
Using a CTE offers the advantages of improved readability and ease in maintenance of complex
queries.
CTEs can be defined in user-defined routines, such as functions, stored procedures, triggers, or views.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A CTE is made up of an expression name representing the CTE, an optional column list, and a query
defining the CTE.
After a CTE is defined, it can be referenced like a table or view can in a SELECT, INSERT, UPDATE, or
DELETE statement.
The list of column names as shown by SELECT <column_list> above is optional only if distinct
names for all resulting columns are supplied in the query definition.
The example shown shows the components of the CTE structure: expression name, column list, and
query.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A recursive CTE consists of three elements:
1. Invocation of the routine.
2. Recursive invocation of the routine.
3. Termination check.
Although a recursive routine in other languages returns a scalar value, a recursive CTE can return
multiple rows.
The recursive CTE structure must contain at least one anchor member and one recursive member.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: In the first demonstration, how many times was the CTE referenced when the statement was
executed and why?
Question: What would happen if you created a recursive CTE that returned the same values for both the
parent and child columns?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have launched SQL Server Management Studio and created and
executed a basic subquery. You should have also created and executed a subquery with the EXISTS
keyword.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a correlated subquery and also created a correlated
subquery with comparison operators.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
1. Create a Subquery and a Join that Produce the same Result Set.
2. Create a Temporary Table.
Task 1: Create a subquery and a join that produce the same result set
Create a subquery to select the name of any products that have a list price equal to the list price of
'Chainring Bolts' on the Production.Product table.
Create and execute a join to select the name of any products that have a list price equal to the list
price of 'Chainring Bolts' on the Production.Product table.
Results: After this exercise you should have created a subquery and a join that produced the same
result set. You should have also created a temporary table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a common table expression. You should have also
created a recursive query using a common table expression.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lab Shutdown
After you complete the lab, you must shut down the 2778A-NY-SQL-01 virtual machine and discard any
changes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review Questions
1. A subquery nested in the outer SELECT statement has what components?
2. What clauses can the SELECT query of a subquery include? What clauses can it not include?
3. What are the three basic types of subqueries?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module 6
Modifying Data in Tables
Contents:
Lesson 1: Inserting Data into Tables 6-3
Lesson 2: Deleting Data from Tables 6-10
Lesson 3: Update Data in Tables 6-17
Lesson 4: Overview of Transactions 6-23
Lab: Modifying Data 6-33
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module Overview
You can use Transact-SQL in Microsoft SQL Server 2008 to add, remove, or update data in tables
using several different T-SQL statements. In this module, you will learn about inserting data into tables,
deleting data from tables, and updating data in tables. You will also learn the basics of a transaction,
which is a sequence of operations such as data insertions, deletions, or updates, that are performed as a
single logical unit of work.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 1
Inserting Data into Tables
INSERT appends new rows to a table. In this lesson, you will learn about inserting rows into a table,
differentiating types of INSERT statements, and inserting values into identity columns. You will also learn
about using the OUTPUT clause with the INPUT statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
INSERT Fundamentals
Key Points
The INSERT statement inserts data_values as one or more rows into the specified table or view.
INSERT and SELECT statements can be used to add rows to a table in the following ways:
Use the INSERT statement to specify values either explicitly or from a subquery.
Use the SELECT statement with the INTO clause.
The INSERT statement inserts data_values as one or more rows into the specified table or view.
column_list is a list of column names, separated by commas that can be used to specify the columns
for which data is supplied. If column_list is not specified, all the columns in the table or view receive
data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
INSERT appends new rows to a table.
Using a SELECT subquery lets more than one row be inserted at the same time. The select list of the
subquery must match the column list of the INSERT statement.
Generally speaking, you can use INSERT with EXECUTE to retrieve some set of data using a stored
procedure and then store that result set into a new table.
You would use the TOP clause in an INSERT statement along with a subquery to add the top N (some
number) rows from one table or join into another table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
VALUES introduces the list of data values to be inserted. There must be one data value for each column in
column_list, if specified, or in the table. The values list must be enclosed in parentheses.
If the values in the VALUES list are not in the same order as the columns in the table or do not have a
value for each column in the table, column_list must be used to explicitly specify the column that
stores each incoming value.
Inserting more than one row of values requires the VALUES list to be in the same order as the
columns in the table, to have a value for each column in the table, or for the column_list to explicitly
specify the column that stores each incoming value. The maximum number of rows that can be
inserted in a single INSERT statement is 1000. To insert more than 1000 rows, create multiple INSERT
statements.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
If an identity column exists for a table with frequent deletions, gaps can occur between identity values. To
fill an existing gap, you can explicitly identify identity columns in an INSERT statement.
The SET IDENTITY_INSERT ON statement overrides the IDENTITY property for the column.
The VALUES keyword specifies the values for one or more appended rows of a table. In the case of an
IDENTITY column, it inserts a new value known as a seed that SQL Server uses to automatically
generate sequential numbers for the rest of the IDENTITY rows in the table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The OUTPUT clause may be useful to retrieve the value of identity or computed columns after an INSERT
operation.
The following restrictions apply to the target of the outer INSERT statement:
The target cannot be a remote table, view, or common table expression.
The target cannot have a FOREIGN KEY constraint, or be referenced by a FOREIGN KEY
constraint.
Results can be returned to the processing application for use in such things as confirmation messages,
archiving, and other such application requirements.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: Why is the VALUES clause used when appending data into a table?
Question: Under what circumstances must the column_list portion of the INSERT statement be defined?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 2
Deleting Data from Tables
The DELETE statement removes one or more rows in a table or view. In this lesson, you will learn about
deleting rows from a table. You will also learn about truncating a table and the differences between the
TRUNCATE and DELETE statements. Finally, you will learn about deleting rows based on other tables and
about using the OUTPUT clause with the DELETE statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
DELETE Fundamentals
Key Points
The DELETE statement removes one or more rows in a table or view based on the following parameters
and rules.
The parameter table_or_view names a table or view from which the rows are to be deleted.
All rows in table_or_view that meet the qualifications of the WHERE search condition are deleted.
If a WHERE clause is not specified, all the rows in table_or_view are deleted.
Rows are not deleted from the tables named in the FROM clause, only from the table named in
table_or_view.
Any table that has all rows removed remains in the database, and must be removed by using the
DROP TABLE statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are many ways you can remove rows from a table or view using the DELETE statement.
DELETE can be used without a WHERE clause to delete all rows of a table without limitation. The
WHERE clause of the DELETE statement can be defined as a subquery in order to delete rows from a
base table depending on data stored in another table.
DELETE can be modified with a TOP clause, much like INSERT can, in order to remove some number
or percentage of rows from a table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
TRUNCATE TABLE removes all rows from a table without logging the individual row deletions.
The parameter database_name is the name of the database that the table to be truncated belongs to,
schema_name is the name of the schema to which the table belongs, table_name is the name of the
table to truncate or from which all rows are removed.
You cannot use TRUNCATE TABLE on tables that:
Are referenced by a FOREIGN KEY constraint, although you can truncate a table that has a
foreign key that references itself.
Participate in an indexed view.
Are published by using transactional replication or merge replication.
For tables with one or more of these characteristics, use the DELETE statement instead.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
TRUNCATE TABLE is similar to the DELETE statement when no WHERE clause has been specified; however,
TRUNCATE TABLE is faster and uses fewer system and transaction log resources.
The DELETE statement removes rows one at a time and records an entry in the transaction log for
each deleted row, while TRUNCATE TABLE removes the data by deallocating the data pages used to
store the table data and records only the page deallocations in the transaction log.
When the DELETE statement is executed using a row lock, each row in the table is locked for deletion,
while TRUNCATE TABLE always locks the table and page but not each row.
After a DELETE statement is executed, the table can still contain empty pages. For indexes, the delete
operation can leave empty pages behind.
TRUNCATE TABLE removes all rows from a table, but the table structure and its columns, constraints,
indexes, and so on remain. To remove the table definition in addition to its data, use the DROP TABLE
statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Using the OUTPUT clause with the DELETE statement returns deleted rows, or expressions based on them,
as part of the DELETE operation.
DELETE statements that use the OUTPUT clause return results that can be used in such things as
confirmation messages, archiving, and other such application requirements.
Results can also be inserted into a table or table variable.
The clause OUTPUT DELETED.* specifies that the results of the DELETE statement, that is all columns
in the deleted rows, be returned to the calling application.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 3
Updating Data in Tables
The UPDATE statement changes existing data in a table. In this lesson, you will learn about updating rows
in a table and updating rows based on other tables. You will also learn about using the OUTPUT clause
with the UPDATE statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
UPDATE Fundamentals
Key Points
The UPDATE statement can change data values in single rows, groups of rows, or all the rows in a table or
view.
The UPDATE statement has the following major clauses:
SET
Contains a comma-separated list of the columns to be updated and the new value for each
column, in the form column_name = expression. The value supplied by the expressions includes
items such as constants, values selected from a column in another table or view, or values
calculated by a complex expression.
FROM
Identifies the tables or views that supply the values for the expressions in the SET clause, and
optional join conditions between the source tables or views.
WHERE
Specifies the search condition that defines the rows from the source tables and views that qualify
to provide values to the expressions in the SET clause.
An UPDATE statement referencing a table or view can change the data in only one base table at a
time.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
UPDATE statements can be used in several different ways.
UPDATE statements can be simple, short, and do not require the use of the FROM or WHERE clauses
to function properly.
You can use computed values in an UPDATE statement.
You can use the WHERE clause to limit the rows that are updated with an UPDATE statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
You can use the UPDATE statement in a subquery to update rows in one table with information from
another table.
You can use a subquery in the FROM clause of an UPDATE statement in the place of an explicit table
source that acts as criteria for the update operation.
Updating with information from another table can be useful for example when you have several
tables that relate to one another even if only in business terms, such as if a product price is listed in a
table named ProductPrices but also relates to a ProductSales table in some way.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
You can use the OUTPUT clause with the UPDATE statement to return updated rows as part of the
UPDATE operation.
In the case of an UPDATE statement, dml_select_list values are generally
INSERTED.SomeColumnName or DELETED.SomeColumnName.
The @table_variable argument specifies a table variable that the returned rows are inserted into
instead of being returned to the caller.
@table_variable must be declared before the UPDATE statement itself.
Using the OUTPUT clause with an UPDATE statement can be useful for returning results from one
UPDATE statement into a table variable that can then be used in other queries or in applications that
can access SQL Server data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: What are the major clauses of the UPDATE statement and what do they do?
Question: How would you write an UPDATE statement to increase the price of all products on a table by
10 percent?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 4
Overview of Transactions
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Transaction Fundamentals
Key Points
A transaction is a sequence of operations performed as a single logical unit of work.
A logical unit of work must exhibit the four ACID properties to qualify as a transaction.
Atomicity
A transaction must be an atomic unit of work; either all of its data modifications are performed or
none of them is performed.
Consistency
When completed, a transaction must leave all data in a consistent state. In a relational database,
all rules must be applied to the transaction's modifications to maintain all data integrity.
Isolation
A transaction either recognizes data in the state it was in before another concurrent transaction
modified it, or it recognizes the data after the second transaction has completed, but it does not
recognize an intermediate state.
Durability
After a transaction has completed, its effects are permanently in place in the system. The
modifications persist even in the event of a system failure.
SQL programmers are responsible for starting and ending transactions at points that enforce the
logical consistency of the data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The Database Engine provides locking facilities to preserve transaction isolation, logging facilities that
ensure transaction durability, and transaction management features that enforce atomicity and
consistency.
Transactions specify an isolation level that defines the degree to which one transaction must be
isolated from resource or data modifications made by other transactions.
SQL Server uses a write-ahead log (WAL), which guarantees that no data modifications are written to
disk before the associated log record is written to disk.
Checkpoints flush dirty data pages from the buffer cache of the current database to disk. This
minimizes the active portion of the log that must be processed during a full recovery of a database.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
BEGIN TRANSACTION marks the starting point of an explicit, local transaction, and COMMIT
TRANSACTION marks the end of a successful transaction.
BEGIN TRANSACTION represents a point at which the data referenced by a connection is logically
and physically consistent. If errors are encountered, all data modifications made after the BEGIN
TRANSACTION can be rolled back to return the data to this known state of consistency.
Each transaction lasts until either it completes without errors and COMMIT TRANSACTION is issued to
make the modifications a permanent part of the database, or errors are encountered and all
modifications are erased with a ROLLBACK TRANSACTION statement.
If a run-time statement error (such as a constraint violation) occurs in a batch, the default behavior in
the Database Engine is to roll back only the statement that generated the error.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: How can a transaction be rolled back and when would you want to roll a transaction back?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
As mentioned previously, transactions specify an isolation level that defines the degree to which one
transaction must be isolated from modifications made by other transactions.
Transaction isolation levels control:
Whether locks are taken when data is read, and what type of locks are requested.
How long the read locks are held.
Whether a read operation referencing rows can be modified by another transaction:
Blocks until the exclusive lock on the row is freed.
Retrieves the committed version of the row that existed at the time the statement or
transaction started.
Reads the uncommitted data modification.
Choosing a transaction isolation level does not affect the locks acquired to protect data modifications.
A transaction always gets an exclusive lock on any data it modifies, and holds that lock until the
transaction completes, regardless of the isolation level set for that transaction.
The transaction isolations levels available are as follows:
READ UNCOMMITTED
Specifies that statements can read rows that have been modified by other transactions but not
yet committed.
READ COMMITTED
Specifies that statements cannot read data that has been modified but not committed by other
transactions. This prevents dirty reads.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
REPEATABLE READ
Specifies that statements cannot read data that has been modified but not yet committed by
other transactions and that no other transactions can modify data that has been read by the
current transaction until the current transaction completes.
SNAPSHOT
Specifies that data read by any statement in a transaction will be the transactionally consistent
version of the data that existed at the start of the transaction.
SERIALIZABLE
Locks all tables in all SELECT statements in a transaction.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: How long does SQL Server hold a shared lock created by the SET TRANSACTION ISOLATION
LEVEL statement?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Explicit transactions can be nested.
This is primarily intended to support transactions in stored procedures that can be called either from
a process already in a transaction or from processes that have no active transaction.
Committing inner transactions is ignored by the SQL Server Database Engine. The transaction is either
committed or rolled back based on the action taken at the end of the outermost transaction.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
PhoneNumberTypeI
BusinessEntityID PhoneNumber D ModifiedDate
Name ModifiedDate
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Insert the ScrapreasonID, Name, and ModifiedDate columns and rows from the
Production.ScrapReason table into @MyTableVar using the INSERT and OUTPUT statements.
Display the result set of the table variable and display the result set of the table.
Results: After this exercise, you should have launched SQL Server Management Studio, created and
executed an INSERT statement that adds values to a table, created and executed an INSERT statement
using the INTO syntax, and created and executed an INSERT statement using the OUTPUT syntax.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created and executed a DELETE statement using the
WHERE syntax and created and executed a DELETE statement using the FROM syntax. You should have
also created and executed a DELETE statement using the OUTPUT syntax and then created and
executed a TRUNCATE TABLE statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created and executed an UPDATE statement using the SET
syntax, created and executed an UPDATE statement using the WHERE IN (SELECT) syntax, and created
and executed an UPDATE statement using the FROM syntax. You should have also created and
executed an UPDATE statement using the OUTPUT syntax.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a simple transaction. You should have also set the
transaction isolation level for a new transaction.
Lab Shutdown
After you complete the lab, you must shut down the 2778A-NY-SQL-01 virtual machine and discard any
changes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review Questions
1. What are the four properties of a logical unit of work?
2. How can the INSERT and SELECT statements be used to add rows to a table?
3. What happens when a WHERE clause is not specified in a DELETE statement?
4. What are the major clauses of the UPDATE statement?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Note: If you do use the TRUNCATE statement on a table, you will reset the identity seed of any
IDENTITY column in that table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module 7
Querying Metadata, XML, and Full-Text Indexes
Contents:
Lesson 1: Querying Metadata 7-3
Lesson 2: Overview of XML 7-14
Lesson 3: Querying XML Data 7-20
Lesson 4: Overview of Full-Text Indexes 7-26
Lesson 5: Querying Full-Text Indexes 7-31
Lab: Querying Metadata, XML, and Full-Text Indexes 7-38
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module Overview
Queries in Microsoft SQL Server 2008 often involve data that does not reside in simple data types and
techniques that go beyond ordinary SELECT statements. In this module, we will discuss what metadata is
and what it can be used for within business processes, how data is organized and can be accessed in XML
format, and what full-text indexes are and how they can be used.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 1
Querying Metadata
In this lesson, we will discuss what metadata is and the different techniques that can be used to access it.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
What Is Metadata?
Key Points
Metadata is descriptive information about the data or database.
An example is a customer information database in which there will be a column for customer name.
The end user will see the columns values for each row as the name of each customer.
The metadata for the customer name will provide information regarding the data type of the
column as well as the maximum length of the column.
Metadata will also provide information about what other values are stored within the same table
as the customer name as well as the relationship of that table with other tables in the database.
Metadata can also consist of statistical information. In our customer name example, metadata can
provide information regarding the number of times that the customer name has been queried, how
many unique names exist within the database, or which names have been recently modified.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Compatibility Views
Key Points
Compatibility views are provided for applications that use metadata table references from Microsoft SQL
Server 2000.
Compatibility views should only be used for backward compatibility.
Compatibility views do not display information regarding features implemented in SQL Server since
version 2000.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
System Catalog Views provide the most direct and lowest level access to metadata in SQL Server.
Metadata in SQL Server is stored in system tables that should never be modified directly.
As SQL Server is enhanced and new versions are released, the structure of the system tables changes.
SQL Server provides system catalog views that provide the metadata information from the system
tables in a standard format.
System Catalog Views can remain unchanged even though the underlying system tables have
changed.
Using the system catalog views are the most direct and efficient way of interacting with the metadata.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
System Catalog Views provide simple, direct access to metadata.
System Catalog Views are available for the most common types of objects in SQL Server as well as
their attributes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The Information Schema provides the same information as the system catalog views but also provides a
layer of abstraction making the metadata more logical and easier to work with.
This layer of abstraction also provides protection from underlying system table changes.
The Information Schema provides a layer of abstraction to the system catalog.
Information schema views provide an internal, system table-independent view of the SQL Server
metadata.
Information schema views enable applications to work correctly although significant changes have
been made to the underlying system tables.
Information schema views are based on the ISO standard and applications that use them are portable
to other database systems that are also ISO compliant.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The Information Schema provides metadata without being dependent on the system catalog
structure.
Information Schema Views are available for the most common types of objects in SQL Server as well
as their attributes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Dynamic Management Views (DMVs) and Dynamic Management Functions (DMFs) are mechanisms
that provide activity information about SQL Server.
This information is available for a wide variety of categories including the database engine activities
(execution, indexing, etc.), replication, Service Broker, and so on.
Dynamic Management Views and Functions provide information regarding the internal state and
health of SQL Server.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Dynamic Management Views provide activity information about SQL Server. Some examples include:
The sys.dm_exec_requests view provides information regarding process requests that have occurred in
the current database.
The sys.dm_io_virtual_file_stats function provides information regarding the underlying file system of
the current database.
The sys.dm_os_sys_info view provides information regarding the hardware and operating system
supporting the current SQL Server instance.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
System Stored Procedures and Functions are ways to get metadata information without in-depth
understanding of the underlying structures.
The procedures and functions accept parameters that can perform searches and filtering without
requiring knowledge of the underlying metadata structures.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: Why would you choose to use the INFORMATION_SCHEMA rather than System Catalog views
to obtain metadata?
Question: Why would you choose to use the System Stored Procedures and Functions to query
metadata?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 2
Overview of XML
In this lesson, you will learn what XML is, how it can be used, and how SQL Server 2008 implements
support for it.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
What Is XML?
Key Points
XML is a general-purpose specification for creating custom markup languages.
There is no fixed set of markup tags as with HTML.
In XML, authors are able to define their own tags.
The XML standard does not define the structures or the content of XML but only the format.
The XML standard is an open standard from the W3C.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
In todays business world, information systems are diverse and distributed. In many cases, a system of one
type will need data contained in a system of another type. XML is system independent and can be used to
share data between those systems.
XML is a text-based format so data in XML format can easily be transmitted over the internet. These
XML data transmissions can be secured by the same methods as are used for securing HTML
transmissions.
Information is stored in a wide variety of formats from different systems and applications. By storing
the information from one application in an open XML format, that information can be utilized within
other applications and systems.
Many times, data is stored by systems and applications in a proprietary binary format. When this data
needs to be transmitted by a text based protocol or stored in a text based system, it can be serialized
into XML format.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The practical applications for XML are widespread. Some examples are:
An auto insurance company providing services on the Internet stores specific information related to
claims in a specified XML format. Exact copies of these XML documents must be maintained in the
system for legal purposes.
An automobile manufacturer procures the parts required for the company and processes invoices in
XML format.
The automobile manufacturer exposes payment information to part suppliers over the Web so that
the suppliers can perform tasks automatically. This scenario demonstrates the use of XML for business
integration.
A company wants to build a content management system to help it deliver high quality content to its
customers in less time. This scenario illustrates the use of XML for content management.
A company analyzes and stores questionnaire response information in XML format to help them
respond to customer needs better. This scenario can be classified as the use of XML for content
management.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Microsoft SQL Server 2008 supports several techniques for querying and analyzing data stored in XML
format.
Relational data can be transformed to XML by using the For XML clause in T-SQL.
Data that already exists in XML format can be parsed and transformed to relational data by using the
OpenXML function.
XQuery is based on the existing XPath query language, with support added for better iteration, better
sorting results, and the ability to construct the necessary XML. XQuery operates on the XQuery Data
Model.
Before you can create typed xml variables, parameters, or columns, you must first register the XML
schema collection by using CREATE XML SCHEMA COLLECTION (Transact-SQL). You can then
associate the XML schema collection with variables, parameters, or columns of the xml data type.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The XML data type is a built-in data type for storing and interacting with XML data. It has five methods
that provide the ability to query, modify, and alter the data that it contains.
The Query, Value, Exists, and Nodes methods accept XQuery statements.
The Modify method accepts XML Data Modification Language statements.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 3
Querying XML Data
In this lesson, you will learn the different techniques that can be used to generate XML format from SQL
Server 2008 data as well as how to query data that already exists in XML format.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The FOR XML clause in T-SQL can be used to generate an XML representation of any rowset.
For XML supports extensions to provide control over the resulting XML structure.
Three modes Raw, Auto, and Explicit control the format of the resulting XML.
The Root extension can be used to provide a root node path for the resulting XML.
The Path mode can be used to define the XML path syntax.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
OPENXML can be used in SELECT and SELECT INTO statements wherever rowset providers, a view, or
OPENROWSET can appear as the source.
OPENXML, a Transact-SQL keyword, provides a rowset for in-memory XML documents that is similar
to a table or a view.
The system stored procedure sp_xml_preparedocument must be called to prepare the XML data for
reading prior to using OpenXML.
OpenXML allows the row and column XPath patterns to be parameterized as variables.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
XQuery is a query language designed and developed for querying data stored in XML.
The query method of the XML SQL Server data type accepts XQuery statements.
The results of the XQuery statements from the query method are XML data type fragments.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The XML data provider is a Microsoft .NET data provider that is provided with Reporting Services.
The XML content can be embedded directly within the query and the developer can build queries
and data dynamically within the report.
XML content can also be accessed directly from a URL.
An XML data provider can query Web services directly by parsing the XML structure of the SOAP
response directly.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 4
Overview of Full-Text Indexes
In this lesson, you will learn about full-text indexes including what full-text indexes are and how they are
set up. The session also explores how SQL Server 2008 implements and supports full-text indexes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A full-text index is a special type of token-based functional index that is built and maintained by the
Microsoft Full-Text Engine for SQL Server (MSFTESQL) service.
From web site searches to fuzzy searches of customer data, there are many cases for the use of full-
text indexes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The process of creating and maintaining a full-text index is called index population.
Full population is a complete creation of the index and is generally only used when the index is
initially created.
Change tracking-based population involves SQL Server tracking what values have changed.
Incremental timestamp-based population requires a timestamp column in the indexed table that is
used to determine rows that have been added, updated, or deleted.
Change tracking and Incremental timestamp based populations can be set to update the index
manually or automatically on a schedule.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Querying a table using a full-text index is a process that involves several steps.
A full-text query sent from a client goes to the SQL Server Query Processor (QP) in the SQL Server
process.
The QP passes this on to the full-text query component, which creates an OLE DB command tree and
sends it on to the Microsoft Full-Text Engine for the SQL Server (MSFTESQL) service.
In the MSFTESQL process, the Full-Text Engine Query Processor processes the query using thesaurus,
noise word files, word breakers and stemmers.
After processing this query, the MSFTESQL service returns a result set to the SQL Server process.
A result set can be used for further processing or returned to the client.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
SQL Server 2008 provides system stored procedures that can be used to enable, set up, configure, modify,
activate, disable, and destroy full-text indexes. Full-text indexes can also be set up and administered via
features built in to SQL Server Management Studio.
The first step is to clearly define the tables and columns that need full-text indexes based on business
requirements.
The full-text indexes needed can then be created, set up, and enabled using either system stored
procedures or SQL Server Management Studio.
Finally, the queries can be created to use the full-text indexes in order to satisfy business
requirements.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 5
Querying Full-Text Indexes
In this lesson, you will learn how full-text indexes can be used within a query. First, the T-SQL predicates
CONTAINS and FREETEXT is explored. Next, the use of full-text functions is discussed.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Full-text queries can include words and phrases, or multiple forms of a word or phrase and allows fast and
flexible indexing for keyword-based query of text data stored in a SQL Server database.
In SQL Server 2008, full-text search delivers enterprise-level search functionality.
Full-text search in SQL Server 2008 can scale from small mobile or personal deployments with
relatively few and simple queries, up to complex mission-critical applications with high query volume
over large quantities of textual data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
CONTAINS offers a complex syntax for using a full-text indexed column.
CONTAINS accepts several keywords that provides very flexible searching:
FORMSOF search for different forms of the root word.
NEAR search for one word that is near another word.
ISABOUT weight search for multiple words and provide a weighting for each words
importance.
OR search for multiple words that only require one match.
* - use an asterisk for a wildcard match.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The FREETEXT predicate is used to search columns containing character-based data types for values that
match the meaning and not the exact wording of the words in the search condition.
The full-text query engine internally performs the following actions on the freetext_string, assigns
each term a weight, and then finds the matches.
Separates the string into individual words based on word boundaries (word-breaking).
Generates inflectional forms of the words (stemming).
Identifies a list of expansions or replacements for the terms based on matches in the thesaurus in
queries.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Full-Text Functions
Key Points
Full-Text functions CONTAINSTABLE and FREETEXTTABLE provide the same searching capabilities as
their Full-Text predicate counterparts, CONTAINS and FREETEXT.
The functions return matches in table form.
The tables that are returned from the functions contain two columns Key and Rank.
The Key column contains the primary key value from the matching rows and the Rank column
contains a value indicating the quality of the match for each row.
The functions may return zero, one, or multiple matching rows.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
In most cases, just a single Full-Text search will not yield the exact result set that you are looking for in the
search.
Most queries will also involve other T-SQL conditions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: Why would you choose to use a full text search function rather than a predicate?
Question: Why would you choose to use a full text search predicate rather than a function?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have launched SQL Server Management Studio and queried
metadata using system catalog views, the information schema, dynamic management views, and system
stored procedures.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a query of relational data and produced the output
in XML format. You should have also created a query that converts data in XML format to a relational
format.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a new full-text catalog and queried that catalog
using both the FREETEXT and CONTAINS predicates.
Lab Shutdown
After you complete the lab, you must shut down the 2778A-NY-SQL-01 virtual machine and discard any
changes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review Questions
1. What type of functionality in an application requires querying of metadata?
2. What method would be used to convert data in XML format to a relational format?
3. What is the difference between a full-text query predicate and function?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module 8
Using Programming Objects for Data Retrieval
Contents:
Lesson 1: Overview of Views 8-3
Lesson 2: Overview of User-Defined Functions 8-13
Lesson 3: Overview of Stored Procedures 8-21
Lesson 4: Overview of Triggers 8-27
Lesson 5: Writing Distributed Queries 8-33
Lab: Using Programming Objects for Data Retrieval 8-38
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module Overview
Developing applications using Microsoft SQL Server 2008 involves the use of programming objects
such as views, user-defined functions, and stored procedures. These objects provide logical structure for
queries and data modification methods, are capable of processing business logic, and enforcing business
rules. This module provides an overview of these objects, demonstrate their capabilities, and provide best
practices regarding their use.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 1
Overview of Views
In this lesson, you will learn what views are and how they can be used to encapsulate queries.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A view is used to do any or all of these functions:
Restrict a user to specific rows in a table. For example, allow an employee to see only the rows
recording his or her work in a labor-tracking table.
Restrict a user to specific columns. For example, allow employees who do not work in payroll to see
the name, office, work phone, and department columns in an employee table, but do not allow them
to see any columns with salary information or personal information.
Join columns from multiple tables so that they look like a single table.
Aggregate information instead of supplying details. For example, present the sum of a column, or the
maximum or minimum value from a column.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
T-SQL Statements can be used to create, modify, or delete a view:
You can create a view by using the CREATE VIEW statement. A view can be created only in the current
database and it can have a maximum of 1024 columns.
You can modify the definition of an existing view by using the ALTER VIEW statement. You can alter
views without affecting dependent stored procedures or triggers and without changing permissions.
You can also alter indexed views.
You can remove one or more views from the current database by using the DROP VIEW statement.
After a view has been created, it can be queried just like a normal table. When you execute a query
on a view, the Database Engine checks that all the database objects referenced in the statement exist
and that they are valid in the context of the statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The following restrictions must be considered when creating views:
The total number of columns referenced in the view cannot exceed 1024 due to the maximum
capacity specification of SQL Server.
You cannot use the COMPUTE clause in a CREATE VIEW definition.
You cannot use the ORDER BY clause in views.
You cannot use the INTO clause with the SELECT statement in a view definition.
You cannot define a view that references a temporary table or table variable.
You cannot combine the CREATE VIEW statement with any other statement in a single batch.
Therefore, you must specify a GO statement before and after any CREATE PROCEDURE, CREATE VIEW,
or CREATE FUNCTION commands to isolate them from the rest of the instructions in a batch.
You can use SELECT * in a view definition as long as the SCHEMABINDING clause is not specified in
the view.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The following restrictions must be considered when modifying data using views:
Any modifications, such as UPDATE, INSERT, and DELETE statements, when applied to a view, must
modify columns from only one base table.
If WITH CHECK OPTION is used in the view definition, all data modification statements executed
against the view must adhere to the criteria set within the SELECT statement defining the view.
INSERT statements must specify values for any columns in the underlying table that do not allow null
values and have no DEFAULT definitions.
Columns being modified in a view must reference the underlying data in the table columns directly.
You cannot modify columns computed or derived by using aggregate functions such as AVG, COUNT,
SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR, and VARP.
Columns computed from an expression or set operators such as UNION, UNION ALL, CROSSJOIN,
EXCEPT, and INTERSECT cannot be modified unless you specify an INSTEAD OF trigger.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Indexed Views
Key Points
Unique clustered indexes can be created for views to improve performance.
If views are frequently referenced in queries, you can improve performance by creating a unique
clustered index on the view.
When a unique clustered index is created on a view, the result set is stored in the database just like a
table with a clustered index is stored.
The index can improve query performance of the view.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
To be able to index a view, the view must be defined using the WITH SCHEMABINDING option.
The view must be written to have a unique identifier for the index to be created on.
The index is created using the CREATE UNIQUE CLUSTERED INDEX statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Partitioned Views
Key Points
Partitioning data can help distribute the load of large tables and improve the query performance of that
data.
A partitioned view joins horizontally partitioned data from a set of member tables across one or more
servers, making the data appear as if from one table.
Partitioned Views allow the data in a large table to be split into smaller member tables.
Data can be partitioned between the member tables based on ranges of data values.
Partitioned Views make it easier to maintain the member tables independently.
Partitioned Views use the UNION ALL statement to combine the rows from the member tables.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Partitioned tables are useful for dividing the load of large tables into a series of smaller tables.
Partitioned tables use check constraints to define the range of data that should exist in each table.
The partitioned view uses the UNION ALL operator to combine the partitioned tables into a single
result set.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 2
Overview of User-Defined Functions
In this lesson, you will learn about User-Defined Functions. The topics will include how they are created,
what different types are possible, restrictions of user-defined functions, and how they can affect query
performance.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
User-Defined Functions are structures that can contain business logic that is applied to data stored in the
database:
User-defined functions can be used to encapsulate common logic that needs to be accessible from
multiple areas.
User-defined functions in Microsoft SQL Server 2008 are routines that accept parameters, perform an
action, such as a complex calculation, and return the result of that action as a value.
The return value can either be a single scalar value or a result set.
All user-defined functions contain a two-part structure of a header and a body.
SQL Server 2008 provides three types of user-defined functions, namely, scalar functions, table-valued
functions, and built-in functions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
T-SQL statements can be used to create, modify, or delete user-defined functions:
In SQL Server 2008, user-defined functions can be created by using the CREATE FUNCTION
statement.
Existing user-defined functions can be modified by using the ALTER FUNCTION statement.
User-defined functions can be removed by using the DROP FUNCTION statement.
Each fully qualified user-defined function name (schema_name.function_name) must be unique.
User-defined functions can be invoked in queries, statements, or expressions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A table valued user-defined function is specified by using RETURNS table in the function definition.
The RETURN statement is used to return the rows from the function.
The table valued user-defined function can be queried using a SELECT FROM statement just like a
table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Some restrictions exist regarding the contents of a user-defined function:
User-defined functions cannot be used to update data. You can use stored procedures instead.
User-defined functions cannot define or create new objects in the database.
All objects referred to by the function, with the exception of scalar types, have to be previously
declared and created.
Transactions cannot be performed inside a user-defined function.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
User-defined functions are either scalar-valued or table-valued.
User-defined functions are scalar-valued if SCALAR is specified in the RETURNS clause.
Scalar-valued functions can be defined by using multiple T-SQL statements.
Functions are table-valued if TABLE is specified in the RETURNS clause.
Depending on how the body of the function is defined, table-valued functions can be classified as
inline table-valued functions or multi-statement table-valued functions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
When evaluating user-defined functions, it is vital to consider the balance between performance and
maintainability.
If a user-defined function is used in a SELECT or a WHERE clause it will be executed for every row.
Function performance should be considered along with the number of rows passed through it.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 3
Overview of Stored Procedures
In this lesson, stored procedures and triggers will be defined. You will learn how they are created, how
they work, and what purposes they serve.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A stored procedure is a named collection of T-SQL statements that is stored on the server.
You can encapsulate repetitive tasks that execute efficiently by using a stored procedure.
Stored procedures accept input parameters and return output parameters to the calling procedure.
Stored procedures contain programming statements which perform operations on a database.
Stored procedures also return a status value to a calling procedure to indicate success or failure.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Stored procedures are created using the CREATE PROCEDURE statement.
Stored procedures can contain input and output parameters.
The body of a stored procedure can contain T-SQL statements, logical statements, and transactions.
Stored procedures are invoked using the EXECUTE statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are a number of steps performed when a Stored Procedure is executed for the first time:
When you execute a stored procedure for the first time, the SQL Server query optimizer builds an
execution plan for the stored procedure.
The compiled execution plan is stored in the stored procedure cache, in memory, on the SQL Server.
SQL Server tries to reuse this plan for subsequent executions of the stored procedure.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
The following practices should be considered when designing and writing stored procedures:
The WITH ENCRYPTION clause of the CREATE PROCEDURE statement will cause the procedure source
to be obfuscated so that it cannot be retrieved in its original form directly from metadata.
When input parameters are accepted, they should always be validated before use to maintain
security.
Cursors are very useful tools but are resource intensive.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 4
Overview of Triggers
In this lesson, triggers will be defined. You will learn how they are created, how they work, and what
purposes they serve.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A trigger is a special type of stored procedure that executes whenever an attempt is made to modify data
in a table that the trigger protects.
Triggers are typically used to maintain low-level data integrity and not used to return query results.
There are two categories of DML triggers: INSTEAD OF and AFTER. The INSTEAD OF trigger is also
known as the BEFORE trigger.
INSTEAD OF triggers are executed in place of the triggering action.
AFTER triggers are executed after the action of the INSERT, UPDATE, or DELETE statement is
performed.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Triggers are created using the CREATE TRIGGER statement.
The CREATE TRIGGER statement specifies the name of the trigger, the table that the trigger should
reference, and the type of the trigger.
Triggers can be defined as "AFTER" meaning that it executes after the specified action or "INSTEAD
OF" which executes before the specified action.
Triggers can be created for the INSERT, UPDATE, or DELETE actions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Triggers can roll back transactions if a specific business rule is not satisfied.
When a trigger that contains a rollback statement is executed from an SQL batch, the entire batch is
canceled.
All the data that was modified by the triggering action is rolled back by the ROLLBACK
TRANSACTION statement of the trigger.
Any statement following the ROLLBACK TRANSACTION statement will still be executed.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
INSTEAD OF triggers execute after the specified command is issued but before the data in the table is
modified.
AFTER triggers execute after the data has been modified.
Each trigger can apply to only one trigger.
Triggers must belong to the same schema as their target table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: Why would you use an INSTEAD OF trigger rather than an AFTER trigger?
Question: Why would you use an AFTER trigger rather than an INSTEAD OF trigger?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 5
Writing Distributed Queries
In today's business system architecture, data is stored in various locations in various formats. Using SQL
Server 2008, you can access heterogeneous data from a wide variety of systems and in a wide variety of
formats. This lesson will focus on how heterogeneous data can be accessed in SQL Server.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Distributed queries can allow users to access another data source (for example, files, non-relational
data sources such as Active Directory, and so on) using the security context of the Microsoft
Windows account under which the SQL Server service is running. SQL Server 2008 impersonates the
login appropriately for Windows logins.
Use the sp_addlinkedserver stored procedure to define the specific logins that are authorized to
access the corresponding linked server. This control is not available for ad hoc names, so use caution
in enabling an OLE DB provider for ad hoc access.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
sp_addlinkedserver creates a linked server. A linked server allows for access to distributed,
heterogeneous queries against OLE DB data sources. After a linked server is created by using
sp_addlinkedserver, distributed queries can be run against this server. If the linked server is defined as
an instance of SQL Server, remote stored procedures can be executed.
When a user logs on to the local server and executes a distributed query that accesses a table on the
linked server, the local server must log on to the linked server on behalf of the user to access that
table. Use sp_addlinkedsrvlogin to specify the login credentials that the local server uses to log on to
the linked server.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
You can access remote heterogeneous data by writing ad hoc distributed queries.
This technique is best used if the remote data does not need to be accessed frequently.
By using ad hoc distributed queries, you can avoid setting up a permanent link to the external data
source and thus maintain better security.
SQL Sever provides two rowset functions, such as OPENROWSET and OPENDATASOURCE, which can
be used for writing ad hoc distributed queries.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Linked servers provide consistent connections to remote data sources.
Queries can be written against data in linked servers by using either a fully qualified four-part name
or by using the OPENQUERY function.
The four-part name consists of linked server name, the catalog, the schema name, and finally the
name of the object to be queried.
The OPENQUERY function accepts the name of the linked server to be queried as well as the SQL to
be submitted to that linked server.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 1: Create a view to select only the name and ID columns from the Person table
In SQL Server Management Studio, create a new view.
In the view, select BusinessEntityID, FirstName, MiddleName, and LastName from the
Person.Person table.
Create the view and query it.
Results: After this exercise, you should have created a view and queried it using a T-SQL query.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have launched SQL Server Management Studio and created and
tested both a scalar valued and table valued user-defined function.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
1. Create a stored procedure to select the name columns from the Person table for a given ID.
Task 1: Create a stored procedure to select the name columns from the Person table for
a given ID
In SQL Server Management Studio, create a new stored procedure.
Accept an integer PersonID value as an input parameter.
In the stored procedure, select FirstName, MiddleName, and LastName from the view created in
Exercise 2.
Create the stored procedure.
Results: After this exercise, you should have created a stored procedure that queries a view.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
'Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=E:\Mod08\Labfiles\SalesSummary2008.xls',
'SELECT Country, TotalSales FROM [Sheet1$]'
'SalesSummary',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'E:\Mod08\Labfiles\SalesSummary2008.xls',
NULL,
'Excel 8.0'
Results: After this exercise, you should have executed an ad hoc distributed query and created and
queried a linked server.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lab Shutdown
After you complete the lab, you must shut down the 2778A-NY-SQL-01 virtual machine and discard any
changes.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review Questions
1. What option must be specified in a CREATE VIEW in order for the view to be indexable?
2. How can the source of a stored procedure be hidden?
3. What special kind of stored procedure can be used to roll back an attempted data modification in a
SQL Server table?
4. What types of data sources can be linked to SQL Server 2008 for distributed queries?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module 9
Using Advanced Techniques
Contents:
Lesson 1: Considerations for Querying Data 9-3
Lesson 2: Working with Data Types 9-11
Lesson 3: Cursors and Set-Based Queries 9-19
Lesson 4: Dynamic SQL 9-26
Lesson 5: Maintaining Query Files 9-31
Lab: Using Advanced Techniques 9-34
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Module Overview
This module provides you with the skills and knowledge about advanced querying techniques in
Microsoft SQL Server 2008. This course provides information about the best practices you should
follow when querying complex data that involves date/time data, and how to work with the hierarchyid
data type. You will learn how to use cursors and set-based queries, as well as dynamic SQL. In addition,
you will examine how to use Microsoft Team Foundation Server for managing query source files.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 1
Considerations for Querying Data
Because there are often many ways to query for the same data, you need to understand how SQL Server
processes queries using execution plans to help identify the most efficient query methods for a given
situation. Also, when querying data, you need to understand how data type conversion works, as well as.
the order of precedence of data types.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Execution Plans
Key Points
Execution plans graphically display the data retrieval methods chosen by the SQL Server query optimizer.
Execution plans represent the execution cost of specific statements and queries in SQL Server using
icons.
To use the graphical execution plan feature in Management Studio, and to use the Showplan
Transact-SQL SET statement options, users must have sufficient permissions to execute the Transact-
SQL statements and queries. Users must also be granted the SHOWPLAN permission for all databases
containing referenced objects.
The graphical execution plan output in SQL Server Management Studio is read from right to left and
from top to bottom. Each query in the batch that is analyzed is displayed, including the cost of each
query as a percentage of the total cost of the batch.
Note: For more information about the icons used to display execution plans in Management
Studio, see the topic Graphical Execution Plan Icons (SQL Server Management Studio) in SQL
Server Books Online.
Question: Why would you want to view the Estimated Execution Plan?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: What do you need to do in order to be able to view the Actual Execution Plan?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Data types can be converted in the following scenarios:
When data from one object is moved to, compared with, or combined with data from another
object, the data may have to be converted from the data type of one object to the data type of
the other.
When data from a Transact-SQL result column, return code, or output parameter is moved into a
program variable, the data must be converted from the SQL Server system data type to the data
type of the variable.
Implicit conversions are not visible to the user. SQL Server automatically converts the data from one data
type to another. For example, when a smallint is compared to an int, the smallint is implicitly converted
to int before the comparison proceeds.
Explicit conversions use the CAST or CONVERT functions. The CAST and CONVERT functions convert a
value (a local variable, a column, or another expression) from one data type to another. For example, the
following CAST function converts the numeric value of $157.27 into a character string of '157.27':
Note: Not all data type conversions are allowed. For a chart of allowed implicit and explicit conversions,
see the topic CAST and CONVERT (Transact-SQL) in SQL Server Books Online.
Question: What are some examples of operations that can result in data conversion?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Implicit Conversions
Key Points
Implicit conversions occur whenever two different data types are operated upon together without the use
of CAST or CONVERT. In the code sample above, the variable @firstname is a char data type. The
FirstName field in the Person.Person table is an nvarchar data type.
In this case, char has a lower precedence than nvarchar, so the @firstname variable is converted to
nvarchar for comparison, as the execution plan shows. Data type precedence is covered shortly.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
CAST and CONVERT explicitly convert one data type to another, with slightly different syntaxes.
CONVERT is SQL Server specific and includes additional styles for converting date/time data.
Use CAST instead of CONVERT if you want Transact-SQL program code to comply with ISO. Use
CONVERT instead of CAST to take advantage of the style functionality in CONVERT.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
When an operator combines two expressions of different data types, the rules for data type precedence
specify that the data type with the lower precedence is converted to the data type with the higher
precedence. If the conversion is not a supported implicit conversion, an error is returned. When both
operand expressions have the same data type, the result of the operation has that data type.
In the code sample above, the first statement fails because int has higher precedence than varchar. The
string 'Page Number' cannot be converted to int, so an explicit conversion of the @pageno variable to
varchar is required for the statement to succeed and produce the correct output.
Note: For a complete list of data type precedence, see the topic Data Type Precedence (Transact-SQL) in
SQL Server Books Online.
Question: Can you think of other scenarios where data type precedence might cause problems for
implicit conversions?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: How can implicit data type conversions cause unexpected results on queries that run
successfully?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 2
Working with Data Types
With the introduction of new date/time data types in SQL Server 2008, you need to know how to work
with these data types in order to make sure your time/date data is correct in the database and in reports.
Another new data type, hierachyid, can help organize hierarchical data in your databases.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
In SQL Server, there are six built-in data types to store date and time data: time, date, smalldatetime,
datetime, datetime2, and datetimeoffset.
The smalldatetime, datetime and datetime2 data types store both date and time data. The
datetimeoffset data type also stores both date and time data, but is time-zone aware for specifying the
offset from a time or datetime value. The time and date data types store only time and only date data,
respectively.
If you specify only the date part when inserting data to smalldatetime, datetime, or datetime2 column,
then SQL Server stores a zero value in the time part. If you specify only the time part, then SQL Server
stores 1900-01-01 in the date part. Because the date and time values are stored together in those data
types, some unexpected problems might occur.
The following table summarizes the key differences between the different date and time data types:
User-
defined
Storage fractional
size second Time zone
Data type Format Range Accuracy (bytes) precision offset
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
User-
defined
Storage fractional
size second Time zone
Data type Format Range Accuracy (bytes) precision offset
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
When inserting date/time values into tables or views, you need to ensure that the format and the
language settings of the date/time data types are correct. It is recommended that you use language-
independent formats, rather than language-dependent formats because they are portable across
languages. It is not recommended that you use language-dependent formats even with SET statements.
You can also set SQL Server to use the ISOdatetime format. In the ISO format, the datetime values are
represented as yyyymmdd [hh:mm:ss] or yyyy-mm-ddThh:mm:ss. The ISO dateformat is always
guaranteed to work irrespective of the LANGUAGE or DATEFORMAT setting.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: What happens when you insert data containing only a date or only a time into a column that
holds date and time data?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Hierarchical data is defined as a set of data items that are related to each other by hierarchical
relationships. Hierarchical relationships are where one item of data is the parent of another item.
Hierarchical data is common in databases. Examples include the following:
An organizational structure
A file system
A set of tasks in a project
A taxonomy of language terms
A graph of links between Web pages
The hierarchyid data type makes it easier to store and query hierarchical data. hierarchyid is optimized
for representing trees, which are the most common type of hierarchical data. The hierarchyid data type
can be used to replace recursive common table expressions (CTEs) which are frequently used to generate
hierarchical representations of database data.
The code sample shows how to create a table that implements the hierarchyid data type on the
EmployeeID column for organizing employees in the database in a hierarchy.
Question: Can you think of a scenario where using hierarchical data might be useful?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
A hierarchy needs an indexing strategy. There are two indexing strategies supported:
Depth-first: A depth-first index, rows in a sub-tree are stored near each other. For example, all
employees that report through a manager are stored near their managers record. This is represented
in the code sample on the left.
Breadth-first: A breadth-first stores the rows each level of the hierarchy together. For example, the
records of employees who directly report to the same manager are stored near each other. This is
represented by the code sample on the right.
You can perform a number of operations on nodes within the hierarchy. You can query to get nodes
above or below a point on the tree, move nodes from one parent to another, and add and remove nodes
using the methods supplied with the hierarchyid data type.
Note: For a complete list and description of methods available for working with hierarchies, see the topic
hierarchyid Data Type Method Reference in SQL Server Books Online.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Question: What is the difference between the GetDescendant and GetAncestor methods?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 3
Cursors and Set-Based Queries
When querying data, the set of rows returned from a query is called the result set. Cursors allow you to
perform operations on the result set on a row-by-row basis. Set-based logic, or a set-based approach,
deals with the result set as a whole or parts instead of individual rows of data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Understanding Cursors
Key Points
Operations in a relational database act on a complete set of rows. The set of rows returned by a SELECT
statement consists of all the rows that satisfy the conditions in the WHERE clause of the statement. This
complete set of rows returned by the statement is known as the result set. Applications, especially
interactive online applications, cannot always work effectively with the entire result set as a unit. These
applications need a mechanism to work with one row or a small block of rows at a time. Cursors are an
extension to result sets that provide that mechanism.
Cursors extend result processing by:
Allowing positioning at specific rows of the result set.
Retrieving one row or block of rows from the current position in the result set.
Supporting data modifications to the rows at the current position in the result set.
Supporting different levels of visibility to changes made by other users to the database data that is
presented in the result set.
Providing Transact-SQL statements in scripts, stored procedures, and triggers access to the data in a
result set.
Question: Can you think of a scenario where a cursor might prove useful?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Cursor Implementations
Key Points
SQL Server supports three cursor implementations.
Transact-SQL cursors
Are based on the DECLARE CURSOR syntax and are used mainly in Transact-SQL scripts, stored
procedures, and triggers. Transact-SQL cursors are implemented on the server and are managed by
Transact-SQL statements sent from the client to the server. They may also be contained in batches, stored
procedures, or triggers.
Application programming interface (API) server cursors
Support the API cursor functions in OLE DB and ODBC. API server cursors are implemented on the server.
Each time a client application calls an API cursor function, the SQL Server Native Client OLE DB provider or
ODBC driver transmits the request to the server for action against the API server cursor.
Client cursors
Are implemented internally by the SQL Server Native Client ODBC driver and by the DLL that implements
the ADO API. Client cursors are implemented by caching all the result set rows on the client. Each time a
client application calls an API cursor function, the SQL Server Native Client ODBC driver or the ADO DLL
performs the cursor operation on the result set rows cached on the client.
Note: Because Transact-SQL cursors and API server cursors are implemented on the server, they are
referred to collectively as server cursors.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Using Cursors
Key Points
Transact-SQL cursors and API cursors have different syntax, but the following general process is used with
all SQL Server cursors:
Associate a cursor with the result set of a Transact-SQL statement, and define characteristics of the
cursor, such as whether the rows in the cursor can be updated.
Execute the Transact-SQL statement to populate the cursor.
Retrieve the rows in the cursor you want to see. The operation to retrieve one row or one block of
rows from a cursor is called a fetch. Performing a series of fetches to retrieve rows in either a forward
or backward direction is called scrolling.
Optionally, perform modification operations (update or delete) on the row at the current position in
the cursor.
Close the cursor.
When you are completely finished with a cursor, you must also deallocate the resources using the
DEALLOCATE command. Closing a cursor releases locks, but SQL Server resources will be held until a
cursor is deallocated.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
While cursors allow a procedural approach to working with data by handling the data row-by-row, set-
based logic, or a set-based approach to handling SQL Server data is inherent to SQL Server. Using a set-
based approach to querying data, you are able to manipulate the entire result set as a whole. When using
set-based logic, you allow SQL Server to determine the most efficient way to retrieve and manipulate the
result set.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 4
Dynamic SQL
Although static SQL works well in many situations, there are some applications in which the data access
cannot be determined in advance. To solve this problem, an application can use a form of embedded SQL
called dynamic SQL. Unlike static SQL statements, which are hard-coded in the program, dynamic SQL
statements can be built at run time and placed in a string host variable. They are then sent to SQL Server
for processing.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Dynamic SQL allows a T-SQL query to be built using variables and strings, then executed as a string using
two available methods, which you will learn about shortly.
Dynamic SQL can be useful in applications where forms with optional fields may be filled out and
submitted. You can use the contents of the optional fields that have been filled out to create WHERE
clauses to help return more relevant results.
In the code sample above, a variable called @SQLString is populated with a SELECT statement. The
@SQLString variable can then be passed to one of two commands for execution.
Question: Can you think of a scenario where dynamic SQL might be useful?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are two methods for executing dynamic SQL statements, sp_executesql and EXECUTE.
sp_executesql is a system stored procedure that takes the dynamic SQL statement as a parameter
and executes it. It can take additional parameters as well.
EXECUTE can also execute dynamic SQL strings, and has a different syntax than sp_executesql.
Question: Why choose one method of dynamic SQL execution over the other?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
There are some important things to consider when using dynamic SQL:
SQL injection is an attack in which malicious code is inserted into strings that are later passed to an
instance of SQL Server for parsing and execution. Dynamic SQL can be prone to SQL injection attacks
if strings are not validated before they are executed.
Security is checked for every object involved in a dynamic SQL statement. This means that you may
have to give more permissions on underlying database objects than you would with a stored
procedure. A user with permission to execute a stored procedure does not need permissions on the
underlying database objects, but a user who executed a dynamic SQL statement against those same
tables must have permissions on them.
Because of the nature of dynamic SQL, it is less likely to generate execution plans that can be cached
and reused than static SQL. This can have an impact on query performance using dynamic SQL.
Using sp_executesql can help SQL Server reuse execution plans when the only variation is in the
parameter values supplied to the Transact-SQL statement. Because the Transact-SQL statements
themselves remain constant and only the parameter values change, the SQL Server query optimizer is
likely to reuse the execution plan it generates for the first execution.
Because dynamic SQL statements are generally unlikely to generate reusable execution plans, their
performance is related directly to the complexity of the query you build. When possible, try to reduce
the complexity of any dynamic SQL queries you use.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Lesson 5
Maintaining Query Files
When you have many developers working on a SQL Server project, you want to have a historical record of
versions of projects and files, or you want to ensure that you have a central repository for all your SQL
Server projects, you may want to implement a versioning and source control system.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
When you work in teams, you need to enable the parallel development of projects by team members.
However, when team members work with the same file, they need to reconcile conflicts between the
different versions of the file and avoid the potential loss of valuable changes. In such situations, you
require software such as Microsoft Visual SourceSafe or Team Foundation Server for source control
and version management.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Key Points
Team Foundation Server (TFS) 2008 provides source control and versioning capabilities. TFS will supports a
Microsoft SQL Server 2005 back end, and will support SQL Server 2008 for a back end when SQL Server
2008 and Team Foundation Server SP1 reach RTM.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have viewed estimated and actual execution plans for queries,
and saved the execution plans to files.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review the Results pane. SQL Server automatically converted "False" to a data type of bit to
compare it to the SalariedFlag column.
Look up the data types for the ListPrice and StandardCost columns in the Production.Product
table.
Create a new query on the AdventureWorks2008 database with the following code:
UPDATE Production.Product
SET ListPrice = @NewListPrice, StandardCost = @NewStandardCost
WHERE ProductID = '2'
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Run the query. In the Results pane, there is a single column with the employee name and pay rate
combined.
Open the file E:\Mod09\Labfiles\Starter\Exercise02\PayRateLastChange.sql.
Run the query.
Review the results of the query. Notice that the last column does not show both the pay rate and
date.
In the query pane, modify the SELECT statement so that it begins as follows:
Run the query. Notice that the query now runs and the last column displays the correct information.
Results: After this exercise, you should have verified that SQL Server automatically performs implicit
conversions, and you should have also successfully run queries that performed explicit data type
conversions.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
1. Create a hierarchy.
2. Query a hierarchy.
Results: After this exercise, you should have created a table for the Sales department hierarchy and
populated it.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review the StandardCost and ListPrice columns in the Results pane. Keep this query pane open.
Open the E:\Mod09\Labfiles\Starter\Exercise04\UpdateListPriceCursor.sql file.
Review and execute the query.
When the update is complete, run the SELECT query again.
Review the ListPrice column in the Results pane. The ListPrice column has been updated.
UPDATE Production.Product
SET StandardCost = 7.99
Results: After this exercise, you should have used a cursor to update the ListPrice column and used a
set-based query to update the StandardCost column of the Production.Product table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Review Questions
1. How do cursors handle result sets?
2. What functions are used to perform explicit data type conversions?
3. What methods can be used to execute dynamic SQL queries?
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
How will your application behave if an errant or malicious user enters a 10-megabyte MPEG file
where your application expects a postal code?
How will your application behave if a DROP TABLE statement is embedded in a text field.
Test the size and data type of input and enforce appropriate limits. This can help prevent deliberate
buffer overruns.
Never build Transact-SQL statements directly from user input.
Use stored procedures to validate user input.
Never concatenate user input that is not validated. String concatenation is the primary point of entry
for script injection.
Do not accept the following strings in fields from which file names can be constructed: AUX, CLOCK$,
COM1 through COM8, CON, CONFIG$, LPT1 through LPT8, NUL, and PRN.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Course Evaluation
Your evaluation of this course will help Microsoft understand the quality of your learning experience.
Please work with your training provider to access the course evaluation form.
Microsoft will keep your answers to this survey private and confidential and will use your responses to
improve your future learning experience. Your open and honest feedback is valuable and appreciated.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 3: Resize, hide, and close Object Explorer and Solution Explorer
1. Reduce the size of the Contents pane by resizing it.
2. Scroll down the Connecting with Registered Servers and Object Explorer page to view its contents.
3. Click the Close button to close the Help window.
4. On the View menu, click Solution Explorer.
5. In Solution Explorer, click Auto Hide to hide the pane.
6. In Object Explorer, click Auto Hide to hide the pane.
Task 4: Create a new solution and explore the solution objects in Object Explorer
1. Open Object Explorer by clicking the Object Explorer tab.
2. In Object Explorer, click Auto Hide to dock the pane.
3. In the Object Explorer, double-click the Databases folder, double-click AdventureWorks2008, and
then double-click Tables.
4. You can scroll through the pane to view the list of tables.
5. On the toolbar, click New Query. The SQLQuery1.sql - NY-SQL-01.AdventureWorks2008 window
opens.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 5: Add projects to an existing solution and create queries in the projects
1. In the Connections folder of the PersonAddress project, right-click NY-SQL-01:NY-SQL-01\Student,
and then click New Query.
2. The SQLQuery1.sql object appears in the Queries folder.
3. In the query window, type USE AdventureWorks2008, and then press ENTER.
4. On the toolbar, click Execute.
5. The active database is changed to AdventureWorks2008.
6. In the query window, type SELECT DISTINCT CITY FROM Person.Address.
7. On the toolbar, click Execute.
8. The list of cities in the Person.Address table is displayed without repetition in the Results pane.
9. In the Queries folder of PersonAddress project, right-click SQLQuery1.sql, and then click Rename.
10. Rename the query as Address.sql.
11. The query has been renamed to Address.sql.
12. On the File menu, click Save Address.sql.
13. In Solution Explorer, right-click PersonAddress, and then click Save PersonAddress.ssmssqlproj.
14. Right-click Solution Solution1 (1 project), point to Add, and then click New Project.
15. The Add New Project dialog box appears.
16. In the Templates box, verify that the SQL Server Scripts template is highlighted.
17. In the Name field, select SQL Server Scripts1, type HumanResourcesDepartment, and then click
OK.
18. The HumanResourcesDepartment project is created under Solution Solution1 (2 projects).
19. In the HumanResourceDepartments project, right-click Connections, and then click New
Connection.
20. The Connect to Server dialog box appears.
21. Verify the connection information, and then click OK.
22. In the Connections folder, under HumanResourceDepartments, right-click NY-SQL-01:NY-SQL-
01\Student and then click New Query.
23. The SQLQuery1.sql folder appears.
24. In the Queries folder of HumanResourcesDepartment project, right-click SQLQuery1.sql, and then
click Rename.
25. Rename the query as Department.sql.
26. The query has been renamed to Department.sql.
27. In the query window, type USE AdventureWorks2008, and then press ENTER.
28. On the toolbar, click Execute.
29. The active database is changed to AdventureWorks2008.
30. In the query window, type SELECT Name, GroupName FROM HumanResources.Department.
31. On the toolbar, click Execute.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
32. The Name and GroupName columns are displayed in the Results pane.
33. On the File menu, and click Save Department.sql.
34. In Solution Explorer, right-click the HumanResourcesDepartment project, and then click Save
HumanResourcesDepartment.ssmssqlproj.
35. Click Solution Solution1 (2 projects).
36. On the File menu, click Save Solution1 As.
37. The Save File As dialog box appears. Verify that the Projects folder is selected in the Save in: list.
38. In the File name field, type AdventureWorks2008.ssmssln, and then click Save.
39. Click the Close button to close SQL Server Management Studio.
Results: After this exercise, you should have explored the components and executed queries in the SQL
Server Management Studio.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 3: Run a Transact-SQL script file and save the output to a text file
1. In the Command Prompt window, type: sqlcmd -S NY-SQL-01 -i
E:\MOD01\Labfiles\Starter\Department.sql -o E:\MOD01\Labfiles\Solution\DeptList.txt.
2. Press ENTER.
3. Notice that there is no output in the Command Prompt window.
Results: After this exercise, you should have started and used sqlcmd to create reports.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Exercise 3: Generate a report from a SQL Server database using Microsoft Office
Excel
Task 1: Launch Excel
1. On the Start menu, click All Programs, click Microsoft Office, and then click Microsoft Office
Excel 2007.
2. The Microsoft Excel window opens.
Results: After this exercise, you should create a report from a SQL Server database using
Microsoft Office Excel.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Generate a report by using the SELECT * statement with the FROM clause
1. On the Start menu, point to All Programs, click Microsoft SQL Server 2008 and click SQL Server
Management Studio.
2. In the Connect to Server dialog box, verify that the Server type, Server name, and the
Authentication boxes have been populated correctly, and click Connect to accept the default
settings.
3. On the toolbar of SQL Server Management Studio, click New Query. A new query opens in the query
window.
4. In the query window type the following SQL Statement:
USE AdventureWorks2008
GO
SELECT *
FROM Person.Person
5. Click Execute.
6. Browse the result set in the Results pane.
Task 3: Generate a report by using the SELECT statement with the FROM clause
1. On the toolbar of SQL Server Management Studio, click New Query. A new query opens in the query
window.
2. In the new query window type and execute the following SQL statement:
USE AdventureWorks2008
GO
SELECT Title, FirstName, LastName, MiddleName
FROM Person.Person
Results: After this exercise, you should have learned how to create a basic SELECT statement to retrieve
data from a table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, ListPrice, Color, Size, Weight
FROM Production.Product
WHERE ListPrice < $100
Task 2: Generate a report by using the SELECT statement with the AND and LIKE
operators
1. Enter the following SQL Statement in the Query window:
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, ListPrice, Color, Size, Weight
FROM Production.Product
WHERE ListPrice < $100
AND ProductNumber LIKE 'SO%'
Task 3: Generate a report by using the SELECT statement with the OR operator
1. Change the SQL statement to read:
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, ListPrice, Color, Size, Weight
FROM Production.Product
WHERE ListPrice < $100
AND ProductNumber Like 'SO%'
OR ProductNumber Like 'TG%'
Task 4: Generate a report by using the SELECT statement with the BETWEEN operator
1. Click New Query and type the following SQL statement into the Query window:
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, ListPrice, Color, Size, Weight
FROM Production.Product
WHERE ProductNumber LIKE 'SO%'
OR (ListPrice Between $50 and $180
AND ProductNumber LIKE 'TG%')
Task 5: Generate a report by using the SELECT statement with the IN operator
1. Rewrite the SQL statement to read as follows:
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, ListPrice, Color, Size, Weight
FROM Production.Product
WHERE ProductNumber LIKE 'SO%'
OR (ListPrice Between $50 and $180
AND ProductNumber LIKE 'TG%'
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have learned how to use several different comparison operators
to create reports specific to different user needs.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, Weight
FROM Production.Product
WHERE ProductLine = NULL
3. Click Execute.
4. Notice that no result set is displayed in the Results pane.
Task 2: Generate a report by using the SELECT statement with the IS NULL function
1. Rewrite the SQL statement to use IS NULL:
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, Weight
FROM Production.Product
WHERE ProductLine IS NULL
2. Click Execute.
3. Browse the result set displayed in the Results pane.
Task 3: Generate a report by using the SELECT statement with the ISNULL function to
rename values
1. On the toolbar of SQL Server Management Studio, click New Query. A new query opens in the query
window.
2. In the query window type the following SQL statement:
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, Weight,
ISNULL(ProductLine, 'NA')
FROM Production.Product
3. Click Execute.
4. The result set is displayed in the Results pane. Notice that the new column shows NA in all rows that
Weight has a NULL value. But the column has no heading.
Task 4: Generate a report by using the SELECT statement with the ISNULL function and a
column alias
1. Change the statement as follows, to add Product Line as a column heading for the ProductLine
column:
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, Weight,
ISNULL(ProductLine, 'NA') AS Product Line
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
FROM Production.Product
2. Click Execute.
3. The result set is displayed in the Results pane. Note that the new column now has the heading of
Product Line.
Task 5: Generate a report by using the SELECT statement with the ISNULL function and
the COALESCE and CONVERT functions
1. Click New Query and enter the following SQL Statement into the Query window:
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, COALESCE(CONVERT(NVARCHAR,Weight), SIZE, 'NA') AS
Measurement,
ISNULL(ProductLine, 'NA') AS Product Line
FROM Production.Product
2. Click Execute.
3. The result set is displayed in the Results pane. Notice the values in the Measurement column.
Results: After this exercise, you should have learned to handle NULL values in a result set by identifying
them and replacing them with alternate values when necessary.
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, Class
FROM Production.Product
ORDER BY Class
3. Click Execute.
Task 2: Format a result set by using the ORDER BY clause and the DESC keyword
1. Click New Query.
2. Type the following SQL statement into the Query window:
USE AdventureWorks2008
GO
SELECT ProductNumber, Name, Class, ListPrice
FROM Production.Product
ORDER BY Class, ListPrice Desc
USE AdventureWorks2008
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
GO
SELECT DISTINCT Color
FROM Production.Product
WHERE ProductNumber LIKE 'HL%'
USE AdventureWorks2008
GO
SELECT LastName + ',' + FirstName
FROM Person.Person
Task 5: Format a result set by concatenating strings and using column aliasing
1. Rewrite the query to assign the column name Contacts.
USE AdventureWorks2008
GO
SELECT (LastName + ',' + FirstName)
AS Contacts
FROM Person.Person
USE AdventureWorks2008
GO
SELECT (LastName + ',' + FirstName) AS Contacts
FROM Person.Person
WHERE SUBSTRING (LastName,1,3)= 'Mac'
Results: After this exercise, you should have learned how to format the result sets to make them more
readable.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Write a query that displays a single summary value for all the rows
1. On the toolbar of SQL Server Management Studio, click New Query. A new query opens in the query
window.
2. In the Available Databases list on the toolbar, click AdventureWorks2008. You are connected to
the AdventureWorks2008 database.
3. In the query window, type the following SQL statements:
SELECT AVG(VacationHours)
AS 'AverageVacationHours',
SUM(SickLeaveHours) AS 'TotalSickLeave Hours'
FROM HumanResources.Employee
WHERE JobTitle LIKE '%Vice President%'
Task 3: Write a second query that displays a single summary value for all rows
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statement:
SELECT COUNT(*)
FROM HumanResources.Employee
Task 4: Write a query that computes the total number of employees with the
AddressLine2 value as NULL
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statement:
SELECT COUNT(*)
FROM Person.Address
WHERE ISNULL (AddressLine2, '0') = '0'
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise you should have launched SQL Server Management Studio and created
queries to display summary values for rows. You should have also created queries to compute totals and
eliminate NULL values.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Write a query that displays the various colors of a particular product and the
average ListPrice of the colors
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statements:
Task 3: Generate a report that lists the average order quantity and sum of line total for
each product with a line total that exceeds $1000000.00 and with average quantity less
than 3
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statements:
Task 4: Group the products and then compute the sum of the quantity shelf-wise
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statements:
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 6: Distinguish the rows generated by the summary or aggregations and actual table
rows
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statements:
Task 7: Generate a report of the summary columns by using the GROUPING function
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statements:
Task 8: Generate a report that displays all the products, the unit price, the unit price
discount, and the sum of the columns
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statements:
Results: After this exercise you have learned how to create queries to compute averages, display
additional data and perform summations. You should have also learned how to create queries using
aggregation functions and the GROUPING function.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Generate a report that ranks the products by using the RANK function
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statements:
Task 3: Generate a report that ranks the products by using the DENSE_RANK function
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statements:
Task 4: Generate a report that lists the details of salespersons based on their year-to-
date sales in descending order, and then group them into four categories
1. On the toolbar of SQL Server Management Studio, click New Query.
2. In the query window, type the following SQL statements:
Results: After this exercise you have learned how to create queries that use the various ranking functions
to organize and rank grouped data.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise you have learned how to use the PIVOT operator to create a crosstab query
and also how to use the UNPIVOT operator.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
SELECT e.LoginID
FROM HumanResources.Employee AS e
INNER JOIN Sales.SalesPerson AS s
ON e.BusinessEntityID = s.BusinessEntityID;
Task 3: Create and execute a left outer join and a right outer join
1. On the toolbar, click New Query.
2. In the new, blank query window type the following T-SQL statement:
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
8. Review the results of the query and then close the query editor without saving the query.
9. Leave Microsoft SQL Server Management Studio open for the next exercise.
Results: After this exercise, you should have launched SQL Server Management Studio and created and
executed an Inner Join. You should have also created and executed a Left Outer Join and a Right Outer
Join.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Create and execute a query using a self join and the DISTINCT clause
1. On the toolbar, click New Query.
2. In the new, blank query window type the following T-SQL statement:
Task 3: Create and execute a non-equi join with an equality and a non-equality operator
1. On the toolbar, click New Query.
2. In the new, blank query window type the following T-SQL statement:
Results: After this exercise, you should have created and executed a query using a self join, created and
executed a query using a self join and the DISTINCT clause, and created and executed a non-equi join
with both an equality and non-equality operator.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Limit result sets by using the EXCEPT clause with the SELECT statement
1. On the toolbar, click New Query.
2. In the new, blank query window type the following T-SQL statement:
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder;
Task 3: Limit result sets by using the INTERSECT clause with the SELECT statement
1. On the toolbar, click New Query.
2. In the new, blank query window type the following T-SQL statement:
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder;
Task 4: Limit result sets by using the TOP and TABLESAMPLE operators
1. On the toolbar, click New Query.
2. In the new, blank query window type the following T-SQL statement:
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have combined the result sets of two queries by using the UNION
ALL operator. You should have also limited result sets by using the EXCEPT and INTERSECT clauses.
Finally you should have limited result sets using the TOP and TABLESAMPLE operators.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
SELECT Name
FROM Production.Product
WHERE ListPrice =
(SELECT ListPrice
FROM Production.Product
WHERE Name = 'Chainring Bolts');
SELECT Name
FROM Production.Product
WHERE EXISTS
(SELECT *
FROM Production.ProductSubcategory
WHERE ProductSubcategoryID =
Production.Product.ProductSubcategoryID
AND Name = 'Wheels');
Results: After this exercise, you should have launched SQL Server Management Studio and created and
executed a basic subquery. You should have also created and executed a subquery with the EXISTS
keyword.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a correlated subquery and also created a correlated
subquery with comparison operators.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
/* SELECT statement built using a join that returns the same result set. */
SELECT Prd1.Name
FROM Production.Product AS Prd1
JOIN Production.Product AS Prd2
ON (Prd1.ListPrice = Prd2.ListPrice)
WHERE Prd2.Name = 'Chainring Bolts';
Results: After this exercise you should have created a subquery and a join that produced the same result
set. You should have also created a temporary table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
USE AdventureWorks2008;
GO
WITH Parts(AssemblyID, ComponentID, PerAssemblyQty, EndDate, ComponentLevel) AS
(
SELECT b.ProductAssemblyID, b.ComponentID, b.PerAssemblyQty,
b.EndDate, 0 AS ComponentLevel
FROM Production.BillOfMaterials AS b
WHERE b.ProductAssemblyID = 800
AND b.EndDate IS NULL
UNION ALL
SELECT bom.ProductAssemblyID, bom.ComponentID, p.PerAssemblyQty,
bom.EndDate, ComponentLevel + 1
FROM Production.BillOfMaterials AS bom
INNER JOIN Parts AS p
ON bom.ProductAssemblyID = p.ComponentID
AND bom.EndDate IS NULL
)
SELECT AssemblyID, ComponentID, Name, PerAssemblyQty, EndDate,
ComponentLevel
FROM Parts AS p
INNER JOIN Production.Product AS pr
ON p.ComponentID = pr.ProductID
ORDER BY ComponentLevel, AssemblyID, ComponentID;
GO
Results: After this exercise you should have created a common table expression. You should have also
created a recursive query using a common table expression.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
FROM Production.ScrapReason;
Results: After this exercise, you should have launched SQL Server Management Studio, created and
executed an INSERT statement that adds values to a table, created and executed an INSERT statement
using the INTO syntax, and created and executed an INSERT statement using the OUTPUT syntax.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
DELETE Sales.ShoppingCartItem
OUTPUT DELETED.*;
Results: After this exercise, you should have created and executed a DELETE statement using the WHERE
syntax and created and executed a DELETE statement using the FROM syntax. You should have also
created and executed a DELETE statement using the OUTPUT syntax and then created and executed a
TRUNCATE TABLE statement.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
UPDATE Sales.SalesPerson
SET Bonus = 6000, CommissionPct = .10, SalesQuota = NULL;
UPDATE Production.Product
SET Color = N'Metallic Red'
WHERE Name LIKE N'Road-250%' AND Color = N'Red';
UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD + SubTotal
FROM Sales.SalesPerson AS sp
JOIN Sales.SalesOrderHeader AS so
ON sp.BusinessEntityID = so.SalesPersonID
AND so.OrderDate = (SELECT MAX(OrderDate)
FROM Sales.SalesOrderHeader
WHERE SalesPersonID =
sp.BusinessEntityID);
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise you should have created and executed an UPDATE statement using the SET
syntax, created and executed an UPDATE statement using the WHERE IN (SELECT) syntax, and created
and executed an UPDATE statement using the FROM syntax. You should have also created and executed
an UPDATE statement using the OUTPUT syntax.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a simple transaction. You should have also set
the transaction isolation level for a new transaction.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
SELECT c.name
FROM sys.columns c
JOIN sys.tables t ON t.object_id = c.object_id
WHERE t.name = 'Person'
SELECT *
FROM INFORMATION_SCHEMA.columns
WHERE TABLE_NAME = 'Address'
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
4. Review the results of the query and then close the query editor without saving the query.
Results: After this exercise, you should have launched SQL Server Management Studio and queried
metadata using system catalog views, the information schema, dynamic management views, and system
stored procedures.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a query of relational data and produced the output
in XML format. You should have also created a query that converts data in XML format to a relational
format.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
SELECT *
FROM Production.ProductDescription
WHERE FREETEXT(Description, 'lightest')
SELECT *
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'lightest NEAR best')
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a new full-text Index and queried that Index
using both the FREETEXT and CONTAINS predicates.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Task 2: Create a view to select only the ID and Name columns from the Person table
1. Right-click the AdventureWorks2008 database, and then click New Query.
2. In the new, blank query window, type the following T-SQL statement:
SELECT BusinessEntityID,
FirstName,
MiddleName,
LastName
FROM Person.Person
GO
Results: After this exercise, you should have created a view to restrict the number of columns returned
for a table.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
RETURN @result
END
GO
SELECT GETDATE()
SELECT dbo.fnGetDate(GETDATE())
)
GO
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have launched SQL Server Management Studio and created both
a scalar and table-valued user-defined function.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a stored procedure that returns a persons name
using their ID.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
GO
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have used an ad hoc distributed query to query data from a
spreadsheet. You have also created a linked server and queried it using a four part name.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have viewed estimated and actual execution plans for a query,
and saved an execution plan to an XML file.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
UPDATE Production.Product
SET ListPrice = @NewListPrice, StandardCost = @NewStandardCost
WHERE ProductID = '2'
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
20. Close the PayRateChange.sql file. Click No when prompted to save changes.
Results: After this exercise, you should have converted several different data types to other data types
using explicit and implicit conversion.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Results: After this exercise, you should have created a hierarchy to store hierarchical data using the
hierarchyid data type.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
UPDATE Production.Product
SET StandardCost = 7.99
Results: After this exercise, you should have written a cursor to perform operations on a result set, and
rewritten a cursor to use a set-based approach.
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.
QuickStart Intelligence
Notes
This is a unique copy of the course material identified by code cbbd3d2c-1b8b-4127-8769-5439cb34900e, and provided to you by Holly Stiver. It is illegal to reprint,
redistribute, or resell this content. The Licensed Content is licensed "as-is." Microsoft does not support this Licensed Content in any way and Microsoft gives no express
warranties, guarantees or conditions. Please report any unauthorized use of this content to piracy@microsoft.com or by calling +1 800-785-3448.