What is an 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 inserted into the table.

Sequence is also some what similar to AUTO_INCREMENT but it has some additional features too.


Creating a Sequence

Syntax to create a sequence is,

CREATE SEQUENCE sequence-name
    START WITH initial-value
    INCREMENT BY increment-value
    MAXVALUE maximum-value
    CYCLE | NOCYCLE;
  • The initial-value specifies the starting value for the Sequence.
  • The increment-value is the value by which sequence will be incremented.
  • The maximum-value specifies the upper limit or the maximum value upto which sequence will increment itself.
  • The keyword CYCLE specifies that if the maximum value exceeds the set limit, sequence will restart its cycle from the begining.
  • And, NO CYCLE specifies that if sequence exceeds MAXVALUE value, an error will be thrown.

Using Sequence in SQL Query

Let’s start by creating a sequence, which will start from 1, increment by 1 with a maximum value of 999.

CREATE SEQUENCE seq_1
START WITH 1
INCREMENT BY 1
MAXVALUE 999
CYCLE;

Now let’s use the sequence that we just created above.

Below we have a class table,

IDNAME
1abhi
2adam
4alex

The SQL query will be,

INSERT INTO class VALUE(seq_1.nextval, 'anu');

Resultset table will look like,

IDNAME
1abhi
2adam
4alex
1anu

Once you use nextval the sequence will increment even if you don’t Insert any record into the table.

SQL Alias – AS Keyword

Alias is used to give an alias name to a table or a column, which can be a resultset table too. 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.

Syntax of Alias for table names,

SELECT column-name FROM table-name AS alias-name

Following is an SQL query using alias,

SELECT * FROM Employee_detail AS ed;

Syntax for defining alias for columns will be like,

SELECT column-name AS alias-name FROM table-name;

Example using alias for columns,

SELECT customer_id AS cid FROM Emp;

Example of Alias in SQL Query

Consider the following two tables,

The class table,

IDName
1abhi
2adam
3alex
4anu
5ashish

and the class_info table,

IDAddress
1DELHI
2MUMBAI
3CHENNAI
7NOIDA
8PANIPAT

Below is the Query to fetch data from both the tables using SQL Alias,

SELECT C.id, C.Name, Ci.Address from Class AS C, Class_info AS Ci where C.id = Ci.id;

and the resultset table will look like,

IDNameAddress
1abhiDELHI
2adamMUMBAI
3alexCHENNAI

SQL Alias seems to be quite a simple feature of SQL, but it is highly useful when you are working with more than 3 tables and have to use JOIN on them.

SQL JOIN

SQL Join is used to fetch data from two or more tables, which is joined to appear as single set of data. It is used for combining column from two or more tables by using values common to both tables.

JOIN Keyword 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, which is known as, Self Join.


Types of JOIN

Following are the types of JOIN that we can use in SQL:

  • Inner
  • Outer
  • Left
  • Right

Cross JOIN or Cartesian Product

This type of JOIN returns the cartesian product of rows 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.

Cross JOIN Syntax is,

SELECT column-name-list
FROM 
table-name1 CROSS JOIN table-name2;

Example of Cross JOIN

Following is the class table,

IDNAME
1abhi
2adam
4alex

and the class_info table,

IDAddress
1DELHI
2MUMBAI
3CHENNAI

Cross JOIN query will be,

SELECT * FROM 
class CROSS JOIN class_info;

The resultset table will look like,

IDNAMEIDAddress
1abhi1DELHI
2adam1DELHI
4alex1DELHI
1abhi2MUMBAI
2adam2MUMBAI
4alex2MUMBAI
1abhi3CHENNAI
2adam3CHENNAI
4alex3CHENNAI

As you can see, this join returns the cross product of all the records present in both the tables.


INNER Join or EQUI Join

This is a simple JOIN in which the result is based on matched data as per the equality condition specified in the SQL query.

Inner Join Syntax is,

SELECT column-name-list FROM 
table-name1 INNER JOIN table-name2 
WHERE table-name1.column-name = table-name2.column-name;

Example of INNER JOIN

Consider a class table,

IDNAME
1abhi
2adam
3alex
4anu

and the class_info table,

IDAddress
1DELHI
2MUMBAI
3CHENNAI

Inner JOIN query will be,

SELECT * from class INNER JOIN class_info where class.id = class_info.id;

The resultset table will look like,

IDNAMEIDAddress
1abhi1DELHI
2adam2MUMBAI
3alex3CHENNAI

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.

The syntax for Natural Join is,

SELECT * FROM 
table-name1 NATURAL JOIN table-name2;

Example of Natural JOIN

Here is the class table,

IDNAME
1abhi
2adam
3alex
4anu

and the class_info table,

IDAddress
1DELHI
2MUMBAI
3CHENNAI

Natural join query will be,

SELECT * from class NATURAL JOIN class_info; 

The resultset table will look like,

IDNAMEAddress
1abhiDELHI
2adamMUMBAI
3alexCHENNAI

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,

  1. Left Outer Join
  2. Right Outer Join
  3. Full Outer Join

LEFT Outer Join

The left outer join returns a resultset table with the matched data from the two tables and then the remaining rows of the left table and null from the right table’s columns.

Syntax for Left Outer Join is,

SELECT column-name-list FROM 
table-name1 LEFT OUTER JOIN table-name2
ON table-name1.column-name = table-name2.column-name;

To specify a condition, we use the ON keyword with Outer Join.

Left outer Join Syntax for Oracle is,

SELECT column-name-list FROM 
table-name1, table-name2 on table-name1.column-name = table-name2.column-name(+);

Example of Left Outer Join

Here is the class table,

IDNAME
1abhi
2adam
3alex
4anu
5ashish

and the class_info table,

IDAddress
1DELHI
2MUMBAI
3CHENNAI
7NOIDA
8PANIPAT

Left Outer Join query will be,

SELECT * FROM class LEFT OUTER JOIN class_info ON (class.id = class_info.id);

The resultset table will look like,

IDNAMEIDAddress
1abhi1DELHI
2adam2MUMBAI
3alex3CHENNAI
4anunullnull
5ashishnullnull

RIGHT Outer Join

The right outer join returns a resultset table with the matched data from the two tables being joined, then the remaining rows of the right table and null for the remaining left table’s columns.

Syntax for Right Outer Join is,

SELECT column-name-list FROM 
table-name1 RIGHT OUTER JOIN table-name2 
ON table-name1.column-name = table-name2.column-name;

Right outer Join Syntax for Oracle is,

SELECT column-name-list FROM 
table-name1, table-name2 
ON table-name1.column-name(+) = table-name2.column-name;

Example of Right Outer Join

Once again the class table,

IDNAME
1abhi
2adam
3alex
4anu
5ashish

and the class_info table,

IDAddress
1DELHI
2MUMBAI
3CHENNAI
7NOIDA
8PANIPAT

Right Outer Join query will be,

SELECT * FROM class RIGHT OUTER JOIN class_info ON (class.id = class_info.id);

The resultant table will look like,

IDNAMEIDAddress
1abhi1DELHI
2adam2MUMBAI
3alex3CHENNAI
nullnull7NOIDA
nullnull8PANIPAT

Full Outer Join

The full outer join returns a resultset table with the matched data of two table then remaining rows of both left table and then the right table.

Syntax of Full Outer Join is,

SELECT column-name-list FROM 
table-name1 FULL OUTER JOIN table-name2
ON table-name1.column-name = table-name2.column-name;

Example of Full outer join is,

The class table,

IDNAME
1abhi
2adam
3alex
4anu
5ashish

and the class_info table,

IDAddress
1DELHI
2MUMBAI
3CHENNAI
7NOIDA
8PANIPAT

Full Outer Join query will be like,

SELECT * FROM class FULL OUTER JOIN class_info ON (class.id = class_info.id);

The resultset table will look like,

IDNAMEIDAddress
1abhi1DELHI
2adam2MUMBAI
3alex3CHENNAI
4anunullnull
5ashishnullnull
nullnull7NOIDA
nullnull8PANIPAT

SQL AND & OR operator

The AND and OR operators are used with the WHERE clause to make more precise conditions for fetching data from database by combining more than one condition together.


AND operator

AND operator is used to set multiple conditions with the WHERE clause, alongside, SELECTUPDATE or DELETE SQL queries.


Example of AND operator

Consider the following Emp table

eidnameagesalary
401Anu225000
402Shane298000
403Rohan3412000
404Scott4410000
405Tiger359000
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. Hope you get the concept here. We have used the AND operator to specify two conditions with WHERE clause.

eidnameagesalary
402Shane298000
405Tiger359000

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 specified conditions will be there in the result.

But in case of OR operator, atleast one condition from the conditions specified must be satisfied by any record to be in the resultset.


Example of OR operator

Consider the following Emp table

eidnameagesalary
401Anu225000
402Shane298000
403Rohan3412000
404Scott4410000
405Tiger359000
SELECT * FROM Emp WHERE salary > 10000 OR age > 25 

The above query will return records where either salary is greater than 10000 or age is greater than 25.

402Shane298000
403Rohan3412000
404Scott4410000
405Tiger359000

DISTINCT keyword

The distinct keyword is used with SELECT statement to retrieve unique values from the table. Distinct removes all the duplicate records while retrieving records from any table in the database.


Syntax for DISTINCT Keyword

SELECT DISTINCT column-name FROM table-name;

Example using DISTINCT Keyword

Consider the following Emp table. As you can see in the table below, there is employee name, along with employee salary and age.

In the table below, multiple employees have the same salary, so we will be using DISTINCT keyword to list down distinct salary amount, that is currently being paid to the employees.

eidnameagesalary
401Anu225000
402Shane298000
403Rohan3410000
404Scott4410000
405Tiger358000
SELECT DISTINCT salary FROM Emp;

The above query will return only the unique salary from Emp table.

salary
5000
8000
10000

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

Syntax for using Group by in a statement.

SELECT column_name, function(column_name)
FROM table_name 
WHERE condition 
GROUP BY column_name

Example of Group by in a Statement

Consider the following Emp table.

eidnameagesalary
401Anu229000
402Shane298000
403Rohan346000
404Scott449000
405Tiger358000

Here we want to find name and age of employees grouped by their salaries or in other words, we will be grouping employees based on their salaries, hence, as a result, we will get a data set, with unique salaries listed, along side the first employee’s name and age to have that salary. Hope you are getting the point here!

group by is used to group different row of data together based on any one column.

SQL query for the above requirement will be,

SELECT name, age 
FROM Emp GROUP BY salary

Result will be,

nameage
Rohan34
Shane29
Anu22

Example of Group by in a Statement with WHERE clause

Consider the following Emp table

eidnameagesalary
401Anu229000
402Shane298000
403Rohan346000
404Scott449000
405Tiger358000

SQL query will be,

SELECT name, salary 
FROM Emp 
WHERE age > 25
GROUP BY salary

Result will be.

namesalary
Rohan6000
Shane8000
Scott9000

You must remember that Group By clause will always come at the end of the SQL query, just like the Order by clause.

Using the WHERE SQL clause

WHERE clause is used to specify/apply any condition while retrieving, updating or deleting data from a table. This clause is used mostly with SELECTUPDATE and DELETEquery.

When we specify a condition using the WHERE clause then the query executes only for those records for which the condition specified by the WHERE clause is true.


Syntax for WHERE clause

Here is how you can use the WHERE clause with a DELETE statement, or any other statement,

DELETE FROM table_name WHERE [condition];

The WHERE clause is used at the end of any SQL query, to specify a condition for execution.


Time for an Example

Consider a table student,

s_idnameageaddress
101Adam15Chennai
102Alex18Delhi
103Abhi17Banglore
104Ankit22Mumbai

Now we will use the SELECT statement to display data of the table, based on a condition, which we will add to our SELECT query using WHERE clause.

Let’s write a simple SQL query to display the record for student with s_id as 101.

SELECT s_id, 
    name, 
    age, 
    address 
    FROM student WHERE s_id = 101;

Following will be the result of the above query.

s_idnameageaddress
101Adam15Noida

Applying condition on Text Fields

In the above example we have applied a condition to an integer value field, but what if we want to apply the condition on name field. In that case we must enclose the value in single quote ' '. Some databases even accept double quotes, but single quotes is accepted by all.

SELECT s_id, 
    name, 
    age, 
    address 
    FROM student WHERE name = 'Adam';

Following will be the result of the above query.

s_idnameageaddress
101Adam15Noida

Operators for WHERE clause condition

Following is a list of operators that can be used while specifying the WHERE clause condition.

OperatorDescription
=Equal to
!=Not Equal to
<Less than
>Greater than
<=Less than or Equal to
>=Greate than or Equal to
BETWEENBetween a specified range of values
LIKEThis is used to search for a pattern in value.
INIn a given set of values

SELECT SQL Query

SELECT query is used to retrieve data from a table. It is the most used SQL query. We can retrieve complete table data, or partial by specifying conditions using the WHERE clause.


Syntax of SELECT query

SELECT query is used to retieve records from a table. We can specify the names of the columns which we want in the resultset.

SELECT 
    column_name1, 
    column_name2, 
    column_name3, 
    ...
    column_nameN 
    FROM table_name;

Time for an Example

Consider the following student table,

s_idnameageaddress
101Adam15Chennai
102Alex18Delhi
103Abhi17Banglore
104Ankit22Mumbai
SELECT s_id, name, age FROM student;

The above query will fetch information of s_idname and age columns of the student table and display them,

s_idnameage
101Adam15
102Alex18
103Abhi17
104Ankit22

As you can see the data from address column is absent, because we did not specif it in our SELECT query.


Select all records from a table

A special character asterisk * is used to address all the data(belonging to all columns) in a query. SELECT statement uses * character to retrieve all records from a table, for all the columns.

SELECT * FROM student;

The above query will show all the records of student table, that means it will show complete dataset of the table.

s_idnameageaddress
101Adam15Chennai
102Alex18Delhi
103Abhi17Banglore
104Ankit22Mumbai

Select a particular record based on a condition

We can use the WHERE clause to set a condition,

SELECT * FROM student WHERE name = 'Abhi';

The above query will return the following result,

103Abhi17Rohtak

Performing Simple Calculations using SELECT Query

Consider the following employee table.

eidnameagesalary
101Adam265000
102Ricky428000
103Abhi2510000
104Rohan225000

Here is our SELECT query,

SELECT eid, name, salary+3000  FROM employee;

The above command will display a new column in the result, with 3000 added into existing salaries of the employees.

eidnamesalary+3000
101Adam8000
102Ricky11000
103Abhi13000
104Rohan8000

So you can also perform simple mathematical operations on the data too using the SELECT query to fetch data from table.