Module 9: Grouping and Aggregating Data
This module describes how to use aggregate functions.
· Using Aggregate Functions
· Using the GROUP BY Clause
· Filtering Groups with HAVING
Module 10: Using Subqueries
This module describes several types of subquery and how and when to use them.
· Writing Self-Contained Subqueries
· Writing Correlated Subqueries
· Using the EXISTS Predicate with Subqueries
Module 11: Using Table Expressions
Previously in this course, you learned about using subqueries as an expression that returned results to an outer calling query. Like subqueries, table expressions are query expressions, but table expressions extend this idea by allowing you to name them and to work with their results as you would work with data in any valid relational table. Microsoft SQL Server 2016 supports four types of table expressions: derived tables, common table expression (CTEs), views, and inline table-valued functions (TVFs). In this module, you will learn to work with these forms of table expressions and learn how to use them to help create a modular approach to writing queries.
· Using Views
· Using Inline Table-Valued Functions
· Using Derived Tables
· Using Common Table Expressions
Module 12: Using Set Operators
This module introduces how to use the set operators UNION, INTERSECT, and EXCEPT to compare rows between two input sets.
· Writing Queries with the UNION operator
· Using EXCEPT and INTERSECT
· Using APPLY
Module 13: Using Windows Ranking, Offset, and Aggregate Functions
This module describes the benefits to using window functions. Restrict window functions to rows defined in an OVER clause, including partitions and frames. Write queries that use window functions to operate on a window of rows and return ranking, aggregation, and offset comparison results.
· Creating Windows with OVER
· Exploring Window Functions
Module 14: Pivoting and Grouping Sets
This module describes write queries that pivot and un-pivot result sets. Write queries that specify multiple groupings with grouping sets
· Writing Queries with PIVOT and UNPIVOT
· Working with Grouping Sets
Module 15: Executing Stored Procedures
This module describes how to return results by executing stored procedures. Pass parameters to procedures. Create simple stored procedures that encapsulate a SELECT statement. Construct and execute dynamic SQL with EXEC and sp_executesql.
· Querying Data with Stored Procedures
· Passing Parameters to Stored procedures
· Creating Simple Stored Procedures
· Working with Dynamic SQL
Module 16: Programming with T-SQL
This module describes how to enhance your T-SQL code with programming elements.
· T-SQL Programming Elements
· Controlling Program Flow
Module 17: Implementing Error Handling
This module introduces error handling for T-SQL.
· Implementing T-SQL error handling
· Implementing structured exception handling
Module 18: Implementing Transactions
This module describes how to implement transactions.
· Transactions and the database engines
· Controlling transactions
Module 19: Introduction to Database Development
Before beginning to work with Microsoft SQL Server in either a development or an administration role, it is important to understand the scope of the SQL Server platform. In particular, it is useful to understand that SQL Server is not just a database engine—it is a complete platform for managing enterprise data. SQL Server provides a strong data platform for all sizes of organizations, in addition to a comprehensive set of tools to make development easier, and more robust.
· Introduction to the SQL Server Platform
· SQL Server Database Development Tasks
After completing this module, you will be able to:
· Describe the SQL Server platform.
· Use SQL Server administration tools.
Module 20: Designing and Implementing Tables
In a relational database management system (RDBMS), user and system data is stored in tables. Each table consists of a set of rows that describe entities and a set of columns that hold the attributes of an entity. For example, a Customer table might have columns such as CustomerName and CreditLimit, and a row for each customer. In Microsoft SQL Server data management software tables are contained within schemas that are very similar in concept to folders that contain files in the operating system. Designing tables is one of the most important tasks that a database developer undertakes, because incorrect table design leads to the inability to query the data efficiently. After an appropriate design has been created, it is important to know how to correctly implement the design.
· Designing Tables
· Data Types
· Working with Schemas
· Creating and Altering Tables
Module 21: Advanced Table Designs
The physical design of a database can have a significant impact on the ability of the database to meet the storage and performance requirements set out by the stakeholders. Designing a physical database implementation includes planning the file-groups, how to use partitioning to manage large tables, and using compression to improve storage and performance. Temporal tables are a new feature in SQL Server 2016 and offer a straightforward solution to collecting changes to your data.
· Partitioning Data
· Compressing Data
· Temporal Tables
Module 22: Ensuring Data Integrity through Constraints
The quality of data in your database largely determines the usefulness and effectiveness of applications that rely on it—the success or failure of an organization or a business venture could depend on it. Ensuring data integrity is a critical step in maintaining high-quality data. You should enforce data integrity at all levels of an application from first entry or collection through storage. Microsoft SQL Server data management software provides a range of features to simplify the job.
· Enforcing Data Integrity
· Implementing Data Domain Integrity
· Implementing Entity and Referential Integrity
Module 23: Introduction to Indexes
An index is a collection of pages associated with a table. Indexes are used to improve the performance of queries or enforce uniqueness. Before learning to implement indexes, it is helpful to understand how they work, how effective different data types are when used within indexes, and how indexes can be constructed from multiple columns. This module discusses table structures that do not have indexes, and the different index types available in Microsoft SQL Server.
· Core Indexing Concepts
· Data Types and Indexes
· Heaps, Clustered, and Nonclustered Indexes
· Single Column and Composite Indexes
Module 24: Designing Optimized Index Strategies
Indexes play an important role in enabling SQL Server to retrieve data from a database quickly and efficiently. This module discusses advanced index topics including covering indexes, the INCLUDE clause, query hints, padding and fill factor, statistics, using DMOs, the Database Tuning Advisor, and Query Store.
· Index Strategies
· Managing Indexes
· Execution Plans
· The Database Engine Tuning Advisor
· Query Store
Module 25: Columnstore Indexes
Introduced in Microsoft SQL Server 2012, columnstore indexes are used in large data warehouse solutions by many organizations. This module highlights the benefits of using these indexes on large datasets; the improvements made to columnstore indexes in SQL Server 2016; and the considerations needed to use columnstore indexes effectively in your solutions.
· Introduction to Columnstore Indexes
· Creating Columnstore Indexes
· Working with Columnstore Indexes
Module 26: Designing and Implementing Views
This module describes the design and implementation of views. A view is a special type of query—one that is stored and can be used in other queries—just like a table. With a view, only the query definition is stored on disk; not the result set. The only exception to this is indexed views, when the result set is also stored on disk, just like a table. Views simplify the design of a database by providing a layer of abstraction, and hiding the complexity of table joins. Views are also a way of securing your data by giving users permissions to use a view, without giving them permissions to the underlying objects. This means data can be kept private, and can only be viewed by appropriate users.
· Introduction to Views
· Creating and Managing Views
· Performance Considerations for Views
Module 27: Designing and Implementing Stored Procedures
This module describes the design and implementation of stored procedures.
· Introduction to Stored Procedures
· Working with Stored Procedures
· Implementing Parameterized Stored Procedures
1. Controlling Execution Context
Module 28: Designing and Implementing User-Defined Functions
Functions are routines that you use to encapsulate frequently performed logic. Rather than having to repeat the function logic in many places, code can call the function. This makes code more maintainable, and easier to debug. In this module, you will learn to design and implement user-defined functions (UDFs) that enforce business rules or data consistency. You will also learn how to modify and maintain existing functions.
· Overview of Functions
· Designing and Implementing Scalar Functions
· Designing and Implementing Table-Valued Functions
· Considerations for Implementing Functions
· Alternatives to Functions
Module 29: Responding to Data Manipulation via Triggers
Data Manipulation Language (DML) triggers are powerful tools that you can use to enforce domain, entity, referential data integrity and business logic. The enforcement of integrity helps you to build reliable applications. In this module, you will learn what DML triggers are, how they enforce data integrity, the different types of trigger that are available to you, and how to define them in your database.
· Designing DML Triggers
· Implementing DML Triggers
· Advanced Trigger Concepts
Module 30: Using In-Memory Tables
Microsoft SQL Server 2014 data management software introduced in-memory online transaction processing (OLTP) functionality features to improve the performance of OLTP workloads. SQL Server 2016 adds several enhancements, such as the ability to alter a memory-optimized table without recreating it. Memory-optimized tables are primarily stored in memory, which provides the improved performance by reducing hard disk access. Natively compiled stored procedures further improve performance over traditional interpreted Transact-SQL.
· Memory-Optimized Tables
· Natively Compiled Stored Procedures
Module 31: Implementing Managed Code in SQL Server
As a SQL Server professional, you are likely to be asked to create databases that meet business needs. Most requirements can be met using Transact-SQL. However, occasionally you may need additional capabilities that can only be met by using common language runtime (CLR) code. As functionality is added to SQL Server with each new release, the necessity to use managed code decreases. However, there are times when you might need to create aggregates, stored procedures, triggers, user-defined functions, or user-defined types. You can use any .NET Framework language to develop these objects. In this module, you will learn how to use CLR managed code to create user-defined database objects for SQL Server.
· Introduction to CLR Integration in SQL Server
· Implementing and Publishing CLR Assemblies
Module 32: Storing and Querying XML Data in SQL Server
XML provides rules for encoding documents in a machine-readable form. It has become a widely adopted standard for representing data structures, rather than sending unstructured documents. Servers that are running Microsoft SQL Server data management software often need to use XML to interchange data with other systems; many SQL Server tools provide an XML-based interface. SQL Server offers extensive handling of XML, both for storage and querying. This module introduces XML, shows how to store XML data within SQL Server, and shows how to query the XML data. The ability to query XML data directly avoids the need to extract data into a relational format before executing Structured Query Language (SQL) queries. To effectively process XML, you need to be able to query XML data in several ways: returning existing relational data as XML, and querying data that is already XML.
· Introduction to XML and XML Schemas
· Storing XML Data and Schemas in SQL Server
· Implementing the XML Data Type
· Using the Transact-SQL FOR XML Statement
· Getting Started with XQuery
· Shredding XML
Module 33: Storing and Querying Spatial Data in SQL Server
This module describes spatial data and how this data can be implemented within SQL Server.
· Introduction to Spatial Data
· Working with SQL Server Spatial Data Types
· Using Spatial Data in Applications
Module 34: Storing and Querying BLOBs and Text Documents in SQL Server
Traditionally, databases have been used to store information in the form of simple values—such as integers, dates, and strings—that contrast with more complex data formats, such as documents, spreadsheets, image files, and video files. As the systems that databases support have become more complex, administrators have found it necessary to integrate this more complex file data with the structured data in database tables. For example, in a product database, it can be helpful to associate a product record with the service manual or instructional videos for that product. SQL Server provides several ways to integrate these files—that are often known as Binary Large Objects (BLOBs)—and enable their content to be indexed and included in search results. In this module, you will learn how to design and optimize a database that includes BLOBs.
· Considerations for BLOB Data
· Working with FILESTREAM
· Using Full-Text Search
Module 35: SQL Server Concurrency
This module explains how to name, declare, assign values to, and use variables. It also describes how to store data in an array. Concurrency control is a critical feature of multiuser database systems; it allows data to remain consistent when many users are modifying data at the same time. This module covers the implementation of concurrency in Microsoft SQL Server. You will learn about how SQL Server implements concurrency controls, and the different ways you can configure and work with concurrency settings.
· Concurrency and Transactions
· Locking Internals
Module 36: Performance and Monitoring
This module explains how to name, declare, assign values to, and use variables. It also describes how to store data in an array. This module looks at how to measure and monitor the performance of your SQL Server databases. The first two lessons look at SQL Server Extended Events, a flexible, lightweight event-handling system built into the Microsoft SQL Server Database Engine. These lessons focus on the architectural concepts, troubleshooting strategies and usage scenarios.
· Extended Events
· Working with extended Events
· Live Query Statistics
· Optimize Database File Configuration