oracledba.help
SpecialTopics

Common SQL

Overview

SQL (Structured Query Language) is designed for the management of data in relational database management systems (RDBMS). In the case of Oracle, SQL commands that manipulate data are called Data Manipulation Language (DML). What follows are the essential SQL DML commands. For detailed SQL information you can go here.

SELECT

SELECT [DISTINCT] <select_list>
FROM <table_list>
[WHERE conditions]
[START WITH condition]
[GROUP BY group_by_list]
[HAVING search_conditions]
[ORDER BY order_list [ASC|DESC]];
SELECT * FROM emp;
SELECT count(*) FROM emp;
SELECT min(date_time) FROM orders;
SELECT max(date_time) FROM orders;

SELECT * FROM emp WHERE state='FL';
SELECT * FROM emp WHERE state='FL' ORDER BY lastname ASC;

SELECT * FROM emp WHERE pay_grade LIKE '%G1%';

SELECT * FROM emp WHERE state IN('FL', 'NY', 'MA');

SELECT count(*) "Deleted" FROM documents WHERE deleted IS NOT NULL;

SELECT date_time FROM orders
WHERE  date_time >= to_date(20070601, 'yyyymmdd');

SELECT date_time FROM orders 
WHERE date_time >= to_date(20060101, 'yyyymmdd') 
AND   date_time <= to_date(20070101, 'yyyymmdd');

SELECT *
FROM scott.documentpages
WHERE documentid 
IN (
    SELECT documentid
    FROM scott.documents
    WHERE creationdate >= to_date('01-01-2001.0000.00','MM-DD-YYYY.HH24MI.SS')
    AND   creationdate <= to_date('12-31-2001.2359.59','MM-DD-YYYY.HH24MI.SS')
    );

SELECT *
FROM scott.documents
LEFT JOIN scott.documentpages ON documents.documentid = documentpages.documentid
WHERE documents.creationdate
BETWEEN to_date('01/01/2001','mm/dd/yyyy') 
AND     to_date('01/01/2010','mm/dd/yyyy');

INSERT

INSERT INTO [schema].<table_name>[@dblink] [table_alias]
(column, column,...) What_to_Insert;
INSERT INTO emp VALUES('Smith','John');

INSERT INTO emp(lastname, firstname) VALUES('Smith','John');

INSERT INTO emp_new(lastname) (SELECT lastname FROM emp_old);

INSERT INTO table2 (SELECT * FROM table1);

INSERT INTO table2 (SELECT * FROM table1
WHERE date_time >= to_date(200512010000, 'YYYYMMDDHH24MISS')
AND   date_time <  to_date(200801010000, 'YYYYMMDDHH24MISS') );

INSERT INTO x15.tracking 
(TRACKING_ID, SCHEMA, TIMESTAMP, TYPE, DETAIL, SESSIONS, SQL)
VALUES ( 
   (SELECT max(tracking_id)+1 FROM x15.tracking),
    'X15', SYSDATE, 'DELETE', 'Test Event','',''
);

Insert (AKA Copy\Duplicate\Restore) Data from Another Database

Modify this simple model for your own needs.

 -- Source Database\Table
 1. QC 
    SELECT count(*) FROM SCOTT.TABLEX;
      1045
 2. Create Spool File for INSERT Commands
    spool C:\app\scripts\sql\spool\SCOTT.TABLEX_INSERT_CMDS.spool
 3. Run SQL to create INSERT commands.
    SELECT 'INSERT INTO SCOTT.TABLEX 
    VALUES(''' || POSTDATE || ''',''' || MEMBERCOUNT || ''');' 
    FROM SCOTT.TABLEX;
    Place above command on one line.
 4. spool off

 -- Spool File Snippet
 INSERT INTO SCOTT.TABLEX VALUES('09-SEP-20','482113');                                                                                        
 INSERT INTO SCOTT.TABLEX VALUES('10-SEP-20','482284');                                                                                        
 INSERT INTO SCOTT.TABLEX VALUES('11-SEP-20','482464');
 ...

 -- Destination Database\Table
 1. Truncate destination table.
    TRUNCATE TABLE SCOTT.TABLEX;
 2. Run INSERT commands from spool file.
 3. COMMIT;
 4. QC
    SELECT count(*) FROM SCOTT.TABLEX;
      1045

UPDATE

UPDATE [schema].<table_name>[@dblink] [alias]
SET col_expr(s)
[WHERE condition];
UPDATE emp
SET
   lastname  = 'Smith',
   firstname = 'John',
   dob       = to_date('10-31-1963',          'MM-DD-YYYY'),
   created   = to_date('09-16-2010 00:00:00', 'MM-DD-YYYY HH24:MI:SS')
WHERE id=1001; 

COMMIT;

DELETE

DELETE [FROM] [schema].<table_name>[@dblink] [alias]
WHERE (condition);
DELETE FROM emp WHERE emp_id=1075;

DELETE FROM emp
WHERE date_time >= to_date(20060101, 'YYYYMMDD')
AND   date_time <= to_date(20070101, 'YYYYMMDD');
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
PROMPT Deleting child records first (DocumentPages)...
DELETE FROM &v_schema..documentpages WHERE documentid IN 
(SELECT documentid FROM &v_schema..documents WHERE deleted IS NOT NULL);
COMMIT;

PROMPT Deleting documents...
DELETE FROM &v_schema..documents ...

<- SpecialTopics