SQL Commands
SQL Commands
SQL commands are instructions used to communicate with the database to perform specific task
that work with data. SQL commands can be used not only for searching the database but also to
perform various other functions like, for example, you can create tables, add data to tables, or
modify data, drop the table, set permissions for users. SQL commands are grouped into four major
categories depending on their functionality:
Data Definition Language (DDL) - These SQL commands are used for creating, modifying,
and dropping the structure of database objects. The commands are CREATE, ALTER, DROP,
RENAME, and TRUNCATE.
Data Manipulation Language (DML) - These SQL commands are used for storing,
retrieving, modifying, and deleting data. These commands are SELECT, INSERT, UPDATE, and
DELETE.
Transaction Control Language (TCL) - These SQL commands are used for managing
changes affecting the data. These commands are COMMIT, ROLLBACK, and SAVEPOINT.
Data Control Language (DCL) - These SQL commands are used for providing security to
database objects. These commands are GRANT and REVOKE.
[WHERE Clause]
[GROUP BY clause]
[HAVING clause]
[ORDER BY clause];
table-name is the name of the table from which the information is retrieved.
column_list includes one or more columns from which data is retrieved.
The code within the brackets is optional.
database table student_details;
id first_name last_name age subject games
NOTE: These database tables are used here for better explanation of SQL commands. In reality,
the tables can have different columns and different data.
For example, consider the table student_details. To select the first name of all the students the
query would be like:
NOTE: The commands are not case sensitive. The above SELECT statement can also be written as
"select first_name from students_details;"
You can also retrieve data from more than one column. For example, to select first name and last
name of all the students.
You can also use clauses like WHERE, GROUP BY, HAVING, ORDER BY with SELECT statement. We
will discuss these commands in coming chapters.
NOTE: In a SQL SELECT statement only SELECT and FROM statements are mandatory. Other
clauses like WHERE, ORDER BY, GROUP BY, HAVING are optional.
Expressions combine many arithmetic operators, they can be used in SELECT, WHERE and ORDER
BY Clauses of the SQL SELECT Statement.
Here we will explain how to use expressions in the SQL SELECT Statement. About using
expressions in WHERE and ORDER BY clause, they will be explained in their respective sections.
The operators are evaluated in a specific order of precedence, when more than one arithmetic
operator is used in an expression. The order of evaluation is: parentheses, division, multiplication,
addition, and subtraction. The evaluation is performed from the left to the right of the expression.
For example: If we want to display the first and last name of an employee combined together, the
SQL Select Statement would be like
Output:
first_name || ' ' || last_name
---------------------------------
Rahul Sharma
Anjali Bhagwat
Stephen Fleming
Shekar Gowda
Priya Chandra
Output:
emp_name
-------------
Rahul Sharma
Anjali Bhagwat
Stephen Fleming
Shekar Gowda
Priya Chandra
SQL Alias
SQL Aliases are defined for columns and tables. Basically aliases is created to make the column
selected more readable.
For Example: To select the first name of all the students, the query would be like:
or
In the above query, the column first_name is given a alias as 'name'. So when the result is
displayed the column name appears as 'Name' instead of 'first_name'.
Output:
Name
-------------
Rahul Sharma
Anjali Bhagwat
Stephen Fleming
Shekar Gowda
Priya Chandra
In the above query, alias 's' is defined for the table student_details and the column first_name is
selected from the table.
So 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.
WHERE condition;
WHERE id = 100;
Comparison Operators and Logical Operators are used in WHERE Clause. These operators are
discussed in the next chapter.
NOTE: Aliases defined for the columns in the SELECT statement cannot be used in the WHERE
clause to set conditions. Only aliases created for tables can be used to reference the columns in the
table.
Expressions can also be used in the WHERE clause of the SELECT statement.
For example: Lets consider the employee table. If you want to display employee name, current
salary, and a 20% increase in the salary for only those products where the percentage increase in
salary is greater than 30000, the SELECT statement can be written as shown below
SELECT name, salary, salary*1.2 AS new_salary FROM employee
Output:
name salary new_salary
NOTE: Aliases defined in the SELECT Statement can be used in WHERE Clause.
SQL Operators
There are two type of Operators, namely 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.
Comparison
Description
Operators
= equal to
Logical Operators:
Logical
Description
Operators
If you want to select rows that satisfy at least one of the given conditions, you can use the logical
operator, OR.
For example: if you want to find the names of students who are studying either Maths or Science,
the query would be like,
FROM student_details
The following table describes how logical "OR" operator selects a row.
Column1 Column2
Row Selected
Satisfied? Satisfied?
YES NO YES
NO YES YES
NO NO NO
If you want to select rows that must satisfy all the given conditions, you can use the logical
operator, AND.
For Example: To find the names of the students between the age 10 to 15 years, the query would
be like:
FROM student_details
Rahul Sharma 10
Anajali Bhagwat 12
Shekar Gowda 15
The following table describes how logical "AND" operator selects a row.
Column1 Column2
Row Selected
Satisfied? Satisfied?
YES NO NO
NO YES NO
NO NO NO
"NOT" Logical Operator:
If you want to find rows that do not satisfy a condition, you can use the logical operator, NOT. NOT
results in the reverse of a condition. That is, if a condition is satisfied, then the row is not returned.
For example: If you want to find out the names of the students who do not play football, the
query would be like:
FROM student_details
The following table describes how logical "NOT" operator selects a row.
YES NO NO
NO YES YES
You can use multiple logical operators in an SQL statement. When you combine the logical
operators in a SELECT statement, the order in which the statement is processed is
1) NOT
2) AND
3) OR
For example: If you want to select the names of the students who age is between 10 and 15
years, or those who do not play football, the
Condition 1: All the students you do not play football are selected.
Condition 2: All the students whose are aged between 10 and 15 are selected.
Condition 3: Finally the result is, the rows which satisfy atleast one of the above conditions is
returned.
NOTE:The order in which you phrase the condition is important, if the order changes you are likely
to get a different result.
Comparision
Description
Operators
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 wildcard character '%'.
For example: To select all the students whose name begins with 'S'
FROM student_details
first_name last_name
------------- -------------
Stephen Fleming
Shekar Gowda
The above select statement searches for all the rows where the first letter of the column first_name
is 'S' and rest of the letters in the name can be any character.
There is another wildcard character you can use with LIKE operator. It is the underscore character,
' _ ' . In a search string, the underscore signifies a single character.
For example: to display all the names with 'a' second character,
FROM student_details
first_name last_name
------------- -------------
Rahul Sharma
NOTE:Each underscore act as a placeholder for only one character. So you can use more than one
underscore. Eg: ' __i% '-this has two underscores towards the left, 'S__j%' - this has two
underscores between character 'S' and 'i'.
The operator BETWEEN and AND, are used to compare data for a range of values.
For Example: to find the names of the students between age 10 to 15 years, the query would be
like,
SELECT first_name, last_name, age
FROM student_details
Rahul Sharma 10
Anajali Bhagwat 12
Shekar Gowda 15
SQL IN Operator:
The IN operator is used when you want to compare a column with more than one value. It is
similar to an OR condition.
For example: If you want to find the names of students who are studying either Maths or Science,
the query would be like,
FROM student_details
A column value is NULL if it does not exist. The IS NULL operator is used to display all the rows for
columns that do not have a value.
For Example: If you want to find the names of students who do not participate in any games, the
query would be as given below
FROM student_details
There would be no output as we have every student participate in a game in the table
student_details, else the names of the students who do not participate in any games would be
displayed.
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.
SELECT column-list
For Example: If you want to sort the employee table by salary of the employee, the sql query
would be.
name salary
---------- ----------
Soumya 20000
Ramesh 25000
Priya 30000
Hrithik 35000
Harsha 35000
The query first sorts the result according to name and then displays it.
You can also use more than one column in the ORDER BY clause.
If you want to sort the employee table by the name and salary, the query would be like,
name salary
------------- -------------
Soumya 20000
Ramesh 25000
Priya 30000
Harsha 35000
Hrithik 35000
NOTE:The columns specified in ORDER BY clause should be one of the columns selected in the
SELECT column list.
You can represent the columns in the ORDER BY clause by specifying the position of a column in
the SELECT list, instead of writing the column name.
By default, the ORDER BY Clause sorts data in ascending order. If you want to sort the data in
descending order, you must explicitly specify it as shown below.
SELECT name, salary
FROM employee
The above query sorts only the column 'salary' in descending order and the column 'name' by
ascending order.
If you want to select both name and salary in descending order, the query would be as given
below.
FROM employee
For example: If you want to display employee name, current salary, and a 20% increase in the
salary for only those employees for whom the percentage increase in salary is greater than 30000
and in descending order of the increased price, the SELECT statement can be written as shown
below
FROM employee
For Example: If you want to know the total amount of salary spent on each department, the
query would be:
FROM employee
GROUP BY dept;
dept salary
---------------- --------------
Electrical 25000
Electronics 55000
Aeronautics 35000
InfoTech 30000
NOTE: The group by clause should contain all the columns in the select list expect those used
along with the group functions.
FROM employee
For Example: If you want to select the department that has total salary paid for its employees
more than 25000, the sql query would be like;
FROM employee
GROUP BY dept
dept salary
------------- -------------
Electronics 55000
Aeronautics 35000
InfoTech 30000
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.
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. The sql insert query will be as follows
INSERT INTO TABLE_NAME
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 location) VALUES
NOTE: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,
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
FROM temp_employee;
If you are inserting data to all the columns, the above insert statement can also be written as,
NOTE:We have assumed the temp_employee table has columns emp_id, emp_name, dept, age,
salary, location in the above given order and the same datatype.
IMPORTANT NOTE:
1) When adding a new row, you should ensure the datatype of the value and the column matches
2) You follow the integrity constraints, if any, defined for the table.
SQL UPDATE Statement
The UPDATE Statement is used to modify the existing rows in a table.
UPDATE table_name
[WHERE condition]
UPDATE employee
WHERE id = 101;
To change the salaries of all the employees, the query would be,
UPDATE employee
To delete all the rows from the employee table, the query would be like,
DELETE FROM employee;
For Example: To delete all the rows from employee table, the query would be like,
For Example: To drop the table employee, the query would be like
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 want 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.
(column_name1 datatype,
column_name2 datatype,
);
( id number(5),
name char(20),
dept char(10),
age number(2),
salary number(10),
location char(10)
);
In Oracle database, the datatype for an integer column is represented as "number". In Sybase it is
represented as "int".
In the above statement, temp_employee table is created with the same number of columns and
datatype as employee table.
For Example: To add a column "experience" to the employee table, the query would be like
For Example: To drop the column "location" from the employee table, the query would be like
For Example: To modify the column salary in the employee table, the query would be like
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.
For Example: To change the name of the table employee to my_employee, the query would be
like
The constraints available in SQL are Foreign Key, Not Null, Unique, Check.
Constraints can be defined in two ways
1) The constraints can be specified immediately after the column definition. This is called column-
level definition.
2) The constraints can be specified after all the columns are defined. This is called table-level
definition.
1) SQL Primary key:
This constraint defines a column or combination of columns which uniquely identifies each row in
the table.
column_name1, column_name2 are the names of the columns which define the primary
Key.
The syntax within the bracket i.e. [CONSTRAINT constraint_name] is optional.
For Example: To create an employee table with Primary Key constraint, the query would be like.
Primary Key at table level:
name char(20),
dept char(10),
age number(2),
salary number(10),
location char(10)
);
or
name char(20),
dept char(10),
age number(2),
salary number(10),
location char(10)
);
( id number(5),
name char(20),
dept char(10),
age number(2),
salary number(10),
location char(10),
);
This constraint identifies any column referencing the PRIMARY KEY in another table. It establishes a
relationship between two columns in the same table or between different tables. For a column to be
defined as a Foreign Key, it should be a defined as a Primary Key in the table which it is referring.
One or more columns can be defined as Foreign key.
Referenced_Table_name(column_name)
referenced_table_name(column_name);
For Example:
1) Lets use the "product" table and "order_items".
product_name char(20),
supplier_name char(20),
unit_price number(10)
);
CREATE TABLE order_items
product(product_id),
product_name char(20),
supplier_name char(20),
unit_price number(10)
);
( order_id number(5) ,
product_id number(5),
product_name char(20),
supplier_name char(20),
unit_price number(10)
product(product_id)
);
2) If the employee table has a 'mgr_id' i.e, manager id as a foreign key which references primary
key 'id' within the same table, the query would be like,
name char(20),
dept char(10),
age number(2),
mgr_id number(5) REFERENCES employee(id),
salary number(10),
location char(10)
);
This constraint ensures all rows in the table contain a definite value for the column which is
specified as not null. Which means a null value is not allowed.
For Example: To create a employee table with Null value, the query would be like
( id number(5),
dept char(10),
age number(2),
salary number(10),
location char(10)
);
This constraint ensures that a column or a group of columns in each row have a distinct value. A
column(s) can have a null value but the values cannot be duplicated.
For Example: To create an employee table with Unique key, the query would be like,
Unique Key at column level:
dept char(10),
age number(2),
salary number(10),
);
or
name char(20),
dept char(10),
age number(2),
salary number(10),
);
name char(20),
dept char(10),
age number(2),
salary number(10),
location char(10),
);
5) SQL Check Constraint :
This constraint defines a business rule on a column. All the rows must satisfy this rule. The
constraint can be applied for a single column or a group of columns.
For Example: In the employee table to select the gender of a person, the query would be like
Check Constraint at column level:
name char(20),
dept char(10),
age number(2),
salary number(10),
location char(10)
);
name char(20),
dept char(10),
age number(2),
gender char(1),
salary number(10),
location char(10),
);
SQL Joins
SQL Joins are used to relate information in different tables. A Join condition is a part of the sql
query that retrieves rows from two or more tables. A SQL Join condition is used in the SQL WHERE
Clause of select, update, delete statements.
If a sql join condition is omitted or if it is invalid the join operation will result in a Cartesian
product. The Cartesian product returns a number of rows equal to the product of all rows in all the
tables being joined. For example, if the first table has 20 rows and the second table has 10 rows,
the result will be 20 * 10, or 200 rows. This query takes a long time to execute.
Lets use the below two tables to explain the sql join conditions.
SQL Joins can be classified into Equi join and Non Equi join.
It is a simple sql join condition which uses the equal sign as the comparison operator. Two types of
equi joins are SQL Outer join and SQL Inner join.
For example: You can get the information about a customer who purchased a product and the
quantity of product.
2) SQL Non equi joins
It is a sql join condition which makes use of some comparison operator other than the equal sign
like >, <, >=, <=
All the rows returned by the sql query satisfy the sql join condition specified.
For example: If you want to display the product information for each order the query will be as
given below. Since you are retrieving the data from two tables, you need to identify the common
column between these two tables, which is theproduct_id.
The columns must be referenced by the table name in the join condition, because product_id is a
column in both the tables and needs a way to be identified. This avoids ambiguity in using the
columns in the SQL SELECT statement.
The number of join conditions is (n-1), if there are more than two tables joined in a query where 'n'
is the number of tables involved. The rule must be true to avoid Cartesian product.
We can also use aliases to reference the column name, then the above query would be like,
o.total_units
This sql join condition returns all rows from both tables which satisfy the join condition along with
rows which do not satisfy the join condition from one of the tables. The sql outer join operator in
Oracle is ( + ) and is used on one side of the join condition only.
The syntax differs for different RDBMS implementation. Few of them represent the join conditions
as "sql left outer join", "sql right outer join".
If you want to display all the product data along with order items data, with null values displayed
for order items if a product has no order item, the sql query for outer join would be as shown
below:
100 Camera
NOTE:If the (+) operator is used in the left side of the join condition it is equivalent to left outer
join. If used on the right side of the join condition it is equivalent to right outer join.
A Self Join is a type of sql join which is used to join a table to itself, particularly when the table has
a FOREIGN KEY that references its own PRIMARY KEY. It is necessary to ensure that the join
statement defines an alias for both copies of the table to avoid column ambiguity.
b.name
A Non Equi Join is a SQL Join whose condition is established using all comparison operators except
the equal (=) operator. Like >=, <=, <, >
For example: If you want to find the names of students who are not studying either Economics,
the sql query would be like, (lets use student_details table defined earlier.)
SELECT first_name, last_name, subject
FROM student_details
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.
AS
SELECT column_list
AS
SQL Subquery
Subquery or Inner query or Nested query is a query in a query. A subquery is usually added in the
WHERE Clause of the sql statement. Most of the time, a subquery is used when you know how to
search for a value using a SELECT statement, but do not know the exact value.
Subqueries can be used with the following sql statements along with the comparision operators like
=, <, >, >=, <= etc.
SELECT
INSERT
UPDATE
DELETE
For Example:
1) Usually, a subquery should return only one record, but sometimes it can also return multiple
records when used with operators like IN, NOT IN in the where clause. The query would be like,
FROM student_details
2) Lets consider the student_details table which we have used earlier. If you know the name of the
students who are studying science subject, you can get their id's by using this query below,
FROM student_details
but, if you do not know their names, then to get their id's you need to write the query in this
manner,
SELECT id, first_name
FROM student_details
FROM student_details
Output:
id first_name
-------- -------------
100 Rahul
102 Stephen
In the above sql statement, first the inner query is processed first and then the outer query is
processed.
3) Subquery can be used with INSERT statement to add rows of data from one or more tables to
another table. Lets try to group all the students who study Maths in a table 'maths_group'.
4) A subquery can be used in the SELECT statement as follows. Lets use the product and
order_items table defined in the sql_joins section.
p.product_id = 101
A query is called correlated subquery when both the inner query and the outer query are
interdependent. For every row processed by the inner query, the outer query is processed as well.
The inner query depends on the outer query before it can be processed.
NOTE:
1) You can nest as many queries you want but it is recommended not to nest more than 16
subqueries in oracle.
2) If a subquery is not dependent on the outer query it is called a non-correlated subquery.
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 a
index is created, it first sorts the data and then it assigns a ROWID for each row.
ON table_name (column_name1,column_name2...);
ON table_name (column_name1,column_name2...);
In Oracle there are two types of SQL index namely, implicit and explicit.
Implicit Indexes:
They are created when a column is explicity defined with PRIMARY KEY, UNIQUE KEY Constraint.
Explicit Indexes:
NOTE:
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) Is is not required to create indexes on table which have less data.
3) In oracle database you can define up to sixteen (16) columns in an INDEX.
DCL commands are used to enforce database security in a multiple user database environment.
Two types of DCL commands are GRANT and REVOTE. Only Database Administrator's or owner's of
the database object can provide/remove privileges on a databse object.
GRANT privilege_name
ON object_name
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.
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.
WITH GRANT OPTION - allows a user to grant access rights to other users.
For Eample: GRANT SELECT ON employee TO user1;This command grants a SELECT permission
on employee table to user1.You should use the WITH GRANT option carefully because for example
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, if
you REVOKE the SELECT privilege on employee from user1, still user2 will have SELECT privilege
on employee table.
The REVOKE command removes user access rights or privileges to the database objects.
REVOKE privilege_name
ON object_name
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.
System
Description
Privileges
The above rules also apply for ALTER and DROP system privileges.
Object
Description
Privileges
Roles: 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. 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.
Some of the privileges granted to the system roles are as given below:
System
Privileges Granted to the Role
Role
Creating Roles:
[IDENTIFIED BY password];
For example: To create a role called "developer" with password as "pwd",the code will be as
follows
[IDENTIFIED BY pwd];
It's easier to GRANT or REVOKE privileges to the users through a role rather than assigning a
privilege direclty to every user. If a role is identified by a password, then, when you GRANT or
REVOKE privileges to the role, you definetely have to identify it with the password.
For example: To grant CREATE TABLE privilege to a user by creating a testing role:
Second, grant a CREATE TABLE privilege to the ROLE testing. You can add more privileges to the
ROLE.
To revoke a CREATE TABLE privilege from testing ROLE, you can write:
REVOKE CREATE TABLE FROM testing;
You can combine more than one function together in an expression. This is known as nesting of
functions.
Output:
DUMMY
-------
X
Output:
777 * 888
---------
689976
1) Numeric Functions:
Numeric functions are used to perform operations on numbers. They accept numeric values as
input and return numeric values as output. Few of the Numeric functions are:
Function
Return Value
Name
CEIL (x) Integer value that is Greater than or equal to the number 'x'
FLOOR (x) Integer value that is Less than or equal to the number 'x'
ROUND (x, y) Rounded off value of the number 'x' up to the number 'y' decimal places
The following examples explains the usage of the above numeric functions
ABS (1) 1
ABS (x)
ABS (-1) -1
CEIL (2.83) 3
CEIL (x) CEIL (2.49) 3
CEIL (-1.6) -1
FLOOR (2.83) 2
FLOOR (x) FLOOR (2.49) 2
FLOOR (-1.6) -2
For Example: Let's consider the product table used in sql joins. We can use ROUND to round off the
unit_price to the nearest integer, if any product has prices in fraction.
Character or text functions are used to manipulate text strings. They accept strings or characters
as input and can return both character and number values as output.
LTRIM (string_value,
All occurrences of 'trim_text' is removed from the left of 'string_value'.
trim_text)
RTRIM (string_value,
All occurrences of 'trim_text' is removed from the right of'string_value' .
trim_text)
TRIM (trim_text FROM All occurrences of 'trim_text' from the left and right
string_value) of 'string_value' ,'trim_text' can also be only one character long .
SUBSTR (string_value, Returns 'n' number of characters from'string_value' starting from the
m, n) 'm'position.
RPAD (string_value, n, Returns 'string_value' right-padded with 'pad_value' . The length of the
pad_value) whole string will be of 'n' characters.
For Example, we can use the above UPPER() text function with the column value as follows.
The following examples explains the usage of the above character or text functions
TRIM (trim_text FROM string_value) TRIM ('o' FROM 'Good Morning') Gd Mrning
3) Date Functions:
These are functions that take values that are of datatype DATE as input and return values of
datatypes DATE, except for the MONTHS_BETWEEN function, which returns a number as output.
ADD_MONTHS (date, n) Returns a date value after adding 'n'months to the date 'x'.
MONTHS_BETWEEN
Returns the number of months between dates x1 and x2.
(x1, x2)
ROUND (x, Returns the date 'x' rounded off to the nearest century, year, month,
date_format) date, hour, minute, or second as specified by the 'date_format'.
Returns the date 'x' lesser than or equal to the nearest century, year,
TRUNC (x, date_format)
month, date, hour, minute, or second as specified by the 'date_format'.
NEXT_DAY (x,
Returns the next date of the 'week_day'on or after the date 'x' occurs.
week_day)
NEW_TIME (x, zone1, Returns the date and time in zone2 if date 'x' represents the time in
zone2) zone1.
The below table provides the examples for the above functions
4) Conversion Functions:
These are functions that help us to convert a value in one form to another form. For Ex: a null
value into an actual value, or a value from one datatype to another datatype like NVL, TO_CHAR,
TO_NUMBER, TO_DATE.
TO_DATE (x [, Converts a valid Numeric and Character values to a Date value. Date is
date_format]) formatted to the format specified by 'date_format'.
NVL (x, y) If 'x' is NULL, replace it with 'y'. 'x' and 'y'must be of the same datatype.
DECODE (a, b, c, d, e, Checks the value of 'a', if a = b, then returns'c'. If a = d, then returns 'e'.
default_value) Else, returnsdefault_value.
The below table provides the examples for the above functions
1) The sql query becomes faster if you use the actual columns names in SELECT statement instead
of than '*'.
For Example: Write the query as
Instead of:
2) HAVING clause is used to filter the rows after all the rows are selected. It is just like a filter. Do
not use HAVING clause for any other purposes.
For Example: Write the query as
FROM student_details
GROUP BY subject;
Instead of:
FROM student_details
GROUP BY subject
3) Sometimes you may have more than one subqueries in your main query. Try to minimize the
number of subquery block in your query.
For Example: Write the query as
SELECT name
FROM employee
Instead of:
SELECT name
FROM employee
Instead of:
where product_id IN
5) Use EXISTS instead of DISTINCT when using joins which involves tables having one-to-many
relationship.
For Example: Write the query as
FROM dept d
Instead of:
SELECT DISTINCT d.dept_id, d.dept
FROM student_details_class10
UNION ALL
FROM sports_team;
Instead of:
FROM student_details_class10
UNION
FROM sports_team;
SELECT id, first_name, age FROM student_details WHERE age > 10;
Instead of:
FROM student_details
FROM student_details
FROM student_details
Instead of:
FROM student_details
FROM product
Instead of:
FROM product
FROM employee
WHERE dept = 'Electronics'
Instead of:
FROM employee
Use non-column expression on one side of the query because it will be processed earlier.
FROM employee
Instead of:
FROM employee
FROM student_details
Instead of:
FROM student_details
8) Use DECODE to avoid the scanning of same rows or joining the same table repetitively. DECODE
can also be made used in place of GROUP BY or ORDER BY clause.
For Example: Write the query as
SELECT id FROM employee
Instead of:
9) To store large binary objects, first place them in the file system and add the file path in the
database.
10) To write queries which provide efficient performance follow the general SQL standard rules.
a) Use single case for all SQL verbs
b) Begin all SQL verbs on a new line
c) Separate all words with a single space
d) Right or left aligning verbs within the initial SQL verb