Unit 2 DBMS
Unit 2 DBMS
E.F. Codd proposed the relational Model to model data in the form of relations or
tables.
The relational model uses a collection of tables to represent both data and the
relationships among those data. Each table has multiple columns, and each column has
a unique name. Tables are also known as relations.
The relational model is an example of a record-based model. Record-based models are
so named because the database is structured in fixed-format records of several types.
Each table contains records of a particular type. Each record type defines a fixed
number of fields, or attributes. The columns of the table correspond to the attributes of
the record type. The relational data model is the most widely used data model, and a
vast majority of current database systems are based on the relational model.
What is the Relational Model?
The relational model represents how data is stored in Relational Databases. A relational
database consists of a collection of tables, each of which is assigned a unique name.
Consider a relation STUDENT with attributes ROLL_NO, NAME, ADDRESS,
PHONE, and AGE shown in the table.
Important Terminologies
Attribute: Attributes are the properties that define an entity. e.g.; ROLL_NO,
NAME, ADDRESS
Relation Schema: A relation schema defines the structure of the relation and
represents the name of the relation with its attributes. e.g.; STUDENT
(ROLL_NO, NAME, ADDRESS, PHONE, and AGE) is the relation schema for
STUDENT. If a schema has more than 1 relation, it is called Relational Schema.
Tuple: Each row in the relation is known as a tuple. The above relation contains
4 tuples, one of which is shown as:
1. Domain constraints
Domain constraints can be defined as the definition of a valid set of values for an
attribute.
The data type of domain includes string, character, integer, time, date, currency, etc.
The value of the attribute must be available in the corresponding domain.
Example:
Example:
4. Key constraints
o Keys are the entity set that is used to identify an entity within its entity set
uniquely.
o An entity set can have multiple keys, but out of which one key will be the
primary key. A primary key can contain a unique and null value in the relational
table.
Example:
Relational Algebra
For the above relation, σ(c>3)R will select the tuples which have c more than 3.
Note: The selection operator only selects the required tuples but does not display them.
For display, the data projection operator is used.
2. Projection(π): It is used to project required column data from a relation.
Example: Consider Table 1. Suppose we want columns B and C from Relation R.
π(B,C)R will show following columns.
GERMAN
Consider the following table of Students having different optional subjects in their
course.
π(Student_Name)FRENCH U π(Student_Name)GERMAN
Note: The only constraint in the union of two relations is that both relations must have
the same set of Attributes.
4. Set Difference(-): Set Difference in relational algebra is the same set difference
operation as in set theory.
Example: From the above table of FRENCH and GERMAN, Set Difference is used as
follows
π(Student_Name)FRENCH - π(Student_Name)GERMAN
Note: The only constraint in the Set Difference between two relations is that both
relations must have the same set of Attributes.
5. Set Intersection(∩): Set Intersection in relational algebra is the same set intersection
operation in set theory.
Example: From the above table of FRENCH and GERMAN, the Set Intersection is
used as follows
π(Student_Name)FRENCH ∩ π(Student_Name)GERMAN
Note: The only constraint in the Set Difference between two relations is that both
relations must have the same set of Attributes.
6. Rename(ρ): Rename is a unary operation used for renaming attributes of a relation.
ρ(a/b)R will rename the attribute 'b' of the relation by 'a'.
7. Cross Product(X): Cross-product between two relations. Let’s say A and B, so the
cross product between A X B will result in all the attributes of A followed by each
attribute of B. Each record of A will pair with every record of B.
Example:
A
AXB
Note: If A has ‘n’ tuples and B has ‘m’ tuples then A X B will have ‘ n*m ‘ tuples.
Derived Operators
These are some of the derived operators, which are derived from the fundamental
operators.
Natural Join(⋈)
Conditional Join
1. Natural Join(⋈): Natural join is a binary operator. Natural join between two or more
relations will result in a set of all combinations of tuples where they have an equal
common attribute.
Example:
EMP
DEPT
EMP ⋈ DEPT
EMP.Dept_Name = DEPT.Dept_Name
2. Conditional Join: Conditional join works similarly to natural join. In natural join, by
default condition is equal between common attributes while in conditional join we can
specify any condition such as greater than, less than, or not equal.
Example:
R
Instructor Relation
Projection Operation
The Set-Difference Operation
which means that in a given set of tuples exactly all tuples satisfy a given
all which means that in a given set of tuples there is at least one occurrences
whose value satisfy a given condition.
Before using the concept of quantifiers in formulas, we need to know the concept of
Free and Bound Variables.
A tuple variable t is bound if it is quantified which means that if it appears in any
occurrences a variable that is not bound is said to be free.
Free and bound variables may be compared with global and local variable of
programming languages.
Types of Relational calculus:
Output: This query will yield the same result as the previous one.
2. Domain Relational Calculus (DRC)
The second form of relation is known as Domain relational calculus. In domain
calculus uses the same operators as tuple calculus. It uses logical connectives ∧ (and),
relational calculus, filtering variable uses the domain of attributes. Domain relational
∨ (or) and ┓ (not). It uses Existential (∃) and Universal Quantifiers (∀) to bind the
variable. The QBE or Query by example is a query language related to domain
relational calculus.
Notation:
1. { a1, a2, a3, ..., an | P (a1, a2, a3, ... ,an)}
Where
a1, a2 are attributes
P stands for formula built by inner attributes
Output: This query will yield the article, page, and subject from the relational
javatpoint, where the subject is a database.
Relational calculus is a non-procedural query language, and instead of algebra, it uses
mathematical predicate calculus. The relational calculus is not the same as that of
differential and integral calculus in mathematics but takes its name from a branch of
symbolic logic termed as predicate calculus. When applied to databases, it is found in
two forms. These are
Tuple relational calculus which was originally proposed by Codd in the year
1972 and
Domain relational calculus which was proposed by Lacroix and Pirotte in the
year 1977
In first-order logic or predicate calculus, a predicate is a truth-valued function with
arguments. When we replace with values for the arguments, the function yields an
expression, called a proposition, which will be either true or false.
For example, steps involved in listing all the employees who attend the 'Networking'
Course would be:
SELECT the tuples from COURSE relation with COURSENAME = 'NETWORKING'
PROJECT the COURSE_ID from above result
SELECT the tuples from EMP relation with COURSE_ID resulted above.
In this chapter, you will learn about the relational calculus and its concept about the
database management system. A certain arrangement is explicitly stated in relational
algebra expression, and a plan for assessing the query is implied. In the relational
calculus, there is no description and depiction of how to assess a query; Instead, a
relational calculus query focuses on what is to retrieve rather than how to retrieve it.
What is Relational Calculus?
Relational calculus is a non-procedural query language, and instead of algebra, it uses
mathematical predicate calculus. The relational calculus is not the same as that of
differential and integral calculus in mathematics but takes its name from a branch of
symbolic logic termed as predicate calculus. When applied to databases, it is found in
two forms. These are
Tuple relational calculus which was originally proposed by Codd in the year
1972 and
Domain relational calculus which was proposed by Lacroix and Pirotte in the
year 1977
In first-order logic or predicate calculus, a predicate is a truth-valued function with
arguments. When we replace with values for the arguments, the function yields an
expression, called a proposition, which will be either true or false.
Example:
For example, steps involved in listing all the employees who attend the 'Networking'
Course would be:
SELECT the tuples from COURSE relation with COURSENAME = 'NETWORKING'
PROJECT the COURSE_ID from above result
SELECT the tuples from EMP relation with COURSE_ID resulted above.
Introduction to SQL
o
SQL stands for Structured Query Language. It is used for storing and managing
data in relational database management system (RDMS). In RDBMS data stored
in the form of the tables.
o It is a standard language for Relational Database System. It enables a user to
create, read, update and delete relational databases and tables.
o All the RDBMS like MySQL, Informix, Oracle, MS Access and SQL Server
use SQL as their standard database language.
o SQL allows users to query the database in a number of ways, using English-like
statements.
o SQL is mostly used by engineers in software development for data storage.
Nowadays, it is also used by data analyst for following reason:
SQL Statement Rules:
SQL follows the following rules:
o Structure query language is not case sensitive. Generally, keywords of SQL are
written in uppercase.
o Every SQL statements should ends with a semicolon.
o Statements of SQL are dependent on text lines. We can use a single SQL
statement on one or multiple text line.
o Using the SQL statements, you can perform most of the actions in a database.
o SQL depends on tuple relational calculus and relational algebra.
How does SQL process works:
o When an SQL command is executing for any RDBMS, then the system figure
out the best way to carry out the request and the SQL engine determines that
how to interpret the task.
o In the process, various components are included. These components can be
optimization Engine, Query engine, Query dispatcher, classic, etc.
o All the non-SQL queries are handled by the classic query engine, but SQL
query engine won't handle logical files.
Characteristics of SQL
1. Binary Datatypes
There are Three types of binary Datatypes which are given below:
Data Type Description
binary It has a maximum length of 8000 bytes. It contains fixed-length binary data.
varbinary It has a maximum length of 8000 bytes. It contains variable-length binary data.
image It has a maximum length of 2,147,483,647 bytes. It contains variable-length binary data.
2. Approximate Numeric Datatype :
The subtypes are given below:
Data type From To Description
timestamp It stores the year, month, day, hour, minute, and the second value.
SQL Commands
o SQL commands are instructions. It is used to communicate with the database. It
is also used to perform specific tasks, functions, and queries of data.
o SQL can perform various tasks like create a table, add data to tables, drop the
table, modify the table, set permission for users.
Types of SQL Commands
There are four types of SQL commands: DDL, DML, DCL, TCL.
Following are the list of modifications that can be done using ALTER command.
o With the use of ALTER commands we can add or drop one or more columns
form existing tables.
o Increase or decrease the existing column width by changing the data type
o Make an existing mandatory column to optional.
o Enable or disable the integrity constraints in a table. We can also add, modify or
delete the integrity constraints from a table.
o We can also specify a default value for existing column in a table.
Adding new columns in Table:
With the use of ALTER table command we can add new columns existing table.
Syntax: To add a new column in the table
1. ALTER TABLE table_name ADD column_name column-definition;
In the above syntax, where table_name corresponds to the name of the table, column-
definition corresponds to the valid specifications for a column name and data type.
EXAMPLE:
1. ALTER TABLE STU_DETAILS ADD (ADHAR_NUM VARCHAR2 (15));
Syntax: To ADD a multiple column from a table.
ALTER TABLE table_name ADD column_name1, column_name2;
Example:
1. ALTER TABLE STU_DETAILS ADD ADHAR_NUM, NAME;
Adding constraints in a Table:
You can also add constraints to an existing table. For example: If you forget to add a
primary key constraint to a table during creation, you can add it using the ALTER
TABLE statement.
Syntax: To ADD a constraint from a table.
1. ALTER TABLE table_name ADD (column_name column-definition CONSTRAINT c
onstraint_name);
Example:
1. ALTER TABLE STU_DETAILS ADD (CONSTRAINT PK_STU_DETAILS PRIMA
RY KEY (STU_ID);
Following points should be kept in mind while adding new columns/relationships
to existing tables.
o No need for parentheses if you add only one column or constraints.
o You can add a column at any time if NULL is not specified. You can add a new
column with NOT NULL if the table is empty.
Syntax:
1. Rename <OLD_TABLENAME> to <NEW_TABLENAME>;
In the above syntax, Rename is a command, <OLD_TABLENAME> is the name of the
table and <NEW_TABLENAME> is the name that you have changed.
Example:
1. Rename STU_NAME to STUDENT_NAME;
2. Data Manipulation Language
o DML commands are used to modify the database. It is responsible for all form
of changes in the database.
o The command of DML is not auto-committed that means it can't permanently
save all the changes in the database. They can be rollback.
Following are the some commands that come under DML:
a. INSERT: The INSERT statement is a SQL query. It is used to insert data into the
row of a table. To insert a new row into a table you must be your on schema or
INSERT privilege on the table.
Following are the list of points should be considered while inserting the data into
tables.
o SQL uses all the columns by default if you do not specify the column name
while inserting a row.
o The number of columns in the list of column name must match the number of
values that appear in parenthesis after the word "values".
o The data type for a column and its corresponding value must match.
Syntax: To add row in a table
1. INSERT INTO TABLE_NAME
2. (col1, col2, col3,.... col N)
3. VALUES (value1, value2, value3, .... valueN);
Or
1. INSERT INTO TABLE_NAME
2. VALUES (value1, value2, value3, .... valueN);
In the above syntax, TABLE_NAME is the name of the table in which the data will be
inserted. The (col1, col2, col3, col N) are optional and name of the columns in which
values will be inserted. The value1 corresponds to the value of be inserted in col1 and
similarly value2 corresponds to the value of be inserted in col2 and so on.
For example:
1. INSERT INTO javatpoint (Author, Subject) VALUES ("Sonoo", "DBMS");
Syntax: To add multiple rows in a table
1. INSERT INTO TABLE_NAME
2. (col1, col2, col3,.... col N)
3. VALUES (value1, value2, value3, .... valueN), (value1, value2, value3, .... valueN);
For example:
1. INSERT INTO javatpoint (Author, Subject) VALUES ("Sonoo", "DBMS"), ("Raman",
"DBMS"), ("Priya", "DBMS");
b. UPDATE: This command is used to update or modify the value of a column in the
table.
Syntax: To update record in a table
1. UPDATE table_name SET [column_name1= value1,...column_nameN = valueN] [WH
ERE CONDITION]
In the above syntax, table_name is the name of the table, the column_name is the name
of column in the table to be modified, and value1 corresponds to the valid SQL values.
The "WHERE" is a condition that restricts the rows updated for which the specified
condition is true. If condition is not specified is not defined then SQL updates all the
rows in the table. It contains comparison and logical operators etc.
The following the list of points should be remembered while executing the
UPDATE statement.
o It references only one table.
o In the SET clause atleast one column must be assigned an expression for the
update statement,
o In the where clause you could also give multiple conditions for update
statement.
For example:
1. UPDATE students
2. SET User_Name = 'Sonoo'
3. WHERE Student_Id = '3'
c. DELETE: It is used to remove one or more row from a table. To delete rows from
the table, it must be in your schema or you must have delete privilege.
Syntax: To Delete a record from table
1. DELETE FROM table_name [WHERE condition];
In the above syntax, condition is used in the where clause to filter the records that are
actually being removed. You can remove zero or more rows from a table. If you do not
use where condition then DELETE statement will remove all the rows from the table.
You can also use one or multiple conditions in WHERE clause.
For example:
1. DELETE FROM javatpoint
2. WHERE Author="Sonoo";
d. SELECT: This is the same as the projection operation of relational algebra. It is
used to select the attribute based on the condition described by WHERE clause.
Syntax: It is used for retrieve the records from table
1. SELECT expressions
2. FROM TABLES
3. WHERE conditions;
For example:
1. SELECT emp_name
2. FROM employee
3. WHERE age > 20;
3. Data Control Language
DCL commands are used to grant and take back authority from any database user.
Following are the some commands that come under DCL:
Syntax:
1. GRANT <obj_priv> ON <obj_name> To <username>;
In the above syntax, obj_priv> is the DML statement like Insert, Delete , update and
Select and <obj_name> is a table, view etc. and username is the name of the authorized
user.
Example
1. GRANT SELECT, UPDATE ON MY_TABLE TO SOME_USER, ANOTHER_USER
;
b. Revoke: It is used to take back permissions from the user.
Syntax:
1. REVOKE <obj_priv> ON <obj_name> FROM <username>;
In the above syntax, obj_priv> is the DML statement like Insert, Delete , update and
Select and <obj_name> is a table, view etc. and username is the name of the user from
whom the permission is revoked.
Example
1. REVOKE SELECT, UPDATE ON MY_TABLE FROM USER1, USER2;
4. Transaction Control Language
Transactions are atomic i.e. either every statement succeeds or none of statement
succeeds. There are number of Transaction Control statements available that allow us to
control this behavior. These statements ensure data consistency. TCL commands can
only use with DML commands like INSERT, DELETE and UPDATE only.
These operations are automatically committed in the database that's why they cannot be
used while creating tables or dropping them.
Following are the some commands that come under TCL:
a. Commit: Commit command is used to save all the transactions to the database. It
makes your changes permanent and ends the transaction.
Syntax: To permanently save the changes
1. COMMIT;
Example:
1. DELETE FROM CUSTOMERS
2. WHERE AGE = 25;
3. COMMIT;
b. Rollback: Rollback command is used to undo transactions that have not already
been saved to the database. Rollback also serves to end the current transaction and
begin a new one.
Consider a Situation where you have completed a series of INSERT, UPDATE or
DELETE statements but have not yet explicitly committed them and yiu encounter a
problem such as computer failure, then SQL will automatically rollback any
uncommitted work.
Syntax: To remove the changes
1. ROLLBACK;
Example:
1. DELETE FROM CUSTOMERS
2. WHERE AGE = 25;
3. ROLLBACK;
c. SAVEPOINT: It is used to roll the transaction back to a certain point without rolling
back the entire transaction.
Syntax:
1. SAVEPOINT SAVEPOINT_NAME;
In the above syntax, SAVEPOINT_NAME is the name given to savepoint.
To selectively ROLLBACK a group of statements within a large transaction use the
following command is used.
1. Rollback TO <save_point_name>
Example:
1. DELETE FROM CUSTOMERS WHERE AGE = 15;
2. SAVEPOINT A;
3. DELETE FROM CUSTOMERS WHERE AGE = 35;
4. ROLLBCAK TO A;
Multiple Choice Questions on SQL commands:
1. Which command is used to display the records in a table?
1. Create table tablename;
2. Delete from tablename;
3. Select * from tablename;
4. Rename table tablename;
Show Answer Workspace
2. What does the following statement perform in a table?
Update student set name = "meet" where roll_no =101;
1. It will not update the name in student table.
2. It will update all the values of name column.
3. It will update the value of name column with "meet".
4. It will update the value of name column with "meet" where roll_no =101.
Show Answer Workspace
3. Which of the following is not a Transaction Control Language in a SQL?
1. Delete
2. Save point
3. Commit
4. Rollback
Show Answer Workspace
4. Which command is used to add a column in existing table?
1. Alter table table_name ADD column_name data-type;
2. Alter table table_name column_name data-type;
3. Alter table table_name ADD;
4. Alter table ADD column_name data-type;
!> It checks if the left operand value is not greater (a!>b) is true
than the right operand value, if yes then condition
becomes true.
SQL Logical Operators
There is the list of logical operator used in SQL:
Operator Description
BETWEEN It is used to search for values that are within a set of values.
SQL Table
o SQL Table is a collection of data which is organized in terms of rows and
columns. In DBMS, the table is known as relation and row as a tuple.
o Table is a simple form of data storage. A table is also considered as a
convenient representation of relations.
Drop table
A SQL drop table is used to delete a table definition and all the data from a table. When
this command is executed, all the information available in the table is lost forever, so
you have to very careful while using this command.
Syntax
1. DROP TABLE "table_name";
Firstly, you need to verify the EMPLOYEE table using the following command:
1. SQL> DESC EMPLOYEE;
EMPLOYEE
EMP_ID EMP_NAME CITY PHONE_NO SALARY
Output
EMP_ID
1
5
To fetch the EMP_NAME and SALARY, use the following query:
EMP_NAME SALARY
Kristen 150000
Russell 200000
Angelina 600000
Robert 350000
Christian 260000
To fetch all the fields from the EMPLOYEE table, use the following query:
1. SELECT * FROM EMPLOYEE
Output
EMP_ID EMP_NAME CITY PHONE_NO SALARY
Sample Table
EMPLOYEE
EMP_ID EMP_NAME CITY SALARY AGE
Query
1. INSERT INTO EMPLOYEE (EMP_ID, EMP_NAME, AGE) VALUES (7, 'Jack', 40);
Output: After executing this query, the table will look like:
EMP_ID EMP_NAME CITY SALARY AGE
1 Stephan Delhi
2 Kathrin Noida
3 David Ghaziabad
4 Alina Gurugram
Student_Marks
STU_ID NAME MARKS AGE
1 Stephan 97 19
2 Kathrin 86 21
3 David 74 18
4 Alina 90 20
5 John 96 18
1. Creating view
A view can be created using the CREATE VIEW statement. We can create a view
from a single table or multiple tables.
Syntax:
1. CREATE VIEW view_name AS
2. SELECT column1, column2.....
3. FROM table_name
4. WHERE condition;
2. Creating View from a single table
In this example, we create a View named DetailsView from the table Student_Detail.
Query:
1. CREATE VIEW DetailsView AS
2. SELECT NAME, ADDRESS
3. FROM Student_Details
4. WHERE STU_ID < 4;
Just like table query, we can query the view to view the data.
1. SELECT * FROM DetailsView;
Output:
NAME ADDRESS
Stephan Delhi
Kathrin Noida
David Ghaziabad
3. Creating View from multiple tables
View from multiple tables can be created by simply include multiple tables in the
SELECT statement.
In the given example, a view is created named MarksView from two tables
Student_Detail and Student_Marks.
Query:
1. CREATE VIEW MarksView AS
2. SELECT Student_Detail.NAME, Student_Detail.ADDRESS, Student_Marks.MARKS
Stephan Delhi 97
Kathrin Noida 86
David Ghaziabad 74
Alina Gurugram 90
4. Deleting View
A view can be deleted using the Drop View statement.
Syntax
1. DROP VIEW view_name;
Example:
If we want to delete the View MarksView, we can do this as:
1. DROP VIEW MarksView;
Significance of Views:
Views are highly significant, as they can provide advantages over tasks. Views can
represent a subset of data contained in a table. Consequently they can limit the degree
of exposure of the underlying base table to the outer world. They are used for security
purpose in database and act as an intermediate between real table schemas and
programmability. They act as aggregate tables.
Types of Views:
There are two types of views.
1. Join View: A join view is a view that has more than one table or view in its
from clause and it does not use any Group by Clause, Rownum, Distinct and set
operation.
2. Inline View: An inline view is a view which is created by replacing a subquery
in the from clause which defines the data source that can be referenced in the
main query. The sub query must be given an alias for efficient working.
SQL Index
o Indexes are special lookup tables. It is used to retrieve data from the database
very fast.
o An Index is used to speed up select queries and where clauses. But it shows
down the data input with insert and update statements. Indexes can be created or
dropped without affecting the data.
o An index in a database is just like an index in the back of a book.
o For example: When you reference all pages in a book that discusses a certain
topic, you first have to refer to the index, which alphabetically lists all the topics
and then referred to one or more specific page numbers.
1. Create Index statement
It is used to create an index on a table. It allows duplicate value.
Syntax
1. CREATE INDEX index_name
2. ON table_name (column1, column2, ...);
Example
1. CREATE INDEX idx_name
2. ON Persons (LastName, FirstName);
2. Unique Index statement
It is used to create a unique index on a table. It does not allow duplicate value.
Syntax
1. CREATE UNIQUE INDEX index_name
2. ON table_name (column1, column2, ...);
Example
1. CREATE UNIQUE INDEX websites_idx
2. ON websites (site_name);
3. Drop Index Statement
It is used to delete an index in a table.
Syntax
1. DROP INDEX index_name;
Example
1. DROP INDEX websites_idx;
SQL Sub Query
A Subquery is a query within another SQL query and embedded within the WHERE
clause.
Important Rule:
o A subquery can be placed in a number of SQL clauses like WHERE clause,
FROM clause, HAVING clause.
o You can use Subquery with SELECT, UPDATE, INSERT, DELETE statements
along with the operators like =, <, >, >=, <=, IN, BETWEEN, etc.
o A subquery is a query within another query. The outer query is known as the
main query, and the inner query is known as a subquery.
o Subqueries are on the right side of the comparison operator.
o A subquery is enclosed in parentheses.
o In the Subquery, ORDER BY command cannot be used. But GROUP BY
command can be used to perform the same function as ORDER BY command.
1. Subqueries with the Select Statement
SQL subqueries are most frequently used with the Select statement.
Syntax
1. SELECT column_name
2. FROM table_name
3. WHERE column_name expression operator
4. ( SELECT column_name from table_name WHERE ... );
Example
Consider the EMPLOYEE table have the following records:
ID NAME AGE ADDRESS SALARY
1 John 20 US 2000.00
4 Alina 29 UK 6500.00
4 Alina 29 UK 6500.00
1 John 20 US
2 Stephan 26 Dubai
3 David 27 Bangkok
4 Alina 29 UK
5 Kathrin 34 Bangalore
6 Harry 42 China
7 Jackson 25 Mizoram
4. Subqueries with the DELETE Statement
The subquery of SQL can be used in conjunction with the Delete statement just like any
other statements mentioned above.
Syntax
1. DELETE FROM TABLE_NAME
2. WHERE VALUE OPERATOR
3. (SELECT COLUMN_NAME
4. FROM TABLE_NAME
5. WHERE condition);
Example
Let's assume we have an EMPLOYEE_BKP table available which is backup of
EMPLOYEE table. The given example deletes the records from the EMPLOYEE table
for all EMPLOYEE whose AGE is greater than or equal to 29.
1. DELETE FROM EMPLOYEE
2. WHERE AGE IN (SELECT AGE FROM EMPLOYEE_BKP
3. WHERE AGE >= 29 );
This would impact three rows, and finally, the EMPLOYEE table would have the
following records.
ID NAME AGE ADDRESS SALARY
1 John 20 US 2000.00
SQL Clauses
The following are the various SQL clauses:
1. GROUP BY
o SQL GROUP BY statement is used to arrange identical data into groups. The
GROUP BY statement is used with the SQL SELECT statement.
o The GROUP BY statement follows the WHERE clause in a SELECT statement
and precedes the ORDER BY clause.
o The GROUP BY statement is used with aggregation function.
Syntax
1. SELECT column
2. FROM table_name
3. WHERE conditions
4. GROUP BY column
5. ORDER BY column
Sample table:
PRODUCT_MAST
PRODUCT COMPANY QTY RATE COST
Item1 Com1 2 10 20
Item2 Com2 3 25 75
Item3 Com1 2 30 60
Item4 Com3 5 10 50
Item5 Com2 2 20 40
Item6 Cpm1 3 25 75
Item7 Com1 5 30 150
Item8 Com1 3 10 30
Item9 Com2 2 25 50
Com1 5
Com2 3
Com3 2
2. HAVING
o HAVING clause is used to specify a search condition for a group or an
aggregate.
o Having is used in a GROUP BY clause. If you are not using GROUP BY clause
then you can use HAVING function like a WHERE clause.
Syntax:
1. SELECT column1, column2
2. FROM table_name
3. WHERE conditions
4. GROUP BY column1, column2
5. HAVING conditions
6. ORDER BY column1, column2;
Example:
1. SELECT COMPANY, COUNT(*)
2. FROM PRODUCT_MAST
3. GROUP BY COMPANY
4. HAVING COUNT(*)>2;
Output:
Com1 5
Com2 3
3. ORDER BY
o The ORDER BY clause sorts the result-set in ascending or descending order.
o It sorts the records in ascending order by default. DESC keyword is used to sort
the records in descending order.
Syntax:
1. SELECT column1, column2
2. FROM table_name
3. WHERE condition
4. ORDER BY column1, column2... ASC|DESC;
Where
ASC: It is used to sort the result set in ascending order by expression.
DESC: It sorts the result set in descending order by expression.
Example: Sorting Results in Ascending Order
Table:
CUSTOMER
CUSTOMER_ID NAME ADDRESS
12 Kathrin US
23 David Bangkok
34 Alina Dubai
45 John UK
56 Harry US
Enter the following SQL statement:
1. SELECT *
2. FROM CUSTOMER
3. ORDER BY NAME;
Output:
CUSTOMER_ID NAME ADDRESS
34 Alina Dubai
23 David Bangkok
56 Harry US
45 John UK
12 Kathrin US
Example: Sorting Results in Descending Order
Using the above CUSTOMER table
1. SELECT *
2. FROM CUSTOMER
3. ORDER BY NAME DESC;
Output:
CUSTOMER_ID NAME ADDRESS
12 Kathrin US
45 John UK
56 Harry US
23 David Bangkok
34 Alina Dubai
SQL Aggregate Functions
o SQL aggregation function is used to perform the calculations on multiple rows
of a single column of a table. It returns a single value.
o It is also used to summarize the data.
Types of SQL Aggregation Function
1. COUNT FUNCTION
o COUNT function is used to Count the number of rows in a database table. It can
work on both numeric and non-numeric data types.
o COUNT function uses the COUNT(*) that returns the count of all the rows in a
specified table. COUNT(*) considers duplicate and Null.
Syntax
1. COUNT(*)
2. or
3. COUNT( [ALL|DISTINCT] expression )
Sample table:
PRODUCT_MAST
PRODUCT COMPANY QTY RATE COST
Item1 Com1 2 10 20
Item2 Com2 3 25 75
Item3 Com1 2 30 60
Item4 Com3 5 10 50
Item5 Com2 2 20 40
Item6 Cpm1 3 25 75
Item8 Com1 3 10 30
Item9 Com2 2 25 50
10
Output:
Com1 5
Com2 3
Com3 2
Com1 5
Com2 3
2. SUM Function
Sum function is used to calculate the sum of all selected columns. It works on numeric
fields only.
Syntax
1. SUM()
2. or
3. SUM( [ALL|DISTINCT] expression )
Example: SUM()
1. SELECT SUM(COST)
2. FROM PRODUCT_MAST;
Output:
670
320
Com1 150
Com2 170
Com1 335
Com3 170
3. AVG function
The AVG function is used to calculate the average value of the numeric type. AVG
function returns the average of all non-Null values.
Syntax
1. AVG()
2. or
3. AVG( [ALL|DISTINCT] expression )
Example:
1. SELECT AVG(COST)
2. FROM PRODUCT_MAST;
Output:
67.00
4. MAX Function
MAX function is used to find the maximum value of a certain column. This function
determines the largest value of all selected values of a column.
Syntax
1. MAX()
2. or
3. MAX( [ALL|DISTINCT] expression )
Example:
1. SELECT MAX(RATE)
2. FROM PRODUCT_MAST;
30
5. MIN Function
MIN function is used to find the minimum value of a certain column. This function
determines the smallest value of all selected values of a column.
Syntax
1. MIN()
2. or
3. MIN( [ALL|DISTINCT] expression )
Example:
1. SELECT MIN(RATE)
2. FROM PRODUCT_MAST;
Output:
10
SQL JOIN
As the name shows, JOIN means to combine something. In case of SQL, JOIN means
"to combine two or more tables".
In SQL, JOIN clause is used to combine the records from two or more tables in a
database.
Types of SQL JOIN
1. INNER JOIN
2. LEFT JOIN
3. RIGHT JOIN
4. FULL JOIN
Sample Table
EMPLOYEE
EMP_ID EMP_NAME CITY SALARY AGE
101 1 Testing
102 2 Development
103 3 Designing
104 4 Development
1. INNER JOIN
In SQL, INNER JOIN selects records that have matching values in both tables as long
as the condition is satisfied. It returns the combination of all rows from both the tables
where the condition satisfies.
Syntax
1. SELECT table1.column1, table1.column2, table2.column1,....
2. FROM table1
3. INNER JOIN table2
4. ON table1.matching_column = table2.matching_column;
Query
1. SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT
2. FROM EMPLOYEE
3. INNER JOIN PROJECT
4. ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;
Output
EMP_NAME DEPARTMENT
Angelina Testing
Robert Development
Christian Designing
Kristen Development
2. LEFT JOIN
The SQL left join returns all the values from left table and the matching values from the
right table. If there is no matching join value, it will return NULL.
Syntax
1. SELECT table1.column1, table1.column2, table2.column1,....
2. FROM table1
3. LEFT JOIN table2
4. ON table1.matching_column = table2.matching_column;
Query
1. SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT
2. FROM EMPLOYEE
3. LEFT JOIN PROJECT
4. ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;
Output
EMP_NAME DEPARTMENT
Angelina Testing
Robert Development
Christian Designing
Kristen Development
Russell NULL
Marry NULL
3. RIGHT JOIN
In SQL, RIGHT JOIN returns all the values from the values from the rows of right table
and the matched values from the left table. If there is no matching in both tables, it will
return NULL.
Syntax
1. SELECT table1.column1, table1.column2, table2.column1,....
2. FROM table1
3. RIGHT JOIN table2
4. ON table1.matching_column = table2.matching_column;
Query
1. SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT
2. FROM EMPLOYEE
3. RIGHT JOIN PROJECT
4. ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;
Output
EMP_NAME DEPARTMENT
Angelina Testing
Robert Development
Christian Designing
Kristen Development
4. FULL JOIN
In SQL, FULL JOIN is the result of a combination of both left and right outer join. Join
tables have all the records from both tables. It puts NULL on the place of matches not
found.
Syntax
1. SELECT table1.column1, table1.column2, table2.column1,....
2. FROM table1
3. FULL JOIN table2
4. ON table1.matching_column = table2.matching_column;
Query
1. SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT
2. FROM EMPLOYEE
3. FULL JOIN PROJECT
4. ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;
Output
EMP_NAME DEPARTMENT
Angelina Testing
Robert Development
Christian Designing
Kristen Development
Russell NULL
Marry NULL
SQL Set Operation
The SQL Set operation is used to combine the two or more SQL SELECT statements.
Types of Set Operation
1. Union
2. UnionAll
3. Intersect
4. Minus
1. Union
o The SQL Union operation is used to combine the result of two or more SQL
SELECT queries.
o In the union operation, all the number of datatype and columns must be same in
both the tables on which UNION operation is being applied.
o The union operation eliminates the duplicate rows from its resultset.
Syntax
1. SELECT column_name FROM table1
2. UNION
3. SELECT column_name FROM table2;
Example:
The First table
ID NAME
1 Jack
2 Harry
3 Jackson
ID NAME
3 Jackson
4 Stephan
5 David
Union SQL query will be:
1. SELECT * FROM First
2. UNION
3. SELECT * FROM Second;
The resultset table will look like:
ID NAME
1 Jack
2 Harry
3 Jackson
4 Stephan
5 David
2. Union All
Union All operation is equal to the Union operation. It returns the set without removing
duplication and sorting the data.
Syntax:
1. SELECT column_name FROM table1
2. UNION ALL
3. SELECT column_name FROM table2;
Example: Using the above First and Second table.
Union All query will be like:
1. SELECT * FROM First
2. UNION ALL
3. SELECT * FROM Second;
The resultset table will look like:
ID NAME
1 Jack
2 Harry
3 Jackson
3 Jackson
4 Stephan
5 David
3. Intersect
o It is used to combine two SELECT statements. The Intersect operation returns
the common rows from both the SELECT statements.
o In the Intersect operation, the number of datatype and columns must be the
same.
o It has no duplicates and it arranges the data in ascending order by default.
Syntax
1. SELECT column_name FROM table1
2. INTERSECT
3. SELECT column_name FROM table2;
Example:
Using the above First and Second table.
Intersect query will be:
1. SELECT * FROM First
2. INTERSECT
3. SELECT * FROM Second;
The resultset table will look like:
ID NAME
3 Jackson
4. Minus
o It combines the result of two SELECT statements. Minus operator is used to
display the rows which are present in the first query but absent in the second
query.
o It has no duplicates and data arranged in ascending order by default.
Syntax:
1. SELECT column_name FROM table1
2. MINUS
3. SELECT column_name FROM table2;
Example
Using the above First and Second table.
Minus query will be:
1. SELECT * FROM First
2. MINUS
3. SELECT * FROM Second;
The resultset table will look like:
ID NAME
1 Jack
2 Harry
What is Cursor in SQL ?
Cursor is a Temporary Memory or Temporary Work Station. It is Allocated
by Database Server at the Time of Performing DML(Data Manipulation Language)
operations on the Table by the User. Cursors are used to store Database Tables.
There are 2 types of Cursors: Implicit Cursors, and Explicit Cursors. These are
explained as following below.
1. Implicit Cursors: Implicit Cursors are also known as Default Cursors of SQL
SERVER. These Cursors are allocated by SQL SERVER when the user performs
DML operations.
2. Explicit Cursors: Explicit Cursors are Created by Users whenever the user
requires them. Explicit Cursors are used for Fetching data from Table in Row-By-
Row Manner.
Query:
DECLARE s1 CURSOR FOR SELECT * FROM studDetails
2. Open Cursor Connection
Syntax:
OPEN cursor_connection
Query:
OPEN s1
Fetch Data from the Cursor There is a total of 6 methods to access data from the
cursor. They are as follows:
1. FIRST is used to fetch only the first row from the cursor table.
2. LAST is used to fetch only the last row from the cursor table.
3. NEXT is used to fetch data in a forward direction from the cursor table.
4. PRIOR is used to fetch data in a backward direction from the cursor table.
5. ABSOLUTE n is used to fetch the exact n th row from the cursor table.
6. RELATIVE n is used to fetch the data in an incremental way as well as a
decremental way.
Syntax:
FETCH NEXT/FIRST/LAST/PRIOR/ABSOLUTE n/RELATIVE n FROM
cursor_name
Query:
FETCH FIRST FROM s1
FETCH LAST FROM s1
FETCH NEXT FROM s1
FETCH PRIOR FROM s1
FETCH ABSOLUTE 7 FROM s1
FETCH RELATIVE -2 FROM s1
Close cursor connection
Syntax:
CLOSE cursor_name
Query:
CLOSE s1
Deallocate cursor memory
Syntax:
DEALLOCATE cursor_name
Query:
DEALLOCATE s1
How To Create an Implicit Cursor?
An implicit cursor is a cursor that is automatically created by PL/SQL when you
execute a SQL statement. You don’t need to declare or open an implicit cursor
explicitly. Instead, PL/SQL manages the cursor for you behind the scenes.
To create an implicit cursor in PL/SQL, you simply need to execute a SQL statement.
For example, to retrieve all rows from the EMP table, you can use the following code:
Query:
BEGIN
FOR emp_rec IN SELECT * FROM emp LOOP
DBMS_OUTPUT.PUT_LINE('Employee name: ' || emp_rec.ename);
END LOOP;
END;
In PL/SQL, when we perform INSERT, UPDATE or DELETE operations, an implicit
cursor is automatically created. This cursor holds the data to be inserted or identifies
the rows to be updated or deleted. You can refer to this cursor as the SQL cursor in
your code. Thi SQL cursor has several useful attributes.
1. %FOUND is true if the most recent SQL operation affected at least one row.
2. %NOTFOUND is true if it didn’t affect any rows.
3. %ROWCOUNT is returns the number of rows affected.
4. %ISOPEN checks if the cursor is open.
In addition to these attributes, %BULK_ROWCOUNT and %BULK_EXCEPTIONS
are specific to the FORALL statement, which is used to perform multiple DML
operations at once. %BULK_ROWCOUNT returns the number of rows affected by
each DML operation, while %BULK_EXCEPTION returns any exception that
occurred during the operations.
Query:
CREATE TABLE Emp(
EmpID INT PRIMARY KEY,
Name VARCHAR(50),
Country VARCHAR(50),
Age int(2),
Salary int(10)
);
-- Insert some sample data into the Customers table
INSERT INTO Emp (EmpID, Name,Country, Age, Salary)
VALUES (1, 'Shubham', 'India','23','30000'),
(2, 'Aman ', 'Australia','21','45000'),
(3, 'Naveen', 'Sri lanka','24','40000'),
(4, 'Aditya', 'Austria','21','35000'),
(5, 'Nishant', 'Spain','22','25000');
Select * from Emp;
Output:
This program updates a table by increasing the salary of each employee by 1500.
After the update, the SQL%ROWCOUNT attribute is used to find out how many rows
were affected by the operation.
Query:
DECLARE
total_rows number;
BEGIN
UPDATE Emp
SET Salary = Salary + 1500;
total_rows := SQL%ROWCOUNT;
DML Triggers
The Data uses manipulation Language (DML) command events that begin with Insert,
Update, and Delete set off the DML triggers. corresponding to insert_table,
update_view, and delete_table.
SQL Server
create trigger deep
on emp
for
insert,update ,delete
as
print 'you can not insert,update and delete this table i'
rollback;
Output:
Logon Triggers
logon triggers are fires in response to a LOGON event. When a user session is created
with a SQL Server instance after the authentication process of logging is finished but
before establishing a user session, the LOGON event takes place. As a result, the
PRINT statement messages and any errors generated by the trigger will all be visible
in the SQL Server error log. Authentication errors prevent logon triggers from being
used. These triggers can be used to track login activity or set a limit on the number of
sessions that a given login can have in order to audit and manage server sessions.
How does SQL Server Show Trigger?
The show or list trigger is useful when we have many databases with many tables.
This query is very useful when the table names are the same across multiple
databases. We can view a list of every trigger available in the SQL Server by using
the command below:
Syntax:
FROM sys.triggers, SELECT name, is_instead_of_trigger
IF type = ‘TR’;
The SQL Server Management Studio makes it very simple to display or list all
triggers that are available for any given table. The following steps will help us
accomplish this:
Go to the Databases menu, select the desired database, and then expand it.
Select the Tables menu and expand it.
Select any specific table and expand it.
We will get various options here. When we choose the Triggers option, it displays all
the triggers available in this table.
BEFORE and AFTER Trigger
BEFORE triggers run the trigger action before the triggering statement is run. AFTER
triggers run the trigger action after the triggering statement is run.
Example
Given Student Report Database, in which student marks assessment is recorded. In
such a schema, create a trigger so that the total and percentage of specified marks are
automatically inserted whenever a record is inserted.
Here, a trigger will invoke before the record is inserted so BEFORE Tag can be used.
Suppose the Database Schema
Query
mysql>>desc Student;
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
@Parameter1 INT,
AS
BEGIN
— QueryEND
GO
Example
In this example, we will modify a procedure in PL/SQL
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO