Unit 1
Unit 1
Unit 1
In T-SQL
Database Programming
Transact SQL
T-SQL is SQL Server’s own dialect of Structured Query
Language (SQL)
T-SQL
Stands for Transact SQL
Procedural Programming Language + SQL
T-SQL extends SQL by adding constructs found in other
procedural languages, such as
Variables, data types and operators
Flow Control Structures
Procedures
Functions (user-defined and built-in), etc.
2
Scripts
A script is one or more SQL statement(s) stored in a
FILE
Scripts generally have a unified goal
All the statements within a script have one overall purpose
SQL scripts are stored as text files
Scripts are usually treated as a unit
You normally execute the entire script or nothing at all
SQL script
a collection of SQL commands
stored in a text file and
perform some operation or task
3
Scripts
Scripts are usually used for repetitive Tasks
get executed over and over on a regular basis
Advantages include:
Ease of Use - The scripts can be saved and loaded when
needed.
Consistent Operation – Statements are tested and free from
errors
Scheduled Operation
Scripts can be scheduled to run at a time when it is convenient
Can be automated
4
Batches
A batch is a grouping of T-SQL statements into one
logical unit
Batches are used when something has to happen either
before or separately from everything else in your script.
All statements in a batch are compiled into one
execution plan
Batches are delimited by the GO statement
The GO statement
The GO statement must be on its own line
Is not a T-SQL command
It is a command recognized by the SQL Server command utilities
5
Batches (cont.)
All statements in the same batch
Are parsed together
Must pass a validation of the syntax as a unit
The statements in the batch are compiled into a single execution plan
Runtime errors may result in the partial execution of statements
in a batch
Summary
If a statement fails at parse-time (syntax error), then nothing
runs.
If a statement fails at runtime, all statements until the error
happened have already run.
Each batch is processed independently
An error in one batch does not prevent another batch from running
6
Statements in a Batches
Some commands must be in their own batch:
CREATE PROCEDURE
CREATE TRIGGER
CREATE VIEW
You cannot create and object (eg. A table) and use it in
the same batch
7
Batches and Script - Example
USE MyDB
GO
DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
GO -- @MyMsg is not valid after this GO ends the batch.
SELECT @@VERSION;
-- Error: Must be EXEC sp_who if not first statement
sp_who
GO
sp_who - Provides information about current users, sessions, and
processes
8
Basic Symbols
End of statement [ ; ]
This is optional
Comments
Single line [ -- ]
Multi-line [ /*…*/ ]
String [ '…’ ]
9
Operators
Arithmetic Operators [ + , - , * , / , % ]
Comparison Operators
>, <, >=, <=, =, <> (or !=, which is the standard)
BETWEEN … AND …
IN (…)
LIKE, IS NULL
Logical Operators
AND
OR
NOT
EXISTS
Concatenation Operator [ + ]
10
Data Types
Data types used in scripts are the same as column data
types
Examples
VARCHAR(50)
INT
DECIMAL(6,2)
11
LOCAL Variables
The scope of a local variable is the current batch
Variable declaration syntax:
Example
DECLARE @price decimal(4,1)
DECLARE @product varchar(50), @UnitPrice decimal(6,2)
13
GLOBAL Variables - Examples
@@ERROR
Returns the error number for the last Transact-SQL statement
executed
@@IDENTITY
Returns the last-inserted identity value
@@ROWCOUNT
Returns the number of rows affected by the last statement
@@SERVERNAME
Returns the name of the local server that is running SQL Server
@@VERSION
Returns system and build information for the current installation
of SQL Server
14
Variables Assignment
The value of a variable will be NULL until it is initialized
Two ways to set the value in a variable
Use the SELECT or SET statement
Assignment Operator [ = ]
Compound assignment operator [ +=, *=, etc. ]
Example
Variable declaration and assignment
DECLARE @price decimal(4,1) = 9.9
Variable Assignment
SET @price = 12.50
Multiple Values
SET @price = 12.50 , @quantity = 12
15
SELECT and SET
Use SET
When you are performing a simple assignment of a variable
Where the value is known (explicit value or from other variable)
Use SELECT
When you are basing the assignment of your variable on a
query
A SELECT statement that assigns a value to a variable must not
be combined with data-retrieval operations
Use Variables with Queries
DECLARE @product varchar(10) = ‘screw’
SELECT *
FROM Products
WHERE ProductName LIKE '%’ + @product + '%';
16
Example 1
DECLARE @product varchar(50)
, @UnitPrice decimal(6,2)
, @QuantityPerUnit varchar(20)
17
Example 2
Using SET
18
SELECT or SET - Examples
DECLARE @cat int=7
SELECT *
FROM Products
WHERE CategoryID = @cat
19
Table Data Type
DECLARE @MyTableVar table
(
FN varchar(50)
, LN varchar(50)
)
SELECT FN, LN
FROM @MyTableVar
20
Table Data Type 2
We can UPDATE records in our table variable as well as
DELETE records
UPDATE @ProductTotals
SET Revenue = Revenue * 1.15
WHERE ProductID = 62
21
Table Data Type 3
Constraints can be used with table variables
DECLARE @MyTable TABLE
(
ProductID int UNIQUE,
Price money CHECK(Price < 10.0)
)
22
Table Data Type 4
The table definition of a table variable cannot change
after the DECLARE statement
If you are using a table variable in a join, you will need to
alias the table in order to execute the query
23
Control-of-Flow
Statements
Database Programming
Overview
T-SQL has the following control of flow statement:
IF ... ELSE
WHILE
GOTO
RETURN
25
Conditional Statements
Syntax
IF <Boolean Expression>
<SQL statement> | BEGIN <code series> END
[ ELSE
<SQL statement> | BEGIN <code series> END ]
26
Conditional Statements (cont.)
The IF statement controls the conditional execution of
one ore more statements
An IF statement will execute only the very next
statement after it if a statement block is not used
Statements blocks
Created by using BEGIN … END
ALL or NONE of the statements in a block are executed
27
Conditional Statements (cont.)
Conditional execution of a statement
IF @myvar IS NULL
-- Do something
28
The WHILE Statement
The WHILE statement tests a condition and executes
the statement as long as the test condition is TRUE
The syntax:
29
WHILE Statement - Example
DECLARE @counter int = 1
DECLARE @max int = 10
30
BREAK and CONTINUE
The BREAK statement is a way of exiting the loop
without waiting for the bottom of the loop
31
WHILE Statement - Example
What is the result of the following loop?
WHILE (SELECT SUM(Salary) FROM Employee) < 150000
BEGIN
UPDATE Employee
SET Salary += 100
32
The GOTO Statement
Causes the flow of execution to a LABEL
The LABEL is an identifier followed by a colon
The statements that follow GOTO are skipped and
processing continues at the label
GOTO statements and labels can be used anywhere
within a procedure, batch, or statement block
The GOTO statements and the Label must be in the
same Batch
33
GOTO Statement - Example
DECLARE @Counter int;
SET @Counter = 1;
WHILE @Counter < 10
BEGIN
SELECT @Counter
SET @Counter = @Counter + 1
IF @Counter = 4 GOTO BranchOne --Jumps to the first branch.
IF @Counter = 5 GOTO BranchTwo --This will never execute.
END
BranchOne:
SELECT 'Jumping To Branch One.'
GOTO BranchThree; --This will prevent BranchTwo from executing.
BranchTwo:
SELECT 'Jumping To Branch Two.'
BranchThree:
SELECT 'Jumping To Branch Three.' 34
The RETURN Statement
Exits unconditionally from a query or procedure
RETURN can be used at any point to exit from a
procedure, batch, or statement block
Statements that follow RETURN are not executed
35
The CASE Expression
The CASE Expression evaluates several conditions and
return a single value
Even when two conditions evaluate to TRUE, only the
first condition is used
ELSE can be included as a default option
Two type of the CASE expression exist
The simple CASE expression
The Search CASE expression
36
The Simple CASE Expression
CASE …
WHEN … THEN …
WHEN … THEN …
END
A simple CASE expression
Needs a condition to be specified after the “CASE” keyword
The CASE block returns a value or expression
The return value can be used with other statements.
DECLARE @x int = 20
PRINT
CASE @x % 2
WHEN 0 THEN ‘EVEN number’
WHEN 1 THEN ‘ODD number’
END
37
Simple CASE Expression (cont.)
Example
DECLARE @x int = 20
PRINT
CASE @x % 2
WHEN 0 THEN ‘EVEN number’
WHEN 1 THEN ‘ODD number’
END
38
The Search CASE
Same as a simple CASE, except:
There is no input expression
Each of the WHEN expressions must evaluate to a Boolean
value
The ELSE can still be included as a default option
Note
You can use different expressions for each condition
Any expression that evaluates to a Boolean value can be used
39
The Search CASE (cont.)
Example
DECLARE @x int = 20
CASE
WHEN @x % 2 = 0 THEN ‘EVEN number’
WHEN @x % 2 = 1 THEN ‘ODD number’
END
40
Uses of CASE Expr
Replacing codes or abbreviation to more readable
values
Example
SELECT ProductName
, Status = CASE Discontinued
WHEN 0 THEN ‘Discontinued’
WHEN 1 THEN ‘Active’
END
FROM Products
ORDER BY Status
41
Uses of CASE Expr (cont.)
Example - Categorizing data
SELECT ProductName
, CASE
WHEN UnitPrice < 10 THEN ‘Cheap‘
WHEN UnitPrice BETWEEN 10 AND 20 THEN
‘Normal‘
ELSE ‘Expensive’
FROM Products
42