Basic SQL Query Writing
Basic SQL Query Writing
CUSTOMER_ORDER
(CustName, OrderNo, ProdNo, ProdDesc, Qty, CustAddress, DateOrdered)
Normalization
1 NF
CUSTOMER
(CustName, CustAddress)
• Constraints
• Procedures
• Functions
• Packages
• Triggers
SPAN Confidential and Copyright
Statements in Oracle
•SELECT Statement
Oracle SQL Statements
•DDL Statement
•DML Statement
•TCL Statement
1. Create
2. Alter
3. Drop
4. Truncate
at table level.
• UNIQUE key constraints for the rule associated with
unique column values
• PRIMARY KEY constraints for the rule associated
with primary identification values
• FOREIGN KEY constraints for the rules associated
with referential integrity.
• CHECK constraints for complex integrity rules
Query
OPTIMIZER
Query Processing
Query Optimization
Parse Query rewrite
RBO / CBO
Query QEP
Result
Execution Generation
SELECT *|select-list
FROM table-name [, table-name]...
SELECT Statement
[WHERE search-condition]
[ORDER BY sort-spec [, sort-spec]...]
[GROUP BY column-name [, column-
name]...]
[HAVING having-condition]
SPAN Confidential and Copyright
Select Statement
Selection Projection
SELECT Statement
Table 1 Table 1
NAME SALARY
------------- ---------
Queries - Contd
...
The result of an SQL Select is, as shown, a new (unnamed) relation. The
attributes of this new relation are named on the basis of the select statement.
DEPTNO SUM(SAL) SUM(SAL)/COUNT(*)
10 8750 2916.6667
20 10875 2175
ALIAS:-
ALIAS select deptno, sum(sal) “Total Salary”, sum(sal)/count(*) “Avg Salary”
DEPTNO Total Salary Avg Salary
10 8750 SPAN Confidential
2916.6667
and Copyright
20 10875 2175
Aggregate Functions
SELECT e.Ename,
Joins
e.Sal,
e.Deptno,
d.Dname
FROM Emp e JOIN Dept d
ON e.Deptno =d.Deptno;
SELECT e.Ename,
e.Sal,
Natural Join
e.Deptno,
d.Dname
FROM Emp e NATURAL JOIN Dept d ;
SELECT e.Empno,
e.Ename,
e.Sal,
Self Join
m.Ename
FROM Emp e
JOIN Emp m
ON e.Mgr = m.Empno;
SELECT e.Ename,
Cartesian Product
e.Sal,
e.Deptno,
d.Dname
FROM Emp e , Dept d
SELECT e.Ename ,
e.Deptno ,
d.Dname
Outer Join
FROM Emp e
LEFT JOIN
Dept d
ON e.Deptno = d.Deptno;
SELECT e.Ename ,
e.Deptno ,
d.Dname
Outer Join
FROM Emp e
RIGHT JOIN
Dept d
ON e.Deptno = d.Deptno
SELECT e.Ename ,
e.Deptno ,
d.Dname
Outer Join
FROM Emp e
FULL JOIN
Dept d
ON e.Deptno = d.Deptno
FROM Employees
WHERE Department_id
NOT IN (SELECT Department_id
FROM Departments
WHERE Location_id = 1700);
FROM Emp
WHERE Deptno IN (
SELECT Deptno
FROM Dept
);
FROM Orders o
WHERE 20 < (SELECT Quantity
FROM Order_details od
WHERE o.Orderid = od.Orderid
AND od.Productid = 23)
SELECT *
Correlated Subquery
FROM Emp a
WHERE a.Sal > (SELECT Sal
FROM Emp b
WHERE b.Empno = a.Mgr);
FROM Emp a,
(SELECT * FROM Emp
WHERE Ename = 'Turner') b
WHERE a.Sal > b.Sal
• UPDATE Dept_test
SET Dname = ‘marketing’
WHERE Deptno = 10;
To implement If-Then-Else logic within the SQL Statement ,we can use
DECODE.
EX: If DeptNo 10 , comm is 1.10*Sal, if DeptNo 20 , comm is 1.15*Sal,
if DeptNo 30 , comm is 1.10*Sal else comm is 0.5*Sal
FROM Emp;
SPAN Confidential and Copyright
Predefined Functions
• CASE
To implement If-Then-Else logic within the SQL Statement ,we can use
CASE.
FROM Emp;
SPAN Confidential and Copyright
String Functions
• LENGTH: To get length of a string
SELECT LENGTH('Sql Server') FROM DUAL;
SUBSTR(column/expression,m,[,n])
Ex: SELECT SUBSTR(‘Sql Server’,5,6) FROM DUAL;
LPAD(column|expression, n, ‘string’)
SELECT LAPD(Ename , 20, ‘ * ’) FROM Emp;
String Functions
• Oracle syntax:
•An index creates an entry for each value that appears in the
Index
indexed columns