Call now: 252-767-6166  
Oracle Training Oracle Support Development Oracle Apps

 
 Home
 E-mail Us
 Oracle Articles
New Oracle Articles


 Oracle Training
 Oracle Tips

 Oracle Forum
 Class Catalog


 Remote DBA
 Oracle Tuning
 Emergency 911
 RAC Support
 Apps Support
 Analysis
 Design
 Implementation
 Oracle Support


 SQL Tuning
 Security

 Oracle UNIX
 Oracle Linux
 Monitoring
 Remote s
upport
 Remote plans
 Remote
services
 Application Server

 Applications
 Oracle Forms
 Oracle Portal
 App Upgrades
 SQL Server
 Oracle Concepts
 Software Support

 Remote S
upport  
 Development  

 Implementation


 Consulting Staff
 Consulting Prices
 Help Wanted!

 


 Oracle Posters
 Oracle Books

 Oracle Scripts
 Ion
 Excel-DB  

Don Burleson Blog 


 

 

 


 

 

 

 
 

Advanced Oracle SQL: Query Overview and Syntax Review

Oracle Tips by Laurent Schneider

 

Laurent Schneider is considered one of the top Oracle SQL experts, and he is the author of the book "Advanced SQL Programming" by Rampant TechPress.  The following is an excerpt from the book.

Introduction

Developers, database administrators and end users apply SELECT query to select data from a database that contains schemas with tables, views and functions. Oracle adds more capabilities than any other engine to the SQL language, such as Top-n queries, scalar subqueries, analytics, modeling and hundreds of functions from ABS to XMLTRANSFORM.

A single SELECT query sometimes contains more business logic than a package a thousand lines long. This chapter provides a review of the syntax of the various elements composing the query.

Syntax Review

SELECT and FROM

SELECT and FROM can be used to select columns from a table containing employee and salary information and might appear as follows:

SELECT
   ENAME,
   SAL
FROM
   EMP;

The results would look like:

ENAME             SAL
---------- ----------
SMITH             800
ALLEN            1600
WARD             1250
JONES            2975
MARTIN           1250
BLAKE            2850
CLARK            2450
SCOTT            3000
KING             5000
TURNER           1500
ADAMS            1100
JAMES             950
FORD             3000
MILLER           1300

All rows are selected; each name is displayed with the corresponding salary. In SQL*Plus, the execution plan can be displayed automatically by setting AUTOTRACE.

SET AUTOTRACE ON EXPLAIN

The execution plan of the query above looks like this:

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   140 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| EMP  |    14 |   140 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------

The employee table used here is the one originally created for demonstration purposes by Bruce Scott, one of Oracle's first employees. The tables EMP and DEPT will be widely used in this book.

The Empdept.sql script below can be used to create the tables in a user schema:

-- Id     : $Id: empdept.sql,v 1.5 2015/12/07 11:05:31 lsc Exp $
-- Author : $Author: lsc $
-- Date   : $Date: 2015/12/07 11:05:31 $
--
-- Create EMP and DEPT in current schema
-- 

REM -- only create table and quota on default tablespace is needed
REM --
REM GRANT
REM    CREATE SESSION,

REM    CREATE TABLE,
REM    UNLIMITED TABLESPACE
REM TO
REM    SCOTT
REM IDENTIFIED BY
REM    TIGER;
REM CONNECT SCOTT/TIGER 

WHENEVER SQLERROR EXIT 

EXEC EXECUTE IMMEDIATE 'DROP TABLE EMP'; EXCEPTION WHEN OTHERS THEN NULL
EXEC EXECUTE IMMEDIATE 'DROP TABLE DEPT'; EXCEPTION WHEN OTHERS THEN NULL

-- create the department table

CREATE TABLE
   DEPT
(
   DEPTNO NUMBER(2)
      CONSTRAINT
         PK_DEPT
      PRIMARY KEY,
   DNAME VARCHAR2(14) ,
   LOC VARCHAR2(13)
)
/

-- create the employee table

CREATE TABLE
   EMP
(
   EMPNO NUMBER(4)
      CONSTRAINT
         PK_EMP
      PRIMARY KEY,
   ENAME VARCHAR2(10),
   JOB VARCHAR2(9),
   MGR NUMBER(4),
   HIREDATE DATE,
   SAL NUMBER(7,2),
   COMM NUMBER(7,2),
   DEPTNO NUMBER(2)
      CONSTRAINT
         FK_DEPTNO
      REFERENCES
         DEPT
)

-- fill the DEPT table

INSERT INTO
   DEPT
(
   DEPTNO,
   DNAME,
   LOC
)
VALUES
(
   10,
   'ACCOUNTING',
   'NEW YORK'
)
/
INSERT INTO
   DEPT
(
   DEPTNO,
   DNAME,
   LOC
)
VALUES
(
   20,
   'RESEARCH',
   'DALLAS'
)
/
INSERT INTO
   DEPT
(
   DEPTNO,
   DNAME,
   LOC
)
VALUES
(
   30,
   'SALES',
   'CHICAGO'
)
/
INSERT INTO
   DEPT
(
   DEPTNO,
   DNAME,
   LOC
)
VALUES
(
   40,
   'OPERATIONS',
   'BOSTON'
)
/

-- fill the EMP table

INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7369,
   'SMITH',
   'CLERK',
   7902,
   DATE '1980-12-17',
   800,
   NULL,
   20
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7499,
   'ALLEN',
   'SALESMAN',
   7698,
   DATE '1981-02-20',
   1600,
   300,
   30
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7521,
   'WARD',
   'SALESMAN',
   7698,
   DATE '1981-02-22',
   1250,
   500,
   30
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7566,
   'JONES',
   'MANAGER',
   7839,
   DATE '1981-04-02',
   2975,
   NULL,
   20
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7654,
   'MARTIN',
   'SALESMAN',
   7698,
   DATE '1981-09-28',
   1250,
   1400,
   30
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7698,
   'BLAKE',
   'MANAGER',
   7839,
   DATE '1981-05-01',
   2850,
   NULL,
   30
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7782,
   'CLARK',
   'MANAGER',
   7839,
   DATE '1981-06-09',
   2450,
   NULL,
   10
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7788,
   'SCOTT',
   'ANALYST',
   7566,
   DATE '1987-04-19',
   3000,
   NULL,
   20
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7839,
   'KING',
   'PRESIDENT',
   NULL,
   DATE '1981-11-17',
   5000,
   NULL,
   10
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7844,
   'TURNER',
   'SALESMAN',
   7698,
   DATE '1981-09-08',
   1500,
   0,
   30
)
/
INSERT INTO
   EMP
(   EMPNO,
    ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7876,
   'ADAMS',
   'CLERK',
   7788,
   DATE '1987-05-23',
   1100,
   NULL,
   20
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7900,
   'JAMES',
   'CLERK',
   7698,
   DATE '1981-12-03',
   950,
   NULL,
   30
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7902,
   'FORD',
   'ANALYST',
   7566,
   DATE '1981-12-03',
   3000,
   NULL,
   20
)
/
INSERT INTO
   EMP
(
   EMPNO,
   ENAME,
   JOB,
   MGR,
   HIREDATE,
   SAL,
   COMM,
   DEPTNO
)
VALUES
(
   7934,
   'MILLER',
   'CLERK',
   7782,
   DATE '1982-01-23',
   1300,
   NULL,
   10
)
/
COMMIT;


 

 

��  
 
 
Oracle Training at Sea
 
 
 
 
oracle dba poster
 

 
Follow us on Twitter 
 
Oracle performance tuning software 
 
Oracle Linux poster
 
 
 

 

Burleson is the American Team

Note: This Oracle documentation was created as a support and Oracle training reference for use by our DBA performance tuning consulting professionals.  Feel free to ask questions on our Oracle forum.

Verify experience! Anyone considering using the services of an Oracle support expert should independently investigate their credentials and experience, and not rely on advertisements and self-proclaimed expertise. All legitimate Oracle experts publish their Oracle qualifications.

Errata?  Oracle technology is changing and we strive to update our BC Oracle support information.  If you find an error or have a suggestion for improving our content, we would appreciate your feedback.  Just  e-mail:  

and include the URL for the page.


                    









Burleson Consulting

The Oracle of Database Support

Oracle Performance Tuning

Remote DBA Services


 

Copyright © 1996 -  2020

All rights reserved by Burleson

Oracle ® is the registered trademark of Oracle Corporation.