KESHTO TECHNOLOGIES
SQLSERVER DEVELOPEMENT
TSQL
By SURESH VADDE
(REAL TIME EXPERIENCED BUT NOT EXPERT)
KESHTO TECHNOLOGIES
SQLSERVER 2008 R2 SOFTWARE LINK:
http://care.dlservice.microsoft.com/download/D/8/0/
D808E432-5AC6-4DA5-A087-21947AC4AC5F/1033/
SQLFULL_ENU.iso?lcid=1033
INDEX:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
2
TOPIC NAME PAGE
NUMBE
R
INTRODUCTION TO DBMS AND RDBMS 3
SQLSERVER 2008 R2 INTRODUCTION 6
MANAGEMENT STUDIO (SSMS) 8
SYSTEM AND USER DATABASES 10
SQLSERVER DATATYPES 11
TABLES FOR PRACTICALS 13
TSQL SUB LANGUAGES 14
(DDL,DML,DRL,TCL,DCL)
OPERATORS 22
(ARITHMETIC,ASSIGNMENT,LOGICAL AND
SQL)
FUNCTIONS 25
(NUMERIC,CHARACTER,DATETIME,AGGREGAT
E)
SET OPERATORS 30
CLAUSES (GROUP BY,HAVING,ORDER BY) 31
JOINS 32
SUB QUERIES 34
COPY TABLE CONCEPT 36
CONSTRAINTS 36
NORMALIZATION 39
VIEWS 42
INDEXES 44
SYNONYMS 46
SQLSERVER LOCKS 46
Phone: 9951338095
Email:
[email protected] KESHTO TECHNOLOGIES
3
DEFAULTS AND RULES 47
INTRODUCTION TO PROGRAMS 49
CURSORS 52
STORED PROCEDURES 57
USER DEFINED FUNCTION 61
TRIGGERS 64
DIFFERENCE BETWEEN SQLSERVER AND 68
ORACLE
TSQL ENHANCEMENTS IN SQLSERVER 2008 74
QUERIES 77
NEW FEATURES OF SQLSERVER 2012
Data: Data is the most important component in any work
that we do; Data means collection of information or
collection of raw facts.
Ex:
1. Text files
2. Facts
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
4
3. Figures (photos)
4. Audios
5. Videos etc...
Database: collection of related data.
DBMS :( Database Management System)
Data Base Management System is the management system
or maintenance system on databases.
(Or)
It is a suit of software program for creating, maintaining &
manipulating the data in database. (Or)
It allows the users to insert the data, to retrieve the data, to
modify the data and to delete the data.
Properties:
1. Create
2. Insert
3. Update
4. Delete
5. Select (query)
6. Low level security etc...
Ex: FoxPro, ims (information management system)
The first databases of kind existed in the form of files.
A file is nothing but collection of records.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
5
A Record is nothing but collection of information or
data.
But the file system was not very efficient .it was
crippled by slow data search speed. It includes the
following Drawbacks.
1.Security
2.Data Redundancy
3.Data Integrity
4.Concurrency Control
5.Slow in Process
6. File system: in a dbms database, data must be stored in
the form of files only
Note: basic property of file system is independent and
individual, means each and every file is unique AND relation
is not possible between data files
7. Low level security, No Login name No Password.
RDBMS (Relational Database Management System):
Data must be stored in the form of tables only
Relation between Tables is possible
Table: It is collection of columns and rows, X axis directions
are rows and Y axis directions are columns
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
6
Relation: Creating internal dependencies between Database
Tables
Ex of RDBMS:
1. Sqlserver
2. Oracle
3. Db2 (Database 2000, IBM)
4. Mysql (open source)
5. ms-access
6. Postgresql (open source)
7. Sybase
8. Tera data
Etc.....
Terminology:
1. Table -- Entity
2. Column (field) -- Attribute
3. Row (record) -- Tupple
4. Duplicate data (Repeated data) – Data Redundancy
Metadata: Data about data, it describes characteristics of
data
Ex: Description of a table
Syn: sp_help <TN>
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
7
Ex: sp_help EMP
Note: <TN> stands for Table name
Data models:
1. Hierarchy data model
2. Network data model
3. Relational data model
Note: Currently all RDBMS Databases following RELATIONAL
DATA MODEL
Adv of Relational Data model: s
Relation
Perfect solution for duplicate data and null values
Normalization
Normalization: It is a process of eliminating duplicate data
from the database.
EF CODD RULES:
Foundation Rule
A relational database management system must manage its
stored data using only its relational capabilities.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
8
Information Rule
All information in the database should be represented in one
and only one way - as values in a table.
Guaranteed Access Rule
Each and every datum (atomic value) is guaranteed to be
logically accessible by resorting to a combination of table
name, primary key value and column name.
Systematic Treatment of Null Values
Null values (distinct from empty character string or a string
of blank characters and distinct from zero or any other
number) are supported in the fully relational DBMS for
representing missing information in a systematic way,
independent of data type.
Dynamic On-line Catalog Based on the Relational Model
The database description is represented at the logical level in
the same way as ordinary data, so authorized users can apply
the same relational language to its interrogation as they
apply to regular data.
Comprehensive Data Sublanguage Rule
A relational system may support several languages and
various modes of terminal use. However, there must be at
least one language whose statements are expressible, per
some well-defined syntax, as character strings and whose
ability to support all of the following is comprehensible:
a. data definition
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
9
b. view definition
c. data manipulation (interactive and by program)
d. integrity constraints
e. authorization
f. transaction boundaries (begin, commit, and
rollback).
View Updating Rule
All views that are theoretically updateable are also
updateable by the system.
High-level Insert, Update, and Delete
The capability of handling a base relation or a derived
relation as a single operand applies nor only to the retrieval
of data but also to the insertion, update, and deletion of
data.
Physical Data Independence
Application programs and terminal activities remain logically
unimpaired whenever any changes are made in either
storage representation or access methods.
Logical Data Independence
Application programs and terminal activities remain logically
unimpaired when information preserving changes of any
kind that theoretically permit unimpairment are made to the
base tables.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
10
Integrity Independence
Integrity constraints specific to a particular relational
database must be definable in the relational data
sublanguage and storable in the catalog, not in the
application programs.
Distribution Independence
The data manipulation sublanguage of a relational DBMS
must enable application programs and terminal activities to
remain logically unimpaired whether and whenever data are
physically centralized or distributed.
Nonsubversion Rule
If a relational system has or supports a low-level (single-
record-at-a-time) language, that low-level language cannot
be used to subvert or bypass the integrity rules or
constraints expressed in the higher-level (multiple-records-
at-a-time) relational language.
SQLSERVER 2012
1. It is RDBMS database
2. It is a product of Microsoft
3. It is case insensitive
4. It is platform dependant-- it is compatible for windows OS
5. User friendly
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
11
History: Introduced in 1994
Sqlserver 4.0
Sqlserver 5.0
Sqlserver 6.0 (SQL 95)
Sqlserver 6.5 (HYDRA)
Sqlserver 7.0 (SPHINX)
Sqlserver 8.0(2000) (SHILOH)
Sqlserver 9.0(2005) (YUKON)
Sqlserver 10.0(2008) (KALMAI)
Sqlserver 10.5(2008 R2) (KILIMANJARO)
Sqlserver 11.0(2012) (DENALI)
Editions (Flavors):
1. Enterprise edition
2. Standard edition
3. Developer edition
4. Mobile edition
5. Compact Edition
6. Personal edition (Express Edition) free
Software Requirements:
1. OS
Windows xp sp2 or sp3
Windows 7
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
12
Windows 8
Windows server 2003
Windows server 2008
Windows server 2008 R2
2. Windows installer 4.5: It is a default component of
Windows; we can download it from www.microsoft.com
3. .Net Framework 3.5 Service Pack1
Hardware requirements:
1. Processor:
It supports both 32 bit, 64 bit
Ex:
1. Pentium 4 dualcore onwards
2. AMD athlon
2. Hard disk:
1 GB
3. Ram:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
13
1 GB
SQL -- Structured Query Language
Sequel-- Structured English Query Language
FEATURES OF SQL SERVER:
1. Security: Provides login and password to interact with data
in database
2. Data Redundancy: Less Data reputation
3. Data Integrity: Data validation/Data Checking Process
facility
4. Backup and Recovery(Restore)
5. Introducing support for XML
6. User defined function are introduced.
7. OLAP (online analytical process) services available in SQL
server 7.0 are now called as SQL server 2012 analysis
services
Tool:
1. Management Studio: It contains two parts, they are
1. Cui (Character user interface):
Sqlscripting can be written in *newqury* option
By using execute button or f5 we can execute the
script
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
14
2. Gui (Graphical user interface):
It is Navigations part of the management Studio.
We can connect to GUI by using *summary* option.
Path: start programs sqlserver 2008 Management
Studio (click)
Path:startRunSSMS (click)
Inside management studio window provide following
information
1. Server type-- database engine
2. servername-- database server name
3. authentication--
A. Windows’s authentication
This user must be an OS user
B. Sqlserver authentication
UN: sa (sysadmin-- DBA)
Pw: ******** (Depends Upon Installation)
Things to Observe:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
15
1. While writing the Queries using T-SQL in SQL Server
Management Studio we need not to follow any
particular case. Because T-SQL is case insensitive
language.
2. After writing the Query, we need to select that query
using either mouse or keyboard.
3. Now Press F5 (Execute Key).
4. Then the results are displayed in a separate window
called Result window or Result Pane.
5. Use Ctrl+R to Hide/Show the Result window or Result
Pane.
6. Use F8 for Object Explorer
Databases:
1. System databases:
These are inbuilt or default databases
Along with installation of Sqlserver 2008 we can get
system databases
System databases monitors entire database engine
Note: User can’t create and delete a system database
A. master
B. model
C. msdb
D. tempdb
E. MS resources
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
16
Description
master Records all the system-level information for
Database an instance of SQL Server.
It is used by SQL Server Agent for scheduling
msdb alerts and jobs.
Database
model
Database Template database
Resource It is a read-only database that contains system
Database objects that are included with SQL Server
2005. System objects are physically persisted
in the Resource database, but they logically
appear in the sys schema of every database.
tempdb It is a workspace for holding temporary
Database objects or intermediate result sets.
2. User databases:
These database created and maintained by the users
explicitly
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
17
Ex:
CREATE DATABASE suresh
ON PRIMARY
(NAME=suresh,
FILENAME="C:\MSSQL\vadde\suresh.mdf",
SIZE=100,
MAXSIZE=200,
FILEGROWTH=25%)
Log on
(
NAME=suresh_log,
FILENAME="C:\MSSQL\vadde\suresh_log.ldf",
SIZE=100,
MAXSIZE=200,
FILEGROWTH=25%)
SQL Server Data Types:
Character strings:
Data type Description Storage
char(n) Fixed-length character string. n
Maximum 8,000 characters
varchar(n) Variable-length character string.
Maximum 8,000 characters
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
18
varchar(max)Variable-length character string.
Maximum 1,073,741,824 characters
text Variable-length character string.
Maximum 2GB of text data
Unicode strings:
Data type Description Storage
nchar(n) Fixed-length Unicode data. Maximum
4,000 characters
nvarchar(n) Variable-length Unicode data.
Maximum 4,000 characters
nvarchar(max)Variable-length Unicode data.
Maximum 536,870,912 characters
Ntext Variable-length Unicode data.
Maximum 2GB of text data
Binary types:
Data type Description Storage
Bit Allows 0, 1, or NULL
binary(n) Fixed-length binary data. Maximum
8,000 bytes
varbinary(n) Variable-length binary data.
Maximum 8,000 bytes
varbinary(max)Variable-length binary data.
Maximum 2GB
Image Variable-length binary data.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
19
Maximum 2GB
Number types:
Data type Description Storage
Tinyint Allows whole numbers from 0 to 255 1 byte
smallint Allows whole numbers between -32,768 2 bytes
and 32,767
Int Allows whole numbers between - 4 bytes
2,147,483,648 and 2,147,483,647
Bigint Allows whole numbers between - 8 bytes
9,223,372,036,854,775,808 and
9,223,372,036,854,775,807
decimal(p,s) Fixed precision and scale numbers. 5-17
bytes
Allows numbers from -10^38 +1 to
10^38 –1.
The p parameter indicates the
maximum total number of digits that
can be stored (both to the left and to
the right of the decimal point). p must
be a value from 1 to 38. Default is 18.
The s parameter indicates the maximum
number of digits stored to the right of
the decimal point. s must be a value
from 0 to p. Default value is 0
numeric(p,s)Fixed precision and scale numbers. 5-17
bytes
Phone: 9951338095
Email:
[email protected] KESHTO TECHNOLOGIES
20
Allows numbers from -10^38 +1 to
10^38 –1.
The p parameter indicates the
maximum total number of digits that
can be stored (both to the left and to
the right of the decimal point). p must
be a value from 1 to 38. Default is 18.
The s parameter indicates the maximum
number of digits stored to the right of
the decimal point. s must be a value
from 0 to p. Default value is 0
small Monetary data from -214,748.3648 to 4 bytes
money 214,748.3647
Money Monetary data from - 8 bytes
922,337,203,685,477.5808 to
922,337,203,685,477.5807
float(n) Floating precision number data from - 4 or 8
1.79E + 308 to 1.79E + 308. bytes
The n parameter indicates whether the
field should hold 4 or 8 bytes. Float (24)
holds a 4-byte field and float (53) holds
an 8-byte field. Default value of n is 53.
Real Floating precision number data from - 4 bytes
3.40E + 38 to 3.40E + 38
Date types:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
21
Data type Description Storage
datetime From January 1, 1753 to December 8 bytes
31, 9999 with an accuracy of 3.33
milliseconds
datetime2 From January 1, 0001 to December 6-8
31, 9999 with an accuracy of 100 bytes
nanoseconds
smalldatetime From January 1, 1900 to June 6, 2079 4 bytes
with an accuracy of 1 minute
Date Store a date only. From January 1, 3 bytes
0001 to December 31, 9999
Time Store a time only to an accuracy of 3-5
100 nanoseconds bytes
datetimeoffsetThe same as datetime2 with the 8-10
addition of a time zone offset bytes
timestamp Stores a unique number that gets
updated every time a row gets
created or modified. The timestamp
value is based upon an internal clock
and does not correspond to real time.
Each table may have only one
timestamp variable
Other data types:
Data type Description
sql_variant Stores up to 8,000 bytes of data of various
data types, except text, ntext, and timestamp
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
22
uniqueidentifierStores a globally unique identifier (GUID)
Xml Stores XML formatted data. Maximum 2GB
Cursor Stores a reference to a cursor used for
database operations
Table Stores a result-set for later processing
TABLES FOR PRACTICALS:
1.CREATE TABLE EMP
(EMPNO NUMERIC(4) NOT NULL,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR NUMERIC(4),
HIREDATE DATETIME,
SAL NUMERIC(7, 2),
COMM NUMERIC(7, 2),
DEPTNO NUMERIC(2));
DATA:
INSERT INTO EMP VALUES
(7369, 'SMITH', 'CLERK', 7902,'17-DEC-1980', 800,
NULL, 20);
INSERT INTO EMP VALUES
(7499, 'ALLEN', 'SALESMAN', 7698,'20-FEB-1981', 1600,
300, 30);
INSERT INTO EMP VALUES
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
23
(7521, 'WARD', 'SALESMAN', 7698,'22-FEB-1981',
1250, 500, 30);
INSERT INTO EMP VALUES
(7566, 'JONES', 'MANAGER', 7839,'2-APR-1981', 2975,
NULL, 20);
INSERT INTO EMP VALUES
(7654, 'MARTIN', 'SALESMAN', 7698,'28-SEP-1981',
1250, 1400, 30);
INSERT INTO EMP VALUES
(7698, 'BLAKE', 'MANAGER', 7839,'1-MAY-1981', 2850,
NULL, 30);
INSERT INTO EMP VALUES
(7782, 'CLARK', 'MANAGER', 7839,'9-JUN-1981', 2450,
NULL, 10);
INSERT INTO EMP VALUES
(7788, 'SCOTT', 'ANALYST', 7566,'09-DEC-1982', 3000,
NULL, 20);
INSERT INTO EMP VALUES
(7839, 'KING', 'PRESIDENT', NULL,'17-NOV-1981', 5000,
NULL, 10);
INSERT INTO EMP VALUES
(7844, 'TURNER', 'SALESMAN', 7698,'8-SEP-1981',1500,
0, 30);
INSERT INTO EMP VALUES
(7876, 'ADAMS', 'CLERK', 7788,'12-JAN-1983', 1100,
NULL, 20);
INSERT INTO EMP VALUES
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
24
(7900, 'JAMES', 'CLERK', 7698,'3-DEC-1981', 950,
NULL, 30);
INSERT INTO EMP VALUES
(7902, 'FORD', 'ANALYST', 7566,'3-DEC-1981', 3000,
NULL, 20);
INSERT INTO EMP VALUES
(7934, 'MILLER', 'CLERK', 7782,'23-JAN-1982', 1300,
NULL, 10);
2.CREATE TABLE DEPT
(DEPTNO NUMERIC(2) NOT NULL,
DNAME VARCHAR(14),
LOC VARCHAR(13) );
DATA:
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW
YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30,
'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
3.CREATE TABLE SALGRADE
(GRADE NUMERIC NOT NULL,
LOSAL NUMERIC,
HISAL NUMERIC);
DATA:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
25
INSERT INTO SALGRADE VALUES (1, 700, 1200);
INSERT INTO SALGRADE VALUES (2, 1201, 1400);
INSERT INTO SALGRADE VALUES (3, 1401, 2000);
INSERT INTO SALGRADE VALUES (4, 2001, 3000);
INSERT INTO SALGRADE VALUES (5, 3001, 9999);
3.CREATE TABLE STUDENT
(SNO NUMERIC NOT NULL,
SNAME VARCHAR(20),
PHONENO NUMERIC);
DATA:
INSERT INTO STUDENT VALUES (101, ‘RAM’, 1);
INSERT INTO STUDENT VALUES (102,’ RAMESH’, 2);
INSERT INTO STUDENT VALUES (103, ‘RAVI’, 3);
SQL
This is a 4th generated intermediate language between
user and SQL Server. Whenever user wants to interact with
SQL Server, he has to interact with SQL Server through T-
SQL. It includes the following Sub Languages
Sublanguages:
1. DDL (data definition language)
2. DML (data manipulation language)
3. DRL (data retrieval language) or QL (query language)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
26
4. TCL (transaction control language)
5. DCL (data control language) -- DBA
1. DDL:
Commands:
1. Create
2. Truncate
3. Drop
4. Alter
1. Create: used to create database, tables and other
database objects
syn: create table <tn>(col1 dt(l),col2 dt(l),col3 dt(l))
Ex: create table T1 (id int, ename varchar (20), DOB
datetime)
Note:
Max length of a table name and column name is 30; it
may include alphabets, digits 0 to 9 and special
character '_' (Underscore).
It is known as "naming conventions".
Max of 1024 columns can be included into a table.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
27
2. Truncate: used to delete entire data from a table and its
not possible to delete selected or specific rows from a table
by using truncate command.
Ex:
Assume that T1 is a table, contains 10 rows of data, now
Entire data of T1 table= 10rows
Selected or specific data of T1 table<entire data
1 to 9 rows are known as selected or specific data
Syn: truncate table <TN>
Ex: truncate table T1
3. Drop: used delete a table from the database
Syn: drop table <TN>
Ex: drop table T1
4. Alter:
Alter+add: used to add a column to the table
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
28
Syn: alter table <TN> add column_name DT (l),
column_name DT (l)
Ex: alter table T1 add sal numeric (7, 2), comm Numeric (5,
2), address varchar (50)
Alter+drop: used delete columns from the table
Syn: alter table <TN> drop column column_name
Ex: alter table T1 drop column address
Alter+alter: used change the data type and length of data
type of a column
Note: Column is empty then only we can change data type
Syn: alter table <TN> alter column column_name DT (l)
Ex: alter table T1 alter column id varchar (20)
Miscellaneous:
System stored procedures: Directly we can execute them
when ever required
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
29
1. Getting description of a table (metadata)
Syn: sp_help <TN>
Ex: sp_help T1
2. Getting description of a database:
Syn: sp_helpdb <dbname>
Ex: sp_helpdb Suresh
3. Displaying list of tables in a database
Syn: sp_tables
Ex: sp_tables
4. Changing name of a table
Syn: sp_rename <TN>, <new_name>
Ex: sp_rename T1, t3
5. Retrieving list of Databases
Syn: sp_databases
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
30
DML:
Commands:
1. Insert
2. Update
3. Delete
1. Insert: Used to insert (add) data into tables
Syn: insert into <TN> values (col1, col2, col3)
Ex: insert into T3 values ('a12','ramesh','12-apr-07', 3000, 30)
Id name DOB sal comm
Note: while working with char and date time data we should
use single quotes
Inserting null values into table:
Student table contains 5 columns; now insert null value into
comm column
Ex: insert into T3 (id, name, DOB) values ('a13','ravi','21-jul-
07', 3000)
Ex: insert into T3 values ('a14','ram','12-apr-07', 4000, null)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
31
2. Update: used to update (replace) old data with new data,
it is two types they are
A. Updating entire data in a column:
Syn: update <TN> set column_name=new_value
Ex: update T3 set sal=5000
B. Updating selected data in a column:
Syn: update <TN> set column_name=new_value where
<condition>
Ex: update T3 set sal=3000 where id='a12'
3. Delete: used to delete entire data and selected data from
a table
A. Deleting entire data from a table:
Syn: delete from <TN>
Ex: delete from T3
B. Deleting selected data from a table:
Syn: delete from <TN> where <condition>
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
32
Ex: delete from T3 where id='a14'
DRL:
Commands:
1. Select: used to retrieve or display data from table or
tables
Note: Retrieving data from single table is 4 types
1. Retrieving entire data (all columns and all rows) from a
table
Syn: select*from <TN>
Ex: select*from T3
Note: * stands for entire columns of the table
2. Retrieving all columns and selected rows from a table
Syn: select*from <TN> where <condition>
Ex: select*from T3 where id='a12'
3. Retrieving entire data from selected columns
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
33
Syn: select col1, col2 from <TN>
Ex: select ename, fees from T3
4. Retrieving selected rows from selected columns
Syn: select col1, col2 from <TN> where <condition>
Ex: select name, fees from T3 where id='a13'
Constraints:
Set of rules which are used to improve functionality of
tables
These are inbuilt rules
We can impose constraints on columns
Adv:
1. Creating permanent relations between tables
2. We can avoid duplications and null values
3. We can create permanent conditions
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
34
Note: We can create a constraint along with table creation
this is of two types:
1. Column level Constraint: It can be created on single
column
2. Table level Constraint: It can be created on multiple
columns
Note: We can add a constraint to the existing table
Types:
1. Primary key
2. Unique constraint
3. Check constraint
4. Not null
5. Foreign key (Referential integrity)
1. Primary key:
Properties:
It is unique
It is not null
Column level Primary Key:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
35
Syn: create table <TN> (col1 DT (l) constraint con_name
primary key, col2 DT (l), col3 DT (l))
Ex: create table t1 (id int constraint p_key primary key, name
varchar (20), DOB datetime)
In this we can create a constraint on single column only
Table level Primary key:
syn: create table <tn>(col1 dt(l),col2 dt(l),col3 dt(l), constraint
con_name primary key(col1,col2))
Ex: create table t2 (id int, name varchar (20), DOB datetime,
constraint p_key3 primary key (id, name))
We can create single constraint on multiple columns
Max of single primary key can be created on a table
If single primary key is working on multiple columns
then it is known as "composite primary key"
2. Unique constraint:
Properties:
Unique
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
36
It accepts single null value
Syn: create table <TN> (col1 DT (l) constraint con_name
unique, col2 DT (l), col3 DT (l))
Ex: create table t3 (id int constraint u_con unique, dname
varchar (20), loc varchar (20))
3. Check constraint: used to impose permanent conditions
on columns
Syn: create table <tn>(col1 dt(l),col2 dt(l) constraint
con_name check(condition),col3 dt(l))
Ex: create table t4 (id int, sal numeric (7, 2) constraint
check_con check (sal>3000), commission numeric (5, 2))
4. Not null: it doesn’t accept null values
Syn: create table <TN> (col1 DT (l) constraint con_name not
null)
Ex: create table t5 (id int constraint n_null not null)
5. Foreign key:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
37
It always references values from either primary key or
unique constraint and there are no properties for
foreign key.
It also known as referential integrity
This reference will be stored into database permanently,
so that
It is comes under permanent relation
Generally primary key and foreign are a part of different
tables
Primary key table is known as parent or master table
Foreign key table is known as child or detail table
We can create primary key and foreign key in single
table, that is known as "self referential integrity"
Note:
1. Primary key and foreign key columns data types must
be same.
2. If the value existing in primary key then only we can
insert same value into foreign key.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
38
3. Foreign key accepts null values when it is referencing
from unique constraint
syn: create table <tn>(col1 dt(l),col2 dt(l),col3 dt(l), constraint
con_name foreign key(col1)references <tn2>(col1))
Ex: create table t6 (id int, address varchar (50), job varchar
(20), constraint f_key foreign key (id) references t1 (id))
Adding constraint to a table:
Syn: alter table <TN> add constraint con_name
type_constraint (col_list)
Ex: alter table t2 add constraint p_key3 primary key (id)
Dropping constraint:
Syn: alter table <TN> drop constraint con_name
Ex: alter table t2 drop constraint p_key3
Information regarding constraints of a table:
Syn: sp_helpconstraint <TN>
Ex: sp_helpconstraint t1
Normalization:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
39
Normalization is process of splitting the base table into
multiple tables based on the theory of Functional
Dependency.
OR
Normalization is repetitive process in order to identify the
functional dependencies among the columns and to remove
them. If any functional dependency is occurred after the
normalization process again we have to start the same
process until all functional dependencies have been
removed.
To do this Normalization we have to follow rules or
conditions called Normal Forms.
Un-Normalized Table
EMPNO PROJNO ENAME PNAME SAL BUD DEPTNO
DNAME LOC
11 (P1, P2) ---- (Pn1, Pn2) ----- ----- 10
-------- -----
22 (P2, P3) ---- (Pn2, Pn3) ----- ----- 10
-------- -----
33 (P1, P3) ---- (Pn1, Pn3) ----- ----- 20
-------- -----
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
40
EMPNO and PROJNO are Primary Keys called ‘COMPOSITE
PRIMARY KEY’
FIRST NORMAL FORM (1NF): According to first normal
form table should contain only single values columns. But in
the above un-normalized table the columns PROJNO and
PNAME contains multiple values.
To make the table into first normal form we should have to
split the multiple values into single values.
EMPNO PROJNO ENAME PNAME SAL BUD DEPTNO
DNAME LOC
11 P1 ---- Pn1 ----- ----- 10
-------- -----
11 P2 ---- Pn2 ----- ----- 10
-------- -----
22 P2 ---- Pn2 ----- ----- 10
-------- -----
22 P3 ---- Pn3 ----- ----- 10
-------- -----
33 P1 ---- Pn1 ----- ----- 20
-------- -----
33 P3 ---- Pn3 ----- ----- 20
-------- -----
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
41
SECOND NORMAL FORM (2NF):
According to second normal form table should be in 1NF
and we should have to remove Partial Functional
Dependency.
In the above table DEPTNO non-key column dependent part
of the Primary key column i.e. EMPNO. It means there existed
Partial functional dependency.
To make the table into second normal form we have to
divide the table into multiple tables.
PROJ-INFO
PROJNO PNAME BUD
P1 Pn1 ------
P2 Pn2 ------
P3 Pn3 ------
EMP-INFO
EMPNO ENAME SAL DEPTNO DNAME LOC
11 ---- ---- 10 ------ -----
22 ---- ---- 10 ------ -----
33 ---- ---- 20 ------ -----
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
42
THIRD NORMAL FORM (3NF):
According to second normal form table should be in 2NF
and we should have to remove Transitive Functional
Dependency.
In the above EMP-INFO table non-key column DNAME
dependent part on the other non- key column i.e.DEPTNO. It
means there existed Transitive functional dependency.
To make the table into third normal form we have to divide
the table into multiple tables.
PROJ-INFO
PROJNO PNAME BUD
P1 Pn1 ------
P2 Pn2 ------
P3 Pn3 ------
EMP-INFO DEPT-INFO
EMPNO ENAME SAL DEPTNO DNAME LOC
11 ---- ---- 10 ------ -----
22 ---- ---- 20 ------ -----
33 ---- ----
DCL: It is used to control the data between different user
accounts. It includes the following statements.
Phone: 9951338095
Email:
[email protected] KESHTO TECHNOLOGIES
43
1. GRANT Statement
2. REVOKE Statement
Grant Statement: This statement is used to grant the
permissions (INSERT, SELECT, UPDATE, DELETE) on a specific
table to different user accounts.
Syntax:
GRANT {ALL/SPECIFIC PERMISSIONS} ON TABLENAME
TO USER ACCOUNT (S) [WITH GRANT
OPTION]
WITH GRANT OPTION: When any user got the permissions
on a specific table from other user with this option, then that
user can grant the permissions on that same table to another
user account. At that time sub user acts as owner.
Ex:
GRANT ALL ON EMP TO RAMESH WITH GRANT OPTION
From the above statement RAMESH user account got all
permissions on EMP table from SA user account. Mean time
RAMESH can give the permissions on EMP to another user
account because he got the permissions WITH GRANT
OPTION.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
44
Ex:
GRANT INSERT, SELECT ON EMP TO SURESH
Now SURESH can perform select and insert operations on
EMP table.
But SURESH cannot perform update and delete operations
on EMP table because he does not have the corresponding
permissions.
Revoke Statement: This statement is used to revoke the
permissions (INSERT, SELECT, UPDATE, DELETE) on a specific
table from different user accounts.
Syntax:
REVOKE {ALL/SPECIFIC PERMISSIONS} ON TABLENAME
FROM USER ACCOUNT (S) [CASCADE]
CASCADE: Using this option we can destroy the
communication link between user accounts more over from
the main user it self we can revoke the permissions from all
sub users.
Ex:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
45
REVOKE ALL ON EMP FROM RAMESH CASCADE
The above statement revokes the permissions on EMP table
from RAMESH and SURESH.
Now RAMESH and SURESH users cannot access EMP table.
TCL:
Transaction is nothing but a unit of work. We can control
these transactions using the following statements
ROLLBACK Statement
COMMIT Statement
SAVE TRAN [SACTION]
ROLLBACK Statement: This statement is used to cancel a
particular performed transaction. To perform this statement
in SQL Server we have to follow any one of the below 2
approaches.
Approach 1: SET IMPLICIT_TRANSATIONS ON
This approach is only to cancel a single recently performed
operation.
Ex:
SET IMPLICIT_TRANSATIONS ON
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
46
SELECT * FROM EMP
DELETE FROM EMP
SELECT * FROM EMP
ROLLBACK
SELECT * FROM EMP
Approach 2: Explicit Transactions
To approach is to cancel recently performed multiple
operations.
Syntax: BEGIN TRAN
-------------
GO
-------------
GO
-------------
ROLLBACK TRAN
Note: GO is query separator
Ex:
BEGIN TRAN
INSERT INTO DEPT VALUES (50,’TRA’,’AUS’)
GO
UPDATE EMP SET SAL=SAL+1000 WHERE EMPNO=11
GO
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
47
DELETE FROM STUDENT WHERE SNO=101
Select the entire transaction and press F5 for one time
ROLLBACK TRAN
The ROLLBACK statement cancels INSERT on Dept, UPDATE
on EMP and DELETE on Student tables.
COMMIT Statement: This statement makes a transaction
permanent. It is not possible to rollback the committed
transaction.
Ex:
SELECT * FROM EMP
DELETE FROM EMP
SELECT * FROM EMP
COMMIT
SELECT * FROM EMP
The COMMIT statement deletes the data from EMP
permanently. It is not possible to ROLLBACK the delete
operation.
Ex:
BEGIN TRAN
INSERT INTO DEPT VALUES (50,’TRA’,’AUS’)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
48
GO
UPDATE EMP SET SAL=SAL+1000 WHERE EMPNO=11
GO
DELETE FROM STUDENT WHERE SNO=101
Select the entire transaction and press F5 for one time
COMMIT TRAN
The above COMMIT TRAN makes all three transactions
permanent. We cannot ROLLBACK the transactions.
SAVE TRAN Statement: This statement is used to
COMMIT/ROLLBACK a particular performed transaction from
the set of transactions. It is associated with alphabets in
order to save the transactions.
BEGIN TRAN
SAVE TRAN A
INSERT INTO DEPT VALUES (50,’TRA’,’AUS’)
SAVE TRAN B
UPDATE EMP SET SAL=SAL+1000 WHERE EMPNO=11
SAVE TRAN C
DELETE FROM STUDENT WHERE SNO=101
ROLLBACK TRAN C (The delete operation will be cancelled)
COMMIT TRAN B (The update operation performed
permanently we cannot rollback)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
49
Operators:
1. Arithmetic operators: +, -,*, /
1. +:
Select sal, sal+1000 from EMP
2.-:
Select sal, sal-100 from EMP
3.*:
Select sal, sal*12 from EMP
4. /:
Select sal, sal/2 from EMP
2. Assignment operator’s :( relational operators)
=, <> or ! =,>,>=,<,<=
1. =:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
50
Select*from EMP where deptno=20
2. <> or! =:
Select*from EMP where deptno<>20
3.>:
Select*from EMP where sal>3000
4.>=:
Select*from EMP where sal>=3000
5. <:
Select*from EMP where sal<3000
6. <=:
Select*from EMP where sal<=3000
3. Logical operators: and, or, not
Ex: in maths two conditions are there, condition A and
condition B
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
51
A and B-- both conditions must be satisfied
A or B-- if anyone satisfied then we can get output
1. And:
Select*from EMP where sal>3000 and deptno=20
2. Or:
Select*from EMP where sal>3000 or deptno=20
Between operator :( Range operator)
Ex: select*from EMP where sal between 2000 and 5000
Not between:
Ex: select*from EMP where sal not between 2000 and 5000
In operator :( Minimizes searching time)
Select*from EMP where ename in ('Scott', 'Turner’, ‘Suresh')
Not in:
Select*from EMP where ename not in ('scott','turner','suresh')
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
52
Like operator :( Pattern matching)
Ex: select*from EMP where ename like’s%'
S%-- ename starts with s
%s-- ename ends with s
%s%-- somewhere s in ename
_s%-- second character is s from beginning
%s_ -- second from ending is s in ename
Note: _ (underscore) denotes one character
Not like operator:
Select*from EMP where ename not like’s%'
Alias:
Second or duplicate name, can be assigned to a table
or column
Alias is temporary
Ex:
Select sal*12 from EMP
Select sal*12 annual Sal from EMP
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
53
Note: annual Sal is alias for sal*12
Inbuilt functions:
1. Aggregate functions :( Group functions)
1. Sum ():
Select sum (sal) from EMP
2. Average ():
Select avg (sal) from EMP
3. Max ():
Select max (sal) from EMP
4. Min ():
Select min (sal) from EMP
5. Count (): it counts number of rows
Select count (*) from EMP
Select count (ename) from EMP
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
54
Select count (comm) from EMP
Note:
1. Count Function doesn’t consider null as a value.
2. COUNT function does not count the rows of the column
whose data type is BIGINT, In such situations we have to
use COUNT_BIG function
6. Standard deviation ():
Select stdev (sal) from EMP
7. Variance ():
Select var (sal) from EMP
DISTINCT ( ): This function displays the different values
available for a specific column. It considers one NULL value.
Ex: SELECT DISTINCT (DEPTNO) AS DIFF_VALUES FROM EMP
DIFF_VALUES
10
20
Ex: SELECT COUNT (DISTINCT( DEPTNO)) AS NO_OF_ROWS
FROM EMP
NO_OF_ROWS
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
55
2. Numeric functions:
1. Absolute:
Select abs (-9.5)
O/p: 9.5
2. Ceiling:
Select ceiling (9.01)
O/p: 10
3. Floor:
Select floor (9.9)
O/p: 9
4. Square root:
Select sqrt (144)
O/p: 12
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
56
5. Power:
Select power (3, 3)
O/p: 27(3*3*3)
6. Square:
Select square (3)
O/p: 9(3*3)
7. Pi ():
Select pi ()
O/p: 3.14(22/7)
8. Log:
Select log (2)
O/p: 0.693147180559945
9. Exp:
Select exp (2)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
57
O/p: 7.38905609893065
10. ROUND (M, N):
IT WILL ROUND THE VALUE OF M TO NEAREST WHOLE
NUMBER OF IT WILL AROUND.
SELECT ROUND (15.143)
15
SELECT ROUND (16.513)
16
SELECT ROUND (16.816)
17
SELECT ROUND (21.132,1)
21.1
SELECT ROUND (25.143)
25
3. Character functions :( String functions)
1. Length:
Select Len ('Hyderabad')
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
58
O/p: 9
2. Upper:
Select upper ('Hyderabad')
O/p: HYDERABAD
3. Lower:
Select lower ('HYDERABAD')
O/P: hyderabad
4. Reverse:
Select reverse ('Malayalam')
O/p: Malayalam
Select reverse ('school')
O/p: loohcs
5. Replace:
Select replace ('hyderabad','hyd','cyb')
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
59
O/p: cyberabad
6. Substring:
Select substring ('hyderabad', 3, 5)
O/p: derab
7. ASCII (Character): It gives ASCII value of a character
Select ASCII (‘A’)
O/p: 65
Select ASCII (‘a’)
O/p: 97
8. Char (n): It gives character for given ASCII value
Select char (98)
O/p: b
Date time functions:
1. Getdate ():
Select getdate ()
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
60
O/p: 2009-07-17 18:11:20.000
2. Getutcdate ():
Select getutcdate ()
O/p: 2009-07-17 12:42:09.263
3. Dateadd:
Select dateadd (dd, 7, getdate ())
O/p: 2010-04-27 15:24:15.827
4. Datediff:
Select datediff (mm,'03/26/04', getdate ())
O/p: 73
5. Date part:
Select datepart (yy, getdate ())
O/p: 2010
Select datepart (mm, getdate ())
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
61
O/p: 4
Select datepart (dd, getdate ())
O/p: 20
6. Date name:
Select datename (DW, getdate ())
O/p: Tuesday
Set operators:
a= {1, 2, 3}
b= {3, 4, 5}
1. A union B= {1, 2, 3, 4, 5}
2. A union all B= {1, 2, 3, 3, 4, 5}
Note: union all retrieves duplicate data
3. A intersect B= {3}
4. A except B = A minus B= {1, 2}
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
62
1. Union:
SELECT EMPNO FROM EMP
UNION
SELECT DEPTNO FROM DEPT
2. Union all:
SELECT EMPNO FROM EMP
UNION ALL
SELECT DEPTNO FROM DEPT
3. Intersect:
SELECT EMPNO FROM EMP
INTERSECT
SELECT DEPTNO FROM DEPT
4. Except:
SELECT EMPNO FROM EMP
EXCEPT
SELECT DEPTNO FROM DEPT
CLAUSES:
Group by clause:
Used to group similar data in the output
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
63
Conjunction of the similar data
Used to divide the table into number of subgroups
based on a specific column.
Minimum single group or aggregate function is
mandatory
If column contains similar data then only we can use it
into group by clause
Display the number of employee working in
different jobs of EMP table
Ex: Select job, count (job) from EMP
Group by job
Display max and min salaries of employees who are
working in different deptno's of EMP table
Ex 1: Select deptno, max (sal), min (sal) from EMP
Group by (deptno)
Ex 2: SELECT DEPTNO, MAX (SAL) AS HISAL, MIN (SAL) AS
LOSAL, SUM (SAL) AS TOTSAL, AVG (SAL) AS AVGSAL
FROM EMP
GROUP BY DEPTNO
Having clause:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
64
It is an arithmetical expression
It can be used as an extension of group by clause and
we can’t use where clause after group by clause
This clause is used to evaluate a condition with group
by clause. Generally for evaluating conditions we will
use WHERE clause, but where clause does not support
by group by clause.
Ex: Select job, count (deptno) from EMP
Group by job
Having count (deptno)>2
Ex: SELECT DEPTNO, MAX (SAL) AS HISAL, MIN (SAL) AS
LOSAL,
SUM (SAL) AS TOTSAL, AVG (SAL) AS AVGSAL FROM EMP
GROUP BY DEPTNO HAVING AVG (SAL)>10000
Order by clause:
It is temporary sorting of the data either in ascending
order or in Descending order
Default is ascending order
Ascending:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
65
Ex: Select*from EMP order by sal
Descending:
Ex: Select*from EMP order by sal desc
Clause precedence:
1. Where clause
2. Group by clause
3. Having clause
4. order by clause
Joins:
Used to retrieve data from multiple tables
Joins plays major role in performance tuning
Joins comes under temporary relations
We need a common column or common data column in
multiple tables
Two tables are there, they are EMP and DEPT am
creating joins between them
Both tables contains a common column i.e. deptno, so
that we can create Joins between EMP, DEPT tables
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
66
Formula: no. of joins=no. of tables-1
Types of JOINS:
1. Inner join :( Equi join)
We are retrieving data from EMP, DEPT tables
Ex:
Select empno, ename, sal, d.deptno, dname, loc from EMP e
Inner join DEPT d on e.deptno=d.deptno
Note: Query retrieves equal number of rows from both
tables
2. Outer join: This is three types
1. Left outer join:
Select empno, ename, sal, d.deptno, dname, loc from EMP e
Left outer join DEPT d on e.deptno=d.deptno
It retrieves condition satisfies and non satisfied data from left
side table of the condition i.e. EMP, it retrieves only condition
satisfied data from right side table of the condition i.e. DEPT
2. Right outer join:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
67
Select empno, ename, sal, d.deptno, dname, loc from EMP e
Right outer join DEPT d on e.deptno=d.deptno
It retrieves condition satisfied from left side table of the
condition i.e. EMP, it retrieves condition satisfied data and
non satisfied data from right side table of the condition i.e.
DEPT
3. Full outer join:
This is combination of both right and left outer joins.
Select empno, ename, sal, d.deptno, dname, loc from EMP e
Full outer join DEPT d on e.deptno=d.deptno
It retrieves condition satisfied and non satisfied data from
both tables.
3. Non-equi join: EMP table contains a column sal, in
SALGRADE table, we got two columns losal and hisal so that
we can define a join condition.
Select empno, ename, sal, grade from EMP e, SALGRADE s
where
e.sal between s.losal and s.hisal
By using above query we can map employees and their
grades.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
68
4. Cross join :( Cartesian product)
a= (1, 2, 3)
b= (4, 5, 6)
A*B=3*3=9
EMP table contains 14 rows
Dept table contains 4 rows
Cross join of EMP, DEPT tables produces 56 rows
Ex:
Select*from EMP cross join DEPT
SUB-QUERIES:
It is a Combination of multiple queries or select
statements.
Query with in a query is known as Sub-Query
Syn:
Select statement (Select statement)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
69
Outer query inner query
Types:
1. Simple or single row sub query:
It returns only single row to the user
Ex: Retrieve second highest sal from EMP table
Select max (sal) from EMP where sal< (select max (sal) from
EMP)
2. Nested sub query:
It is also simple sub query
It returns single row
Ex: Retrieve third highest sal from EMP table
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
70
Select max (sal) from EMP where sal< (select max (sal) from
EMP where
Sal< (select max (sal) from EMP))
Distinct: It eliminates duplications temporarily.
Ex:
A. Select sal from EMP
B. Select distinct (sal) from EMP
Formula for retrieving n highest salaries from
EMP table:
Select max (sal) from EMP e where n= (select count
(distinct (sal)) from EMP b where e.sal<b.sal)
N is a number which indicates position of the sal
N starts from zero
n=n-1
Formula for Min sal:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
71
Select min (sal) from EMP e where n= (select count
(distinct (sal)) from
EMP b where e.sal>b.sal)
3. Co-related sub query:
It can return single and multiple rows to the user
I want to retrieve deptno 20 data from EMP table, for that I
want Satisfy the condition in dept table
Ex:
Select*from EMP where deptno= (select deptno from DEPT
where dname='accounting')
Note: If a sub query sends multiple values to its nearest main
query then we have to use IN operator between Main query
and Sub query.
Ex: WAQ to display employee details, who are working under
RAM dept.
SELECT * FROM EMP WHERE DEPTNO= (SELECT DEPTNO
FROM EMP WHERE ENAME=’RAM’)
Ex: WAQ To display employee details, whose salary is greater
than highest salary of 10th department
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
72
SELECT * FROM EMP WHERE SAL> (SELECT MAX (SAL) FROM
EMP WHERE DEPTNO=10)
Ex: WAQ To display employee details, whose salary is greater
than average salary of RAM department
SELECT * FROM EMP WHERE SAL> (SELECT AVG (SAL) FROM
EMP WHERE DEPTNO=
SELECT DEPTNO FROM EMP WHERE ENAME=’RAM’)
Creating a table by copying data and structure from
another table:
Syn:
Select*into <TN> from <existing_table>
Ex:
Select*into EMP1 from EMP
Ex: (Oracle)
Create table EMP1 as select*from EMP;
Creating a table by copying structure from another
table:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
73
In this by defining false condition we can avoid copying
of data.
Syn:
Select*into <TN> from <existing_tabel> where
<false_condition>
Ex:
Select*into EMP2 from EMP where 1=2
Views:
A View is nothing but an image table or virtual table, which is
created for a base table. A view can be created by taking all
values from the base table or by taking only selected values
from base table. There are two types’ views available in SQL
Server.
1. Simple Views
2. Complex Views
Note: If we perform any modifications in base table, then
those modifications automatically effected in view and vice-
versa.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
74
1. Simple Views: Creating View by taking only one single
base table.
Syntax:
CREATE VIEW VIEWNAME [WITH ENCRYPTION]
AS SELECT * FROM TABLENAME [WHERE CONDITION]
[WITH CHECK OPTION]
Ex:
CREATE VIEW V1 AS SELECT * FROM EMP
INSERT INTO V1 VALUES (55,’RAVI’, 10000, 10)
The above insert statement inserts the values into base table
EMP as well as into view V1.
Ex:
CREATE VIEW V2 AS SELECT * FROM EMP WHERE
DEPTNO=10
INSERT INTO V2 VALUES (66,’BABBU’, 25000, 10)
The above insert statement inserts the values into base table
EMP as well as into view
V2.
INSERT INTO V2 VALUES (77,’AMAR’, 15000, 20)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
75
The above insert statement inserts the values into only base
table EMP but not into view
V2 because according to the definition of V2 user supplied
values are invalid values. It means invalid values are inserting
into base table EMP. To stop this kind of operations we have
to create the view with ‘WITH CHECK OPTION’.
Ex:
CREATE VIEW V3 AS SELECT * FROM EMP WHERE
DEPTNO=10
WITH CHECK OPTION
INSERT INTO V3 VALUES (88,’TEJA’, 25000, 20)
The above insert statement cannot insert the values into
base table EMP as well as into view V3.
SP_HELPTEXT: This stored procedure is used to display the
definition of a specific view.
Syntax:
SP_HELPTEXT VIEWNAME
Ex: SP_HELPTEXT V1
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
76
Output: CREATE VIEW V1 AS SELECT * FROM EMP
WITH ENCRYPTION: Once we create any view with ‘WITH
ENCRYPTION’ then we cannot find the definition of that
particular view using SP_HELPTEXT stored procedure because
this encryption option hides the definition.
Ex:
CREATE VIEW V4 WITH ENCRYPTION
AS SELECT * FROM EMP WHERE DEPTNO=20
SP_HELPTEXT V4
Output: The text for object v4 is encrypted
To decrypt the definition of view V4 we have to follow the
below approach
1. Replace CREATE with ALTER
2. Remove WITH ENCRYPTION keyword
Ex:
ALTER VIEW V4 AS SELECT * FROM EMP WHERE DEPTNO=20
SP_HELPTEXT V4
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
77
CREATE VIEW V4 AS SELECT * FROM EMP WHERE
DEPTNO=20
2. Complex Views:
Creating View by taking multiple base tables.
Ex:
CREATE VIEW EMP_DEPT_VIEW AS SELECT EMP.EMPNO,
EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME FROM EMP, DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO
Syntax to create view based on another views:
SQL SERVER enables users to create views based on another
view. We can create view based on another view up to 32
levels
Syntax:
CREATE VIEW VIEWNAME [WITH ENCRYPTION] AS SELECT *
FROM VIEWNAME [WHERE CONDITION] [WITH CHECK
OPTION]
Ex:
CREATE VIEW V5 AS SELECT * FROM V1 WHERE
DEPTNO=10
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
78
Syntax to Drop the Views:
DROP VIEW VIEWNAME […N]
Ex: DROP VIEW V1, V2, V3, V4, V5
Indexes:
Indexes in SQL server is similar to index in text book...
Indexes are used to improve the performance of queries.
INDEXES ARE GENERALLY CREATED FOR FOLLOWING
COLUMNS
1. Primary key column
2. Foreign key column: frequently used in join
conditions.
3. Column which are frequently used in where clause
4. Columns, which are used to retrieve the data in
sorting order.
INDEXED CANNOT BE CREATED FOR
FOLLOWING COLUMNS
1. The columns which are not used
frequently used in where clause.
2. Columns containing the duplicate and
null values
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
79
3. Columns containing images, binary
information, and text information.
TYPES OF INDEXES:
CLUSTERED INDEX
NON-CLUSTERED INDEX
CLUSTERED INDEX: only one clustered index is allowed per
table. The order of values in a table order of values in index
is also same. When cluster index is created on table data is
arranged in ascending order cluster index will occupy 5% of
the table.
Syntax:
CREATE [UNIQUE] CLUSTERED INDEX INDEXNAME ON
TABLENAME (COLUMN)
Ex:
CREATE CLUSTERED INDEX CI ON EMP (EMPNO)
Note: If we want to maintain unique values in clustered/non
clustered indexed column then specify UNIQUE keyword
along with CLUSTERED INDEX/NONCLUSTERD INDEX
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
80
NONCLUSTERED INDEX: It is the default index created by
the server the physical order of the data in the table is
different from the order of the values in index. Max no. Of
non-clustered indexed allowed for table is 249
Syntax:
CREATE [UNIQUE] NONCLUSTERED INDEX INDEXNAME
ON TABLENAME (COLUMN1…)
Ex:
CREATE NONCLUSTERED INDEX NCI ON EMP (ENAME, SAL)
Ex:
CREATE UNIQUE NONCLUSTERED INDEX UI ON DEPT
(DNAME)
COMPOSITE INDEX: If a Unique NonClustered index is
created on more than one column then that concept is called
composite index.
CREATE UNIQUE NONCLUSTERED INDEX COI ON DEPT
(DEPTNO, DNAME)
DEPTNO DNAME
10 SALES
20 HR
30 IR
10 HR (Accepted)
20 SALES (Accepted)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
81
30 IR (Repeated, Not accepted)
SP_HELPINDEX: This stored procedure is used to display the
list of indexes, which have been placed on different columns
of a specific table.
Ex: SP_HELPINDEX EMP
Syntax to drop the index:
DROP INDEX TABLENAME.INDEXNAME
Ex:
DROP INDEX DEPT.UI
Synonym:
It is a database object
It is a second or duplicate name which can be assigned
to a table
It will not occupies any space, just it is a second name
of the table
Trough synonyms we can impose securities i.e. we can
hide actual table names
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
82
Syn: create synonym syn_name for <TN>
Ex: create synonym syn_1 for EMP
Retrieving data:
Syn: select*from syn_name
Ex: select*from syn_1
Dropping:
Syn: drop synonym <TN>
Ex: drop synonym syn_1
SQLSERVER LOCKS:
1. Intent
Intent lock shows the future intention of SQL Server's lock
manager to acquire locks on a specific unit of data for a
particular transaction. SQL Server uses intent locks to queue
exclusive locks, thereby ensuring that these locks will be
placed on the data elements in the order the transactions
were initiated.
Types: Intent locks are 3 types……
Intent shared (IS): IS locks indicate that the transaction will
read some (but not all) the resources in the table or page by
placing shared locks.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
83
Intent exclusive (IX): IX locks indicate that the transaction
will modify some (but not all) resources in the table or page
by placing exclusive locks.
Shared with intent exclusive (SIX): SIX locks indicate that
the transaction will read all resources, and modify some (but
not all) of them. This will be accomplished by placing the
shared locks on the resources read and exclusive locks on
the rows modified. Only one SIX lock is allowed per resource
at one time; therefore, SIX locks prevent other connections
from modifying any data in the resource (page or table),
although they do allow reading the data in the same
resource.
2. Shared
Shared locks (S) allow transactions to read data with SELECT
statements. Other connections are allowed to read the data
at the same time; however, no transactions are allowed to
modify data until the shared locks are released.
3. Update
Update locks (U) are acquired just prior to modifying the
data. If a transaction modifies a row, then the update lock is
escalated to an exclusive lock; otherwise, it is converted to a
shared lock. Only one transaction can acquire update locks
to a resource at one time. Using update locks prevents
multiple connections from having a shared lock that want to
eventually modify a resource using an exclusive lock. Shared
locks are compatible with other shared locks, but are not
compatible with Update locks.
4. Exclusive
Exclusive locks (X) completely lock the resource from any
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
84
type of access including reads. They are issued when data is
being modified through INSERT, UPDATE and DELETE
statements.
5. Schema
Schema modification locks (Sch-M) are acquired when data
definition language statements, such as CREATE TABLE,
CREATE INDEX, ALTER TABLE, and so on are being executed.
Schema stability locks (Sch-S) are acquired when store
procedures are being compiled.
6. Bulk Update
Bulk update locks (BU) are used when performing a bulk-
copy of data into a table with TABLOCK hint. These locks
improve performance while bulk copying data into a table;
however, they reduce concurrency by effectively disabling
any other connections to read or modify data in the table
RULES AND DEFAULTS:
CREATING DEFAULT: Default is one of the database objects
used to declare default values globally.
Syntax:
CREATE DEFAULT DEFAULTNAME AS
NUMERICVALUE/STRING VALUE
Ex:
CREATE DEFAULT D1 AS ‘UNKNOWN’
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
85
BINDING THE DEFAULT TO COLUMN:
Syntax:
SP_BINDDEFAULT DEFAULTNAME,
‘TABLENAME.COLUMN’
Ex:
SP_BINDDEFAULT D1, ‘DEPT.LOC’
SP_BINDEFAULT D1, ‘EMP.ENAME’
INSERT INTO DEPT (DEPTNO, DNAME) VALUES
(10,ACCOUNTING’)
SELECT * FROM DEPT WHERE DEPTNO =10
DEPTNO DNAME LOC
10 ACCOUNTING UNKNOWN
INSERT INTO EMP (EMPNO, SAL, DEPTNO) VALUES (100,
5000,20)
SELECT EMPNO, ENAME, DEPTNO FROM EMP WHERE
EMPNO =100
EMPNO ENAME DEPTNO
100 UNKNOWN 20
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
86
UNBINDING THE DEFAULT FROM THE BINDING
COLUMN:
Syntax:
SP_UNBINDEFAULT ‘TABLENAME...COLUMN’
SP_UNBINDEFAULT ‘ DEPT.LOC’
SP_UNBINDEFAULT ‘ EMP.ENAME’
DROPPING THE DEFAULT:
Syntax:
DROP DEFAULT DEFAULTNAME
DROP DEFAULT D1
CREATING RULES: Rule is just check constraint but it is
placed on columns globally.
Syntax:
CREATE RULE RULENAME AS EXPRESSION
Ex:
CREATE RULE R1 AS @ X >=10 AND @ X <= 60
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
87
BINDING THE RULE:
SP_BINDEFAULT RULENAME, ‘ TABLE.COLUMN’
SP_BINDEFAULT R1, ‘DEPT.DEPTNO’
INSERT INTO DEPT (DEPTNO) VALUES (70)
ERROR
UNBINDING THE RULES:
SP_UNBIND RULE ‘DEPT.DEPTNO’
DROPPING THE RULES:
DROP RULE RULENAME
DROP RULE R1
TSQL Programs:
Variable: whose can be varied is known as a variable
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
88
Types:
1. Local variable: once we declared local variable then it can
be used into single program
Ex: @x int
2. Global variable: once we declared global variable then it
can be used into many no. of programs
Ex: @@y int
Constant: whose value can’t be varied
Ex: 1, 2,3,4,5
Note: tsql programs also known as tsql batches, these are
two types
1. Named batches
2. Unnamed batches
Structure:
Declare
Declaration and initiation of variables
Begin
Body of the program
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
89
End
1. Declare:
User can declare variables according to the requirement of
the batch and can assign initial values to variables
Ex: declare @x int
Set @x=10
2. Begin:
It contains actual code i.e.
Logic
Exceptions
Conditional statements
Output
Output: print 'output'
3. End: Ending of the batch
WAP to display the word 'welcome to database'
Begin
Print 'welcome to database'
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
90
End
WAP to calculate sum of two numbers
Declare @x int
Set @x=20
Declare @y int
Set @y=10
Declare @z int
Begin
Set @z=@x+@y
Print @z
End
Conditional Statements:
1. If. Else:
Syn:
Declare
Variable declaration and initiation
Begin
If condition
Output
Else
Output
End
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
91
WAP to find out greatest number among two numbers
Declare @x int
Set @x=20
Declare @y int
Set @y=10
Begin
If @x>@y
Print 'x is greatest'
Else
Print 'y is greatest'
End
2. If. Elseif... Else:
Syn:
Declare
Variable declaration and initiation
Begin
If condition
Output
Else if condition
Output
Else
Output
End
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
92
WAP to find out greatest number among three
numbers
Declare @x int
Set @x=20
Declare @y int
Set @y=10
Declare @z int
Set @z=5
Begin
If @x>@y and @x>@z
Print 'x is greatest'
Else if @y>@x and @y>@z
Print 'y is greatest'
Else
Print 'z is greatest'
End
3. While:
Syn:
Declare
Variable declaration and initiation
While condition
Begin
Body of the program
End
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
93
WAP to display numbers from 1 to 10 with increment of
1
DECLARE @counter INT
SET @counter=1
WHILE @counter <= 10
BEGIN
PRINT @counter
SET @counter=@counter+1
END
Cursors:
Cursor is a logical area, which is used to retrieve a particular
nth record. Selecting a particular nth record is not possible
through physical area (Table). In such situations one logical
area (Cursor) we can create and then we can select a
particular nth record. Cursors are used to store transaction
information temporarily.
Types of Cursors:
1. STATIC CURSOR
2. DYNAMIC CURSOR
3. KEYSET CURSOR
4. FORWARD_ONLY CURSOR
DEPT_TABLE:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
94
DEPTNO DNAME LOC
10 SALES HYD
20 HR CHE
30 IR BAN
40 A/C MUM
Syntax:
Syntax to declare the Cursor:
DECLARE CURSORNAME CURSOR CURSORTYPE
FOR SELECT * FROM TABLENAME
Syntax to open the Cursor:
OPEN CURSORNAME
Syntax to fetch the records from Cursor:
FETCH {FIRST/NEXT/PRIOR/LAST/ABSOLUTE
N/RELATIVE N}
FROM CURSORNAME
Syntax to close the Cursor:
CLOSE CURSORNAME
Syntax to de allocates the Cursor:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
95
DEALLOCATE CURSORNAME
FIRST: Fetches first record from the cursor
NEXT: Fetches next record from the current position of the
cursor
PRIOR: Fetches previous record from the current position of
the cursor
LAST: Fetches last record from the cursor
ABSOLUTE N: Fetches nth record from the top of the cursor
if n is positive fetches the nth record from bottom of the
cursor if n is negative. Where n is an integer
RELATIVE N: Fetches nth next record from current position
of the cursor if n is positive fetches nth previous record from
the current position of the cursor if n is negative where n is
an integer.
1. STATIC CURSOR:
This is the logical area in which dynamic updations not
possible. If we want those updations in logical area we close
the cursor and we need to reopen it.
1.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
96
DECLARE SC CURSOR STATIC FOR SELECT * FROM DEPT
OPEN SC
FETCH FIRST FROM SC
10 SALES HYD
UPDATE DEPT SET DEPTNO=15 WHERE DEPTNO=10
FETCH FIRST FROM SC
10 SALES HYD
CLOSE SC
OPEN SC
FETCH FIRST FROM SC
15 SALES HYD
FETCH NEXT FROM SC
20 HR CHE
FETCH PRIOR FROM SC
15 SALES HYD
FETCH LAST FROMSC
40 A/C MUM
FETCH ABSOLUTE 2 FROM SC
20 HR CHE
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
97
FETCH ABSOLUTE –2 FROM SC
30 IR BAN
FETCH FIRST FROM SC
15 SALES HYD
FETCH RELATIVE 2 FROM SC
30 IR BAN
FETCH RELATIVE –2 FROM SC
15 SALES HYD
CLOSE SC
DEALLOCATE SC
2. DYNAMIC CURSOR:
This is the logical area in which dynamic updations possible.
We need to close and reopen the cursor for the modified
values
Ex:
DECLARE DC CURSOR DYNAMIC FOR SELECT * FROM DEPT
OPEN SC
FETCH FIRST FROM DC
15 SALES HYD
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
98
UPDATE DEPT SET DEPTNO=10 WHERE DEPTNO=15
FETCH FIRST FROM DC
10 SALES HYD
CLOSE DC
DEALLOCATE DC
Note: ABSOLUTE N will not be supported by the dynamic
cursor because dynamic updations are possible.
3. KEYSET CURSOR:
This is the logical area, which is useful only when there is a
primary key in the table. This logical area holds only Primary
key column values. Based on the key column values in the
logical area (Cursor) the rest column values are coming from
physical area (Table).
Ex:
DECLARE KC CURSOR KEYSET FOR SELECT * FROM DEPT
OPEN KC
FETCH FIRST FROM KC
10 SALES HYD
UPDATE DEPT SET LOC=’SRNAGAR’ WHERE LOC=’HYD’
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
99
FETCH FIRST FROM KC
10 SALES SRNAGAR
UPDATE DEPT SET DEPTNO=15 WHERE DEPTNO=10
FETCH FIRST FROM KC
0 NULL NULL
CLOSE KC
OPEN KC
FETCH FIRST FROM KC
15 SALES HYD
CLOSE KC
DEALLOCATE KC
Note: Dynamic updations are not possible on key column of
the keyset cursor, we have to close the cursor and we need
to reopen it for the modified values.
4. FORWARD_ONLY CURSOR:
This is the most unused logical area because it supports only
NEXT operation.
Ex:
DECLARE FC CURSOR FORWARD_ONLY FOR SELECT * FROM
DEPT
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
100
OPEN FC
FETCH FIRST FROM FC
Error Message
FETCH NEXT FROM FC
15 SALES HYD
CLOSE SC
DEALLOCATE FC
NOTE:
If the cursor does not found any value in its searching
process then it will display the corresponding column values.
1. BATCH TO FETCH MULTIPLE RECORDS FROM STATIC
CURSOR
DECLARE SC CURSOR STATIC FOR SELECT * FROM DEPT
DECLARE @N INT
OPEN SC
SET @N=2
WHILE (@N<=4)
BEGIN
FETCH ABSOLUTE @N FROM SC
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
101
SET @N=@N+1
PRINT @N
END
CLOSE SC
DEALLOCATE SC
OUTPUT:
DEPTNO DNAME LOC
20 HR CHE
DEPTNO DNAME LOC
30 IR BAN
DEPTNO DNAME LOC
40 A/C MUM
Stored Procedures:
It is a database object
After successful compilation it will be stored into a
precompiled programming unit
So that with out compilation we can use same stored
procedure any number of times
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
102
User can get reusability
It is major part performance tuning
Used complete a task in database
Types:
1. System stored procedures:
Ex:
sp_tables
sp_helptable <TN>
sp_helpdb <database name>
sp_rename
sp_addumpdevice
2. User stored procedure:
defined by the users explicitly
variable are known as "parameters"
parameters are two types
1. In :( default) used to pass the values
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
103
2. Output: used to get the values
Note: stored procedure can return multiple values through
its output parameter
Syntax:
CREATE PROC [EDURE] PROCEDURENAME
[@PARA 1 DATATYPE (SIZE)[=DEFAULT_VALUE]
[OUTPUT]
@PARA 2 DATATYPE (SIZE)[=DEFAULT_VALUE]
[VALUE],….]
AS
BEGIN
SELECT STATEMENT
END
Syntax to execute the user defined stored procedure:
EXEC [UTE] PROCEDURENAME [VALUE1, VALUE2…]
Drop:
Drop procedure pro_name
Programs:
Create a stored procedure to insert data into dept table
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
104
Create procedure insert_dept @dno int,@name varchar (20),
@loc varchar (20)
As
Begin
Insert into dept (deptno, dname, loc) values (@dno, @name,
@loc)
End
Execution:
Exec insert_dept 50,'csc','hyderabad'
Result:
Select*from dept
Create a stored procedure to update dname, loc
according to the given deptno of dept table
Create procedure update_dept @dno int, @name varchar
(20),
@loc varchar (20)
As
Begin
Update dept set dname=@name,loc=@loc where
deptno=@dno
End
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
105
Execution:
Exec update_dept 50,'eee','india'
Result:
Select*from dept
Note: The number of values supplied through EXEC
statement must be equal to the number parameters.
Write a procedure to select the data from EMP table.
CREATE PROCEDURE P1
AS
BEGIN
SELECT * FROM EMP
END
EXEC P1
Write a procedure to select the data from EMP table
based on user supplied DEPTNO.
CREATE PROCEDURE P2 @X INT
AS
BEGIN
SELECT * FROM EMP WHERE DEPTNO=@X
END
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
106
EXEC P2 20
Write a procedure to add two numbers
CREATE PROCEDURE P3 @A INT=10,@B INT=20
AS
BEGIN
DECLARE @C INT
SET @C=@A+@B
PRINT @C
END
EXEC P3
Output: 30
EXEC P3 25, 45
Output: 70
Note: Server will give highest priority to the user supplied
values rather than default values.
User Defined Functions :( UDF’S)
It is a database object
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
107
Used to complete calculations in database
It is like stored procedure after successful compilation it
will stored into database as a pre
compiled programming unit
User’s gets reusability facility i.e. without compilation
users can go for execution
It contains only one parameter
In parameter: used to pass the values
1. Through return statement it can send value to the user
2. Udf’s can return single value with data type
Functions created by user are called user defined functions
Types of user defined functions:
1. SCALAR VALUED FUNCTIONS
2. TABLE VALUED FUNCTIONS
1. Scalar valued functions: These functions will return a
scalar value to the calling environment
Syntax:
CREATE FUNCTION < FUNCTION_NAME> (@PARA 1
DATA TYPE ,
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
108
@ PARA 2 DATATYPE…)
RETURNS <DATATYPE>
AS
BEGIN
DECLARE @VARIABLE DATATYPE
--------
----------
RETURN @VARIABLE
END
Syntax to execute the user defined function:
SELECT/PRINT DBO.FUNCTIONNAME (VALUE1,
VALUE2…)
Note: The number of values supplied through PRINT/SELECT
statement must be equal to the number parameters.
Write a function to find the product of two numbers
CREATE FUNCTION F1 (@ A INT, @B INT)
RETURNS INT
AS
BEGIN
DECLARE @ C INT
SET @C = @A * @B
RETURN @C
END
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
109
SELECT/PRINT DBO.F1 (3,5)
Write function to find the net salary of an employee
read EMPNO though parameter and display the net to
return value
CREATE FUNCTION F2 (@ VNO INT)
RETURNS INT
AS
BEGIN
DECLARE @ VSAL INT, @VCOM INT, @NET INT
SELECT @VSAL = SAL, @VCOM=COM
FROM EMP WHERE EMPNO =@VNO
IF @ VCOM IS NULL
BEGIN
PRINT ‘COMMISION IS NULL’
SET @NET = @VSAL
END
ELSE
BEGIN
SET @ NET = @VSAL + @VCOM
END
RETURN (@NET)
END
PRINT/SELECT DBO.F2(22)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
110
2. Table valued function: These functions will return entire
table to the calling environment.
Syntax:
CREATE FUNCTION <FUNCTION_NAME> (PARA 1 DATA
TYPE ……….)
RETURNS TABLE
AS
BEGIN
<FUNCTION BODY>
RETURN (SELECT STATEMENT)
END
Write a function to return entire dept table
CREATE FUNCTION F3()
RETURNS TABLE
AS
BEGIN
RETURN (SELECT * FROM DEPT)
END
SELECT * FROM F3()
DEPT DNAME LOC
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
111
CREATE FUNCTION F4()
RETURN TABLE
AS BEGIN
RETURN(SELECT ENAME, DNAME FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO)
END
SELECT * FROM F4()
ENAME DNAME
SMITH RESEARCH
MILLER ACCOUNTING
Create function to convert datetime data into char
Default datetime format: 'yyyy-mm-dd HH: MI: SS: MS’
2009-07-31 -- is it datetime data in sqlserver 2005?
No
CREATE FUNCTION DateOnly (@InDateTime date time)
RETURNS varchar (10)
AS
BEGIN
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
112
DECLARE @MyOutput varchar (10)
SET @MyOutput = CONVERT (varchar (10),
@InDateTime, 101)
RETURN @MyOutput
END
Note: Convert is inbuilt function used to convert data from
one data type to another
To call our function, execute: SELECT dbo.DateOnly
(GETDATE ())
Drop:
Syn:
Drop function fun_name
TRIGGERS:
Two types of Triggers are there in SQLSERVER 2005, they are
1. DDL TRIGGERS: Can be created on database Servers and
databases.
2. DML TRIGGERS: Can be created on Tables and Views.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
113
DML Triggers:
DML triggers respond to user INSERT, UPDATE, DELETE
operations against a table or a view. When a data
modification event occurs, the trigger performs a set of
actions defined within the trigger. Similar to stored
procedures, triggers are defined in Transact-SQL and allow a
full range of activities to be performed.
A DML trigger can be defined specifically as FOR UPDATE,
FOR INSERT, FOR DELETE, or any combination of the three.
UPDATE triggers respond to modifications against one or
more columns within the table, INSERT triggers respond to
new data being added to the database, and DELETE triggers
respond to data being deleted from the database.
There are two types of DML triggers: AFTER and INSTEAD
OF.
AFTER triggers are only allowed for tables, and they execute
after the data modification has been completed against the
table.
INSTEAD OF triggers execute instead of the original data
modification and can be created for both tables and views.
DML triggers allow you to perform actions in response to
data modifications in a table.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
114
For example, you can create a trigger that populates an audit
table based on the operation performed, or perhaps use the
trigger to decrement the value of a quantity. Although this
ability to trigger actions automatically is a powerful feature,
there are a few things to keep in mind before your use of
triggers proliferates:
• Triggers can often become a hidden and hence forgotten
problem. When troubleshooting
Performance or logical issues, DBAs can forget that triggers
are executing in the background.
Make sure that your use of triggers is “visible” in your data
documentation.
• If you can ensure that all your data modifications flow
through a stored procedure, I would
strongly recommend you perform all activities within the
stored procedure, rather than use a
Trigger. For example, if you need to update a quantity in a
related table, after inserting a sales
record; why not put this logic in the stored procedure
instead? The advantages are manageability
(One place to look) and supportability (one place to
troubleshoot), when the Procedure needs modifications or
performs unexpected actions.
• Always keep performance in mind and this means writing
triggers that execute quickly.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
115
Long-running triggers can significantly slow down data
modification operations. Take particular
care in putting triggers into databases with frequent data
modifications.
• Non-logged updates do not cause a DML trigger to fire (for
example WRITETEXT, TRUNCATE
TABLE and bulk insert operations).
• Constraints usually run faster than a DML trigger, so if your
business requirements can be
fulfilled by a constraint, use constraints instead. AFTER
triggers run after the data modification
has already occurred, so they cannot be used to prevent a
constraint violation.
• Don’t allow result sets from a SELECT statement to be
returned within your trigger. Most
applications can’t consume these in an elegant fashion, and
embedded queries can hurt the
Trigger’s performance.
Parts of Trigger:
1. Triggering Statement
2. Triggering Restriction
3. Triggering Action
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
116
Note: Triggering Action is different from remaining parts,
because Trigger fires implicitly whenever an event occurs
against to the Triggering Condition.
Things to Observe:
When user creates an after Trigger on any table for
INSERT operation then server arranges a temporary
table “INSERTED” for holding recently inserted values.
When user creates an after Trigger on any table for
DELETE operation then server arranges a temporary
table “DELETED” for holding recently deleted values.
When user creates an after Trigger on any table for
UPDATE operation then server arranges two temporary
tables “INSERTED, DELETED” for holding old and new
values of UPDATE operation.
Syntax of After Trigger:
CREATE TRIGGER TRIGGERNAME ON TABLE NAME
FOR/ AFTER {INSERT/ UPDATE/ DELETE}
AS
BEGIN
SQL STATEMENT
END
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
117
Syntax for Instead of Trigger:
Create trigger <Trigger_name> on <TN> or <View_name>
instead of INSERT OR UPDATE OR DELETE
As
Begin
Body of the program
End
Drop:
Syntax: Drop trigger <Trigger_name>
Retrieve list of Triggers on a Table:
Syn: sp_helptrigger <TN>
Ex: sp_helptrigger EMP
To view the SQL behind a specific trigger
Syn: sp_helptext <Trigger_name>
Create a trigger for generate alert
Create trigger tri_emp on EMP after insert
As
Begin
Print 'one row inserted'
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
118
End
Result:
Insert into EMP (empno) values (1)
Create a trigger for copying data from Temp table to
Original table
CREATE TRIGGER deleteorder_trigger ON orders
AFTER DELETE
AS
BEGIN
INSERT INTO orders_archive (order_id, order_date, cust_id)
SELECT order_id, order_date, cust_id FROM DELETED
End
Note:
1. Create Orders, Orders_archive tables before running
above program.
2. Orders, Orders_archive tables contain same structure.
3. DELETED is a temporary table
Ex:
CREATE TRIGGER vendor_trigger ON EMP
AFTER INSERT, UPDATE
AS
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
119
BEGIN
UPDATE EMP SET ename=Upper (ename)
WHERE empno IN (SELECT empno FROM INSERTED)
END
Instead of Trigger:
Ex:
CREATE TRIGGER T4 ON DEPT INSTEAD OF INSERT,UPDATE,
DELETE
AS
BEGIN
PRINT ‘THESE OPERATIONS ARE NOT ALLOWED’
END
The above trigger fires automatically and shows a message
THESE OPERATIONS ARE NOT ALLOWED, when user try to
perform INSERT, UPDATE, DELETE operations on DEPT table.
DDL TRIGGERS (2005 Triggers):
These triggers are fired when user performs DDL operations
in the database and these triggers belong to database. It
means we can define triggers on the current database.
Syntax:
CREATE TRIGGER TRIGGERNAME ON DATABASE
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
120
FOR/ AFTER {DROP,/ALTER/ CREATE}
AS
BEGIN
SQL STATEMENT.
END
1.
USE PUBS
CREATE TRIGGER DROP_TRG ON DATABASE FOR
DROP_TABLE
AS
BEGIN
PRINT ‘TABLE DROPPED’
END
2.
USE PUBS
CREATE TRIGGER DROP_TRG ON DATABASE INSTEAD OF
DROP_TABLE
AS
BEGIN
PRINT ‘U CANNOT DROP THE TABLE’
END
DIFFERENCE BETWEEN ORACLE & SQL Server:
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
121
ORACLE SQL Server DESCRIPTION
The %TYPE data type of Oracle
%TYPE data No equivalent lets you create a variable and
type have that variable's data type
be defined by a table or view
column or a PL/SQL package
variable.
There is no equivalent for
Oracle's %TYPE datatype in T-
SQL, but it can be simulated
(not very conveniently though)
using User Defined Data types
(UDT). Here is an example:
EXEC sp_addtype 'MyType',
'smallint', NULL
CREATE TABLE MyTable (i
MyType)
CREATE PROC MyProc
AS
BEGIN
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
122
DECLARE @i MyType
END
BEFORE INSTEAD OF
triggers triggers Use INSTEAD OF trigger in SQL
Server as an equivalent to
Oracle's BEFORE trigger.
For more information on
INSTEAD OF triggers, see SQL
Server Books Online
DECODE() CASE
function expression DECODE can be conveniently
simulated using the T-SQL
CASE expression. Here's an
example:
SELECT Sport,
CASE Sport
WHEN 'Cricket' THEN 'England'
WHEN 'Hockey' THEN 'India'
WHEN 'Base Ball' THEN
'America'
ELSE NULL
END AS 'Originating Country'
FROM Sports
DESCRIBE sp_help or
sp_columns There are a lot of alternatives
for Oracle's DESCRIBE, in SQL
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
123
Server. You could use the
system stored procedure
sp_help for detailed
information about a table's
columns and other properties.
If sp_help is providing you with
too much information, then try
the ODBC catalog stored
procedure, sp_columns.
There are a bunch of other
useful sp_help* stored
procedures available in SQL
Server. You can find more
information about those in SQL
Server Books Online.
If none of those procedures are
suitable for your requirements,
then you could query the
system view
INFORMATION_SCHEMA.COLU
MNS, to get the desired
information. You could wrap
your code inside a stored
procedure named DESCRIBE, if
you wish.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
124
As a last resort, you could even
query system tables like
sysobjects and syscolumns, but
this is not a recommended
approach.
DUAL table No equivalent
There is no DUAL table in SQL
Server. In fact, you don't need
one in SQL Server, as you can
have a SELECT statement
without a FROM clause.
For example, consider the
following SELECT statement in
Oracle:
SELECT 'Something'
FROM DUAL
In SQL Server, the same result
can be obtained by the
following command:
SELECT 'Something'
If you are porting some code
from Oracle into SQL Server
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
125
and if you don't want to
remove all references to DUAL
table, then just create a DUAL
table in your database using
the following commands:
CREATE TABLE DUAL
(
DUMMY varchar(1)
)
INSERT INTO DUAL (DUMMY)
VALUES ('X')
INTERSECT Not
operator supported Use EXISTS clause to generate
the same result.
The following example
illustrates the simulation of
Oracle's INTERSECT operator:
SELECT OrderID, OrderDate
FROM Orders O
WHERE EXISTS
(
SELECT 1
FROM RefundsTable R
WHERE O.OrderID = R.OrderID
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
126
)
MINUS Not
operator supported Use NOT EXISTS clause in your
SELECT statement to generate
the same result.
The following example
illustrates the simulation of
Oracle's MINUS operator:
SELECT OrderID, OrderDate
FROM Orders O
WHERE NOT EXISTS
(
SELECT 1
FROM RefundsTable R
WHERE O.OrderID = R.OrderID
)
Nested tables Not
supported Oracle 8i and prior versions
didn't support this feature and
is introduced in Oracle 9i. This
feature basically enables you to
store a table, within a column.
It is like having an array of
records in your database
columns.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
127
SQL Server has no concept of
nested tables.
As a workaround, You could
store your sub-tables or child
tables in the form of XML inside
a char, nchar, varchar, nvarchar,
text or ntext type column, and
parse it as needed, at runtime.
See OPENXML,
sp_xml_preparedocument,
sp_xml_removedocument in
SQL Server 2000 Books Online.
Another possible workaround
would be to store comma
separated values (CSV).
Note that this is against the
basic rules of normalization.
Columns are nomore atomic,
with nested tables.
From a design point of view,
best thing to do would be, to
create different tables for
representing different entities
and link them with primary and
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
128
foreign key relationships. This
will also make searching easier.
Packages Not
supported No equivalent in SQL Server for
Oracle's Packages and Package
variables concept
PL/SQL T-SQL
PROGRAMMI Every database product
NG implements and extends the
standard SQL. Oracle's
implementation of SQL is called
PL/SQL, while Microsoft's is
called T-SQL (Transact-SQL)
Row level No equivalent
security Though there is no inbuilt
support in SQL Server for row
level permissions, you can
implement it using view and
system functions.
For more information and a
working example, read this
article:
Implementing row level
permissions/security in SQL
Server databases
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
129
rownum No equivalent
pseudo Though there is no rownum or
column rowid in SQL Server, there are
several ways in which a row
number can be generated.
For some examples, read this
article:
Q186133 INF: How to
Dynamically Number Rows in a
Select Statement
SELECT...FOR UPDLOCK hint
UPDATE Use the locking hint UPDLOCK
in your SELECT statement.
See SQL Server Books Online
for more information.
Sequences IDENTITY
It is much simpler in SQL Server
to generate a sequence value
for a primary key or a non-key
column.
You just need to turn on the
IDENTITY property of column.
IDENTITY property can be set
to columns of the following
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
130
data types: tinyint, smallint, int,
bigint, decimal, numeric
Try this example to see how it
works:
CREATE TABLE foo
(
i int IDENTITY(1, 1)
j int
)
INSERT INTO foo (j) VALUES
(911)
INSERT INTO foo (j) VALUES
(999)
SQL *Plus Query
Analyzer/ For connecting to SQL Server
SSMS and executing queries and
modifying data, use the built-in
Query Analyzer. It is much
more powerful and friendlier
than Oracle's SQL *Plus
START No equivalent
WITH...CONNE Though there's no direct
CT BY clause equivalent in T-SQL for Oracle's
START WITH...CONNECT BY,
there are several ways and
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
131
efficient techniques for
processing and querying
hierarcical data.
For more information, read this
article:
Working with hierarchical data
in SQL Server databases
Synonym Views
You can simulate Oracle
Synonyms in SQL Server using
Views. For example, the
following creates a view that
returns the OrderID and
OrderDate from Orders table.
CREATE VIEW vOrders
AS
SELECT OrderID, OrderDate
FROM Orders
Now you can select data from
the view, using the following
SELECT statement:
SELECT * FROM vOrders
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
132
The following example will
create a view which is
equivalent to Oracles TABS
synonym or USER_TABLES data
dictionary view (For simplicity, I
am only including the table
name in the view definition):
CREATE VIEW TABS
AS
SELECT name AS table_name
FROM sysobjects
WHERE type = 'U'
Now you can execute the
following SELECT statement to
return all user table names:
SELECT table_name
FROM TABS
T-SQL Enhancements in 2008:
Every new version of SQL Server comes with several T-SQL
features and enhancements.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
133
SQL Server 2008 is no exception. In the newest version of
SQL Server, Microsoft has responded to developer requests
in a big way. SQL Server 2008 supports brand new developer
convenience features like single statement declaration and
initialization, new data types to manipulate and query date-
based and spatial data, new statements like MERGE that add
much needed functionality to T-SQL and a whole lot more.
Once you’ve made the move to SQL Server 2008, you’ll
undoubtedly want to take advantage of the new features and
functionality to solve common problems.
1. Separate Variable Declaration and Initialization
The first of these new features is single statement variable
declaration and initialization. In the past, developers had
to declare new variables in one or more DECLARE
statements and assign values to the variables in one or
more SET or SELECT statements as shown in below Listing.
DECLARE @x int, @y int, @z int
SET @x=1
SET @y=2
SET @z=3
With single statement declaration and initialization, you
can combine these two steps into a single step as shown
in below Listing
DECLARE @x int =1,@y int=2, @z int =3
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
134
2. Calculating and Assigning Values with C-Style
Assignment
T-SQL has further improved with the addition of several C-
Style assignment operators.
Operator Description
+= Addition with assignment, or
string concatenation with
assignment
-= Subtraction with assignment
*= Multiplication with
assignment
/= Division with assignment
%= Modulo with assignment
Ex:
DECLARE @x int=4, @y int=25, @s1 varchar(20)=’Sql’
SET @x *= @y
SET @s1+= ‘SERVER’
SELECT @x, @s1
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
135
3. NEW INSERT STATEMENT
SYNTAX:
INSERT INTO TABLE_NAME
VALUES
(VALUE1, VALUE2,……),
(VALUE1, VALUE2,…..),
(VALUE1,VALU2,……..)
EX:
INSERT INTO EMP
VALUES
(11,’RAM’, 30000, 10),
(22,’RAJ’, 20000, 20)
Like in SQL Server 2005 we need not to write multiple
INSERT statements for multiple records. With in single
INSERT statement we can insert multiple records into the
table at a time
4. MERGE Statement
It is one of the DML statement placed newly in SQL Server
2008
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
136
Merge Statement is a combination statement that can
perform INSERT, UPDATE, DELETE statements based on
whether rows that match the selection criteria exist in the
target table or not.
This Merge statement takes Target and Source Tables,
When Source rows are matched with Target it will update
the rows of source table into target table otherwise it will
insert the rows of source table into target table. Always
merge statement takes a temp table as its source and
base table as its target table. Using this Merge statement
we can combine the rows of a source table to target table.
Syntax:
MERGE Target_Table as target
USING Source_table as source
ON condition
WHEN MATCHED THEN
UPDATE
SET column=source.column,………..
WHEN TARGET NOT MATCHED THEN
INSERT VALUES (source.column1, source.column2,)
4. New Data Types In 2008
SQL Server 2008 provides new data types that support
storage, manipulation and querying of new forms of data.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
137
Some, like the date data type which stores a simple date
with out the time component. Others like the geometry
data type, which allows storage and querying of spatial
data, have only recently addressed.
Date and Time Data Types
SQL Server supports four brand new date and time data
types, which includes
1. date
2. time
3. datetime2
4. datetimeoffset
The date data type finally allows us to store date only
without the time component. It can also store a much
larger range of dates than datetime and smalldatetime
data types.
The date data type can handle dates from January 1, 1 CE
(0001-01-01) to December 31, 9999 CE (9999-12-31)
Ex:
DECLARE @d1 date=’0014-08-19’
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
138
DECLARE @d2 date=’1983-02-26’
SELECT @d1 as DATE1,@d2 as DATE2
DATEDIFF (YEAR, @d1, @d2) as YEARDIFFERENCE
In contrast to the date data type, the time data type
lets you to store time only data.
The range for the time data type is defined on 24 hour
clock, from 00:00:00.0000000 through
23:59:59.9999999 with user defined fractional second
precision of up to seven digits.
Ex:
DECLARE @start_time time (1) =’06:25:19.1’ --1 digit
fractional precision
DECLARE @end_time time=’18:25:19.1234567’ --default
fractional precision
SELECT @start_time as STARTTIME, @end_time as
ENDTIME
DATEADD (HOUR, 6, @start_time) as STARTTIMEPLUS,
DATEDIFF (HOUR,@start_time,@end_time) as
ENDSTARTDIFF
The cleverly named datetime2 data type is an
extension to the standard datetime data type. The
datetime2 combines the benefits of the new date and
time data types, giving you the wide date range of the
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
139
date data type and the greater fractional second
precision of the time data type.
Ex:
DECLARE @start_dt2 datetime2=’1972-07-
06T07:13:28.8235670’
DECLARE @end_dt2 datetime2=’2009-12-
14T03:14:13.2349872’
SELECT @start_dt2 as start_dt2, @end_dt2 as end_dt2
The new datetimeoffset data type builds on datetime2
by adding the ability to store offsets relative to the
International Telecommunication Union(ITU) standard
for Coordinated Universal Time(UTC) with your date
and time data type.
5. The Hierarchyid Data Type
The hierarchyid data type offers to represent hierarchical
data in the database. This new data type offers built-in
support for representing your hierarchical data using one
of the simplest models available: materialized paths
Hierarchyid Data Type Methods
Method Description
GetAncestor(n) Retrieves the nth ancestor of
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
140
the hierarchyid node instance
GetDescendent(n) Retrieves the nth descendent
of the hierarchyid node
instance
GetLevel() Gets the level of the
hierarchyid node instance in
the hierarchy
GetRoot() Gets the root node of the
hierarchyid instance in the
hierarchy
IsDescendent(node) Returns 1 if a specified node
is descendent
Parse(String) Converts the given canonical
string, in forward slash-
separated format to a
hierarchyid path.
Reparent(old_root,new_root) Reparents a node by moving
nodes from old_root to
new_root
ToString() Converts a hierarchyid
instance to a canonical
forward slash-separated
string representation
5. The Spatial Data Type
SQL Server 2008 includes two new data types for storing,
querying, and manipulating spatial data.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
141
Geometry
Geography
Geometry data type is designed to represent flat-earth, or
Euclidean, spatial data.
Geography data type supports round earth or ellipsoidal,
spatial data.
QUERIES:
1. Display the dept information from department table.
Select * from DEPT;
2. Display the details of all employees.
Select * from EMP;
3. Display the name and job for all employees.
Select ename, job from EMP;
4. Display name and salary for all employees.
Select ename, sal from EMP;
5. Display employee number and total salary for each
employee.
Select empno, sal+comm from EMP;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
142
6. Display the names of all employees who are working in
department number 10.
Select ename from EMP where deptno=10;
7. Display the names of all employees working as clerks
and drawing a salary more than 3000.
select ename from EMP where job=’CLERK’ and
sal>3000;
8. Display employee number and names for employees
who earn commission.
Select empno, ename from EMP where comm is not
null and comm>0;
9. Display names of employees who do not earn any
commission.
Select empno, ename from EMP where comm is null
and comm=0;
10. Display the names of employees who are working as
clerk, salesman or analyst and drawing a salary more
than 3000.
Select ename from EMP where (job=’CLERK’ or
job=’SALESMAN’ or job=’ANALYST’) and sal>3000;
(Or)
Select ename from EMP where job in
(‘CLERK’,’SALESMAN’,’ANALYST’) and sal>3000;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
143
11. Display the names of employees who are working in the
company for the past 5 years.
Select ename from EMP where sysdate-
hiredate>5*365;
12. Display the list of employees who have joined the
company before 30th June 90 or after 31st dec 90.
Select * from EMP where hiredate between ‘30-jun-
1990’ and ‘31-dec-1990’;
13. Display the names of employees working in department
number 10 or 20 or 40 or employees working as clerks,
salesman or analyst.
Select ename from EMP where deptno in (10, 20, 40)
or job in (‘CLERK’,’SALESMAN’,’ANALYST’);
14. Display the names of employees whose name starts with
alphabet S.
Select ename from EMP where ename like ‘S%’;
15. Display employee names for employees whose name
ends with alphabet.
Select ename from EMP where ename like ‘%S’;
16. Display the names of employees whose names have
second alphabet A in their names.
Select ename from EMP where ename like ‘_S%’;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
144
17. Display the names of employees whose name is exactly
five characters in length.
Select ename from EMP where length (ename) =5;
(Or)
Select ename from EMP where ename like '_____';
18. Display the names of employees who are not working as
SALESMAN or CLERK or ANALYST.
Select ename from EMP where job not in
(‘CLERK’,’SALESMAN’,’ANALYST’);
19. Display the total number of employees working in the
company.
Select count (*) from EMP;
20. Display the maximum salary from EMP table.
Select max (sal) from EMP;
21. Display the minimum salary from EMP table.
Select min (sal) from EMP;
22. Display the average salary from EMP table.
Select avg (sal) from EMP;
23. Display the maximum salary being paid to CLERK.
select max (sal) from EMP where job=’CLERK’;
24. Display the maximum salary being paid in dept no 20.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
145
Select max (sal) from EMP where deptno=20;
25. Display the min Sal being paid to any SALESMAN.
select min (sal) from EMP where job=’SALESMAN’;
26. Display the average salary drawn by managers.
select avg (sal) from EMP where job=’MANAGER’;
27. Display the names of employees in order of salary i.e. the
name of the employee earning lowest salary should
appear first.
Select ename from EMP order by sal;
28. Display the names of employees in descending order of
salary.
Select ename from EMP order by sal desc;
29. Display the details from EMP table in order of EMP
name.
Select ename from EMP order by ename;
30. Display empno, ename, deptno, and sal. Sort the output
first based on name and within name by deptno and
within deptno by Sal;
Select * from EMP order by ename, deptno, sal;
31. Display name, Sal, hra, pf, da, total Sal for each
employee. The output should be in the order of total Sal,
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
146
hra 15% of Sal, da 10% of sal, pf 5% of sal total salary will
be (sal*hra*da)-pf.
select ename,sal,sal*15/100 HRA, sal*5/100 PF,
sal*10/100 DA,sal+sal*15/100-sal*5/100+sal*10/100
TOTAL_SALARY from emp
32. Display dept numbers and total number of employees
within each group.
select deptno,count(*) from emp group by deptno;
33. Display the various jobs and total number of employees
with each job group.
select job, count(*) from emp group by job;
34. Display department numbers and total salary for each
department.
select deptno, sum(sal) from emp group by deptno;
35. Display department numbers and maximum salary for
each department.
select deptno, max(sal),min(sal) from emp group by
deptno;
36. Display the various jobs and total salary for each job.
select job, sum(sal) from emp group by job;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
147
37. Display each job along with minimum sal being paid in
each job group.
select job, min(sal) from emp group by job;
38. Display the department numbers with more than three
employees in each dept.
select deptno, count(*) from emp group by deptno
having count(*)>3;
39. Display the various jobs along with total sal for each of
the jobs where total sal is greater than 40000.
select job, sum(sal) from emp group by job having
sum(sal)>40000;
40. Display the various jobs along with total number of
employees in each job. The output should contain only
those jobs with more than three employees.
select job, count(*) from emp group by job having
count(*)>3;
41. Display the name of emp who earns highest sal.
select ename from emp where sal=(select max(sal)
from emp);
42. Display the employee number and name of employee
working as CLERK and earning highest salary among
CLERKS.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
148
select empno, ename from emp where job='CLERK'
and sal=(select max(sal) from emp where
job='CLERK');
43. Display the names of the salesman who earns a salary
more than the highest salary of any clerk.
select ename from emp where job=’SALESMAN’ and
sal >
(select max(sal) from emp where job='CLERK');
44. Display the names of clerks who earn salary more than
that of James of that of sal lesser than that of Scott.
select ename from emp where job='CLERK' and
sal<(select sal from emp where ename='SCOTT') and
sal>(select sal from emp where ename='JAMES');
45. Display the names of employees who earn a Sal more
than that of James or that of salary greater than that of
Scott.
select ename from emp where sal <
(select sal from emp where ename='SCOTT') and sal
>
(select sal from emp where ename='JAMES');
46. Display the names of the employees who earn highest
salary in their respective departments.
select * from emp e where sal =
(select max(sal) from emp where deptno=e.deptno)
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
149
47. Display the names of employees who earn highest
salaries in their respective job groups.
select * from emp e where sal in
(select max(sal) from emp group by job having
e.job=job)
48. Display the employee names who are working in
accountings dept.
select ename from emp where deptno =
(select deptno from dept where
dname=”ACCOUNTING”);
(or)
select ename from emp where deptno in (select
deptno from dept where dname=”ACCOUNTING”);
49. Display the employee names who are working in
Chicago.
select ename from emp where deptno =
(select deptno from dept where loc=’CHICAGO’);
50. Display the job groups having total salary greater then
the maximum salary for managers.
select job, sum(sal) from emp group by job having
sum(sal) >
(select max(sal) from emp where job='MANAGER');
51. Display the names of employees in Upper case.
select upper(ename) from emp;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
150
52. Display the names of employees in lower case.
select lower(ename) from emp;
53. Replace every occurrence of alphabet A with B in the
string Allen’s (user translate function).
select replace('Allens','A','b') from dual;
54. Display the information from EMP table. Wherever job
‘manager’ is found it should be displayed as boss(replace
function).
select empno, ename, replace(job, 'MANAGER',
'Boss') JOB from emp;
55. Display empno, ename, deptno from EMP table. Instead
of display department numbers display the related
department name (use decode function).
select e.empno, e.ename, d.dname from emp e,dept
d where
e.deptno = d.deptno;
56. Display the common jobs from department number 10
and 20.
select job from emp where deptno=10 and job
in(select job from emp where deptno=20);
(or)
select job from emp where deptno=10 intersect
select job from emp where deptno=20;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
151
57. Display the jobs found in department number 10 and 20
eliminate duplicate jobs.
select distinct(job) from emp where deptno=10 and
job in(select job from emp where deptno=20);
(or)
select job from emp where deptno=10 intersect
select job from emp where deptno=20;
58. Display the jobs which are unique to dept no 10.
select job from emp where deptno=10 minus select
job from emp where deptno!=10;
(or)
select job from emp where deptno = 10 and job not
in (select job from emp where deptno<>10);
59. Display the details of those who do not have any person
working under them.
select empno from emp where empno not in (select
mgr from emp where mgr is not null);
60. Display the details of employees who are in sales dept
and grade is 3.
select * from emp where sal>=(select losal from
salgrade where grade=3) and sal<=(select hisal from
salgrade where grade=3) and deptno=(select deptno
from dept where dname='SALES');
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
152
61. Display those who are not managers and who are
managers any one.
select * from emp where empno in(select mgr from
emp) union
select * from emp where empno not in(select mgr
from emp where mgr is not null);
62. Display those employees whose name contains not less
than 4 chars.
Select * from emp where length(ename)>4;
63. Display those departments whose name start with ‘S’
while location name end with ‘O’.
select * from dept where dname like 'S%' and loc like
'%O';
64. Display those employees whose manager name is
JONES.
select * from emp where mgr=(select empno from
emp where ename='JONES');
65. Display those employees whose salary is more than 3000
after giving 20% increment.
select * from emp where sal*120/100 > 3000;
(or)
select * from emp where sal+sal*20/100 > 3000;
66. Display all employees with there dept name.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
153
select ename, dname from emp e, dept d where
e.deptno = d.deptno;
67. Display ename who are working in sales dept.
select empno, ename from emp where
deptno=(select deptno from dept where
dname='SALES');
68. Display employee name, deptname, salary and comm.
for those Sal in between 2000 to 5000 while location is
Chicago.
select empno,ename,deptno from emp where
deptno=(select deptno from dept where
loc='CHICAGO') and sal between 2000 and 5000;
69. Display those employees whose salary greater than his
manager salary.
select * from emp e where sal>(select sal from emp
where empno=e.mgr);
70. Display those employees who are working in the same
dept where his manager is working.
select * from emp e where
deptno = (select deptno from emp where
empno=e.mgr);
71. Display those employees who are not working under any
manger.
select * from emp where mgr is null or empno=mgr;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
154
72. Display grade and employees name for the dept no 10
or 30 but grade is not 4, while joined the company
before 31-dec-82.
select empno,ename,sal,deptno,hiredate,grade from
emp e,salgrade s where e.sal>=s.losal and
e.sal<=s.hisal and deptno in(10,30) and grade<>4
and hiredate<'01-dec-1981';
73. Update the salary of each employee by 10% increments
that are not eligible for commission.
update emp set sal=sal+(sal*10/100) where comm is
null;
74. Delete those employees who joined the company before
31-dec-82 while there dept location is ‘NEW YORK’ or
‘CHICAGO’.
delete from emp where hiredate<'31-dec-1982' and
deptno in
(select deptno from dept where loc in('NEW
YORK','CHICAGO'));
75. Display employee name, job, deptname, location for all
who are working as managers.
select ename,job,dname,loc from emp e, dept d
where e.deptno=d.deptno and empno in (select mgr
from emp);
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
155
76. Display those employees whose manager names is
Jones, and also display there manager name.
select e.empno, e.ename, m.ename MANAGER from
emp e, emp m
where e.mgr=m.empno and m.ename='JONES';
77. Display name and salary of ford if his Sal is equal to high
Sal of his grade.
select ename,sal from emp e where ename='FORD'
and sal=(select hisal from salgrade where
grade=(select grade from salgrade where
e.sal>=losal and e.sal<=hisal));
78. Display employee name, his job, his dept name, his
manager name, his grade and make out of an under
department wise.
select d.deptno, e.ename, e.job, d.dname, m.ename,
s.grade from
emp e, emp m, dept d, salgrade s where
e.deptno=d.deptno and e.sal between s.losal and
s.hisal and e.mgr=m.empno order by e.deptno;
79. List out all the employees name, job, and salary grade
and department name for every one in the company
except ‘CLERK’. Sort on salary display the highest salary.
select empno, ename, sal, dname, grade from emp e,
dept d, salgrade s where e.deptno=d.deptno and
e.sal between s.losal and s.hisal and e.job<>'CLERK'
order by sal;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
156
80. Display employee name, his job and his manager.
Display also employees who are without manager.
select e.ename, e.job, m.ename Manager from emp
e,emp m where e.mgr=m.empno union select
ename,job,'no manager' from emp where mgr is null;
81. Find out the top 5 earner of company.
select * from emp e where 5>(select count(*) from
emp where sal>e.sal) order by sal desc;
82. Display the name of those employees who are getting
highest salary.
select empno,ename,sal from emp where sal=(select
max(sal) from emp);
83. Display those employees whose salary is equal to
average of maximum and minimum.
select * from emp where sal=(select (max(sal)
+min(sal))/2 from emp);
84. Display count of employees in each department where
count greater than 3.
select deptno, count(*) from emp group by deptno
having count(*)>3;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
157
85. Display dname where at least 3 are working and display
only dname.
select dname from dept where deptno in
(select deptno from emp group by deptno having
count(*)>3);
86. Display name of those managers name whose salary is
more than average salary of company.
select ename, sal from emp where empno in(select
mgr from emp) and sal > (select avg(sal) from emp);
87. Display those managers name whose salary is more than
an average salary of his employees.
select ename, sal from emp e where empno in(select
mgr from emp) and e.sal>(select avg(sal) from emp
where mgr=e.empno);
88. Find out the last 5(least) earner of the company?
select * from emp e where 5>(select count(*) from
emp where sal<e.sal) order by sal;
89. Find out the number of employees whose salary is
greater than there manager salary?
select count(*) from emp e where sal>(select sal from
emp where empno=e.mgr);
90. Display those manager who are not working under
president but they are working under any other
manager?
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
158
select * from emp e where mgr in(select empno from
emp where ename<>'KING');
91. Delete those department where no employee working?
delete from dept d where 0=(select count(*) from
emp where deptno=d.deptno);
92. Delete those records from EMP table whose deptno not
available in dept table?
delete from emp where deptno not in(select deptno
from dept);
93. Display those earners whose salary is out of the grade
available in Sal grade table?
select * from emp where sal<(select min(losal) from
salgrade) or sal>(select max(hisal) from salgrade);
94. Display employee name, Sal, comm. and whose net pay
is greater than any other in the company?
Select ename, sal, comm from emp where
sal+sal*15/100-sal*5/100 +sal*10/100 = (select
max(sal+sal*15/100-sal*5/100+sal*10/100) from
emp);
95. Display those employees who are working in sales or
research?
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
159
select * from emp where deptno in(select deptno
from dept where dname in('SALES','RESEARCH'));
96. Display the grade of Jones?
select grade from salgrade where losal<=(select(sal)
from emp where ename='JONES') and
hisal>=(select(sal) from emp where ename='JONES');
97. Delete those records where no of employee in a
particular department is less than 3?
delete from emp where deptno in(select deptno from
emp group by deptno having count(*)>3);
98. Display the department name the no of characters of
which is equal to no of employees in any other
department?
Select dname from dept where len (dname) in (select
count(*) from emp group by deptno);
99. Display those employees who are working as manager?
select * from emp where empno in(select mgr from
emp);
100. Count the no of employees who are working as
manager (use set operation)?
select count(*) from emp where empno in(select mgr
from emp);
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
160
101. Display the name of then dept those employees who
joined the company on the same date?
select empno,ename,hiredate,deptno from emp e
where hiredate in (select hiredate from emp where
empno<>e.empno);
102. Display the manager who is having maximum number
of employees working under him?
Select mgr from emp group by mgr having
count(*)=(select max(count(mgr)) from emp group
by mgr);
103. Produce the output of the EMP table
“EMPLOYEE_AND_JOB” for ename and job?
select * from EMPLOYEE_AND_JOB;
104. Print the details of all the employees who are sub
ordinate to Blake.
Select * from emp where mgr=(select empno from
emp where ename='BLAKE');
105. Display those who working as manager using co related
sub query.
Select * from emp where empno in(select mgr from
emp);
106. Display those employees whose manger name is Jones
and also with his manager name.
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
161
Select * from emp where mgr=(select empno from
emp where ename='JONES') union select * from emp
where empno=(select mgr from emp where
ename='JONES');
107. Find out how many mangers are there with out listing
them.
Select count (*) from EMP where empno in (select
mgr from EMP);
108. Check whether all employees number are indeed
unique.
select count(empno),count(distinct(empno)) from
emp having
count(empno)=(count(distinct(empno)));
109. List out the lowest paid employees working for each
manager, exclude any groups where min sal is less than
1000 sort the output by sal.
select e.ename,e.mgr,e.sal from emp e where sal
in(select min(sal) from emp where mgr=e.mgr) and
e.sal>1000 order by sal;
110. find out the all employees who joined the company
before their manager.
Select * from emp e where hiredate<(select hiredate
from emp where empno=e.mgr);
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
162
111. list out the all employees by name and number along
with their manager’s name and number also display ‘No
Manager’ who has no manager.
select e.empno,e.ename,m.empno Manager,m.ename
ManagerName from emp e,emp m where
e.mgr=m.empno
union
select empno,ename,mgr,'No Manager' from emp
where mgr is null;
112. find out the employees who earned the highest Sal in
each job typed sort in descending Sal order.
select * from emp e where sal =(select max(sal) from
emp where job=e.job);
113. find out the employees who earned the min Sal for
their job in ascending order.
select * from emp e where sal =(select min(sal) from
emp where job=e.job) order by sal;
114. find out the most recently hired employees in each dept
order by hire date
select * from emp order by deptno, hiredate desc;
115. display ename, sal and deptno for each employee who
earn a Sal greater than the avg of their department order
by deptno
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
163
select ename,sal,deptno from emp e where
sal>(select avg(sal) from emp where
deptno=e.deptno) order by deptno;
116. display the department where there are no employees
select deptno,dname from dept where deptno not
in(select distinct(deptno) from emp);
117. display the dept no with highest annual remuneration
bill as compensation.
select deptno,sum(sal) from emp group by deptno
having sum(sal) = (select max(sum(sal)) from emp
group by deptno);
118. display avg sal figure for the dept
select deptno,avg(sal) from emp group by deptno;
119. Write a query of display against the row of the most
recently hired employee. display ename hire date and
column max date showing.
select empno,hiredate from emp where
hiredate=(select max (hiredate) from emp);
120. display employees who can earn more than lowest Sal
in dept no 30
select * from emp where sal>(select min(sal) from
emp where deptno=30);
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
164
121. find employees who can earn more than every
employees in dept no 30
select * from emp where sal>(select max(sal) from
emp where deptno=30);
select * from emp where sal>all(select sal from emp
where deptno=30);
122. find all dept’s which have more than 3 employees
select deptno from emp group by deptno having
count(*)>3;
123. Create a copy of emp table.
Create table emp1 as select * from emp;
124. Select ename if ename exists more than once.
select distinct(ename) from emp e where ename
in(select ename from emp where e.empno<>empno);
125. display all enames in reverse order.
select ename from emp order by ename desc;
126. List out the employees ename, sal, PF from emp
Select ename,sal,sal*15/100 PF from emp;
127. Create table emp with only one column empno
Create table emp (empno numeric(5));
128. Add this column to emp table ename Varchar(20).
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
165
alter table emp add ename varchar(20) not null;
129. OOPS! I forgot to give the primary key constraint. Add
it now.
alter table emp add constraint emp_empno primary
key (empno);
130. Now increase the length of ename column to 30
characters.
alter table emp modify ename varchar(30);
131. Add salary column to emp table.
alter table emp add sal numeric(7,2);
132. I want to give a validation saying that sal cannot be
greater 10,000(note give a name to this column).
alter table emp add constraint emp_sal_check check
(sal<10000);
133. Add column called as mgr to your emp table.
Alter table emp add mgr numeric (5);
134. Oh! This column should be related to empno. Give a
command to add this constraint
Alter table emp add constraint emp_mgr foreign
key(empno);
135. Add dept no column to your emp table
Alter table emp add deptno numeric (3);
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
166
136. This dept no column should be related to deptno
column of dept table
Alter table emp1 add constraint emp1_deptno
foreign key (deptno) references dept (deptno);
137. Create table called as new emp. Using single command
create this table as well as to get data into this table (use
create table as)
Select*into newemp from EMP;
138. Create table called as newemp. This table should
contain only empno,ename, dname
create table newemp as select empno,ename,dname
from emp e , dept d where e.deptno=d.deptno;
139. Provide a commission to employees who are not
earning any commission.
update emp set comm=300 where comm is null;
140. If any employee has commission his commission should
be incremented by 10% of his salary.
update emp set comm=comm*10/100 where comm
is not null;
141. Display employee name and department name for each
employee.
select ename,dname from emp e, dept d where
e.deptno=d.deptno;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
167
142. Display employee number, name and location of the
department in which he is working.
Select empno, ename, loc from emp e, dept d where
e.deptno=d.deptno;
143. Display employee name and his manager name.
Select e.ename, m.ename from emp e, emp m where
e.mgr=m.empno;
144. Display the department name along with total salary in
each department.
Select deptno, sum(sal) from emp group by deptno;
145. Display the department name and total number of
employees in each department.
select deptno,count(*) from emp group by deptno;
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
168
Phone: 9951338095
Email: [email protected]
KESHTO TECHNOLOGIES
169
Phone: 9951338095
Email: [email protected]