everythingOracle.bizhat.com

 

'Everything you wanted
to know about Oracle'

Training References Syntax Tell A Friend Contact Us

 

 

Manuscript: 02

 

 

Topics:  Introduction 01

 

In the �Introduction 01� movie you will learn the Oracle9i: SQL New Features.

 

You will learn the new Oracle ANSI SQL standard statement and compare it with the original non-ANSI Oracle 

SQL.

   
   

Manuscript

-- Introduction 01 ("Must to know" Oracle9i: SQL New Features)
-- Preparation
alter table oracle.emp drop (photo)
/
SET ECHO ON
CLEAR SCR
-- Connect to SQLPLUS as the oracle user.
-- 
pause

CONNECT oracle/learning
pause

CLEAR SCR
-- Let's begin by setting the linesize to 100 and the pagesize to 55.
--
pause

SET LINESIZE 100 PAGESIZE 55
pause

CLEAR SCR
-- Now, let's compare the Oracle9i ANSI standard JOIN syntax
-- with the original join syntax.

CLEAR SCR
-- Query the employee name, department number, and department name columns
-- from the EMP table and DEPT table.

-- Exclude all of the sales department information.

-- Use the original Oracle join syntax.
-- 
pause 

SELECT ename, dept.deptno, dname
FROM emp, dept
WHERE emp.deptno = dept.deptno
AND dname <> 'SALES' 
/
pause

CLEAR SCR
-- And now, use the Oracle9i ANSI standard JOIN syntax.
-- 
pause

SELECT ename, dept.deptno, dname
FROM emp JOIN dept
ON emp.deptno = dept.deptno
AND dname <> 'SALES' 
/
-- Notice, that you get the same result.
--
pause

CLEAR SCR
-- Use the Oracle9i ANSI standard NATURAL JOIN syntax 
-- to join the EMP and DEPT tables where the employees'
-- salary is greater than 3000 dollars.
--
pause

SELECT ename, deptno, dname
FROM emp NATURAL JOIN dept
WHERE sal > 3000
/
-- Notice that in the NATURAL JOIN syntax, 
-- you don't need a WHERE clause since the 
-- department number is the same.
--
pause

CLEAR SCR
-- Use the USING clause to join the EMP and DEPT tables 
-- where employees' salary is greater than 3000 dollars.
--
pause

SELECT ename, deptno, dname
FROM emp JOIN dept
USING (deptno)
WHERE sal > 3000
/
-- Notice that in the USING clause the join column names must be the same.
pause

CLEAR SCR
-- Use the Oracle9i ANSI standard CROSS JOIN syntax
-- with no WHERE clause to create a cartesian product.

-- Query the department name and employee name
-- where the department number is (10 or 30) and 
-- the employees are (SMITH, ALLEN, and WARD).
pause

SELECT dname, ename
FROM dept d CROSS JOIN emp e
WHERE d.deptno IN (10,30) and
ename IN ('SMITH','ALLEN','WARD')
ORDER BY dname
/
-- This is an example of an Oracle9i ANSI standard CROSS JOIN syntax.
pause

CLEAR SCR
-- Using the OUTER JOIN option, not only will you 
-- query records that have matches but you also 
-- see the rows that have no matches.
--
-- The Oracle9i ANSI Join syntax provides three separate
-- capabilities: RIGHT, LEFT, and FULL OUTER JOIN.
-- The word OUTER is redundant and usually omitted.
--
pause
pause

CLEAR SCR
-- Let's demostrate the RIGHT OUTER JOIN syntax usage.

-- First, add a Finance department to the department 
-- Table with no associated employees.
--
pause

INSERT INTO dept
VALUES (40,'FINANCE','WASHINGTON,DC')
/
COMMIT;
pause

CLEAR SCR
-- Query all employee names with their department's name.

-- With that in mind to:
-- Exclude all of the sales department information;
-- Include all of the departments that have no employees.

-- Use the original oracle join syntax to do the OUTER JOIN query.
pause

SELECT nvl(e.ename,'No Match'), d.deptno, d.dname
FROM dept d, emp e
WHERE d.deptno = e.deptno (+)
AND dname <> 'SALES'
/
-- Notice that FINANCE deptartment has no match.
pause

CLEAR SCR
-- Write the same above query, using the Oracle9i ANSI standard
-- RIGHT OUTER JOIN syntax.
--
pause

SELECT nvl(e.ename,'No Match'), d.deptno, d.dname
FROM emp e RIGHT OUTER JOIN dept d
ON d.deptno = e.deptno
WHERE dname <> 'SALES'
/
pause


CLEAR SCR
-- Add an employee who doesn't work in any of the departments yet.

-- Make sure to disable the foreign key before inserting a record.
-- 
pause

INSERT INTO emp
VALUES (9900,'KAZ','CLERK',7902,TO_DATE(sysdate),1000,NULL,NULL)
/
COMMIT
/
pause

CLEAR SCR
-- Query all of the employee names including those who don't work for any department.

-- Use the original Oracle syntax.
pause

SELECT e.ename, d.deptno, nvl(d.dname,'No Match') as department
FROM dept d, emp e WHERE d.deptno (+) = e.deptno
/
-- Notice that employee KAZ does not work for any department.
pause

CLEAR SCR
-- List the same above query by using the Oracle8i ANSI standard 
-- LEFT OUTER JOIN syntax.
--
pause

SELECT e.ename, d.deptno, nvl(d.dname,'No Match') as department
FROM emp e LEFT OUTER JOIN dept d
ON d.deptno = e.deptno
/
pause

CLEAR SCR
-- Let's perfom an excercise to use the FULL OUTER JOIN option to find
-- all of the records that have no matches in the two joined tables.
pause
SELECT nvl(e.ename,'No Match') as name, d.deptno, 
nvl(d.dname,'No Match') as department
FROM emp e FULL OUTER JOIN dept d ON d.deptno = e.deptno
/
-- That would be difficult to do with an original Oracle syntax.
pause

CLEAR SCR
-- Delete the FINANCE department and the KAZ employee. 
--
pause

DELETE FROM dept
WHERE deptno = 40
/
DELETE FROM emp
WHERE empno = 9900
/
COMMIT
/
-- You have deleted the records so that you can repeat these
-- steps over and over again.

pause

CLEAR SCR

-- Practice this Hands-on over and over
-- until you become a master at it.

-- For more information about the subject, you are encouraged
-- to read from a wide selection of available books.

-- Good luck!
Pause

 

     Reviews and Templates for FrontPage
     

Copyright � everythingOracle.bizhat.com 2006 All Rights Reserved.