Upload
dan-durso
View
470
Download
0
Tags:
Embed Size (px)
DESCRIPTION
SQL302 Intermediate SQL using Microsoft SQL Server. Covers additional uses of subqueries, set functions, table expressions, with clause, new SQL window functions.
Citation preview
Accelerated Computer Training for Working Professionals Bookstore Case
Orange Coast Database Associates Course PowerPoint Slides (800)355-9855 or http://www.dhdursoassociates.com
Orange CoastDatabase Associates
Specializing in Microsoft Office,
Access, SQL, and related technologiesClasses custom designed forWorking Professionals
http://www.dhdursoassociates.com
San Juan Capistrano, CA
(800)355-9855
SQL302 Intermediate SQL UsingMicrosoft SQL Server
1
Bookstore SQL302 1
An accelerated course in intermediate SQL forexperienced SQL users.
P.O. Box 6142Laguna Niguel, CA 92607949-489-1472http://www.d2associates.com
Welcome to SQL302 –
Intermediate SQLUsing MS SQL Server
Bookstore SQL302 2
Intermediate SQL
• Introduction (s)
• Facilities
• Course Packet (contents may vary)– Student questionnaire
– Collaterals (Maps, Catalogs, Etc.)
– PowerPoint handouts for all sessions
– Evaluation form
– Training certificate
2
Bookstore2 SQL302 Module 2 3
SQL302 Contact Information
P.O. Box 6142Laguna Niguel, CA 92607949-489-1472http://[email protected]
Copyright 2001-2012. All rights reserved.
SQL302 Resources
• Bookstore database scripts found onbox.com at
http://tinyurl.com/SQLScripts
• Slides can be viewed on SlideShare…
http://www.slideshare.net/OCDatabases
• Follow up questions?
Bookstore SQL302 Module 1 4
3
About Us 5
Bookstore SQL302 6
Intermediate SQL Curriculum
SQL3xxS*
SQL312Oracle**
SQL302Transact-SQL
SQL322WMySQL**
•*= first day only•**=underdevelopment
4
Bookstore SQL302 7
Intermediate SQL
• Assumes prior knowledge of SQLequivalent to SQL202.
• Quick pace for experienced computer users
• End-user, not programmer, oriented
• Focus is on SQL, not Management Studio
• SQL302s is first two modules of SQL302.
Bookstore SQL302 8
Intermediate SQL
• Select– More filters & operators– Case, cast, convert– Subqueries– Table expressions– Joins– Set operations– Window functions
SQL Covered (Day 1: All Day):
5
Bookstore SQL302 9
Intermediate SQL
• Data Updates– Select into– Update from, using subqueries– Delete from
• Data structures– Alter– Synonyms– Views
SQL Covered (Day 2: AM Only):
Bookstore SQL302 10
Intermediate SQL
• 3 Sessions
• Lecture
• Demo
• Student “hands-on”
• Many exercises are cumulative –later examples build on queriescreated earlier
Course Format:
6
Bookstore SQL302 11
Intermediate SQL
• Session 1 – IntermediateSQL
• Session 2 – Multi-tableRetrieval
• Session 3 – Modifying dataand data structures
Course Schedule (“1/2” day sessions):
Notes
Bookstore SQL302 12
1
Bookstore SQL302 Module 1 1
SQL302
Intermediate SQL ProgrammingBased on SQL Clearly Explained by Jan Harrington and
Microsoft SQL Server2008 T-SQL Fundamentals by Itzik Ben-gan
Module 1 – Relational Database Background, CASE,Cast & Convert, Subqueries, Table Expressions
Note on SQL302 Slides
• Many of these slides were originally designed tosupport a single SQL course which was used for anyof MS Access, MySQL, Oracle and SQL Server.
• As such you may see here slides developed in anyone of the above products.
• We are in the process of migrating the vendorspecific slides out into their own slide sets.
Bookstore2 SQL302 Module 2 2
2
Bookstore2 SQL302 Module 2 3
Warning!
• Below are some table name changes to beaware of in doing queries. We have createdsynonyms so either name should work.
New Name Old Name
Orders Order_filled
Order_Lines Orderlines
Bookstore2 SQL302 Module 2 4
SQL302 Contact Information
P.O. Box 6142Laguna Niguel, CA 92607949-489-1472http://[email protected]
Copyright 2001-2012. All rights reserved.
3
SQL302 Resources
• Bookstore database scripts found onbox.com at
http://tinyurl.com/SQLScripts
• Slides can be viewed on SlideShare…
http://www.slideshare.net/OCDatabases
• Follow up questions?
Bookstore SQL302 Module 1 5
Bookstore SQL302 Module 1 6
SQL Programming
• Course focus is SQL language
• Widely used for:– Database administration
– Enterprise application development
– Data driven web sites
• A foundation skill for eBusiness andalmost all major business applications thatuse relational databases
4
Bookstore SQL302 Module 1 7
SQL302
• Students should have taken SQL202 orhave equivalent experience. It is assumedstudents know basic SQL.
• We will use the Management Studio in thisclass, but the focus will be on SQLscripting
Bookstore SQL302 Module 1 8
Relational Database Evolution
• Based on Codd’s paper
• Early commercial efforts focused on Unix
• First mainframe implementation by IBM -precursor to today’s DB2
• First PC implementation in early 80’s byOracle
5
Bookstore SQL302 Module 1 9
Relational Database Basics
• Storage
• Databases
• Tables
• Rows
• Columns
• Indexes
• Views
• Cursors
• Application interfaces
Bookstore SQL302 Module 1 10
Relational Database Table
6
Bookstore SQL302 Module 1 11
Constraints
• Database
– Domain
– Uniqueness
– RelationshipCardinality
• 1 to 1
• 1 to N
• Other Business Rule
– Triggers
– Stored Procedures
Bookstore SQL302 Module 1 12
Relational Database with constraints
7
Bookstore SQL302 Module 1 13
Database Management Systems
Positioning Chart
VLDB
Enterprise
Workgroup
Single user
Spreadsheet
# Users
Cost
Bookstore SQL302 Module 1 14
System Architecture
AccessMDB
File ServerArchitecture
Access
8
Bookstore SQL302 Module 1 15
System Architecture
OracleDB
VisualBasic App
Client/ServerArchitecture
Access
SQL
Bookstore SQL302 Module 1 16
System Architecture
OracleDB
Browser
WebArchitecture
WebServer
SQL
9
Bookstore SQL302 Module 1 17
Approaching SQL
• Relatively simple
• Two main environments
– Interactive (This course)
– Embedded
• Static (Compiled)
• Dynamic
Bookstore SQL302 Module 1 18
SQL Standardization
ANSI standardization– First standard in 1986
– SQL 89
– SQL 92
– SQL 99
• Various vendor extensions– Microsoft/Sybase: T-SQL
– Oracle: PL/SQL
10
Bookstore SQL302 Module 1 19
SQL Conformance
• Entry
• Intermediate
• Advanced
• Most are at least entry level
Bookstore SQL302 Module 1 20
SQL Statements
• Data Manipulation Language (DML)
• Data Control Language (DCL)
• Data Definition Language (DDL)
• Note: SQL 99 changes these to seven typesincluding DQL Data Query Language
11
Bookstore SQL302 Module 1 21
SQL DDL
• Data definition language (DDL)
– Create, alter, drop, etc.
– Frequently implemented via various CASEtools: Visio, Embarcadero, ERWin, etc.
– But very useful for database administration
Bookstore SQL302 Module 1 22
SQL DCL
• Data Control Language (DDL)
– Grant
– Revoke
– Deny
– Constraints
12
Bookstore SQL302 Module 1 23
SQL DQL
• Data Manipulation Language (DML)
– Select
Bookstore SQL302 Module 1 24
SQL DML
• Data Manipulation Language (DML)
– Insert
– Update
– Delete
13
Bookstore SQL302 Module 1 25
SQL Statement Processing
Parse
Validate
Optimize
Access Plan
Execute
Bookstore SQL302 Module 1 26
Sample Database(s)
• Before we continue (note: instructor may havealready done this)…
• Load the sample database(s) if not already loaded– Use supplied SQL Script (after class this script may be
found on Box.com).
14
Bookstore SQL302 Module 1 27
Text Conventions
• In Access character strings are normallysurrounded by double quotes
– “Jones”
• In an enterprise database such as Oracle orSQL Sever enclose text strings in singlequotes
– ‘Jones’
Bookstore SQL302 Module 1 28
Date Conventions
• In an enterprise database such as Oracle orSQL Sever, enclose dates in single quotes
– ‘2004-12-23’ MySQL
– ’12-23-2004’ SQL Server
– ’23-DEC-04’ Oracle
15
Select statement clauses
SELECT…
INTO…
FROM…
WHERE…
GROUP BY…
HAVING…
ORDER BY…
Bookstore SQL302 Module 1 29
Bookstore SQL302 Module 1 30
SELECT
See SQL202 for syntax andsemantics of basic SELECTstatement
16
Bookstore SQL302 Module 1 31
On Your Own
• Find books written by Mark Twain
• Show title, publisher, year
Bookstore SQL302 Module 1 32
Complex Predicates
Follow normal boolean logic
Select customer_last_name,customer_street
From customers
Where (customer_last_name =‘Jones’ or customer_last_name =‘Smith’)and customer_state=‘NY’
17
Bookstore SQL302 Module 1 33
Select with Complex Where
Bookstore SQL302 Module 1 34
Complex Where Result
18
Bookstore SQL302 Module 1 35
Special Operators
• Can be used in where clause
• Covered in this class (SQL302)– Exists (Covered in section on Joins)
– Like extensions
– Any, some, all
• Previously Covered in SQL202– LIKE
– IN
– BETWEEN
– IS NULL
Bookstore SQL302 Module 1 36
Like Extensions
• ANSI wildcards
• Wherecustomer_last_namelike ‘[JK]o%’
like ‘[J-M]%’
like [^abc]%
19
Any, some, All
• Any, some
• Modifies comparisonoperator
• Ex: expr > any (1,2,3)means expr wouldhave to be greaterthan the minimumwhich is 1
• All
• Modifies comparisonoperator
• Ex: expr > all(1,2,3)would have to begreater than 3
Bookstore SQL302 Module 1 37
Bookstore SQL302 Module 1 38
On Your Own
• Find all customers with a last name that startswith a through m
• Find all customers that live in a state that doesnot start with m
20
Case
• Used to return a choice from two or morealternatives
• Two forms
– Searched case
– Unsearched case
Bookstore SQL302 Module 1 39
Unsearched (Simple) CASE
• This form of case has a selector whichtakes on a value used to select analternative
• Syntax:Select case <selector>
When <value1> then <expr1>,
When <value2> then <expr2>,
…
Else
<statement>
EndBookstore SQL302 Module 1 40
21
Unsearched (Simple Case)
• Example: expand the order filled statuscolumns in the orders table
Bookstore SQL302 Module 1 41
Searched CASE
• This form of the Case statement does nothave a selector
• Syntax:Select case
When <condition1> then <expr1>,
When <condition2> then <expr2>,
…
Else
<statement>
End
Bookstore SQL302 Module 1 42
22
Searched CASE
• Example: list names of referringcustomers, self in no referrer
Bookstore SQL302 Module 1 43
CAST
• Function to cast a column to a differentdata type; same idea as cast in cprogramming
• Syntax:
CAST ( expression AS data_type [ ( length ) ] )
Bookstore SQL302 Module 1 44
23
CAST
• Example: combine author name andpublication year into one column
Bookstore SQL302 Module 1 45
CAST results
Bookstore SQL302 Module 1 46
24
Convert
• Function to convert from one data type toanother; mostly replaced by cast
• Syntax
CONVERT ( data_type [ ( length ) ] , expression[ , style ] )
Bookstore SQL302 Module 1 47
Convert
• Example:
– Remove time from display of a datetimecolumn
Bookstore SQL302 Module 1 48
25
Convert results
Bookstore SQL302 Module 1 49
Bookstore SQL302 Module 2 50
Subqueries
• One select statement embedded in another
• Can be nested multiple levels deep
• Can be used in select, from and whereclauses
• Two types:– Uncorrelated – executes inner query then outer
– Correlated – executes inner query once foreach outer query row
26
Uncorrelated Subquery
• In list (covered in sql202 basic class)
• Single valued
Bookstore SQL302 Module 2 51
Bookstore SQL302 Module 2 52
Uncorrelated Subquery
select isbn, quantity
from orderlines
where order_numb in
(select order_numb fromorders where order_datebetween ‘1/1/99’ and‘12/31/99’);
27
Single-valued Subquery
• Subqueries can be used where anexpression returns a scalar or single value
– calculations
– comparisons
• Can be used in select list, from clause andwhere clause
Bookstore SQL302 Module 2 53
Single-valued Subquery
• Example
– Show all orderlines with an order total greaterthan the average for all orderlines
• Codeuse bookstore;
SELECT isbn, quantity
, (select avg(quantity) from orderlines) as[Average Quantity]
FROM orderlines AS ol
WHERE quantity >
(select avg(quantity) from orderlines)
Bookstore SQL302 Module 2 54
28
Bookstore SQL302 Module 2 55
Correlated Subquery with Exists
• Inner subquery executed once for each outer row
• Exists will return true or false depending onwhether the result will have any rows or not
• Can be a quick way to test for existence ofrecords (parent records, say) as used inapplication enforcement of referential integrity
Bookstore SQL302 Module 2 56
Correlated subquery with Exists
SELECT isbn, quantity
FROM orderlines AS ol
WHERE exists
(select * from orders o whereol.order_numb = o.order_numb
and o.order_date between ‘1/1/99’and ‘12/31/99’);
29
Derived Tables
• Sort of a named subquery
• Allows you to access columns inside thesubquery from the containing outer query
• Syntax
<select statement> as derivedtablename
Bookstore SQL302 Module 2 57
Derived Tables
• Example: List the number of orders peryear
• Codeuse bookstore;
select order_year, count(order_numb)
from(
select YEAR(order_date) as order_year,order_numb
from orders) as d
group by order_year;
Bookstore SQL302 Module 2 58
30
Common Table Expressions
• Can be used to define a subquery that canbe reused within an SQL statement
• SyntaxWith CTE_name (column list)
As (
Select statement
)
<outer query that uses the CTE>
Bookstore SQL302 Module 2 59
Common Table Expressions
• Example: show order_lines with cost morethan the average. Demonstrate twotechniques:
– Technique 1 - Using subqueries w/out a CTE
– Technique 2 - With CTE’s
Bookstore SQL302 Module 2 60
31
Technique 1 – w/out CTE
select isbn, cost_each, (selectAVG(cost_each)from orderlines)
from orderlines
where cost_each > (select AVG(cost_each) fromorderlines)
order by isbn;
Bookstore SQL302 Module 2 61
Technique 2 – using a CTE
with average_cost_cte(average_cost)
as
(select AVG(cost_each)
from orderlines)
select isbn, cost_each, average_cost
from orderlines, average_cost_cte
where cost_each > average_cost
order by isbn;
Bookstore SQL302 Module 2 62
32
Bookstore SQL302 Module 1 63
SQL Exercises
• List all customers whose last name does notend with s or t.
• Find all customers who have not placed anorder.
• Find all order lines with an amount less thanthe average. Include the order date without thetime.
• List all books with a price greater than theaverage price for all books. Show the variancefrom the average, too. Use a CTE.
[end module]
Notes
Bookstore SQL302 Module 1 64
1
Bookstore SQL302 Module 2 1
SQL302
Intermediate SQL Programming
Workshop 2 – Joins, Set Operations, WindowFunctions
Based on SQL Clearly Explained by Jan Harrington and Microsoft SQL Server T-SQL Fundamentals by Itzki Ben-gan
Note on SQL302 Slides
• These slides were originally designed to support asingle SQL course which was used for any of MSAccess, MySQL, Oracle and SQL Server.
• As such you may see here slides developed in anyone of the above products.
• We are in the process of migrating the Oracle,Access, and MySQL slides out into their own slidesets. The SQL302 slides will cover Microsoft SQLServer.
Bookstore SQL302 Module 2 2
2
Bookstore SQL302 Module 2 3
Warning!
• Below are some table name changes to beaware of in doing queries. We have createdsynonyms so either name should work.
New Name Old Name
Orders Order_filled
Order_Lines Orderlines
Bookstore SQL302 Module 2 4
SQL302 Contact Information
P.O. Box 6142Laguna Niguel, CA 92607949-489-1472http://[email protected]
Copyright 2001-2012All rights reserved.
3
SQL302 Resources
• Bookstore database scripts found onbox.net at
http://tinyurl.com/SQLScripts
• Slides can be viewed on SlideShare…
http://www.slideshare.net/OCDatabases
• Follow up questions?
Bookstore SQL302 Module 2 5
Bookstore SQL302 Module 2 6
Relational Database with constraints (from text)
4
Bookstore2 &Employees
SQL204 Module 1 7
Sample Employees Database
Bookstore SQL302 Module 2 8
More conventions
• Names can be surrounded with “ “ or [ ] asin [order details].
• Some of the PowerPoint slides may havethis convention.
• Better practice is to use an underscore as inorder_details.
5
Bookstore SQL302 Module 2 9
SQL302
SQL Programming
Part 1 – Joins: Natural, Self and Outer
Bookstore SQL302 Module 2 10
Joins
• Inner (Covered in SQL202 course)
• Natural Join
• Self
• Data Warehouse operators
• Outer– Left
– Right
– Full
• Cross
• Theta
• We will cover some of the more advanced or subtleaspects of joins in this class
6
Bookstore SQL302 Module 2 11
Natural Joins
• Table1 natural join table3 – automaticallyuses columns with same name
• Table 1 natural join table2 using(<column-list>
• Not yet available in SQL Server
Bookstore SQL302 Module 2 12
Correlation Names (Table Aliases)
• Can abbreviate references to tables
• For example:
Select e.name, j.payrange
From employees as e
Inner join job_information as j
On e.jobcode = j.jobcode;
7
Bookstore SQL302 Module 2 13
Self Joins
• Implements a recursive relationship
• Important in various applications
– Parts lists/assemblies
– HR
– Etc.
– Table joined to itself using correlation names
Bookstore SQL302 Module 2 14
Self Joins
SELECT e.*, m.name
FROM employees AS e, employeesAS m
WHERE e.managerid =m.employeeid;
8
Bookstore SQL302 Module 2 15
Datawarehouse clauses
• Two keywords that can be added to agrouped query
– Rollup
– Cube
• Places additional summary rows in theresult set
• Result set is a true relational result set
Bookstore SQL302 Module 2 16
9
Rollup
• Example: calculate average salaries byjob_title_code and manager
Bookstore SQL302 Module 2 17
Rollup results
Bookstore SQL302 Module 2 18
10
cube
• Similar to rollup but computes summaryrows in all dimensions
Bookstore SQL302 Module 2 19
Cube results
• Add a new set of rows which total by year
Bookstore SQL302 Module 2 20
11
Bookstore SQL302 Module 2 21
Bookstore SQL302 Module 2 22
Outer Joins
• Left – selects all rows from the left or first table,even if no match exists in the other table
– Widely used in commercial practice
– Especially useful for reporting
– Can be slower and interfere with optimizer
• Right – same idea but all rows from right table
• Full – all rows form both tables
12
Bookstore SQL302 Module 2 23
Left Outer Join
Basic SQL 92 Syntax:
Select <column-list>
From <table1>
Left join <table2>
On <join condition>
Left Outer Join
• List all customers with their orders
• Include customers with no orders as well
Bookstore SQL302 Module 2 24
13
Bookstore SQL302 Module 2 25
Left-Join
Basic Example:
SELECT customer_first_name,customer_street, order_numb,order_date
from customers as c
left join orders as o
on c.customer_numb =o.customer_numb
Bookstore SQL302 Module 2 26
Left Join with Results
14
Negative Left Join
• List all the customers who have not placedany orders
• This is an example of a query which findsunmatched records
Bookstore SQL302 Module 2 27
Bookstore SQL302 Module 2 28
Negative Left-Join (Unmatched)
Basic Example:
SELECT customer_first_name,customer_last_name, order_numb,order_date
from customers as c
left join orders as o
on c.customer_numb =o.customer_numb
Where order_numb is null;
15
Bookstore SQL302 Module 2 29
Left Join w/ Partial Match
• List all customers along with any ordersplaced in 1999
• If they did not place 1999 orders we stillwant to include them in the printout
Bookstore SQL302 Module 2 30
16
Left Join w/ Partial Match
Bookstore SQL302 Module 2 31
Example:SELECT customer_first_name,customer_last_name, order_numb, order_date
from customers as c
Left join
(select customer_numb, order_numb,order_date
From orders
Where year(order_date) = 1999) as d
on c.customer_numb = d.customer_numb;
Own Your Own
• List all books and their order totals for1999
• Show the book even if there were no ordersplaced in 1999
Bookstore SQL302 Module 2 32
17
Theta Joins
• Theta joins involve inequalities in thematching conditions
• Can be used for some interesting querieswhich do not involve the usual primary keyto foreign key matchings
Bookstore SQL302 Module 2 33
Theta join
• Find all customers that live at the same address
– Requires a self join of the customers table on addressfield
Bookstore SQL302 Module 2 34
18
Theta join results
• Can be further processed with a union query toconsolidate names into a single list
Bookstore SQL302 Module 2 35
Bookstore SQL302 Module 2 36
SQL302
SQL Programming
Part 3– Set Operations
19
Set Operations
• More on unions
• Intersect
• Except
Bookstore SQL302 Module 2 37
Bookstore SQL302 Module 2 38
Unions
• Combines two or more tables
• Tables must be union compatible
20
Bookstore SQL302 Module 2 39
Unions
Select <column-list> from<table1>
Union [ALL]
Select <same-columns> from<table2>
Unions
• Example: consolidate two columns into onecolumn
Bookstore SQL302 Module 2 40
21
Union consolidation result
• Customers in same city
Bookstore SQL302 Module 2 41
Unions
• Example: add a total row to a query result
• Code:
Bookstore SQL302 Module 2 42
use bookstore;select order_numb
, sum(quantity) as "Quantity", sum(cost_line)as "Total Cost"
from orderlinesgroup by order_numbunionselect NULL, sum(quantity),sum(cost_line)from orderlines;
22
unions
• Example: add an element to a pick list
Bookstore SQL302 Module 2 43
intersect
• The intersect operator finds rows incommon between two tables
• Syntax
Select <column-list> from <table1>
intersect
Select <same-columns> from <table2>
Bookstore SQL302 Module 2 44
23
intersect
• Example: find cities in common betweensources and customers
• Codeselect customer_city, customer_state,customer_zip
from customers
intersect
select source_city, source_state,source_zip
from sources;Bookstore SQL302 Module 2 45
Except
• Finds all rows from first table that are notfound in the second table
• Syntax:
Select <column-list> from <table1>
except
Select <same-columns> from <table2>
Bookstore SQL302 Module 2 46
24
except
• Example: find sources that are not locatedin any of our customer’s cities
• Codeselect source_city, source_state,source_zip
from sources
except
select customer_city, customer_state,customer_zip
from customers;Bookstore SQL302 Module 2 47
Bookstore SQL302 Module 2 48
SQL302
SQL Programming
Part 4 – Window Functions
25
Bookstore SQL302 Module 2 49
Aggregate Functions
• Count
• Sum
• Min
• Max
• Avg
• Often used in conjunction with groupingand window functions
Window Functions
• Sort of like grouping, but aggregates canbe taken along with straight columns in theselect list
• The function is applied over a window
– Partition by column
– Partition by ()
Bookstore SQL302 Module 2 50
26
Bookstore SQL302 Module 2 51
Window Functions
Basic syntax:
Select …, aggregate function(<column>)over (partition by <column>)
From <table>where <predicate>
Bookstore SQL302 Module 2 52
Window Functions
Example: Show salary along with average for thejob_title and overall
Code:use employeedb;select soc_sec_no, name, salary
, SUM(salary) over(partitionby job_title_code) as [Job CodeAverage]
, SUM(salary) over() as[Average]from employees;
27
Bookstore SQL302 Module 2 53
Exercise
• List all customers and their orders
– Name nicely formatted
– With orders in the year of 1999 (do not usebetween, etc.)
– Show total order quantities and amounts
– Only include orders with more than threeorder lines
Notes
Bookstore SQL302 Module 2 54
28
Notes
Bookstore SQL302 Module 2 55
Notes
Bookstore SQL302 Module 2 56
1
SQL Server/Employees SQL302 Module 3 1
SQL302
Intermediate SQL Programming
Workshop 3 – Modifying Data, Managing theDatabase
Based on SQL Clearly Explained by Jan Harrington and Microsoft SQL Server T-SQL Fundamentals by Itzki Ben-gan
Note on SQL302 Slides
SQL Server/Employees SQL302 Module 3 2
• These slides were originally designed to support thesingle SQL302 course which was used for any ofMS Access, Oracle and SQL Server.
• As such you may see here slides developed in anyone of the above products.
• We are in the process of migrating the OracleMySQL, and MS Access slides out into their ownslide sets. These SQL302 slides will focus onMicrosoft SQL Server.
2
SQL Server/Employees SQL302 Module 3 3
Warning!
• Below are some table name changes to beaware of in doing queries. We have createdsynonyms so either name should work.
New Name Old Name
Orders Order_filled
Order_Lines Orderlines
SQL Server/Employees SQL302 Module 3 4
SQL302 Contact Information
P.O. Box 6142Laguna Niguel, CA 92607949-489-1472http://[email protected]
Copyright 2001-2011. All rights reserved.
3
SQL302 Resources
• Bookstore database scripts found onbox.net at
http://tinyurl.com/SQLScripts
• Slides can be viewed on SlideShare…
http://www.slideshare.net/OCDatabases
• Follow up questions?
SQL Server/Employees SQL302 Module 3 5
SQL Server/Employees SQL302 Module 3 6
SQL302 Module 3
• Part 1 – Modifying Data
• Part 2 – Managing Database Structures
4
SQL Server/Employees SQL302 Module 3 7
SQL302
SQL Programming
Part 1 – Modifying Data
SQL Server/Employees SQL302 Module 3 8
Relational Database with constraints (from text)
5
Bookstore2 &Employees
SQL204 Module 1 9
Sample Employees Database
SQL Server/Employees POS/410 Workshop 3 10
Transactions
• Statements can be groupedinto transactions
• All must succeed
• If so they are allcommitted
• If not they are all rolledback
• Helps guarantee data isconsistent
6
SQL Server/Employees POS/410 Workshop 3 11
SQL Server Transactions Syntax
begin transactionStatements
…
…
if @@error = 0Commit transaction
elseRollback error
SQL Server/Employees SQL302 Module 3 12
Data Modification Statements
• End-user rarely sees thesestatements
• Application developer preparesthese statements “behind thescenes” based on forms or webpages filled out by user
7
SQL Server/Employees SQL302 Module 3 13
Data Modification Statements
• This course (SQL302)
– Select Into
– Table Valued Constructors (TVCs)
– Update
– Delete
• Basic DML already covered inSQL202
Select into
• Select….into will copy a table
• Uses a regular SQL statement with intoclause before the from not after
• Syntax:Select <select list>
Into <tablename>
From <tablename>
SQL Server/Employees SQL302 Module 3 14
8
Select into
• Example:
– Copy a subset of the employees table to atemporary working table
• Code:
SQL Server/Employees SQL302 Module 3 15
Insert with TVC
• Newer form of insert statement longavailable in MySQL
• Can shorten your code
• Each element in the insert list can actuallybe an expression but we will use literals inthis class
SQL Server/Employees SQL302 Module 3 16
9
Insert with TVC
SQL Server/Employees SQL302 Module 3 17
SQL Server/Employees SQL302 Module 3 18
Update and Delete
• Updates and deletes can usesubqueries
• SQL Server allows update anddelete statements to be based onjoins, too
• We will review this in the next fewslides.
10
Update
• You can use subqueries in an update.
– In where predicate
– To set the field value
SQL Server/Employees SQL302 Module 3 19
UPDATE tableSET columnname = value from subquery[WHERE condition with subquery]
• Example: Increase range minimums for unusedjob codes
SQL Server/Employees SQL302 Module 3 20
UPDATE w/ Subquery in where
11
SQL Server/Employees SQL302 Module 3 21
UPDATE Results
SQL Server/Employees SQL302 Module 3 22
UPDATE FROM Statement
UPDATE tableSET columnname = value…[FROM tablelist][WHERE condition]
SQL Server allows updates from a table, including joinedtables. As an example one could update quantity on handin an inventory table from a transaction table.
12
Update from
• Example: increase managerial salaries
SQL Server/Employees SQL302 Module 3 23
SQL Server/Employees SQL302 Module 3 24
UPDATE From Results
13
Update w/ subquery in set clause
• Update employee temp table – set salaries to theaverage for that code
SQL Server/Employees SQL302 Module 3 25
SQL Server/Employees SQL302 Module 3 26
DELETE FROM Statement
DELETE [from] tableFROM tablelist[WHERE condition]
SQL Server allows deletes from a table based on asubquery or a join condition.
Basic syntax:
14
Delete from
• Example: Delete unused job titles
SQL Server/Employees SQL302 Module 3 27
SQL Server/Employees SQL302 Module 3 28
DELETE FROM Results
15
SQL Server/Employees SQL302 Module 3 29
Delete and Referential Integrity
• Can affect referential integrity when deleting a“parent” row
• Can do following with child…– Cascade: delete the child row– Set null: set the child’s foreign key null– Set default: as above but to default value– No action: don’t allow delete of parent row
• Referential integrity can be established whencreating or modifying table structures which wewill look at later in the class
SQL Server/Employees SQL302 Module 3 30
SQL302
SQL Programming
Part 2– Managing Database Structures
16
Managing Database Structures
• Create
• Alter
• Synonyms
• Views
SQL Server/Employees SQL302 Module 3 31
Managing Database Structures
• We will first create a table and then use thealter command to
– Add columns
– Modify columns
– Add constraints
SQL Server/Employees SQL302 Module 3 32
17
SQL Server/Employees SQL302 Module 3 33
Creating Tables
• Use create statement
• Specify:
– Columns with data types and columnconstraints
– Table constraints
• Foreign key references
• Primary key designation
SQL Server/Employees SQL302 Module 3 34
Create Table
Basic syntax:
Create table <table-name>
(
<column1> <datatype> <constraints>
,.. <column1> <datatype> <constraints>
…
<table constraints>
);
18
SQL Server/Employees SQL302 Module 3 35
Create Table
Example 1: SQL202 Create summary table(we will do this step by step using the alterstatement in succeeding slides)
Create table summary(
isbn varchar(20) primary key,
How_many int check (how_many >= 0),
Constraint isbn_fk
Foreign key (isbn) references books(isbn)
)
SQL Server/Employees SQL302 Module 3 36
Create Table
Example 2: Create summary table
Create table #summary(
isbn varchar(20) primary key);
19
SQL Server/Employees SQL302 Module 3 37
Modifying a Table Design
• Applies to tables
• Use ALTER statement
– Add columns
– Delete columns
– Rename columns
– Add column constraints
– Add table constraints
SQL Server/Employees SQL302 Module 3 38
Modifying a Table Design
Basic syntax:
Alter <table-name>
Add <field-name>,
Add <table-constraint>,
Alter <field-name>
Etc.
20
SQL Server/Employees SQL302 Module 3 39
Add a column
Example: add a column to hold howmany times a book has been sold
alter table #summary
Add how_many numeric(5,2);
Modify a column
• Example
– Change the how many column to an integer
• Code
alter table #summary
alter column how_many int;
SQL Server/Employees SQL302 Module 3 40
21
New column results
SQL Server/Employees SQL302 Module 3 41
SQL Server/Employees SQL302 Module 3 42
Column Constraints
• Primary key
• Not NULL
• CHECK clause
• Default
• Unique
22
SQL Server/Employees SQL302 Module 3 43
Add a column constraint
Example: modify the how many columnso there is a check constraint onhow_many
alter table #summary
add constraint check(how_many >=0);
SQL Server/Employees SQL302 Module 3 44
Table Constraints
• Primary Key
• Foreign Key
• Compare fields against each other. I.e.ship_date >= order_date
23
SQL Server/Employees SQL302 Module 3 45
Add a table constraint
Example: add a foreign key constraintwith cascade options
SQL Server/Employees SQL302 Module 3 46
Constraints on Summary Table
24
Synonyms
• Can create another name for an object
– Used to provide a shorthand way to refer along, fully qualified table name
– Used where we want scripts to use an oldname as well as the newer name
• Syntax:
– Create <synonym> for <objectname>
SQL Server/Employees SQL302 Module 3 47
Synonyms
• Example:
– create a synonym for the orderlines table
• Code
create synonym orderlines fororder_lines;
SQL Server/Employees SQL302 Module 3 48
25
SQL Server/Employees SQL302 Module 3 49
Views
• Think of a view as a named query whereinthe definition is stored in the database
• Can be read like a table
• Some are updateable
SQL Server/Employees SQL302 Module 3 50
Views
Basic syntax:
Create view <view-name> (<column-list>)
As
<select statement>
Column list can be used to name the output columnsinstead of using the names in the select list
26
SQL Server/Employees SQL302 Module 3 51
Creating a View
SQL Server/Employees SQL302 Module 3 52
Using Views
• Can be used like a table subject to variouslimitations
– Cannot insert into grouped queries, etc.
– Etc.
• Sample select from syntax:
select column-list
from employee_view
27
Inserting into a view
• Must insert into all required columns inunderlying table
• Sample code:
SQL Server/Employees SQL302 Module 3 53
SQL Server/Employees SQL302 Module 3 54
Using a View
28
SQL302
SQL Server/Employees SQL302 Module 3 55
[end of course]
Notes
SQL Server/Employees SQL302 Module 3 56
Accelerated Computer Training for Working Professionals
Orange Coast Database Associates Course Material (800)355-9855 or http://www.dhdursoassociates.com
Orange CoastDatabase Associates
Specializing in Microsoft Office,
Access, SQL, and related technologiesComputer Training, Programming & Consulting
32422 Alipaz St., Suite A-15
San Juan Capistrano, CA
(800)355-9855 (Toll Free) | (949)489-1472 (Direct) | (949)485-6284 (Fax)
http://www.dhdursoassociates.com | [email protected]
Accelerated Computer Training