0% found this document useful (0 votes)
296 views61 pages

SQL Notes

The document provides an introduction to database management systems (DBMS) and relational database management systems (RDBMS). It discusses why DBMS were introduced to help manage large amounts of information. It then describes the differences between data, information, and databases. The rest of the document outlines the evolution of different types of DBMS, including file-based systems, hierarchical systems, and network systems. It focuses on relational database management systems (RDBMS), describing relationships between entities and Codd's rules for RDBMS. Key features of RDBMS include using tables to store data, avoiding data redundancy, and providing security.

Uploaded by

Niranjan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
0% found this document useful (0 votes)
296 views61 pages

SQL Notes

The document provides an introduction to database management systems (DBMS) and relational database management systems (RDBMS). It discusses why DBMS were introduced to help manage large amounts of information. It then describes the differences between data, information, and databases. The rest of the document outlines the evolution of different types of DBMS, including file-based systems, hierarchical systems, and network systems. It focuses on relational database management systems (RDBMS), describing relationships between entities and Codd's rules for RDBMS. Key features of RDBMS include using tables to store data, avoiding data redundancy, and providing security.

Uploaded by

Niranjan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1/ 61

1

SQL NOTES
2

INTRODUCTION TO DBMS
Why DBMS: Human needs have increased tremendously. Now people are
doing much more composite tasks than ever before. The society has become very
complex. a person has to work with huge amount of information every day. In
order to work with the enormous information, we must have a system where we
can store, manipulate and share the information all over the world. It is one of the
core reasons for introducing Database Management Systems (DBMS) as well as
Relational Database Management Systems (RDBMS) now-a-days.

So, one thing is clear to us that we store and manipulate data / information into
a database, where the database contains various types of tables for storing
various types of data / information.

Data:
 Whatever we are inputting from the keyboard is known as Data. It can
also be called as RAWFACTS / FIGURES
 Data never provides any meaning for us

Information:
 Processed Data is known as Information
 Information always gives meaning for us

Database:
 Collection of information belongs to a particular topic (an organization)
written in a predetermined manner stored at a particular place is called
as database.

DBMS (Data Base Management System):


 It is software which is present inside the database, which can maintain
and manage the data within the database.
3

Types of DBMS:
1) FMS / FDMS (File Management System /File Management Database
System):
 This is first model released into the market in 1950‟s. In this model there is
always arranged in a continue stream of character (or) in a sequential
fashion (or) manner.

Disadvantages:

 The Main disadvantage of this model is whenever we need to retrieve


any data we have to start the searching from the beginning of the file so,
it automatically leads to increases the searching time.
 Costly in maintains
 Required more man power
 There is no security

2) HMS/HDMS (Hierarchy Management System / Hierarchy Database


Management System):
 This model was developed by IBM in 1960‟s, When they developed a
project called IMS (Information Management System)
 In this model data is always arranged in the form of a tree structure
in different levels
 The top level can be called as root. The 2nd , 3rd can be called as parent and
child levels respectively
 The main advantage of this model is we can easily retrieve the value
without wasting much time

ROOT

Parent Parent Parent

Child Child
4

Drawback:
 Only one person can share the database simultaneously
 No security

3) NDBMS (Network Database Management System):


 This model was developed by IBM in 1969, when developing a project
is called IMS (Information Management System)
 This model was developed on the basis of an Operating System
called MULTICS (Multiplex Information Computing System)
 The main advantage of this model is more than one person can share
the database concurrently (Simultaneously)

Disadvantage:
 There is no proper security for the centralized database
 Redundancy of the database is increased
 It occupies lot of memory and it leads to decrease system performance
and increase the inconsistency.

4) RDMS (Relational Database Management System):


 This model was developed by a German scientist Mr. EF.CODD in 1970
 Here relation can be defined as commonness between objects these
relations are classified into 3 types
 One to One relation
 One to Many relation / Many to One relation
 Many to Many relation

One – One relationship:


 In this relationship one object can have a relationship with another object

EMP EMPID

STUDENT HALL-NO
5

One - Many relationships:


 In this relationship one object can have a relationship with many objects

SQL
.Net

Student Java Faculty .Net

PHP Java

Many – Many relationship:


 In this relationship many vendors (or) many objects can have
the relationship with many other objects

Vendor 1
P1

Vendor 2
P2

Vendor 3
P3

 All the above relationships can be called as “Degree of Relationships”


 This model was developed on the basis of a mathematical concept can be
called as “Relation Algebra” (i.e. sets & Relations)
6

CODD RULES: E.F. Codd, the famous mathematician has introduced 12


rules for the relational model for databases commonly known as Codd's rules. The
rules mainly define what is required for a DBMS for it to be considered relational
i.e. an RDBMS. The rules are as follows:-

Rule 0: Foundation Rule

A relational database management system should be capable of using its relational


facilities (exclusively) to manage the database.

Rule 1: Information Rule

All information in the database is to be represented in one and only one way. This
is achieved by values in column positions within rows of tables.

Rule 2: Guaranteed Access Rule

All data must be accessible with no ambiguity, that is, 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.

Rule 3: 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.

Rule 4: 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. The authorized users can access the
database structure by using common language i.e. SQL.

Rule 5: 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:
7

a. data definition
b. view definition
c. data manipulation (interactive and by program)
d. integrity constraints
e. authorization
f. Transaction boundaries (begin, commit, and rollback).

Rule 6: View Updating Rule

All views that are theoretically updateable are also updateable by the system.

Rule 7: High-level Insert, Update, and Delete

The system is able to insert, update and delete operations fully. It can also perform
the operations on multiple rows simultaneously.

Rule 8: Physical Data Independence

Application programs and terminal activities remain logically unimpaired


whenever any changes are made in either storage representation or access methods.

Rule 9: 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.

Rule 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.

Rule 11: 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.

Rule 12: No subversion 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.
8

Note that based on these rules there is no fully relational database management
system available today. In particular rules 6, 9, 10, 11 and 12 are difficult to
satisfy.

Features of RDBMS

 In this model data should be stored in the form of tables


 A table can be defined as collection of rows & columns
 The horizontal lines are known as rows/ records / tuples
 The vertical lines are known as columns / fields / Attributes
 The intersection of rows & columns is known as cell
 A cell is a place where we can store our actual data
 The other name of table can be called as “Entity”
 It will provide high level security to database information
 Avoiding data redundancy problems
 Accessing the data from the table is not take much time
 When we define the column in the table user no need to follow any specific
order

ER Diagram (Entity & Relationship diagram):


This is the pictorial representation of Manual database. This concept was
developed by a US Scientist Mr.Chen

 Whenever we design ERD‟s the user has to follow the following symbols

 Rectangle box represent Entity

 Oval represent Attribute

 Diamond represents Relationship Name

 Arrow represent Connection


9

 Draw an ER-Diagram to represent the relationship between sales


representative & the customer

Mb no P-ID
EID

Store s
Products Warehouse
Sales Representative

PName
Salary EName
Cost

Servi
ces

CID
MbNo

Customer Plac
es
OrderId

Address CNAME Quantity


10

STRUCTURE QUERY LANGUAGE:


It is a non procedural language which is used to communicate with any database
such as Oracle, sqlserver etc.

 This Language was developed by the German Scientist Mr. E.F.Codd in


1968
 ANSI (American National Standard Institute) approved this concept and in
1972 sql was released into the market

Features of SQL:
 SQL is not a case sensitive language it means that all the commands of
Sql are not case sensitive
 Every command of sql should ends with a semicolon (;) (It is exemption
for SQL Server)
 SQL can be pronounced as Sequel (Structured English Query Language)
 SQL can be called as Common Language Interface, which is used to
communicate with any type of database
 SQL can be called as NLI (Natural Language Interface). It means that all
the SQL Commands are almost similar to normal English language
 Structured query language is mainly divided into 4 sub languages
1. DDL (Data Definition Language)
2. DML (Data Manipulation Language)
3. TCL (Transaction Control Language)
4. DCL(Data Control Language)

SQL

DDL (DR.CAT) DML (SUDI) TCL (CRS) DCL

DROP SELECT COMMIT GRANT


SP_RENAME UPDATE ROLLBACK REVOKE
CREATE DELETE SAVE TRANSACTION
ALTER INSERT
TRUNCATE
11

DATA DEFINITION LANGUAGE


Data Definition Language: This is a 1st sub Language in SQL which is
used to define the database objects such as table, view etc.

 This language contains five commands


1. Create
2. Alter
3. Rename
4. Truncate
5. Drop

1. Create:
 This command is used to create the database objects within the database
Syntax: CREATE TABLE <TABLE NAME>
(COL 1 DATA TYPE (size),
COL2 DATA TYPE (size),
:
:
:
COLN DATA TYPE (size));
Ex: CREATE TABLE EMP (EID number, ENAME Varchar2
(15), SAL DECIMAL (6, 2));

Rules for Creating a Table:


 Table name must be unique under the database.
 Column names must be unique within the table.
 Never start table name with numeric or special characters
except underscore‟_‟.
 Do not use space in table name if we want give space in table name then
use underscore symbol only.
 Every object name should contain minimum one character and maximum
128 characters.
 The maximum no. of columns a table can have 1024 columns.
12

2. ALTER:

 This command is used to modify the structure of a table using


this command, we can perform four different operations
 Using this command we can increase (or) decrease the size of the data
type & also we can change the data type from old data type to new
data type
 We can add a new column to the existing table
 We can change the column name from old column name to
new column name
 We can remove the column from the existing table
 This command contains 4 sub commands
1. ALTER- ALTER COLUMN
2. ALTER- ADD
3. SP_RENAME
4. ALTER- DROP

a. ALTER-ALTER COLUMN:

 Syntax: ALTER TABLE <TABLE NAME> ALTER COLUMN


<COLUMN NAME> DATA TYPE (SIZE)
 Ex: ALTER TABLE EMP ALTER COLUMN ENAME char (25);
b. ALTER-ADD:

 Syntax: ALTER TABLE <TABLE NAME> ADD <COLUMNNAME


>DATA TYPE(size);
 Ex: ALTER TABLE EMP ADD DEPTNO int;
c. ALTER-DROP:

 Syntax: ALTER TABLE <TABLE NAME> DROP COLUMN <COLUMN


NAME>;
 Ex: ALTER TABLE EMP DROP COLUMN SAL;
13

3. RENAME:

 This command is used to change the table name from old table name to
new table name
 Syntax: Rename „old table name‟,‟ New table name‟
 Ex: Rename „EMP‟,‟EMP1‟
4. TRUNCATE:

 This command is used for to delete all the records from existing
table permanently
 Syntax: TRUNCATE TABLE <TABLE NAME>
 Ex: TRUNCATE TABLE EMP;
5. DROP:

 This command is used to remove the table permanently from the database
 Syntax: DROP TABLE <TABLE NAME>
 Ex: DROP TABLE EMP;
Note: SP_help: This command is used to see the structure of table

 Syntax: SP_help <table name>


 Ex: SP_help EMP
Note: Syntax to view tables in the current database.

 select * from sysobjects where XTYPE='u'


14

DATA MANIPULATING LANGUAGE


Data Manipulating Language: This is the 2nd sub language in SQL,
which is used to manipulate the data within database. This Language contains 4
commands

1. Insert
2. Update
3. Delete
4. Select

1. INSERT:

 Using this command we can Insert the records into the existing table
 We can insert the records into the table in two methods
Explicit method
Implicit method

Explicit method:

 In this method user has to enter all the values into all the columns
without anything omitting (or) left any column data
 Syntax: INSERT INTO <TABLE NAME> VALUES <VAL1, VAL2,
….VALN>;
(OR)
INSERT <TABLE NAME> VALUES <VAL1, VAL2, .VALN>;
(Here “INTO” Keyword is optional)

 Ex1: INSERT INTO EMP VALUES (101,‟RAJ‟,9500);


 Ex2: INSERT EMP VALUES (101,‟RAJ‟,9500); 1
Row(s) affected
15

Implicit method:

 In this method we can enter the values into the required columns in the
table, so that user can omit (or) left some columns data while he enters the
records into the table
 If the user omit any column data in the table then it automatically
takes NULL
 Syntax: INSERT INTO <TABLE NAME> (COL1, COL2….COLN)
VALUES (VAL1, VAL2… VALN);
 Ex: INSERT INTO EMP (EID, SAL) VALUES (106,9999);

2. UPDATE:

 This command is used to modify the data in the existing table


 By using this command we can modify all the records in the table &
also specific records in the table (Using „where‟ clause)
 Syntax: UPDATE <TABLE NAME> SET COL=VALUE;
 Ex: UPDATE EMP SET SAL=10000;

Syntax change for more than one data simultaneously

 Syntax: UPDATE <TABLE NAME> SET COL1=VALUE,


COL2=VALUE………COLN=VALUE;
 Ex: UPDATE EMP SET EID=007,SAL=10000;

3. DELETE:

 This command is used to delete the records from existing table


 Using this command we can delete all the records and also to delete
specific record (by using „where‟ clause)
 Syntax: DELETE FROM <TABLE NAME>
 Ex: DELETE FROM EMP;
10 row(s) affected
16

Difference between TRUNCATE and DELETE Command:

SRNO TRUNCATE DELETE

01 It is a DDL command It is a DML command

02 It is a permanent deletion It is temporary deletion

03 Specific record deletion is not We can delete the specific record


possible

04 It doesn‟t support WHERE It supports WHERE clause


clause

05 We cannot Rollback the data We can Rollback the data

06 Truncate will reset the identity Delete will not reset the identity
Values value

4. SELECT:

 This command is used to retrieve the data from existing table.


 Using this command we can retrieve all the records & also specific
records from existing table (by using „where‟ clause)
 Using this command we can retrieve the data from the table in 3 ways
1. Projection
2. Selection
3. Joins
 Syntax: SELECT * FROM <TABLE NAME>
 Ex: SELECT * FROM EMP;
 * represents all columns
17

Projection:

 Retrieving the data from specific columns is known as Projection


 Syntax: SELECT COL1,COL2……..COLN FROM <TABLE NAME>
 Ex: SELECT EID,ENAME FROM EMP;

Selection:

 Retrieving the data based on some condition is called selection


 In SQL, whenever we need to check a condition, we need to use a
special clause called „where‟
 Syntax: SELECT * FROM <TABLENAME> WHERE (CONDITION);
 Ex: SELECT * FROM EMP WHERE EID=101;

WHERE CLAUSE:

 This clause is used to check the condition based on the condition, we


can retrieve, update, delete specific records in the table
 So we can apply the where clause only in select, update & delete

Select Command With Where clause:

 Syntax: SELECT * FROM <TABLE NAME> WHERE <CONDITION>


 Ex: SELECT * FROM EMP WHERE EID=102;

Update Command With Where clause:

 Syntax: UPDATE <TABLE NAME> SET <COLUMN NAME>=VALUE


WHERE (CONDITION);
 Ex: UPDATE EMP SET ENAME=”sai” WHERE EID=102;

Delete Command With Where clause:

 Syntax: DELETE FROM <TABLE NAME>WHERE <CONDITION>


 Ex: DELETE FROM EMP WHERE EID=102;
18

ALIAS:

 ALIAS is a duplicate name (or) alternate name for the original column
name (or) Table name (or) an expression name.

 Column level Alias:


 Syntax: SELECT COLUMN NAME AS “ALIAS
NAME”, COLUMN NAME AS “ALIAS
NAME”,
:
:
COLUMN NAME AS “ALIAS NAME” FROM <TABLE NAME>;
 EX: SELECT EID AS “EMPLOYEE ID”, ENAME AS
“EMPLOYEE NAME”, SAL AS “SALARY” FROM EMP;
 NOTE: In the above example the keyword „as‟ is optional
 EX: SELECT EID “EMPLOYEE ID”, ENAME “EMPLOYEE NAME”,
SAL “SALARY” FROM EMP;
 NOTE: In the above example quotations is also optional but there
should not be space between column name
 EX: SELECT EID EMPLOYEEID, ENAME EMPLOYEENAME, SAL
SALARY FROM EMP;
 Ex: SELECT EID EMPLOYEEID, ENAME EMPLOYEENAME, SAL
SALARY, SAL*12 ANNUALSALARY FROM EMP;
 EX: SELECT EID EMPLOYEEID, ENAME EMPLOYEENAME, SAL
SALARY FROM EMP WHERE ANNUALSALARY > 115000
 In the above example returns the runtime error message invalid column
name „annual salary‟ because we cannot check the conditions on Alias name

IDENTITY: It is use to generate unique values in sequential order without


user interaction. The default value of identity is Identity (1, 1).

Syntax: Identity (seed, increment)

Ex: CREATE TABLE EMP (EID INT IDENTITY (100, 1), ENAME VARCHAR
(50));
19

Built In Functions(System Functions) IN SQL: SQL server


provide number of built in functions like mathematical functions, character
functions, date and time functions, aggregative functions,convertion functions
etc.these can be used to perform certain operations and return a value.

Syntax: SELECT <Function Name> [Expressions]

Mathematical Functions: These functions perform a calculation based on


input values provided as arguments, and return a numeric value.

ABS (): Returns the absolute, positive value of the given numeric expression.

Ex: select ABS(-15) from dual--15


select ABS(45) from45

CEILING (): Returns the smallest integer greater than, or equal to, the given
numeric expression.
Ex: select ceiling(15.000)- - -15
select ceiling(15.0001)- - -16
select ceiling(-12.34)-----(-12)

FLOOR (): Returns the largest integer less than or equal to the given numeric
expression.

Ex: select floor(15.000)---15


select floor(15.0001)- - -15
select floor(-12.34)----(-13)

SQUARE (): Returns the square of the given expression.

Ex: select SQUARE(5)---25

SQRT (): Returns the square root of the given expression.

Ex: select SQUARE(25)---5

POWER (n, m): Returns the power value of given expression

Ex: select POWER (2, 3)-----------8


20

SIGN (): Returns the positive (+1), zero (0), or negative (-1) sign of the given
expression.

Ex: select SIGN(42)-----------1


select SIGN(0)------------0
select SIGN(-42)-----------(-1)

PI (): Returns the constant value of PI.

Ex: select PI()---------3.14159265358979


LOG (): Returns the natural logarithm of the given expression.

Ex: select LOG(2)------ 0.693147180559945


LOG 10(): Returns the base-10 logarithm of the given expression.

Ex: select LOG10(10)- - -1

SIN (): Returns the trigonometric sine of the given angle (in radians) in an
approximate numeric expression.

Ex: select SIN (0)-------0

COS (): A mathematic function that returns the trigonometric cosine of the given
angle (in radians) in the given expression.

Ex: select COS (0)-------1

TAN (): Returns the tangent of the input expression.

Ex: select TAN (0)---------0

String Functions: These functions perform an operation on a string input value


and return a string or numeric value.

ASCII (): Returns the ASCII code value of the leftmost character of a character
expression.

Ex: Select ASCII („Z‟) -----90

CHAR (): A string function that converts an int ASCII code to a character.

Ex: Select CHAR (90) -----Z


21

CHARINDEX (): Returns the starting position of the specified expression in a


character string.

Ex: Select CHARINDEX („S‟,‟SUDHAKAR‟) --------1

LEFT (): Returns the left part of a character string with the specified number of
characters.

Ex: Select LEFT („SUDHAKAR‟, 5) ----SUDHA

RIGHT (): Returns the right part of a character string with the specified number of
characters.

Ex: Select RIGHT („SUDHAKAR‟, 3) ------KAR

LEN (): Returns the number of characters, rather than the number of bytes, of the
given string expression.

Ex: Select LEN („WELCOME‟) ------------7

LOWER (): Returns a character expression after converting uppercase character


data to lowercase.

Ex: Select LOWER („SAI‟) --------sai

UPPER (): Returns a character expression with lowercase character data converted
to uppercase.

Ex: Select UPPER („sai‟) ------SAI

LTRIM (): Returns a character expression after removing leading blanks.

Ex: Select LTRIM („ HELLO‟) --------HELLO

RTRIM (): Returns a character string after truncating all trailing blanks.

Ex: Select RTRIM („HELLO „) -------HELLO

REPLACE (): Replaces all occurrences of the second given string expression in
the first string expression with a third expression.

Ex: Select REPLACE („JACK AND JUE‟, „J‟, „BL‟) ------BLACK AND BLUE
22

REPLICATE (): Repeats a character expression for a specified number of times.

Ex: Select REPLICATE („SAI‟, 3) -------SAISAISAI

REVERSE (): Returns the reverse of a character expression.

Ex: Select REVERSE („HELLO‟) --------OLLEH

SPACE (): Returns a string of repeated spaces.

Ex: Select („SAI‟+SPACE (50) +‟SUDHAKAR‟) -----SAI SUDHAKAR

SUBSTRING (expression, start, length): Returns a part of a string from


expression from starting position, where length is no. of chars to be picked.

Ex: Select SUBSTRING („HELLO‟, 1, 3) ----------- HEL

Select SUBSTRING („HELLO‟, 3, 3) ----------- LLO


Aggregate functions/Group functions: Aggregate functions perform
a calculation on a set of values and return a single value. Aggregate functions are
often used with the GROUP BY clause of the SELECT statement.

SUM (): Returns the sum of all the values .Sum can be used with numeric columns
only. Null values are ignored.

Ex: SELECT SUM (SALARY) FROM EMP

AVG (): Returns the average of the values in a group. Null values are ignored.

Ex: SELECT AVG (SALARY) FROM EMP

MAX (): Returns the maximum value in the expression.

Ex: SELECT MAX (SALARY) FROM EMP

MIN (): Returns the minimum value in the expression.

Ex: SELECT MIN (SALARY) FROM EMP

COUNT (): Returns the number of records in a table. This function again use in
three ways.

1. COUNT (*): It Returns total number of records in a table


Ex: SELECT COUNT (*) FROM EMP
23

2. COUNT (Expression/Column name): It returns number of records


including duplicate values but not null vales.
Ex: SELECT COUNT (ENAME) FROM EMP
3. COUNT (Distinct Column name): It returns number of records without
null and duplicate values.
Ex: SELECT COUNT (Distinct ENAME) FROM EMP

Distinct Key: If we use this key word on a column with in a query then it will
retrieve the values of the column without duplicates.
24

OPERATORS IN SQL: Operator is a symbol which performs some


specific operation on operands or expressions. These operators are classified into 6
types in SQL.

1. Assignment operator
2. Arithmetic operator
3. Comparison operator
4. Logical operator
5. Set operator

Assignment operator: Assignment operator contain only one operator is


knows as equal „=‟ operator.

Ex1: Write a Query to display the employee details whose salary is equal to10000

 SELECT * FROM EMP WHERE SAL=10000

Ex2: Write a query to change the deptno as „10‟whose employee id is 101

 UPDATE EMP SET DEPTNO=10 WHERE EID=101

Ex3: Write a query to delete a record whose employee id is 107

 DELETE FROM EMP WHERE EID=107

Arithmetic operator: Arithmetic operators perform mathematical


operations on two expressions. The lists of arithmetic operators are + (Add), -
Subtraction,* Multiplication. / (Divide) Division and % (Modulo) Returns the
integer remainder of a division. For example, 12 % 5 = 2 because the remainder of
12 divided by 5 is 2.

Ex1: Select 100+250

Select 245-400

Select 20*20

Select 25/5

Select 37%6
25

Select 20/5+20/5

Select 35.50+20

Ex2: WAQ to find student TOTAL, AVERAGE AND CLASS OF a table

Step1: Create table student (Sid int, sname varchar (50), math‟s int, phy int, che
int, total int, average int, class varchar (max))

Step2: Update student set total=maths+phy+che

Step3: Update student set average=total/3

Step4: Update student set class=

Case

When average>=60 then 'First class'

When average>=50 then 'second class'

When average>=40 then 'third class'

Else

'Fail'

End

CASE (): This function is used to execute list of conditions and returns a value.

Syntax: Case

<Condition 1>-----------<Condition N>

Else

<Statement>

End
26

Comparison operators: Comparison operators test whether two


expressions are the same. Comparison operators can be used on all expressions
except expressions of the text, ntext, or image data types. The following table lists
the Transact-SQL comparison operators are > (Greater Than),< (Less Than) ,>=
(Greater Than or Equal To) ,<= (Less Than or Equal To) ,!= (Not Equal To),!< (Not Less
Than),!> (Not Greater Than)

Examples:

 Select ename from EMP where salary<50000


 Update EMP set salary=1000 where salary>90000
 Update EMP set ename='joshitha' where salary<=25000
 Update EMP set salary=98000 where salary>=1000
 Select ename from Emp where salary !>98000
 Select ename from Emp where salary !<98000
 Select ename from Emp where salary !=98000

Logical operator: Logical operators test for the truth of some condition.
Logical operators, like comparison operators, return a Boolean data type with a
value of TRUE or FALSE. Logical operators are AND , OR , NOT, BETWEEN,
NOT BETWEEN, LIKE, NOT LIKE, IN, NOT IN, EXISTS,NOT EXISTS, ANY,
ALL, SOME.

Examples:

 Select * from EMP where ename='siddhu' and salary=45000


 Select * from EMP where ename='joshitha' or salary=98000
 Select * from EMP where not ename='joshitha'
 Select * from EMP where salary between 10000 and 50000
 Update EMP set ename='SAI' where eid=101 and salary=25000

Queries Using ‘Select’ with ‘where’ clause:

 Write a Query to display the employee details whose salary is less


than 10000
 SELECT * FROM EMP WHERE SAL<10000
27

 Write a Query to display the employee details whose salary is greater than
or equal to 9000 and less than 15000
 SELECT * FROM EMP WHERE SAL>=9000 AND SAL<=15000
(OR)
 SELECT * FROM EMP WHERE SAL BETWEEN 9000 AND 15000
 Write a Query to display the employee details whose salary is not
between 9000 and 15000
 SELECT * FROM EMP WHERE SAL NOT BETWEEN 9000 AND15000

 Write a Query to display the employee details whose name starts with „r‟
 SELECT * FROM EMP WHERE ENAME LIKE „r%‟

 Write a Query to display the employee details whose name ends with „y‟
 SELECT * FROM EMP WHERE ENAME LIKE „%Y‟

 Write a Query to display the employee details whose name contains


the letter „a‟
 SELECT * FROM EMP WHERE ENAME LIKE „%A%‟

 Write a Query to display the employee details whose names contains


only three letters
 SELECT * FROM EMP WHERE ENAME LIKE „---„

 Write a Query to display the employee details whose names contain „r‟
and salary greater than 9000
 SELECT * FROM EMP WHERE ENAME LIKE „%R%‟ AND SAL>9000

 Write a Query to display the employee details whose greater than ram
 SELECT * FROM EMP WHERE ENAME>‟RAM‟
 Write a Query to display the employee details whose employee id starts
with 1 and ends with 1
 SELECT * FROM EMP WHERE EID LIKE „1%1‟

(SQL commands are not case sensitive and also data available in SQL also not case
sensitive, in oracle Data available is case sensitive)
28

Queries using ‘Update’ with ‘where’ clause:

 Write a query to change the deptno as „10‟whose employee id is 101, 103,


107
 UPDATE EMPSET DEPTNO=10 WHERE EID=101 OR EID=103 OR
EID=107

 Write a query to change the deptno as 20 who does not have deptno
 UPDATE EMPSET DEPTNO=20 WHERE DEPTNO IS NULL

 Write a query to change the employee salaries as 12000 who are


working under 10 dept and their names starts with „r‟
 UPDATE EMPSET SAL=12000 WHERE DEPTNO=10 AND ENAME
LIKE „R%‟

 Write a query to change the deptno as 30 whose second letter is „a‟


 UPDATE EMPSET DEPTNO=30 WHERE ENAME=‟-A%‟

 Write a query to change the employee salaries as 8500 who are working
under 10 and 20 deptno
 UPDATE EMPSET SAL=8500 WHERE DEPTNO=10 OR DEPTNO=20
(OR)
 UPDATE EMPSET SAL=8500 WHERE DEPTNO IN(10,20)

 Write a query to change the employee salaries as 8500 who are not working
under 10 and 20 deptno
 UPDATE EMPSET SAL=8500 WHERE DEPTNO NOT IN (10,20)

 Write a query to change the employee salaries as 15000 and names


ends with „m‟ & working under 10 deptno
 UPDATE EMPSET SAL=15000 WHERE ENAME=‟%M‟ AND
DEPTNO=10

 Write a query to change the employee salaries as 5500 whose employee


id ends with 4 and deptno starts with 2
29

 UPDATE EMPSET SAL=5500 WHERE EID LIKE „%4‟ AND DEPTNO


LIKE „2%‟

 Write a query to change the employee salaries as 25000 whose salary


less than 10000 and the name contains letter „a‟ and working under dept
20
 UPDATE EMPSET SAL=25000 WHERE SAL<10000 AND ENAME
LIKE „%A%‟ AND DEPTNO IN (20)

 Write a query to change the employee salaries as 10000 whose salary


is greater than or equal to 8500 and less than or equal to 9000
 UPDATE EMPSET SAL=10000 WHERE SAL BETWEEN 8500 AND
9000

Set Operators: Set operators combine results from two or more queries into a
single result set. SQL Server provides the following set operators.

 UNION
 UNION ALL
 INTERSECT
 minus

To combine the results of two queries we need to follow the below basic rules.

 The number and the order of the columns must be the same in all queries.
 The data types must be compatible(Well-Matched)

Example:

CREATE TABLE EMP_HYD (EID INT, ENAME VARCHAR (50), SALARY


MONEY)

CREATE TABLE EMP_CHENNAI (EID INT, ENAME VARCHAR (50))


30

EMP_HYD

EID ENAME SALARY

101 SAI 25000.00

102 SIDDHU 32000.00

103 KAMAL 42000.00

104 NEETHU 63000.00

------------------------------------------------

EMP_CHENNAI

EID ENAME

101 SAI

105 POOJA

106 JASMIN

UNION: it combines the result of two or more select statements into a single result
set that includes all the records belongs to all queries except duplicate values.

Ex: Select Ename from EMP_HYD

Union

Select Ename from EMP_CHENNAI

OUTPUT: ENAME
JASMIN

KAMAL

NEETHU

POOJA

SAI

SIDDHU
31

UNION ALL: it is same as union but returns duplicate values

Ex: Select Ename from EMP_HYD

Union ALL

Select Ename from EMP_CHENNAI

OUTPUT: ENAME

SAI

SIDDHU

KAMAL

NEETHU

SAI

POOJA

JASMIN

INTERSECT: INTERSECT returns any distinct values that are common in left
and right tables.

Ex: Select Ename from EMP_HYD

Intersect

Select Ename from EMP_CHENNAI

OUTPUT: ENAME

SAI
32

Minus: Minus returns any distinct values from the left query that are not found
on the right query.

Ex: Select Ename from EMP_HYD

Except

Select Ename from EMP_CHENNAI

OUTPUT: ENAME

KAMAL

NEETHU

SIDDHU

Ex: Select Ename from EMP_CHENNAI

Except

Select Ename from EMP_HYD

OUTPUT: ENAME

JASMIN

POOJA

CLAUSES IN SQL: We can add these to a query for adding additional


options like filtering the records, sorting records and grouping the records with in a
table. These clauses contains the following clauses are,

WHERE: This clause is used for filter or restricts the records from the table.
Ex: SELECT * FROM EMP WHERE SAL=10000

ORDER BY: The order by clause is used to sort or arrange the data in
ascending or descending order with in table. By default order by
clause arrange or sort the data in ascending order only.
33

 If we want to arrange the records in a descending order then


we use Desc keyword.
 We can apply order by clause on integer and string columns.
Ex: SELECT * FROM EMP ORDER BY EID (For Ascending Order)

Ex: SELECT * FROM EMP ORDER BY ENAME DESC (For Descending Order)

TOP N CLAUSE: This clause is used to fetch a top n number of records from a
table.

Ex: SELECT TOP 3 * FROM EMP

Ex: UPDATE TOP 3 EMP SET ENAME=‟SAI‟

Ex: DELETE TOP 3 FROM EMP

GROUP BY: Group by clause will use for to arrange similar data into groups.
when we apply group by clause in the query then we use group functions like
count(),sum(),max(),min(),avg().

If we use group by clause in the query, first the data in the table will be divided
into different groups based on the columns and then execute the group function on
each group to get the result.

Ex1: WAQ to find out the number of employees working in the organization

Sol: SELECT COUNT (*) FROM EMP

Ex2: WAQ to find out the number of employees working in each group in the
organization.

Sol: SELECT DEPT, COUNT=COUNT (*) FROM EMP GROUP BY DEPT

Ex3: WAQ to find out the total salary of each department in the organization

Sol: SELECT DEPT, TOTALSALARY=SUM (SALARY) FROM EMP GROUP


BY DEPT (Like this we can find max, min, avg salary in the organization)
34

HAVING CLAUSE: Having clause is also used for filtering and restricting the
records in a table just like where clause.

Ex: WAQ to find out the number of employees in each department only if the
count is greater than 3

Sol: SELECT DEPT, COUNT=COUNT (*) FROM EMP GROUP BY DEPT


HAVING COUNT (*) >3

Differences Between WHERE and HAVING Clause:


WHERE HAVING
WHERE clause is used to filter and HAVING clause is used to filter and
restrict the records before grouping restrict the records after grouping
If restriction column associated with But we can use HAVING clause at this
A aggregative function then we cannot situations
use WHERE clause there
WHERE clause can apply without group HAVING clause cannot be applied
by clause without a group by clause
WHERE clause can be used for Where as HAVING clause is used along
restricting individual rows with group by clause to filter or restrict
groups

SYNONYM: synonym is database object which can be created as an “alias”


for any object like table, view, procedure etc.

 If we apply any DML operations on synonym the same


operations automatically effected to corresponding base table and
vice versa.
 If we create a synonym, the synonym will be created on entire table. It is
not possible to create the synonym on partial table.
 When we create synonym based on another the new synonym does not allow
us to perform any DML operations because Synonym chaining is not
allowed.
 Synonym will become invalid into two cases,
1. When we drop the base table
2. When we change the base table name
35

 On invalid synonym we cannot apply any DML operations and we


cannot create synonym based on more than one table at a time.
 When we change the structure of the base table the corresponding
synonym automatically reflected with same changes.
 But, if we change the structure of the synonym that is not reflected to
the base table because we cannot change the structure of the synonym.

Syntax: Create synonym <synonym name> for <object name>


Ex: Create synonym synemp for employee
Syntax to drop a synonym: Drop synonym <synonym name>
Ex: Drop synonym synemp

Syntax to Creating a table from an existing table:


we can create a table from an existing table and maintain a copy of the actual table
before manipulating the table.

Syntax: Select * into <New Table Name> from <Old Table Name>

Ex1: Select * into New_Emp from Employee

In this case it creates a table New_Emp by copying all the rows and columns of the
Employee table.

Ex2: Select EID, ENAME into Test_Emp from Employee

In this case it creates a table Test_Emp with only the specified columns from the
employee table.

Ex3: Select * into Dummy_Emp from employee where 1=2

In this case it creates the Dummy table without any data in it.
36

Copying data from one existing table to another table:


We can copy the data from one table to another table by using a combination of
insert and select statement as following

Syntax: Insert into <Dummy Table name> select * from <Table Name>

Ex: Insert into Dummy_Emp select * from Employee

Constraint in SQL
Why Constraint in SQL: Constraint is using to restrict the insertion of
unwanted data in any columns. We can create constraints on single or multiple
columns of any table. It maintains the data integrity i.e. accurate data or original
data of the table. Data integrity rules fall into three categories:

 Entity integrity
 Referential integrity
 Domain integrity

Entity Integrity: Entity integrity ensures each row in a table is a uniquely


identifiable entity. You can apply entity integrity to a table by specifying a
PRIMARY KEY and UNIQUE KEY constraint.

Referential Integrity: Referential integrity ensures the relationships


between tables remain preserved as data is inserted, deleted, and modified. You
can apply referential integrity using a FOREIGN KEY constraint.

Domain Integrity: Domain integrity ensures the data values inside a database
follow defined rules for values, range, and format. A database can enforce these
rules using CHECK KEY constraints.

Types of constraints in SQL Server:-


1. Unique Key constraint.
2. Not Null constraint.
3. Check constraint
4. Primary key constraint.
5. Foreign Key constraint.
37

1. Unique Key:- Unique key constraint is use to make sure that there is no
duplicate value in that column. Both unique key and primary key both enforces
the uniqueness of column but there is one difference between them unique key
constraint allow null value but primary key does not allow null value.

In a table we create one primary key but we can create more than one unique key
in Sql Server.

Ex: create table EMP(EID int unique,ENAME


varchar(50) unique,SALARY money);

2. Not null constraint: - Not null constraint is used to restrict the insertion of
null value at that column but allow duplicate values.

Ex: create table EMP(EID int not null,ENAME


varchar(50) not null,SALARY money);

3. Check Constraint: - This constraint is using to check value at the time of


insertion like as salary of any employee is always greater than zero. So we
can create a check constraint on employee table which is greater than zero.

Ex: create table emp4(eno int,ename


varchar(50),age int check (age between 20 and
30))

4. Primary Key:- Primary key is a combination of unique and not null which
does not allow duplicate as well as null values into a column. In a table we create
one primary key only.

Ex:create table emp(EID int primary key,ENAME


varchar(50),SALARY money)
38

5. Foreign Key: - One of the most important concepts in database is creating


relationships between database tables. These relationships provide a mechanism
for linking data stored in multiple tables and retrieving it in an efficient manner.

In order to create a link between two tables we must specify a foreign key in one
table that references a column in another table.

Foreign key constraint is used for relating or binding two tables with each other
and then verifies the existence of one table data in the other.

To impose a foreign key constraint we require the following things.

We require two tables for binding with each other and those two tables must have a
common column for linking the tables.

Example:

To create Department Table (PARENT TABLE):-

create table Department(Deptno int primary key,DNAME


varchar(50),LOCATION varchar(max))

Insert Records Into Department Table:

insert into Department values(10,'Sales','Chennai')


insert into Department values(20,'Production','Mumbai')
insert into Department values(30,'Finance','Delhi')
insert into Department values(40,'Research','Hyderabad')

To create Employee Table(CHILD TABLE):-

create table Employee(EID int,ENAME varchar(50),SALARY money,Deptno int


foreign key references Department(Deptno))

Insert Records Into Employee Table:

insert into Employee values(101,'Sai',35000,10)


insert into Employee values(102,'Pavan',45000,20)
insert into Employee values(103,'Kamal',74000,30)
insert into Employee values(104,'Ravi',58000,40)
39

The below records are not allowed in to employee table:

insert into Employee values(105,'Kamal',74000,50)


insert into Employee values(106,'Ravi',58000,60)

When we impose the foreign key constraint and establish relation between the
table,the followiong three rules will come into picture.

Rule1:- Cannot insert a value into the foreign key column provided that value is
not existing under the refernce key column of the parent table.

Rule2:- Cannot update the reference key value of a parent table provided that
value has corresponding child record in the child table with out addressing what
to do with the child record.

Rule3:- Cannot delete a record from the parent table provided that records
reference key value has child record in the child table with out addressing what to
do with the child record.

If we want to delete or update a record in the parent table when they have
corresponding child records in the child table we are provide with a set of rules to
perform delete and update operations knows as cascade rules.

On delete cascade:- It is used to delete a key value in the parent table which is
referenced by foreign key in other table all rows that contains those foreign keys in
child table are also deleted.
40

On Update cascade:- It is used to Update a key value in the parent table which is
referenced by foreign key in other table all rows that contains those foreign keys
in child table are also updated.

If we apply this rule while creating the child table like below

create table Emp(EID int,ENAME varchar(50),SALARY money,Deptno int


foreign key references Department(Deptno)on delete cascade on update cascade)

Ex:-

 update Department set Deptno=222 where Deptno=20

 delete from Department where Deptno=222

Making a Relationship between Three Tables


CASE-1:

Create table CUSTOMER (CID Int primary key, CNAME Varchar (20),
MAILID Varchar (40))

Insert customer values (1,'a','a@gmail.com'), (2,'b','b@gmail.com'),


(3,'c','c@gmail.com')

CASE-2

Create table PRODUCTS (PCODE Int primary key, PNAME varchar (50),
PRICE money)

Insert products values (10,'C', 500), (20,'C++’, 1000), (30,'.NET’, 35000),


(40,’SQL’, 1800)

---------------------------------------------------------------------------

CASE-3

Create table ORDERS (ORID Int primary key, ORDATE date, QUANTITY
int,CID Int foreign key references CUSTOMER(cid) on update cascade on
41

delete cascade, PCODE Int foreign key references PRODUCTS(pcode) on


update cascade on delete cascade)

Insert into ORDERS values (101,’2014/10/15’, 3, 2, 10) //ALLOWED

Insert into ORDERS values (102,’2014/10/25’, 3, 4, 50) //NOTALLOWED

----------------------------------------------------------

Update CUSTOMER set cid=100 where cid=1

Delete from CUSTOMER where cid=100

Update PRODUCTS set orid=21 where orid=20

Delete from PRODUCTS where orid=30

Adding Constraint on an Existing Table:


 Adding Primary Key on an existing table:

Ex: CREATE TABLE EMPLOYEE (EID INT, ENAME VARCHAR (50), SALARY MONEY)
Note: Before adding primary key constraint make the column is not
null later add primary key like below.

Ex: ALTER TABLE EMPLOYEE ALTER COLUMN EID INT NOT NULL

Ex: ALTER TABLE EMPLOYEE ADD CONSTRAINT X PRIMARY KEY (EID) (Here ‘x’ is
constraint variable)

 Adding Unique Key on an existing table:

Ex: ALTER TABLE EMPLOYEE ADD CONSTRAINT X UNIQUE (ENAME)

 Adding Check Key on an existing table:

Ex: ALTER TABLE EMPLOYEE ADD CONSTRAINT X CHECK (SALARY>8000)


42

 Adding Foreign Key on an existing table:

Ex: ALTER TABLE DEPT ADD CONSTRAINT Y FOREIGN KEY (EID) REFERENCES
EMPLOYEE (EID) ON UPDATE CASCADE ON DELETE CASCADE

 Dropping Constraint from an existing table:

Ex: ALTER TABLE EMPLOYEE DROP CONSTRAINT X

JOINS IN SQL: Joins are used for retrieving the data from more than one
table at a time. Joins can be classified into the following types.

 EQUI JOIN
 INNER JOIN
 OUTER JOIN
 LEFT OUTER JOIN
 RIGHT OUTER JOIN
 FULL OUTER JOIN
 NON EQUI JOIN
 SELF JOIN
 CROSS JOIN
 NATURAL JOIN

EQUI JOIN: If two or more tables are combined using equality condition then
we call as an Equi join.

Ex: WAQ to get the matching records from EMP and DEPT tables

Sol: SELECT * FROM EMP, DEPT WHERE (EMP.EID=DEPT.DNO) (NON-


ANSI STANDARD)

Sol: SELECT E.EID, E.ENAME, E.SALARY, D.DNO, D.DNAME FROM EMP


E, DEPT D WHERE E.EID=D.DNO (NON-ANSI STANDARD)

INNER JOIN: Inner join return only those records that match in both table

Ex: SELECT * FROM EMP E INNER JOIN DEPT D ON E.EID=D.DNO (ANSI)


43

OUTTER JOIN: It is an extension for the Equi join. In Equi join condition we
will be getting the matching data from the tables only. So we loss UN
matching data from the tables.

To overcome the above problem we use outer join which are used to getting
matching data as well as UN matching data from the tables. This outer join again
classified into three types

LEFT OUTER JOIN: It will retrieve or get matching data from both table as well
as UN matching data from left hand side table

Ex: SELECT * FROM EMP LEFT OUTER JOIN DEPT ON


EMP.EID=DEPT.DNO;

RIGHT OUTER JOIN: It will retrieve or get matching data from both table as
well as UN matching data from right hand side table

Ex: SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON


EMP.EID=DEPT.DNO;

FULL OUTER JOIN: It will retrieve or get matching data from both table as well
as UN matching data from left hand side table plus right hand side table also.

Ex: SELECT * FROM EMP FULL OUTER JOIN DEPT ON


EMP.EID=DEPT.DNO;

NON EQUI JOIN: If we join tables with any condition other than equality
condition then we call as a non Equi join.

Ex: SELECT * FROM EMP, SALGRADE WHERE (SALARY > LOWSAL)


AND (SALARY < HIGHSAL)

SELF JOIN: Joining a table by itself is known as self join. When we have some
relation between the columns within the same table then we use self join.

When we implement self join we should use alias names for a table and a table
contains any no. of alias names.
44

Ex: SELECT E.EID, E.ENAME, E.SALARY, M.MID, M.ENAME


MANAGERSNAME, M.SALARY FROM EMP E, EMP M WHERE
E.EID=M.MID.

CROSS JOIN: Cross join is used to join more than two tables without any
condition we call as a cross join. In cross join each row of the first table join with
each row of the second table.

So, if the first table contain „m‟ rows and second table contain „n‟ rows then output
will be „m*n‟ rows.

Ex: SELECT * FROM EMP, DEPT

Ex: SELECT * FROM EMP CROSS JOIN DEPT

NATURAL JOIN: It is used to avoid duplicate column from the tables.

EX: SELECT EID, ENAME, SALARY, DNO, DNAME FROM EMP E, DEPT D
WHERE E.EID=D.DNO

Making To Joins Three Tables:


CREATE TABLE STUDENTS (SID Int, SNAME varchar (20), SMBNO char (10), CID
Int)

INSERT STUDENT VALUES (1,'aa',’7894561233’, 10), (2,'bb',’9874563211’,


20), (3,'cc',’8749653215’, 30), (4,’dd’,’7788996655’, 40)

CREATE TABLE COURSES (CID int, CNAME Varchar (20), CFEE decimal (6, 2))

INSERT COURSES VALUES (10,'c', 500), (20,'c++', 1000), (50,'sql', 1800),


(60,’.net’, 3500), (70,’sap’, 8000)

CREATE TABLE REGISTER (SNO int, REGDATE date, CID Int)

INSERT REGISTER VALUES (100,’2014/10/20’, 10), (101,’2014/10/21’,


80), (102,’2014/10/22’, 90)

---------------------------------------------------------------------------------------------------------
45

Select * from course c inner join student s on c.cid=s.cid inner join register r on
s.cid=r.cid

Select * from student s left outer join course c on s.cid=c.cid left outer join
register r on c.cid=r.cid

TRANSACTION CONTROLL LANGUAGE


TRANSACTION: A transaction is a unit of work that is performed against a
database or set of statement (Insert, Update and Delete) which should be executed
as one unit.

 A transaction is the propagation of one or more changes to the database. For


example, if you are inserting a record or updating a record or deleting a
record from the table, then you are performing transaction on the table. It is
important to control transactions to ensure data integrity and to handle
database errors.
 The rule of transaction tells that either all the statements in the
transaction should be execute successfully or none of those statement to
be executed.

To manage transaction we have provide with transaction control language that


provides a commands like

 COMMIT
 ROLLBACK
 SAVE POINT
46

COMMIT: Commit command is used to end the transaction and save the data
permanent part of the database (or) it is used to make the transaction is permanent
so we cannot undo or recall the records.

 Commit is used for saving the data that has been changed permanently
because whenever you perform any DML (Data Manipulation Language)
like UPDATE, INSERT OR DELETE then you are required to write
Commit at the end of all or every DML operation in order to save it
permanently.
 If you do not write Commit then your data will be restored into its
previous condition.
Ex:
INSERT INTO EMPLOYEE VALUES(105,'KAMAL',62000,'MUMBAI')
INSERT INTO EMPLOYEE VALUES(106,'SUJATHA',82000,'DELHI')
COMMIT
 The above records are stored permanently into a table because we commited
that records.so we cannot roll back in to its previous position.

ROLLBACK: Rollback command is used to undo the transactions and gets back
to the initial state where transaction started.
 Whereas if you want to restore your data into its previous condition
then you can write Rollback at any time after the DML queries has
been written but remember once Commit has been written then you
cannot rollback the data.
 Moreover you can only rollback the DML queries that have been
written after the last commit statement. The concept of commit and
rollback is designed for data consistency because many users
manipulate data of the
47

same table, using the same database so the user must get updated
data. That is why commit and rollback are used.

Ex:
DELETE FROM EMPLOYEE WHERE EID=105
DELETE FROM EMPLOYEE WHERE EID=106
ROLLBACK
 The above records we can rollback into a table because those records are not
commited.
SAVEPOINT: Save point is used for dividing (or) breaking a transaction into
multiple units. So that user will have a chance of roll backing a transaction up to a
location.
 When a user sets a save point with in a transaction the save point defines
a location to which a transaction can return if part of the transaction
conditionally canceled.
 If a transaction is roll back to a save point, it must be proceed to
completion of the transaction with commit statement or it must be
cancelled altogether by rolling the transaction back to its beginning

Syntax:
Save transaction < transaction name>
<Write Statements>

Ex:
UPDATE EMPLOYEE SET SALARY=99000 WHERE EID=101
UPDATE EMPLOYEE SET SALARY=88000 WHERE EID=102
SAVE TRANSACTION S1
UPDATE EMPLOYEE SET SALARY=77000 WHERE EID=103
UPDATE EMPLOYEE SET SALARY=66000 WHERE EID=104
SAVE TRANSACTION S2
UPDATE EMPLOYEE SET SALARY=55000 WHERE EID=105
UPDATE EMPLOYEE SET SALARY=44000 WHERE EID=106
48

 In the above case we are dividing or breaking the transaction into three
units.so we have a chance of rollbacking either completely i.e six
statements get roll back (or) roll back save point S1 i.e four statements(103
to 106) (or) rollback save point S2 i.e two records (105,106 ) only

CASE 1: ROLLBACK
 All records will roll back i.e complete records(six records)

CASE 2:
ROLLBACK TRANSACTION S1

 We can roll back four records only i.e 103 to 106.

CASE 3:
ROLLBACK TRANSACTION S2

 We can roll back two records only i.e 105 and 106

Sub Query: A select query contains another select query is called sub Query.
In this, there will be two queries those are called as inner query and outer query.
When it is executed, first inner query is executed later outer query will be executed

Syntax: select * from <Table Name> where (condition) (select *


from…….. (Select * from….. (select * from……..)));

Types of Sub Queries: We have two types of sub queries


Nested Sub queries: In a sub query, Outer query depends on result of
inner query is called as Nested sub query.

Examples:
1) WAQ to find the details of employee who is earning the highest salary.

Sol: select * from employee where Salary=(select MAX(salary) from


employee)//subquery
49

2) WAQ to find the details of employee who is earning second highest salary.

Sol: select * from employee where Salary=(select MAX(salary)from employee


where Salary<(select MAX(salary) from employee)) //multiple sub query

3) WAQ to find the details of employee who is earning third highest salary.

Sol: select * from employee where Salary=(select MAX(salary)from employee


where Salary<(select MAX(salary) from employee where Salary <(select
MAX(salary) from employee))) //nested subquery

4) WAQ to display employee details who are working in .NET department.

Sol: select * from employee where EID IN (select EID FROM employee where
DNAME='.NET')

5) WAQ to display employee details who are working in JAVA or


HR department.

Sol: select * from employee where EID IN (select EID FROM employee where
DNAME='.NET' OR DNAME='HR')

Co-Related Sub queries: In a sub query, inner query depends on


result of outer query is called as Co-Related sub query.

Outer query will execute first and value of the outer query will be used
by co- related sub query i.e. inner query.

When outer query is executed then the copy of the table will be stored in
memory, later co related sub query will check the values and will give Ranks
to the outer query rows in the memory ,according to the ranks the result
will be displayed.

Note: - To find Top n salaries list use “n>”.To find nth highest salary use “n-1”.

Syntax: SELECT * FROM Employee Emp1 WHERE (N-1) = or N> (


SELECT COUNT (DISTINCT (Emp2.Salary)) FROM Employee Emp2WHERE Emp2.Salary >
Emp1.Salary)
50

Disadvantage: Sub query execution will be fast and co related sub


query execution is slow because it will check every row of inner query with
every row of the outer query.

Examples:
6) WAQ to display top 2 salaries list from employee table.

Sol: Select * from employee E where 2>(select count(salary) from employee M


where M.salary>E.salary)

(Or)

Sol: Select * from employee E where 2>(select count(Distinct salary) from


employee M where M.salary>E.salary)

Note: - Here Distinct Key will be used when the table contain duplicate values.

7) WAQ to display least 2 salaries list from employee table.

Sol: Select * from employee E where 2>(select count(salary) from employee M


where M.salary<E.salary)

(Or)

Sol: Select * from employee E where 2>(select count(Distinct salary) from


employee M where M.salary<E.salary)

8) WAQ to display “N th” salary from employee table.

Sol: Select * from employee E where 0=(select count( salary) from employee
M where M.salary>E.salary)

Note: When condition is M.salary>E.salary / M.salary<E.salary

then N=0 then first highest salary / first least salary

N=1 then second highest salary/second least

salary N=2 then third highest salary / third

least salary
51

9) WAQ to get the details of the department in which employee are working.

Select * from department D Exists (select * from employee E where


E.deptno=D.deptno)
10) WAQ to get the details of the department in which employee are
not working.

Select * from department D not Exists (select * from employee E where


E.deptno=D.deptno)

Syntax to Find Any Position Record From A table

SELECT * FROM(SELECT * ,ROW_NUMBER() OVER (ORDER BY


empid) AS RowNum FROM Employee) employee WHERE RowNum
=15

Syntax to Delete Duplicate Records from a table contains more than two same
duplicate values:

SID SNAME FEE rownum


10 Sai 12000 1
20 Siddhu 45000 1
30 Meena 65000 1
30 Meena 65000 2
30 Meena 65000 3
30 Meena 65000 4
30 Meena 65000 5

with duplicates as
(select * ,ROW_NUMBER() over(partition by sid,sname, fee order by
sid,sname,fee) rownum from student)
delete from duplicates where rownum > 1

select the complete above query and execute then we delete all duplicate records
which are greater than 1 i.e.output is like below
52

SID SNAME FEE Rownum


10 Sai 12000 1
20 Siddhu 45000 1
30 Meena 65000 1

INDEXES IN SQL:
Why We Need Indexes:
1. Generally a library has a huge collection of books, files, etc... A student
requests the librarian for a book of Microsoft SQL Server 2008, if we think
without an index the librarian had to find this without any help she/he has
to search one by one! This must be time consuming; so with a proper
arrangement, that is with the help of an index, it very much easier and faster
to find out the desired one.
2. One of the most important routes to high performance in a SQL Server
database is the index. Indexes speed up the querying process by providing
quickly access to rows in the data tables, similarly to the way a book‟s index
helps you find information quickly within that book.

What is INDEX:
 Index is a database object which is used for the quick retrieving of the
data from the table.
 An index contains keys built from one or more columns in the table and
map to the storage location of the specified data.
 By using indexes we can save time and can improve the performance
of database queries and applications.
 When we create an indexes on any column, SQL server internally maintain a
separate table called index table. So that when ever user trying to retrieve
the data from existing table depends on index table SQL server directly go to
the table and retrieve required data very quickly.
53

 In a table we can use max 250 indexes. The index type refers to the way the
index is stored internally by SQL Server. So a table can contain the two
types of indexes.

1. Clustered
2. Non-Clustered

Clustered Index:
 The only time the data rows in a table are stored in sorted (ascending order
only) order structure is when the table contains a clustered index. When a
table has a clustered index then is called a clustered table. If a table has no
clustered index, its data rows are stored in an unordered structure.
 A table can have only 1 clustered index on it, which will be created when
primary key constraint is used in a table.

Non-Clustered Indexes:
 Non-clustered indexes will not have any arrangement order (Unordered
structure) of the data in the table. In a table we can create 249 non-clustered
indexes.
 If we don‟t mention clustered indexes in a table then default is stored as
non- clustered indexes.

Syntax:Create Index <Index Name> on <Table Name> (Column Name);

EX: Create index demo index on EMP (Eid)

VIEWS IN SQL: View is database object which is like table but logical.
We can call it as a logical or virtual table because it does not has a physical
existence.

 It is a logical table use to get the required information from the table.
View will be created by using select statement and table used for the
creation of the view is called as base table.
 View will not store records in it and will not occupy memory space
with help of structure existing in it and records will be displayed from
table.
54

 View is logical representation or virtual representation .it is a dependent


where as table an independent is because view is extracted from the
table.
 If we want to access the data from the table it‟s not necessary to change the
data direct to the table but we can access by having a view.
 Views are used for security purpose in databases, views restricts the user
from viewing certain column and rows means by using view we can
apply the restriction on accessing the particular rows and columns for
specific user.
 Views display only those data which are mentioned in the query, so it
shows only data which is returned by the query that is defined at the time of
creation of the View.
Why We Need Views: To protect the data. If you have a table
containing sensitive data in certain columns, you might wish to hide those columns
from certain groups of users. For instance, customer names, addresses and their social
security numbers might all be stored in the same table; however, for lower level
employees like shipping clerks, you can create a view that only displays customer
name and address. You can grant permissions to a view without allowing users to
query the original tables.
 A view is a logical table but what it stores internally is a select statement
that is used for creating the view. So that whenever a user performs any
operation on the view like select, insert, update or delete internally the view
performs those operations on a table.
 Simply we can say that view will act as an interface between the
data provider (Table) and the User.

View is created based on a table any changes that are performed on the table
reflects into the view any changes performed on the view reflect into the table also.
View is classified into two types. These are

 Simple view(Updatable view)


 Complex view(Non-Updatable view)

Simple view: we create a view based on one table is called simple view or
Updatable view.

Complex view: we create a view based on more than one table is called complex
view or Non-Updatable view.
55

Syntax: create view <view name> as select * from <table name>


Ex1: create view simpleview as select * from emp;

Ex2: CREATE VIEW COMPLEXVIEW AS SELECT


E.EID,E.ENAME,D.DNO,D.DNAME FROM EMP E INNER JOIN DEPT
D ON E.DEPTNO=D.DEPTNO

SQL SEQUENCES

 A sequence is a user defined schema bound object that generates a sequence of numeric
values.
 Sequences are frequently used in many databases because many applications require each
row in a table to contain a unique value and sequences provides an easy way to generate them.
 The sequence of numeric values is generated in an ascending or descending order at
defined intervals and can be configured to restart when exceeds max_value.

Syntax:

CREATE SEQUENCE sequence_name


START WITH initial_value
INCREMENT BY increment_value
MINVALUE minimum value
MAXVALUE maximum value
CYCLE|NOCYCLE ;

sequence_name: Name of the sequence.

initial_value: starting value from where the sequence starts.


Initial_value should be greater than or equal
to minimum value and less than equal to maximum value.

increment_value: Value by which sequence will increment itself.


Increment_value can be positive or negative.

minimum_value: Minimum value of the sequence.


maximum_value: Maximum value of the sequence.
56

cycle: When sequence reaches its set_limit


it starts from beginning.

nocycle: An exception will be thrown


if sequence exceeds its max_value.

Example 1:

CREATE SEQUENCE sequence_1


start with 1
increment by 1
minvalue 0
maxvalue 100
cycle;

Above query will create a sequence named sequence_1.Sequence will start from 1 and will be incremented by 1 having
maximum value 100. Sequence will repeat itself from start value after exceeding 100.

Example 2:
Following is the sequence query creating sequence in descending order.

CREATE SEQUENCE sequence_2


start with 100
increment by -1
minvalue 1
maxvalue 100
cycle;

Above query will create a sequence named sequence_2.Sequence will start from 100 and should be less than or equal to
maximum value and will be incremented by -1 having minimum value 1.

Example to use sequence : create a table named students with columns as id and name.

CREATE TABLE students


(
ID number(10),
NAME char(20)
);

Now insert values into table


INSERT into students VALUES(sequence_1.nextval,'Ramesh');
INSERT into students VALUES(sequence_1.nextval,'Suresh');
57

where sequence_1.nextval will insert id’s in id column in a sequence as defined in sequence_1.

Output:
______________________
| ID | NAME |
------------------------
| 1 | Ramesh |
| 2 | Suresh |

Function Example Result Description


ADD_MONTHS ADD_MONTHS( DATE '2016-  31-MAR-16 Add a number of months (n)
02-29', 1 ) to a date and return the
same day which is n of
months away.
CURRENT_DATE  SELECT CURRENT_DATE   06-AUG-2017 Return the current date and
FROM dual 19:43:44 time in the session time
zone
CURRENT_TIMESTAMP SELECT 06-AUG-17 Return the current date and
CURRENT_TIMESTAMP FROM 08.26.52.742000000 time with time zone in the
dual PM -07:00
session time zone
DBTIMEZONE  SELECT DBTIMEZONE FROM  -07:00 Get the current database
dual; time zone
EXTRACT EXTRACT(YEAR FROM  2017 Extract a value of a date
SYSDATE) time field e.g., YEAR,
MONTH, DAY, … from a
date time value.
FROM_TZ FROM_TZ(TIMESTAMP  08-AUG-17 Convert a timestamp and a
'2017-08-08 08:09:10', 08.09.10.000000000 time zone to a TIMESTAMP
'-09:00') AM -07:00 WITH TIME ZONE value
LAST_DAY LAST_DAY(DATE '2016-02-  29-FEB-16 Gets the last day of the
01') month of a specified date.
LOCALTIMESTAMP SELECT LOCALTIMESTAMP  06-AUG-17 Return a TIMESTAMPvalue
FROM dual 08.26.52.742000000 that represents the current
PM date and time in the session
time zone.
MONTHS_BETWEEN MONTHS_BETWEEN( DATE 6 Return the number of
'2017-07-01', DATE months between two dates.
'2017-01-01' )
NEW_TIME NEW_TIME( TO_DATE( '08-  06-AUG-2017 Convert a date in one time
07-2017 01:30:45', 'MM- 21:30:45 zone to another
DD-YYYY HH24:MI:SS' ),
'AST', 'PST' )
NEXT_DAY NEXT_DAY( DATE '2000-  02-JAN-00 Get the first weekday that is
01-01', 'SUNDAY' ) later than a specified date.
ROUND ROUND(DATE '2017-07-  01-AUG-17 Return a date rounded to a
16', 'MM') specific unit of measure.
SESSIONTIMEZONE  SELECT SESSIONTIMEZONE  -07:00 Get the session time zone
FROM dual;
SYSDATE  SYSDATE   01-AUG-17 Return the current system
date and time of the
operating system where the
Oracle Database resides.
58

Function Example Result Description

SYSTIMESTAMP  SELECT SYSTIMESTAMP 01-AUG-17 Return the system date and


FROM dual; 01.33.57.929000000
time that includes fractional
PM -07:00
seconds and time zone.
TO_CHAR  TO_CHAR( DATE'2017-01-  Sunday, January 01, Convert a DATE or
01', 'DL' ) 2017 an INTERVAL value to a
character string in a
specified format.
TO_DATE TO_DATE( '01 Jan 2017',  01-JAN-17 Convert a date which is in
'DD MON YYYY' ) the character string to
a DATE value.
TRUNC  TRUNC(DATE '2017-07-  01-JUL-17 Return a date truncated to a
16', 'MM') specific unit of measure.
TZ_OFFSET TZ_OFFSET( 'Europe/Lond  +01:00 Get time zone offset of a
on' ) time zone name from UTC

Decode:
The Oracle/PLSQL DECODE function has the functionality of an IF-THEN-ELSE statement.

Syntax
The syntax for the DECODE function in Oracle/PLSQL is:

DECODE( expression , search , result [, search , result]... [, default] )

Parameters or Arguments
expression
The value to compare. It is automatically converted to the data type of the first search value before comparing.
search
The value that is compared against expression. All search values are automatically converted to the data type of
the first search value before comparing.
result
The value returned, if expression is equal to search.
default
Optional. If no matches are found, the DECODE function will return default. If default is omitted, then the DECODE
function will return NULL (if no matches are found).

Returns
The DECODE function returns a value that is the same datatype as the first result in the list.
If the first result is NULL, then the return value is converted to VARCHAR2.
If the first result has a datatype of CHAR, then the return value is converted to VARCHAR2.
If no matches are found, the default value is returned.
If default is omitted and no matches are found, then NULL is returned.
59

Applies To

The DECODE function can be used in the following versions of Oracle/PLSQL:

 Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i

Example
The DECODE function can be used in Oracle/PLSQL.
You could use the DECODE function in a SQL statement as follows:

SELECT supplier_name,
DECODE(supplier_id, 10000, 'IBM',
10001, 'Microsoft',
10002, 'Hewlett Packard',
'Gateway') result
FROM suppliers;

The above DECODE statement is equivalent to the following IF-THEN-ELSE statement:

IF supplier_id = 10000 THEN


result := 'IBM';

ELSIF supplier_id = 10001 THEN


result := 'Microsoft';

ELSIF supplier_id = 10002 THEN


result := 'Hewlett Packard';

ELSE
result := 'Gateway';

END IF;

The DECODE function will compare each supplier_id value, one by one.
60

A simple CASE statement expression

In this format, we evaluate one expression against multiple values. In a simple case statement, it evaluates
conditions one by one. Once the condition and expression is matched, it returns the expression mentioned in
THEN clause.

We have following syntax for a case statement in SQL with a simple expression

SELECT CASE Expression

When expression1 Then Result1

When expression2 Then Result2

...

ELSE Result

END

Searched CASE Statement


The CASE statement goes through conditions and returns a value when the first condition is met (like an IF-
THEN-ELSE statement). So, once a condition is true, it will stop reading and return the result. If no conditions are
true, it returns the value in the ELSE clause.

If there is no ELSE part and no conditions are true, it returns NULL.

CASE Syntax
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;

SQL CASE Examples


61

The following SQL goes through conditions and returns a value when the first condition is met:

SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN "The quantity is greater than 30"
    WHEN Quantity = 30 THEN "The quantity is 30"
    ELSE "The quantity is under 30"
END AS QuantityText
FROM OrderDetails;

The following SQL will order the customers by City. However, if City is NULL, then order by Country:

SELECT CustomerName, City, Country


FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);

You might also like