0% found this document useful (0 votes)
12 views

SQL_PPT1

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

SQL_PPT1

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 125

SQL

Prepared By:M.P.Karnik 1
SQL-Structured Query Language
• SQL (Structured Query Language):-
It is a computer language aimed to store,
manipulate data stored in relational databases.
Some of the basic functions of SQL are
inputting, modifying, and dropping data from
databases.

Prepared By:M.P.Karnik 2
Data types in SQL
Data type Description
CHARACTER(n) Character string, fixed length n.
CHARACTER VARYING(n)
Variable length character string,
or
maximum length n.
VARCHAR(n)
Fixed length binary string, maximum
BINARY(n)
length n.
BINARY VARYING(n) or Variable length binary string, maximum
VARBINARY(n) length n.
INTEGER(p) Integer numerical, precision p.
SMALLINT Integer numerical precision 5.
NTEGER Integer numerical, precision 10.
BIGINT Integer numerical, precision 19.
DECIMAL(p, s) Exact numerical, precision p, scale s.
Prepared By:M.P.Karnik 3
FLOAT(p) Approximate numerical,mantissa precision p.

REAL Approximate numerical mantissa precision 7.

FLOAT Approximate numerical mantissa precision 16.

DOUBLE PRECISION Approximate numerical mantissa precision 16.


Composed of a number of integer fields,
INTERVAL represents a period of time, depending on the
type of interval.

DATE Stores year, month, and day values

TIME Stores hour, minute, and second values

Stores year, month, day, hour, minute, and


TIMESTAMP
second values

Prepared By:M.P.Karnik 4
Data Type Abbreviations

Abbreviation Character
CHAR(n) CHARACTER(n)
CHAR CHARACTER
CHAR VARYING(n) CHARACTER VARYING(n)
VARCHAR(n) CHARACTER VARYING(n)
VARBINARY(n) BINARY VARYING(n)
INT(p) INTEGER(p)
INT INTEGER
DEC(p, s) DECIMAL(p, s)
DEC DECIMAL
NUM(p, s) NUMERIC(p, s)
NUM NUMERIC

Prepared By:M.P.Karnik 5
Operators in SQL
SQL support 3 types of operators
✔ Arithmetic Operator:
Used for basic calculations like +,-,* & /. It can
be used in the expression.

Prepared By:M.P.Karnik 6
SQL Operators

• Next two type of Operators are Comparison


Operators and Logical Operators. These
operators are used mainly in the WHERE
clause, HAVING clause to filter the data to be
selected.
✔ Comparison Operators:
• Comparison operators are used to compare
the column data with specific values in a
condition.
• Comparison Operators are also used along
with the SELECT statement to filter data
based on specific conditions.
Prepared By:M.P.Karnik 7
Comparison Operators

Comparison Operators Description


= equal to
<>, != is not equal to
< less than
> greater than
>= greater than or equal to
<= less than or equal to

Prepared By:M.P.Karnik 8
Operators in SQL
✔ Logical Operator:
Used to evaluate the expression depending on
combination of conditions.
Logical operators are,

Prepared By:M.P.Karnik 9
The ALL operator is used to compare a value to all
ALL
values in another value set.

The AND operator allows the existence of multiple


AND
conditions in an SQL statement's WHERE clause.

The ANY operator is used to compare a value to any


ANY
applicable value in the list according to the condition.
The BETWEEN operator is used to search for values
BETWEEN that are within a set of values, given the minimum
value and the maximum value.
The EXISTS operator is used to search for the
EXISTS presence of a row in a specified table that meets
certain criteria.
The IN operator is used to compare a value to a list of
IN
literal values that have been specified.

Prepared By:M.P.Karnik 10
The NOT operator reverses the meaning of the
logical operator with which it is used. Eg: NOT
NOT
EXISTS, NOT BETWEEN, NOT IN, etc. This is a
negate operator.
The OR operator is used to combine multiple
OR
conditions in an SQL statement's WHERE clause.
The NULL operator is used to compare a value with
IS NULL
a NULL value.
The UNIQUE operator searches every row of a
UNIQUE
specified table for uniqueness (no duplicates).

Prepared By:M.P.Karnik 11
SQL Comparison Keywords
• There are other comparison keywords available in sql
which are used to enhance the search capabilities of a
sql query.

• They are "IN", "BETWEEN...AND", "IS NULL", "LIKE".


Comparison Operators Description
column value is similar to specified
LIKE
character(s).
column value is equal to any one of a
IN
specified set of values.
column value is between two values,
BETWEEN...AND including the end values specified in
the range.
IS NULL column value does not exist.
The UNIQUE operator searches every row
UNIQUE of a specified
Prepared By:M.P.Karnik table for uniqueness (no 12
SQL LIKE Operator

• The LIKE operator is used to list all rows in a


table whose column values match a specified
pattern. It is useful when you want to search
rows to match a specific pattern, or when
you do not know the entire value. For this
purpose we use a character '%'.
• Example: To select all the students whose
name begins with ‘A'
SELECT first_name, last_name
FROM student_details
WHERE first_name LIKE ‘A%’;

Prepared By:M.P.Karnik 13
• The previous select statement searches for all
the rows where the first letter of the column
first_name is ‘A' and rest of the letters in the
name can be any character.

• There is another character you can use with


LIKE operator. It is the underscore character, '
_ ' . In a search string, the underscore signifies
a single character.

• Example: To display all the names with 'a'


second character,
• SELECT first_name, last_name
FROM student_details
WHERE first_name LIKE '_a%';
Prepared By:M.P.Karnik 14
SQL BETWEEN ... AND Operator

• The operator BETWEEN and AND, are used


to compare data for a range of values.
• Example: to find the names of the students
between age 20 to 25 years, the query would
be like,

SELECT first_name, last_name, age


FROM student_details
WHERE age BETWEEN 20 AND 25;

Prepared By:M.P.Karnik 15
SQL set operators
• SQL set operators combine results from two
or more SELECT statements.
• SQL set operators combine rows from
different queries with strong preconditions -
all involved SELECTS must.
• They retrieve the same number of columns
and the data types of corresponding
columns.

Prepared By:M.P.Karnik 16
• According to SQL Standard there are
following Set operator types:

UNION [DISTINCT];
UNION ALL;
EXCEPT [DISTINCT];
EXCEPT ALL;
INTERSECT [DISTINCT];
INTERSECT ALL.

Prepared By:M.P.Karnik 17
Union and UNION ALL
• In SQL the UNION clause combines the results of
two SQL queries into a single table of all matching
rows. The two queries must result in the same
number of columns and compatible data types in
order to unite. Any duplicate records are
automatically removed unless UNION ALL is used.
• A simple example would be a database having
tables sales2005 and sales2006 that have identical
structures but are separated because of
performance considerations. A UNION query could
combine results from both tables.
• UNION does not guarantee the order of rows. Rows
from the second operand may appear before, after,
or mixed with rows from the first operand. In
situations where a specific order is desired, ORDER
Prepared By:M.P.Karnik 18
person amount person amount
A 1000 A 2000
B 2000 B 2000

C 5000 D 35000

Sales2006
Sales2005
person amount
A 1000
B 2000
C 5000
A 2000
D 35000

SELECT * FROM sales2005 UNION SELECT * FROM


sales2006;
Prepared By:M.P.Karnik 19
• SELECT * FROM sales2005 UNION ALL SELECT *
FROM sales2006;

person amount
A 1000
A 2000
B 2000
B 2000
C 5000
D 35000

Prepared By:M.P.Karnik 20
INTERSECT operator

• The SQL INTERSECT operator takes the results of two


queries and returns only rows that appear in both
result sets.

• The INTERSECT operator removes duplicate rows from


the final result set. The INTERSECT ALL operator does
not remove duplicate rows from the final result set.

• The following statement combines the results with the


INTERSECT operator, which returns only those rows
returned by both queries:
• SELECT product_id FROM inventories INTERSECT
SELECT product_id FROM order_items;

Prepared By:M.P.Karnik 21
Minus operator
• The following statement combines results with the
MINUS operator, which returns only unique rows
returned by the first query but not by the second:

• SELECT product_id FROM inventories MINUS


SELECT product_id FROM order_items;

Prepared By:M.P.Karnik 22
EXCEPT operator
• The SQL EXCEPT operator takes the distinct
rows of one query and returns the rows that
do not appear in a second result set.
• The EXCEPT ALL operator does not remove
duplicates.
• For purposes of row elimination and
duplicate removal, the EXCEPT operator
does not distinguish between NULLs.

Prepared By:M.P.Karnik 23
The query returns all rows where the Quantity is
between 1 and 100, apart from rows where the
quantity is between 50 and 75.

• SELECT * FROM Orders WHERE Quantity


BETWEEN 1 AND 100 EXCEPT SELECT *
FROM Orders WHERE Quantity BETWEEN
50 AND 75;

Prepared By:M.P.Karnik 24
Statement
• DML
DML is abbreviation of Data Manipulation Language. It
is used to retrieve, store, modify, delete, insert and
update data in database.
Examples: SELECT, UPDATE, INSERT statements
• DDL
DDL is abbreviation of Data Definition Language. It is
used to create and modify the structure of database
objects in database.
Examples: CREATE, ALTER, DROP statements
• DCL
DCL is abbreviation of Data Control Language. It is used
to create roles, permissions. It is also used to control
access to database by securing it.
Examples: GRANT, REVOKE statements
• TCL
TCL is abbreviation of Transactional Control Language.
It is used to manage different transactions occurring
within a database. Prepared By:M.P.Karnik 25
What are the difference between DDL, DML and
DCL commands

✔ DDL:- Data Definition Language (DDL) statements


are used to define the database structure or schema.
Some examples:
• CREATE - to create objects in the database
• ALTER - alters the structure of the database
• DROP - delete objects from the database
• TRUNCATE - remove all records from a table,
including all spaces allocated for the records are
removed
• COMMENT - add comments to the data dictionary
• RENAME - rename an object

Prepared By:M.P.Karnik 26
✔ DML:-Data Manipulation Language
(DML) statements are used for managing
data within schema objects. Some
examples:
• SELECT - retrieve data from the database
• INSERT - insert data into a table
• UPDATE - updates existing data within a
table
• DELETE - deletes all records from a table,
the space for the records remain
• MERGE - UPSERTPrepared
operation
By:M.P.Karnik (insert or 27
✔ DCL:-Data Control Language (DCL)
statements.
GRANT - gives user's access privileges to
database
REVOKE - withdraw access privileges given with
the GRANT command.

✔ TCL:-Transaction Control (TCL) statements


are used to manage the changes made by
DML statements. It allows statements to be
grouped together into logical transactions.
COMMIT - save work done
SAVEPOINT - identify a point in a transaction to
which you can later roll back
ROLLBACK - restore Prepared
databaseBy:M.P.Karnik to original since 28
Basic commands of DBMS

1. Create table 2. Describe table


3. Insert data into table 4. Select data in
table
5. Delete data in table 6. Update table
7. Modifying table structure 8. Rename table
9. Truncate table 10. Delete table
11. View tables created by user

Prepared By:M.P.Karnik 29
SELECT
• The most commonly used SQL command is SELECT
statement. The SQL SELECT statement is used to
retrieve data from a table in the database. A query
may retrieve information from specified columns or
from all of the columns in the table. To create a
simple SQL SELECT Statement, you must specify the
column(s) name and the table name. The whole
query is called SQL SELECT Statement.

• Select queries require two essential parts. The first


part is the "WHAT", which determines what we
want SQL to go and fetch. The second part of any
SELECT command is the "FROM WHERE". It
identifies where to fetch the data from, which may
be from a SQL table.
Prepared By:M.P.Karnik 30
Where Clause
• SQL offers a feature called WHERE clause,
which we can use to restrict the data that is
retrieved.

• The condition you provide in the WHERE


clause filters the rows retrieved from the
table and gives you only those rows which
you expected to see.

• WHERE clause can be used along with SELECT,


DELETE, UPDATE statements.

• The WHERE clause is used when you want to


retrieve specific information from a table
excluding other irrelevant data.
Prepared By:M.P.Karnik 31
• Example: To find the name of a
student with the specific id then the
query would be like:

SELECT first_name, last_name FROM


student_details WHERE id = 100;

• Comparison Operators and Logical


Operators are used in WHERE Clause.
Prepared By:M.P.Karnik 32
Create table-DDL statement
• The CREATE TABLE Statement is used to
create tables to store data.
• Syntax for the CREATE TABLE Statement is:
CREATE TABLE table_name
(column_name1 datatype,
column_name2 datatype,
... column_nameN datatype
);
• table_name - is the name of the table.
• column_name1, column_name2.... - is the
name of the columns
• datatype - is the data type for the column
like char, date, number etc.
Prepared By:M.P.Karnik 33
• For Example: If you want to create the employee
table, the statement would be like,
• CREATE TABLE employee
( id number(5),
name char(20),
dept char(10),
age number(2),
salary number(10),
location char(10)
);
• In Oracle database, the data type for an integer
column is represented as "number".
• Oracle provides another way of creating a table.
• CREATE TABLE temp_employee
as SELECT * FROM employee
• In the above statement, temp_employee table is
created with the same number of columns and
data type as employee table.
Prepared By:M.P.Karnik 34
INSERT –DML statement
• The INSERT Statement is used to add new rows of
data to a table. Insert data to a table in two ways,
• 1) Inserting the data directly to a table.
• Syntax
INSERT INTO TABLE_NAME
[ (col1, col2, col3,...colN)]
VALUES (value1, value2, value3,...valueN);

• col1, col2,...colN -- the names of the columns in the


table into which you want to insert data.

• While inserting a row, if you are adding value for


all the columns of the table you need not specify
the column(s) name in the sql query. But you need
to make sure the order of the values is in the same
order as the columns in the table
Prepared By:M.P.Karnik 35
• The sql insert query will be as follows :
• INSERT INTO TABLE_NAME
VALUES (value1, value2, value3,...valueN);
• For Example: If you want to insert a row to the
employee table, the query would be like,
• INSERT INTO employee (id, name, dept, age, salary)
VALUES (105, ‘ABC', ‘computer', 27, 33000,);
• When adding a row, only the characters or date values
should be enclosed with single quotes.
• If you are inserting data to all the columns, the
column names can be omitted. The above insert
statement can also be written as,
• INSERT INTO employee
VALUES (105, ‘ABC', ‘computer', 27, 33000);
Prepared By:M.P.Karnik 36
Inserting data to a table through a select
statement.
• Syntax for SQL INSERT is:

INSERT INTO table_name


[(column1, column2, ... columnN)]
SELECT column1, column2, ...columnN
FROM table_name [WHERE condition];

• For Example: To insert a row into the


employee table from a temporary table,
the sql insert query would be like,

INSERT INTO employee (id, name, dept, age,


salary location) SELECT emp_id, emp_name,
dept, age, salary, location FROM
temp_employee;
Prepared By:M.P.Karnik 37
• If you are inserting data to all the
columns, the above insert statement can
also be written as,
INSERT INTO employee
SELECT * FROM temp_employee;

• When adding a new row, you should


ensure the data type of the value and the
column matches
• Follow the integrity constraints, if any,
defined for the table.
Prepared By:M.P.Karnik 38
SQL UPDATE-DML Statement
• The UPDATE Statement is used to modify the
existing rows in a table.
• Syntax:
UPDATE table_name
SET column_name1 = value1,
column_name2 = value2, ...
[WHERE condition]

• table_name - the table name which has to be


updated.
• column_name1, column_name2.. - the columns
that gets changed.
• value1, value2... - are the new values.

• In the Update statement, WHERE clause identifies


the rows that get affected. If you do not include
the WHERE clause, column values for all the rows
get affected. Prepared By:M.P.Karnik 39
Continue….

• For Example: To update the location of an


employee, the sql update query would be
like,
UPDATE employee
SET location =‘Pune'
WHERE id = 101;

• To change the salaries of all the employees,


the query would be,
UPDATE employee
SET salary = salary + (salary * 0.2);

Prepared By:M.P.Karnik 40
SQL Delete-DML Statement
• The DELETE Statement is used to delete rows from
a table.
• Syntax :
DELETE FROM table_name [WHERE condition];

• table_name -- the table name which has to be


updated.
• The WHERE clause in the sql delete command is
optional and it identifies the rows in the column
that gets deleted.
• If you do not include the WHERE clause all the
rows in the table is deleted, so be careful while
writing a DELETE query without WHERE clause.
• For Example: To delete an employee with id 100
from the employee table, the sql delete query
would be like,
DELETE FROM employee WHERE id = 100;
Prepared By:M.P.Karnik 41
SQL TRUNCATE Statement

• The SQL TRUNCATE command is used


to delete all the rows from the table
and free the space containing the table.
• Syntax
TRUNCATE TABLE table_name;
• For Example: To delete all the rows
from employee table, the query would
be like,
TRUNCATE TABLE employee;

Prepared By:M.P.Karnik 42
Difference between DELETE and TRUNCATE
Statements

• DELETE Statement: This command


deletes only the rows from the table
based on the condition given in the
where clause or deletes all the rows
from the table if no condition is
specified. But it does not free the space
containing the table.

• TRUNCATE statement: This command


is used to delete all the rows from the
table and free the space containing the
Prepared By:M.P.Karnik 43
SQL DROP-DDL Statement:

• The SQL DROP command is used to


remove an object from the database. If
you drop a table, all the rows in the
table is deleted and the table structure
is removed from the database.
• Syntax
DROP TABLE table_name;
• For Example: To drop the table
employee, the query would be like
DROP TABLE employee;
Prepared By:M.P.Karnik 44
Difference between DROP and TRUNCATE
Statement

• If a table is dropped, all the relationships with


other tables will no longer be valid, the integrity
constraints will be dropped, grant or access
privileges on the table will also be dropped.

• If we want to use the table again it has to be


recreated with the integrity constraints, access
privileges and the relationships with other tables
should be established again.

• But, if a table is truncated, the table structure


remains the same, therefore any of the above
problems will not exist.

Prepared By:M.P.Karnik 45
SQL ALTER TABLE-DDL Statement

• The SQL ALTER TABLE command is


used to modify the definition
(structure) of a table by modifying the
definition of its columns.
• The ALTER command is used to
perform the following functions.
1) Add, drop, modify table columns
2) Add and drop constraints
3) Enable and Disable constraints

Prepared By:M.P.Karnik 46
Continue….

• Syntax to add a column


ALTER TABLE table_name ADD column_name
datatype;
• For Example: To add a column "experience" to the
employee table, the query would be like
ALTER TABLE employee ADD experience number(3);

• Syntax to drop a column


ALTER TABLE table_name DROP column_name;
• For Example: To drop the column "location" from the
employee table, the query would be like
ALTER TABLE employee DROP location;

• Syntax to modify a column


ALTER TABLE table_name MODIFY column_name
datatype;
• For Example: To modify the column salary in the
employee table, the query would be like
ALTER TABLE employee MODIFY salary number(6);
Prepared By:M.P.Karnik 47
SQL RENAME Command
• The SQL RENAME command is used to
change the name of the table or a
database object.
• If you change the object's name any
reference to the old name will be affected.
You have to manually change the old
name to the new name in every reference.
• Syntax to rename a table
RENAME old_table_name To
new_table_name;

• For Example: To change the name of the


table employee to my_employee, the
query would be like
RENAME employee TO my_emloyee;
Prepared By:M.P.Karnik 48
Grant-DCL Statement
• DCL commands are used to enforce database
security in a multiple user database
environment. Two types of DCL commands are
GRANT and REVOKE. Only Database
Administrator's or owner's of the database
object can provide/remove privileges on a
database object.
• SQL GRANT Command
SQL GRANT is a command used to provide
access or privileges on the database objects to
the users.
• Syntax is:
GRANT privilege_name
ON object_name Prepared By:M.P.Karnik 49
Continue…

• privilege_name is the access right or


privilege granted to the user. Some of the
access rights are ALL, EXECUTE, and
SELECT.
• object_name is the name of an database
object like TABLE, VIEW, STORED PROC
and SEQUENCE.
• user_name is the name of the user to
whom an access right is being granted.
• PUBLIC is used to grant access rights to
all users.
• ROLES are a set of privileges grouped
together.
Prepared By:M.P.Karnik 50
• WITH GRANT OPTION - allows a user to
Example
GRANT SELECT ON employee TO user1;
• This command grants a SELECT permission
on employee table to user1.

• If you GRANT SELECT privilege on employee


table to user1 using the WITH GRANT option,
then user1 can GRANT SELECT privilege on
employee table to another user, such as
user2 etc.

• Later, we can REVOKE the SELECT privilege


on employee from user1, still user2 will
have SELECT privilege on employee table.
Prepared By:M.P.Karnik 51
Revoke –DCL Stateme nt

• The REVOKE command removes user access


rights or privileges to the database objects.

• Syntax :
REVOKE privilege_name
ON object_name
FROM {user_name |PUBLIC |role_name}

Prepared By:M.P.Karnik 52
Example
REVOKE SELECT ON employee FROM user1;
• This command will REVOKE a SELECT
privilege on employee table from user1.
• When you REVOKE SELECT privilege on a
table from a user, the user will not be able to
SELECT data from that table anymore.
• However, if the user has received SELECT
privileges on that table from more than one
users, he/she can SELECT from that table
until everyone who granted the permission
revokes it.
• You cannot REVOKE privileges if they were
not initially granted by you.
Prepared By:M.P.Karnik 53
Privileges and Roles
• Privileges: Privileges defines the access
rights provided to a user on a database
object. There are two types of privileges.
1) System privileges - This allows the user
to CREATE, ALTER, or DROP database objects.

2) Object privileges - This allows the user to


EXECUTE, SELECT, INSERT, UPDATE, or
DELETE data from database objects to which
the privileges apply.

Prepared By:M.P.Karnik 54
CREATE system privileges

System Privileges Description


allows users to create the
CREATE object specified object in their own
schema.
allows users to create the
CREATE ANY object specified object in any
schema.

Prepared By:M.P.Karnik 55
Object privileges
Object Privileges Description
allows users to insert rows
INSERT
into a table.
allows users to select data
SELECT
from a database object.
allows user to update data in a
UPDATE
table.
allows user to execute a
EXECUTE stored procedure or a
function.

Prepared By:M.P.Karnik 56
• Roles:
1) Roles are a collection of privileges or
access rights. When there are many users in
a database it becomes difficult to grant or
revoke privileges to users.
2) Therefore, if you define roles, you can
grant or revoke privileges to users, thereby
automatically granting or revoking
privileges. You can either create Roles or use
the system roles pre-defined by oracle.
Prepared By:M.P.Karnik 57
Some of the privileges granted

System Role Privileges Granted to the Role


CREATE TABLE, CREATE VIEW, CREATE
CONNECT SYNONYM, CREATE SEQUENCE,
CREATE SESSION etc.
CREATE PROCEDURE, CREATE
SEQUENCE, CREATE TABLE, CREATE
RESOURCE TRIGGER etc. The primary usage of the
RESOURCE role is to restrict access to
database objects.
DBA ALL SYSTEM PRIVILEGES

Prepared By:M.P.Karnik 58
Creating Roles
• Syntax :
CREATE ROLE role_name
[IDENTIFIED BY password];

• For example: To create a role called


"developer" with password as "pwd", the
code will be as follows :
CREATE ROLE developer
[IDENTIFIED BY pwd];

Prepared By:M.P.Karnik 59
• It's easier to GRANT or REVOKE privileges to the
users through a role rather than assigning a
privilege directly to every user.
• If a role is identified by a password, then, when
you GRANT or REVOKE privileges to the role,
you definitely have to identify it with the
password.
• We can GRANT or REVOKE privilege to a role as
below:
• For example: To grant CREATE TABLE privilege
to a user by creating a testing role:
• First, create a testing Role
CREATE ROLE testing
• Second, grant a CREATE TABLE privilege to the
ROLE testing. You can add more privileges to the
ROLE. Prepared By:M.P.Karnik 60
Continue….

• Third, grant the role to a user.


GRANT testing TO user1;
• To revoke a CREATE TABLE privilege from
testing ROLE, we can write:
REVOKE CREATE TABLE FROM
testing;
• The Syntax to drop a role from the
database is as below:
DROP ROLE role_name;
• For example: To drop a role called
developer, you can write:
DROP ROLE developer;
Prepared By:M.P.Karnik 61
Commit-TCL Statement

Commit:
Used to end the transaction & also make its
effect permanent to the database.

Deletes or removes the savepoint if any.

Syntax: commit; OR commit work;

Prepared By:M.P.Karnik 62
Rollback-TCL Statement
Rollback:
Used to undo work done in current
transaction.

Rollback entire transaction or till particular


transaction.

Syntax; rollback; OR rollback work;

Prepared By:M.P.Karnik 63
Save Point-TCL Statement
Savepoint:
Like marker which marks the lengthy
transactions
It is used with rollback to cancel effect till
particular savepoint
Syntax: savepoint savepointname;

Prepared By:M.P.Karnik 64
Database Objects
Object Description
Table Basic unit of storage; composed of rows and
columns
View Logically represents subsets of data from one
or more tables
Sequen Generates primary key value
ce
Index Improves the performance of some queries
Synony Alternative name for an object
m

Prepared By:M.P.Karnik 65
SQL Views
• A VIEW is a virtual table, through which a
selective portion of the data from one or more
tables can be seen.
• Views do not contain data of their own. They
are used to restrict access to the database or
to hide data complexity.
• A view is stored as a SELECT statement in the
database. DML operations on a view like
INSERT, UPDATE, DELETE affects the data in
the original table upon which the view is
based.

• The Syntax to create a sql view is


CREATE VIEW view_name
AS
SELECT column_list
FROM table_namePrepared
[WHERE By:M.P.Karnik condition]; 66
Continue….

• view_name is the name of the VIEW.


• The SELECT statement is used to define
the columns and rows that you want to
display in the view.
• For Example: to create a view on the
product table the sql query would be
like
• CREATE VIEW view_product
AS
SELECT product_id, product_name
FROM product; Prepared By:M.P.Karnik 67
• SQL Updating a View
• SQL CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
• Now we want to add the "Category" column to
the "Current Product List" view. We will
update the view with the following SQL:

• CREATE VIEW [Current Product List] AS


SELECT ProductID,ProductName,Category
FROM Products

Prepared By:M.P.Karnik 68
• SQL Dropping a View
• You can delete a view with the DROP
VIEW command.
• Syntax:
DROP VIEW view_name

Prepared By:M.P.Karnik 69
Syntax for MySQL
• The following SQL statement defines the "ID"
column to be an auto-increment primary key field
in the “Employee" table:

• CREATE TABLE Employee


(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)
Prepared By:M.P.Karnik 70
• MySQL uses the AUTO_INCREMENT keyword to
perform an auto-increment feature.

• By default, the starting value for AUTO_INCREMENT is


1, and it will increment by 1 for each new record.

• To let the AUTO_INCREMENT sequence start with


another value, use the following SQL statement:
ALTER TABLE Employee AUTO_INCREMENT=100

• To insert a new record into the "Persons" table, we


will NOT have to specify a value for the "ID" column (a
unique value will be added automatically):
INSERT INTO Employee (FirstName,LastName)
VALUES (‘abc',‘xyz') Prepared By:M.P.Karnik 71
SQL Index
• Index in sql is created on existing tables to retrieve
the rows quickly.
• When there are thousands of records in a table,
retrieving information will take a long time.
• Therefore indexes are created on columns which
are accessed frequently, so that the information can
be retrieved quickly.
• Indexes can be created on a single column or a
group of columns.
• When an index is created, it first sorts the data and
then it assigns a ROWID for each row.
• Syntax to create Index:
CREATE INDEX index_name
ON table_name (column_name1,column_name2...);
Prepared By:M.P.Karnik 72
• Syntax to create SQL unique Index:
CREATE UNIQUE INDEX index_name
ON table_name(column_name1);
index_name is the name of the INDEX.
• table_name is the name of the table to
which the indexed column belongs.
• column_name1 name of the column
on which index is created.
• In Oracle there are two types of SQL
index namely, implicit and explicit.

Prepared By:M.P.Karnik 73
Example

• The SQL statement below creates an index


named "PIndex" on the "LastName" column
in the "Persons" table:
CREATE INDEX PIndex
ON Persons (LastName)

• If you want to create an index on a


combination of columns, you can list the
column names within the parentheses,
separated by commas:
CREATE INDEX PIndex
ON Persons (LastName, FirstName)
Prepared By:M.P.Karnik 74
• Implicit Indexes:
✔ Implicit indexes are indexes that are
automatically created by the database
server when an object is created.

✔ Indexes are automatically created for


primary key constraints and unique
constraints.

Prepared By:M.P.Karnik 75
• Single-Column Indexes:
• A single-column index is one that is created based on only
one table column.
CREATE INDEX index_name ON table_name
(column_name);

• Unique Indexes:
• Unique indexes are used not only for performance, but
also for data integrity. A unique index does not allow any
duplicate values to be inserted into the table.
CREATE UNIQUE INDEX index_name ON table_name
(column_name);

• Composite Indexes:
• A composite index is an index on two or more columns of
a table.
CREATE INDEX index_name ON table_name (column1, 76
Prepared By:M.P.Karnik
• Explicit Indexes:
They are created using the "create index.. "
syntax.
1) Even though sql indexes are created to access
the rows in the table quickly, they slow down
DML operations like INSERT, UPDATE, DELETE
on the table, because the indexes and tables both
are updated along when a DML operation is
performed. So use indexes only on columns
which are used to search the table frequently.

2) It is not required to create indexes on table


which have less data.

3) In oracle database you can define up to


Prepared By:M.P.Karnik 77
When should indexes be avoided?
• Indexes should not be used on small
tables.

• Tables that have frequent, large batch


update or insert operations.

• Indexes should not be used on columns


that contain a high number of NULL
values.

• Columns that are frequently


Prepared By:M.P.Karnik 78
MySQL uses indexes for these
operations:
• To find the rows matching a WHERE
clause quickly.
• To retrieve rows from other tables when
performing joins.

Displaying INDEX Information:


• You can use SHOW INDEX from
table_name
command to list out all the indexes
associated with a table.
Prepared By:M.P.Karnik 79
DROP INDEX
• An index can be dropped using SQL
DROP command.
• Care should be taken when dropping
an index because performance may be
slowed or improved.
• The basic syntax is as follows:
DROP INDEX index_name;

Prepared By:M.P.Karnik 80
Synonyms
• We can simplify access to objects by creating a
synonym(another name for an object).
• Syntax:
CREATE [PUBLIC] SYNONYM synonym
FOR object;
Where,
PUBLIC: creates synonym accessible to all users
SYNONYM: It is the synonym to be created
object: identifies the object for which the synonym is
created.

• To refer to a table owned by another user, you


need to prefix the table name with the name of the
user who created it followed by a period.
• Creating a synonym eliminates the need to qualify
the object name with the schema and provides you
with an alternative name for a table,view,sequence,
Prepared By:M.P.Karnik 81
Creating synonym
• Create a shortened name for the
product_sum
Create SYNONYM p_sum
FOR product_sum

The database administrator can create a


public synonym accessible to all users.

Prepared By:M.P.Karnik 82
Removing Synonym
• To drop a synonym use the DROP
SYNONYM statement. Only the
database administrator can drop a
public synonym.

DROP PUBLIC SYNONYM p_sum;

Prepared By:M.P.Karnik 83
• Suppose the schemas hr and sh both
contain tables named customers.

• In the following example, user SYSTEM


creates a PUBLIC synonym named
customer1 for hr.customers:

CREATE PUBLIC SYNONYM customer1


FOR hr.customers;

Prepared By:M.P.Karnik 84
Group Functions
• SQL GROUP Functions
• Group functions are built-in SQL functions that operate on
groups of rows and return one value for the entire group.
These functions are: COUNT, MAX, MIN, AVG, SUM, DISTINCT

• SQL COUNT (): This function returns the number of rows in


the table that satisfies the condition specified in the WHERE
condition. If the WHERE condition is not specified, then the
query returns the total number of rows in the table.

• For Example: If you want the number of employees in a


particular department, the query would be:
SELECT COUNT (*) FROM employee
WHERE dept = 'Electronics';

The output would be '2' rows.


• If you want the total number of employees in all the
department, the query would take the form:
SELECT COUNT (*) FROM employee;
The output would be '5' rows.
Prepared By:M.P.Karnik 85
Continue…

• SQL DISTINCT(): This function is used to select the


distinct rows.

• For Example: If you want to select all distinct


department names from employee table, the query
would be:
SELECT DISTINCT dept FROM employee;

• To get the count of employees with unique name, the


query would be:
SELECT COUNT (DISTINCT name) FROM employee;

• SQL MAX(): This function is used to get the maximum


value from a column.

• To get the maximum salary drawn by an employee, the


query would be:
SELECT MAX (salary) FROM employee;
Prepared By:M.P.Karnik 86
Continue…
• SQL MIN(): This function is used to get the minimum
value from a column.
• To get the minimum salary drawn by an employee, the
query would be:

SELECT MIN (salary) FROM employee;

• SQL AVG(): This function is used to get the average


value of a numeric column.
• To get the average salary, the query would be

SELECT AVG (salary) FROM employee;

• SQL SUM(): This function is used to get the sum of a


numeric column
• To get the total salary given out to the employees,

SELECT SUM (salary) FROM employee;


Prepared By:M.P.Karnik 87
Group by clause
• To divide the rows in a table into groups
we can use Group By clause. Then we can
use the group functions to return
summary information for each group.
Syntax:
SELECT column,group_function(column)
FROM table
[WHERE condition]
[GROUP BY expression]

Expression specifies columns whose values


determine the basis for grouping rows
Prepared By:M.P.Karnik 88
Key points related to group by
clause
• If you include a group function in a SELECT clause ,
you cannot select individual results as well, unless
the individual column appears in the GROUP BY
clause.

• Using a WHERE clause, you can exclude rows before


dividing them into groups.

• You must include the columns in the GROUP BY


clause

• By default, rows are sorted by ascending order of the


columns included in the GROUP BY list. You can
Prepared By:M.P.Karnik 89
override this by using OREDER BY clause.
Group By clause
• The SQL GROUP BY Clause is used along with the
group functions to retrieve data grouped according
to one or more columns.
• For Example: Consider following table
Employee_i Job_id Salary Department_i
d d
100 ST_Clerk 20000 90
102 Manager 50000 60
103 Accountant 30000 70
104 Assistant 40000 10
105 ST_Clerk 20000 90
106 Assistant 40000 10

Prepared By:M.P.Karnik 90
Query
• If you want to know the total
amount of salary spent on
each department, the query
would be:

Prepared By:M.P.Karnik 91
Example
• SELECT Department_id, SUM (salary)
FROM employee
GROUP BY Department_id;

Deparment_i SUM(salary)
d
90 40000

60 50000
70 30000
10 80000
Prepared By:M.P.Karnik 92
• The group by clause should contain all
the columns in the select list except
those used along with the group
functions.

• SELECT Job_id, dept, SUM (salary)


FROM employee
GROUP BY Job_id, dept;

Prepared By:M.P.Karnik 93
Having Clause
• Having clause is used to filter data based on the
group functions. This is similar to WHERE condition
but is used with group functions.
• Group functions cannot be used in WHERE Clause
but can be used in HAVING clause.

• When WHERE, GROUP BY and HAVING clauses are


used together in a SELECT statement, the WHERE
clause is processed first, then the rows that are
returned after the WHERE clause is executed are
grouped based on the GROUP BY clause. Finally, any
conditions on the group functions in the HAVING
clause are applied to the grouped rows before the
final output is displayed
Prepared By:M.P.Karnik 94
Having clause
• Use the having clause to restrict groups:
• 1) Rows are grouped
• 2)The group function is applied
• 3) Groups matching the HAVING clause are
displayed.
• Syntax:
SELECT column, group_function
FROM table
[WHERE condition]
[GROUP BY expression]
[HAVING group condition]
[OREDER BY column];

group condition restricts the groups of rows returned


to those groups for which the specified condition is
Prepared By:M.P.Karnik 95
true.
Continue….

❖ The oracle server performs the following


steps when you use the HAVING clause:
• Rows are grouped.
• The group function is applied to the group
• The groups that match the criteria in the
HAVING clause are displayed.
❖ Groups are formed and group functions are
calculated before the HAVING clause is
applied to the groups in the SELECT list.

Prepared By:M.P.Karnik 96
Query
• If you want to select the
department that has total
salary paid for its employees
more than 35000.

Prepared By:M.P.Karnik 97
Example1
• SELECT Department_id, SUM (salary)
FROM employee
GROUP BY Department_id
HAVING SUM (salary) > 35000

Deparment_i SUM(salary)
d
90 40000

60 50000
10 80000

Prepared By:M.P.Karnik 98
Query
• Display the department id and
average salaries for those
departments whose maximum
salary is greater than 35000

Prepared By:M.P.Karnik 99
Example 2
• SELECT Department_id, AVG (salary)
FROM employee
GROUP BY Department_id
HAVING MAX(salary) > 35000

Prepared By:M.P.Karnik 100


Output

Employee_i Job_id Salary Department_i


d d
100 ST_Clerk 20000 90
102 Manager 50000 60
103 Accountant 30000 70
104 Assistant 40000 10
105 ST_Clerk 20000 90
106 Assistant 40000 10
Deparment_i SUM(salar Deparment_ AVG(salary)
d y) id
60 50000 60 50000
10 80000 10 40000

Prepared By:M.P.Karnik 101


Nesting Group functions

• Display maximum average salary


SELECT MAX(AVG(salary) )
FROM employee
GROUP BY Department_id
Deparment_ AVG(salary)
id
60 50000

Prepared By:M.P.Karnik 102


SQL ORDER BY
• The ORDER BY clause is used in a SELECT
statement to sort results either in ascending
or descending order. Oracle sorts query
results in ascending order by default.

• Syntax
• SELECT column-list
FROM table_name [WHERE condition]
[ORDER BY column1 [, column2, .. columnN]
[ASC|DESC]];

Prepared By:M.P.Karnik 103


Example
• If you want to sort the employee table by
salary of the employee, the sql query would
be.
• SELECT Employee_id, salary FROM
employee ORDER BY salary;
Employee_id Salary
100 20000
105 20000
103 30000
104 40000
106 40000
102 50000
Prepared By:M.P.Karnik 104
END

Prepared By:M.P.Karnik 105


Prepared By:M.P.Karnik 106
Prepared By:M.P.Karnik 107
Sequence
• A sequence-
-Automatically generates unique numbers
-Is typically used to create a primary key value
-Speeds up the efficiency of accessing
sequence values when cached in memory.

Prepared By:M.P.Karnik 108


• They are mainly used to create a primary
key value which must be unique for each
row.

• The sequence is generated and incremented


or decremented by an internal oracle
routine.

• This can be a time saving object because it


can reduce the amount of application code
needed to write a sequence-generating
routine.

• Sequence numbers are stored and generated109


Prepared By:M.P.Karnik
Creating Sequence
• A sequence is a database item that generates a
sequence of integers.
• Syntax of CREATE SEQUENCE statement:

CREATE SEQUENCE sequence_name


[START WITH start_n
[INCREMENT BY n]
[ { MAXVALUE maximum_n | NOMAXVALUE } ]
[ { MINVALUE minimum_n | NOMINVALUE } ]
[ { CYCLE | NOCYCLE } ]
[ { CACHE cache_n | NOCACHE } ]
[ { ORDER | NOORDER } ];

Prepared By:M.P.Karnik 110


❖ The minimum information required for
getting numbers using a sequence is:
• The starting number
• The maximum number that can be
generated by a sequence
• The increment value for generating the next
number.
• This information is provided to oracle at the
time of sequence creation.

Prepared By:M.P.Karnik 111


where
• The default start_n is 1.
• The default increment number is 1.
• The absolute value of n must be less than the
difference between maximum_n and minimum_n
• minimum_n must be less than or equal to start_n,
and minimum_n must be less than maximum_n.
• NOMINVALUE specifies the maximum is 1 for an
ascending sequence or -10^26 for a descending
sequence. NOMINVALUE is the default.
• maximum_n must be greater than or equal to
start_n, and maximum_n must be greater than
minimum_n.
• NOMAXVALUE specifies the maximum is 10^27 for
an ascending sequence or -1 for a descending
sequence. NOMAXVALUE is the default.
Prepared By:M.P.Karnik 112
• CYCLE specifies the sequence generates
integers even after reaching its maximum or
minimum value.
• When an ascending sequence reaches its
maximum value, the next value generated is
the minimum.
• When a descending sequence reaches its
minimum value, the next value generated is
the maximum.

• NOCYCLE specifies the sequence cannot


generate any more integers after reaching
its maximum or minimum value. NOCYCLE
is the default. Prepared By:M.P.Karnik 113
• CACHE cache_n specifies the number of
integers to keep in memory.

• The default number of integers to cache


is 20.

• NOCACHE specifies no integers are to be


stored.

• ORDER guarantees the integers are


generated in the order of the request.

• NOORDER doesn't guarantee the integers


are generated in the order of the request.
• NOORDER is the default.
Prepared By:M.P.Karnik 114
Example

• The following statement creates the sequence


customers_seq.This sequence could be used to
provide customer ID numbers when rows are
added to the customers table.
CREATE SEQUENCE customers_seq
START WITH 1000
INCREMENT BY 1
NOCACHE
NOCYCLE;
The first reference to customers_seq.nextval returns 1000.
The second returns 1001. Each subsequent reference
will return a value 1 greater than the previous
reference.
Prepared By:M.P.Karnik 115
Creating a sequence and then get the next value

• SQL> CREATE SEQUENCE test_seq;


Sequence created.
SQL> SELECT test_seq.nextval FROM DUAL;
NEXTVAL
----------
1
SQL> SELECT test_seq.nextval FROM DUAL;
NEXTVAL
----------
2
SQL> SELECT test_seq.nextval FROM DUAL;
NEXTVAL
----------
3
• SQL> DROP SEQUENCE test_seq;
Sequence dropped.
Prepared By:M.P.Karnik 116
Test sequence step

SQL> CREATE SEQUENCE test_seq


START WITH 10 INCREMENT BY 5
MINVALUE 10 MAXVALUE 20
CYCLE CACHE 2 ORDER;
Sequence created.

• SQL> SELECT test_seq.nextval FROM dual;


NEXTVAL
----------
10
SQL> SELECT test_seq.nextval FROM dual;
NEXTVAL
----------
15
SQL> SELECT test_seq.nextval FROM dual;
NEXTVAL
----------
20
SQL> SELECT test_seq.nextval FROM dual;
NEXTVAL
----------
10 Prepared By:M.P.Karnik 117
Referencing a sequence

• Once a sequence is created , SQL can be used


to view the values held in its cache.
• Use following SELECT statement to view
sequence value :
SELECT <SequenceName>.NextVal FROM
DUAL;
• This will display the next value held in the
cache . Every time nextval references a
sequence its output is automatically
incremented from the old value to the new
value ready for use.
• To reference the current value of a sequence:
Prepared By:M.P.Karnik 118
SELECT <SequenceName>.CurrVal FROM
Altering a sequence
• A sequence once created can be altered. This
is achieved by using the ALTER SEQUENCE
statement.
• Syntax:
ALTER SEQUENCE <sequence_name >
[ INCREMENT BY <Integer value>
MAXVALUE <IntegerValue/NOMAXVALUE ]
MINVALUE < Integervalue> /NO MINVALUE
CYCLE/NO CYCLE
CACHE <IntegerValue>/NO CACHE

Prepared By:M.P.Karnik 119


Example

• Modifying a Sequence: This statement sets a


new maximum value for the customers_seq
sequence,
ALTER SEQUENCE customers_seq
MAXVALUE 1500;

The following statement turns on CYCLE and


CACHE for the customers_seq sequence:

ALTER SEQUENCE customers_seq CYCLE CACHE


5;

Prepared By:M.P.Karnik 120


Dropping a sequence

• The DROP sequence is used to remove the


sequence from the database.
• Syntax:-
DROP SEQUENCE <SequenceName>;
• Example:
• The following statement drops the sequence
customers_seq.
DROP SEQUENCE customers_seq;

Prepared By:M.P.Karnik 121


Prepared By:M.P.Karnik 122
Prepared By:M.P.Karnik 123
Query
• Display the job_id and total monthly
salary for each job with a total payroll
exceeding 25000.

Prepared By:M.P.Karnik 124


Example 3
• SELECT Job_id, SUM (salary) PAYROLL
FROM employee
WHERE Job_id NOT LIKE ‘%tant%’
GROUP BY Job_id
HAVING SUM(salary) > 25000 ;

Job_id Payroll

ST_Clerk 40000

Manager 50000

Prepared By:M.P.Karnik 125

You might also like