SQL (Database)
SQL (Database)
Structure Query Language(SQL) is a programming language used for storing and managing data in
RDBMS. SQL was the first commercial language introduced for E.F Codd's Relational model. Today
almost all RDBMS(MySql, Oracle, Infomix, Sybase, MS Access) uses SQL as the standard
database language. SQL is used to perform all type of data operations in RDBMS.
SQL Command
All DDL commands are auto-committed. That means it saves all the changes permanently in the
database.
Command Description
Command Description
These commands are to keep a check on other commands and their affect on the database. These
commands can annul changes made by other commands by rolling back to original state. It can also
make changes permanent.
Command Description
Command Description
Command Description
Creating a Database
Creating a Table
create command is also used to create a table. We can specify names and datatypes of various
columns along.Following is the Syntax,
{
column-name1 datatype1,
column-name2 datatype2,
column-name3 datatype3,
column-name4 datatype4
};
create table command will tell the database system to create a new table with given table name and
column information.
The above command will create a new table Student in database system with 3 columns, namely id,
name and age.
alter command
alter command is used for alteration of table structures. There are various uses of alter command,
such as,
Using alter command we can add a column to an existing table. Following is the Syntax,
The above command will add a new column address to the Student table
To Add Multiple Column to existing Table
Using alter command we can even add multiple columns to an existing table. Following is the
Syntax,
The above command will add three new columns to the Student table
alter command can add a new column to an existing table with default values. Following is the
Syntax,
The above command will add a new column with default value to the Student table
alter command is used to modify data type of an existing column . Following is the Syntax,
The above command will modify address column of the Student table
To Rename a column
Using alter command you can rename an existing column. Following is the Syntax,
To Drop a Column
alter command is also used to drop columns also. Following is the Syntax,
The above command will drop address column from the Student table
truncate command removes all records from a table. But this command will not destroy the table's
structure. When we apply truncate command on a table its Primary key is initialized. Following is its
Syntax,
The above query will delete all the records of Student table.
truncate command is different from delete command. delete command will delete all the rows from
a table whereas truncate command re-initializes a table(like a newly created table).
For eg. If you have a table with 10 rows and an auto_increment primary key, if you
use delete command to delete all the rows, it will delete all the rows, but will not initialize the primary
key, hence if you will insert any row after using delete command, the auto_increment primary key will
start from 11. But in case of truncatecommand, primary key is re-initialized.
drop command
drop query completely removes a table from database. This command will also destroy the table
structure. Following is its Syntax,
The above query will delete the Student table completely. It can also be used on Databases. For
Example, to drop a database,
The above query will drop a database named Test from the system.
rename query
DML command
Data Manipulation Language (DML) statements are used for managing data in database. DML
commands are not auto-committed. It means changes made by DML command are not permanent
to database, it can be rolled back.
1) INSERT command
Insert command is used to insert data into a table. Following is its general syntax,
101 Adam 15
Both the statements below will insert NULL value into age column of the Student table.
Or,
The above command will insert only two column value other column is set to null.
101 Adam 15
102 Alex
Example to Insert Default value to a column
INSERT into Student values(103,'Chris',default)
101 Adam 15
102 Alex
103 chris 14
Suppose the age column of student table has default value of 14.
Also, if you run the below query, it will insert default value into the age column, whatever the default
value may be.
2) UPDATE command
Update command is used to update a row of a table. Following is its general syntax,
101 Adam 15
102 Alex 18
103 chris 14
101 Adam 15
102 Alex 18
103 Abhi 17
3) Delete command
Delete command is used to delete data from a table. Delete command can also be used with
condition to delete a particular row. Following is its general syntax,
The above command will delete all the records from Student table.
101 Adam 15
102 Alex 18
103 Abhi 17
The above command will delete the record where s_id is 103 from Student table.
101 Adam 15
102 Alex 18
TCL command
Transaction Control Language(TCL) commands are used to manage transactions in database.These
are used to manage the changes made by DML statements. It also allows statements to be grouped
together into logical transactions.
Commit command
commit;
Rollback command
This command restores the database to last commited state. It is also use with savepoint command
to jump to a savepoint in a transaction.
rollback to savepoint-name;
Savepoint command
savepoint command is used to temporarily save a transaction so that you can rollback to that point
whenever necessary.
savepointsavepoint-name;
ID NAME
1 abhi
2 adam
4 alex
Lets use some SQL queries on the above table and see the results.
commit;
savepoint B;
savepoint C;
ID NAME
1 abhi
2 adam
4 alex
5 abhijit
6 chris
7 bravo
rollback to B;
ID NAME
1 abhi
2 adam
4 alex
5 abhijit
6 chris
rollback to A;
ID NAME
1 abhi
2 adam
4 alex
5 abhijit
DCL command
Data Control Language(DCL) is used to control privilege in Database. To perform any operation in
the database, such as for creating tables, sequences or views we need privileges. Privileges are of
two types,
System : creating session, table etc are all types of system privilege.
Object : any command or query to work on tables comes under object privilege.
WHERE clause
Where clause is used to specify condition while retriving data from table. Where clause is used
mostly withSelect, Update and Delete query. If condititon specified by where clause is true then only
the result from table is returned.
column-name2,
column-name3,
column-nameN
Now we will use a SELECT statement to display data of the table, based on a condition, which we
will add to the SELECT query using WHERE clause.
SELECT s_id,
s_name,
age,
address
SELECT Query
Select query is used to retrieve data from a tables. It is the most used SQL query. We can retrieve
complete tables, or partial by mentioning conditions using WHERE clause.
The above query will fetch information of s_id, s_name and age column from Student table
101 Adam 15
102 Alex 18
103 Abhi 17
104 Ankit 22
The above query will show all the records of Student table, that means it will show complete Student
table as result.
Like clause is used as condition in SQL query. Like clause compares data with an expression using
wildcard operators. It is used to find similar data from the table.
Wildcard operators
There are two wildcard operators that are used in like clause.
101 Adam 15
102 Alex 18
103 Abhi 17
The above query will return all records where s_name starts with character 'A'.
101 Adam 15
102 Alex 18
103 Abhi 17
Example
SELECT * from Student where s_name like '_d%';
The above query will return all records from Student table where s_name contain 'd' as second
character.
101 Adam 15
Example
SELECT * from Student where s_name like '%x';
The above query will return all records from Student table where s_name contain 'x' as last
character.
102 Alex 18
Order By Clause
Order by clause is used with Select statement for arranging retrieved data in sorted order.
The Order byclause by default sort data in ascending order. To sort data in descending
order DESC keyword is used withOrder by clause.
Syntax of Order By
SELECT column-list|* from table-name order byasc|desc;
The above query will return result in ascending order of the salary.
The above query will return result in descending order of the salary.
Group By Clause
Group by clause is used to group the results of a SELECT query based on one or more columns. It
is also used with SQL functions to group the result from one or more tables.
FROM table_name
WHERE condition
GROUP BY column_name
Here we want to find name and age of employees grouped by their salaries
name age
Rohan 34
shane 29
anu 22
from Emp
group by salary
name salary
Rohan 6000
Shane 8000
Scott 9000
You must remember that Group By clause will always come at the end, just like the Order by clause.
HAVING Clause
having clause is used with SQL Queries to give more precise condition for a statement. It is used to
mention condition in Group based SQL functions, just like WHERE clause.
FROM table_name
Suppose we want to find the customer whose previous_balance sum is more than 3000.
SELECT *
Example
The above query will return only the unique salary from Emp table
salary
5000
8000
10000
AND operator
Example of AND
SELECT * from Emp WHERE salary < 10000 AND age > 25
The above query will return records where salary is less than 10000 and age greater than 25.
OR operator
OR operator is also used to combine multiple conditions with Where clause. The only difference
between AND and OR is their behaviour. When we use AND to combine two or more than two
conditions, records satisfying all the condition will be in the result. But in case of OR, atleast one
condition from the conditions specified must be satisfied by any record to be in the result.
Example of OR
The above query will return records where either salary is greater than 10000 or age greater than
25.
SQL Constraints
SQl Constraints are rules used to limit the type of data that can go into a table, to maintain the
accuracy and integrity of the data inside table.
Constraints are used to make sure that the integrity of data is maintained in the database. Following
are the most used constraints that can be applied to a table.
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
NOT NULL constraint restricts a column from having a NULL value. Once NOT NULL constraint is
applied to a column, you cannot pass a null value to that column. It enforces a column to contain a
proper value. One important point to note about NOT NULL constraint is that it cannot be defined at
table level.
The above query will declare that the s_id field of Student table will not take NULL value.
UNIQUE Constraint
UNIQUE constraint ensures that a field or column will only have unique values. A UNIQUE
constraint field will not have duplicate data. UNIQUE constraint can be applied at column level or
table level.
The above query will declare that the s_id field of Student table will only have unique values and
wont take NULL value.
Primary key constraint uniquely identifies each record in a database. A Primary Key must contain
unique value and it must not contain null value. Usually Primary Key is used to index the data inside
the table.
FOREIGN KEY is used to relate two tables. FOREIGN KEY constraint is also used to restrict actions
that would destroy links between tables. To understand FOREIGN KEY, let's see it using two table.
Customer_Detail Table :
Order_Detail Table :
10 Order1 101
11 Order2 103
12 Order3 102
In Customer_Detail table, c_id is the primary key which is set as foreign key in Order_Detail table.
The value that is entered in c_id which is set as foreign key in Order_Detail table must be present
in Customer_Detailtable where it is set as primary key. This prevents invalid data to be inserted into
c_id column of Order_Detailtable.
In this query, c_id in table Order_Detail is made as foriegn key, which is a reference of c_id column
of Customer_Detail.
On Delete Cascade : This will remove the record from child table, if that value of foriegn key is
On Delete Null : This will set all the values in that record of child table as NULL, for which the
If we don't use any of the above, then we cannot delete data from the main table for which data
CHECK Constraint
CHECK constraint is used to restrict the value of a column between a range. It performs check on
the values, before storing them into the database. Its like condition checking before saving data into
a column.
Age int);
The above query will restrict the s_id value to be greater than zero.
SQL Functions
SQL provides many built-in functions to perform operations on data. These functions are useful while
performing mathematical calculations, string concatenations, sub-strings etc. SQL functions are
divided into two catagories,
Aggregrate Functions
Scalar Functions
Aggregrate Functions
These functions return a single value after calculating from a group of values.Following are some
frequently used Aggregrate functions.
1) AVG()
Average returns average value after calculating from values in a numeric column.
avg(salary)
8200
2) COUNT()
Count returns the number of rows present in the table either based on some condition or without
condition.
count(name)
Example of COUNT(distinct)
count(distinct salary)
3) FIRST()
Example of FIRST()
SQL query
first(salary)
9000
4) LAST()
Example of LAST()
last(salary)
8000
5) MAX()
MAX function returns maximum value from selected column of the table.
Example of MAX()
Consider following Emp table
MAX(salary)
10000
6) MIN()
MIN function returns minimum value from a selected column of the table.
MIN(salary)
8000
7) SUM()
SUM(salary)
41000
Scalar Functions
Scalar functions return a single value from an input value. Following are soe frequently used Scalar
Functions.
1) UCASE()
UCASE function is used to convert value of string column to Uppercase character.
Syntax of UCASE,
Example of UCASE()
Result is,
UCASE(name)
ANU
SHANE
ROHAN
SCOTT
TIGER
2) LCASE()
Example of LCASE()
LCASE(name)
anu
shane
rohan
scott
tiger
3) MID()
MID function is used to extract substrings from column values of string type in a table.
Example of MID()
MID(name,2,2)
nu
ha
oh
co
ig
4) ROUND()
ROUND function is used to round a numeric field to number of nearest integer. It is used on Decimal
point values. Syntax of Round function is,
ROUND(salary)
9001
8001
6000
10000
8000
Join in SQL
SQL Join is used to fetch data from two or more tables, which is joined to appear as single set of
data. SQL Join is used for combining column from two or more tables by using values common to
both tables. JoinKeyword is used in SQL queries for joining two or more tables. Minimum required
condition for joining table, is(n-1) where n, is number of tables. A table can also join to itself known
as, Self Join.
Types of Join
The following are the types of JOIN that we can use in SQL.
Inner
Outer
Left
Right
This type of JOIN returns the cartesian product of rows of from the tables in Join. It will return a table
which consists of records which combines each row from the first table with each row of the second
table.
SELECT column-name-list
from table-name1
CROSS JOIN
table-name2;
Example of Cross JOIN
ID NAME
1 abhi
2 adam
4 alex
ID Address
1 DELHI
2 MUMBAI
3 CHENNAI
SELECT *
from class,
ID NAME ID Address
1 abhi 1 DELHI
2 adam 1 DELHI
4 alex 1 DELHI
1 abhi 2 MUMBAI
2 adam 2 MUMBAI
4 alex 2 MUMBAI
1 abhi 3 CHENNAI
2 adam 3 CHENNAI
4 alex 3 CHENNAI
This is a simple JOIN in which the result is based on matched data as per the equality condition
specified in the query.
SELECT column-name-list
from table-name1
INNER JOIN
table-name2
ID NAME
1 abhi
2 adam
3 alex
4 anu
ID Address
1 DELHI
2 MUMBAI
3 CHENNAI
ID NAME ID Address
1 abhi 1 DELHI
2 adam 2 MUMBAI
3 alex 3 CHENNAI
Natural JOIN
Natural Join is a type of Inner join which is based on column having same name and same datatype
present in both the tables to be joined.
SELECT *
from table-name1
NATURAL JOIN
table-name2;
ID NAME
1 abhi
2 adam
3 alex
4 anu
1 DELHI
2 MUMBAI
3 CHENNAI
ID NAME Address
1 abhi DELHI
2 adam MUMBAI
3 alex CHENNAI
In the above example, both the tables being joined have ID column(same name and same datatype),
hence the records for which value of ID matches in both the tables will be the result of Natural Join
of these two tables.
Outer JOIN
Outer Join is based on both matched and unmatched data. Outer Joins subdivide further into,
The left outer join returns a result table with the matched data of two tables then remaining rows of
the lefttable and null for the right table's column.
SELECT column-name-list
from table-name1
table-name2
on table-name1.column-name = table-name2.column-name;
select column-name-list
from table-name1,
table-name2
on table-name1.column-name = table-name2.column-name(+);
ID NAME
1 abhi
2 adam
3 alex
4 anu
5 ashish
ID Address
1 DELHI
2 MUMBAI
3 CHENNAI
7 NOIDA
8 PANIPAT
ID NAME ID Address
1 abhi 1 DELHI
2 adam 2 MUMBAI
3 alex 3 CHENNAI
The right outer join returns a result table with the matched data of two tables then remaining rows of
the right table and null for the left table's columns.
select column-name-list
from table-name1
table-name2
on table-name1.column-name = table-name2.column-name;
select column-name-list
from table-name1,
table-name2
on table-name1.column-name(+) = table-name2.column-name;
ID NAME
1 abhi
2 adam
3 alex
4 anu
5 ashish
ID Address
1 DELHI
2 MUMBAI
3 CHENNAI
7 NOIDA
8 PANIPAT
ID NAME ID Address
1 abhi 1 DELHI
2 adam 2 MUMBAI
3 alex 3 CHENNAI
The full outer join returns a result table with the matched data of two table then remaining rows of
both lefttable and then the right table.
select column-name-list
from table-name1
table-name2
on table-name1.column-name = table-name2.column-name;
ID NAME
1 abhi
2 adam
3 alex
4 anu
5 ashish
ID Address
1 DELHI
2 MUMBAI
3 CHENNAI
7 NOIDA
8 PANIPAT
ID NAME ID Address
1 abhi 1 DELHI
2 adam 2 MUMBAI
3 alex 3 CHENNAI
SQL Alias
Alias is used to give an alias name to a table or a column. This is quite useful in case of large or
complex queries. Alias is mainly used for giving a short alias name for a column or a table with
complex names.
SELECT column-name
from table-name
as alias-name
SELECT
column-name as alias-name
from
table-name
ID Name
1 abhi
2 adam
3 alex
4 anu
5 ashish
ID Address
1 DELHI
2 MUMBAI
3 CHENNAI
7 NOIDA
8 PANIPAT
Below is the Query to fetch data from both the tables using SQL Alias,
ID Name Address
1 abhi DELHI
2 adam MUMBAI
3 alex CHENNAI
Union
UNION is used to combine the results of two or more Select statements. However it will eliminate
duplicate rows from its result set. In case of union, number of columns and datatype must be same
in both the tables.
Example of UNION
ID Name
1 abhi
2 adam
ID Name
2 adam
3 Chester
UNION
select * from second
ID NAME
1 abhi
2 adam
3 Chester
Union All
This operation is similar to Union. But it also shows the duplicate rows.
ID NAME
1 abhi
2 adam
ID NAME
2 adam
3 Chester
UNION ALL
ID NAME
1 abhi
2 adam
2 adam
3 Chester
Intersect
Intersect operation is used to combine two SELECT statements, but it only retuns the records which
are common from both SELECT statements. In case of Intersect the number of columns and
datatype must be same. MySQL does not support INTERSECT operator.
Example of Intersect
ID NAME
1 abhi
2 adam
ID NAME
2 adam
3 Chester
ID NAME
2 adam
Minus
Minus operation combines result of two Select statements and return only those result which
belongs to first set of result. MySQL does not support INTERSECT operator.
Example of Minus
ID NAME
1 abhi
2 adam
The Second table,
ID NAME
2 adam
3 Chester
MINUS
ID NAME
1 abhi
SQL Sequence
Sequence is a feature supported by some database systems to produce unique values on demand.
Some DBMS like MySQL supports AUTO_INCREMENT in place of Sequence. AUTO_INCREMENT
is applied on columns, it automatically increments the column value by 1 each time a new record is
entered into the table. Sequence is also some what similar to AUTO_INCREMENT but its has some
extra features.
Creating Sequence
CREATE Sequencesequence-name
maxvaluemaximum-value
cycle|nocycle
initial-value specifies the starting value of the Sequence, increment-value is the value by which
sequence will be incremented and maxvalue specifies the maximum value until which sequence will
increment itself.cycle specifies that if the maximum value exceeds the set limit, sequence will restart
its cycle from the begining. No cycle specifies that if sequence exceeds maxvalue an error will be
thrown.
start with 1
increment by 1
maxvalue 999
cycle ;
ID NAME
1 abhi
2 adam
4 alex
ID NAME
1 abhi
2 adam
4 alex
1 anu
Once you use nextval the sequence will increment even if you don't Insert any record into the
table.
SQL View
A view in SQL is a logical subset of data from one or more tables. View is used to restrict data
access.
SELECT column_name(s)
FROM table_name
WHERE condition
CREATE or REPLACE view sale_view as select * from Sale where customer = 'Alex';
The data fetched from select statement will be stored in another object called sale_view. We can
use create seperately and replace too but using both together works better.
Syntax of displaying a view is similar to fetching data from table using Select statement.
force keyword is used while creating a view. This keyword force to create View even if the table does
not exist. After creating a force View if we create the base table and enter values in it, the view will
be automatically updated.
SELECT column_name(s)
FROM table_name
WHERE condition
Update a View
UPDATE view-name
set value
WHERE condition;
Read-Only View
We can create a view with read-only option to restrict access to the view.
SELECT column_name(s)
FROM table_name
The above syntax will create view for read-only purpose, we cannot Update or Insert data into read-
only view. It will throw an error.
Types of View
Simple View
Complex View
Simple View Complex View