Académique Documents
Professionnel Documents
Culture Documents
Oracle provides software to create and manage the Oracle database. The database consists of
physical and logical structures in which system, user, and control information is stored. The
software that manages the database is called the Oracle database server. Collectively, the
software that runs oracle and the physical database are called the Oracle database system.
You will learn more about the operation of the database server and the structure of the Oracle
database where they are relevant to the performance of specific database management tasks.
1. ADDING DATA
2. VIEWING DATA
3. DELETING DATA
4. UPDATING DATA
SQL IS FURTHER DIVIDED INTO A SET OF SUB LANGUAGES THEY ARE
1. CREATE
2. DROP
3. ALTER
4. RENAME
5. TRUNCATE
6. PURGE
7. FLASHBACK
1. INSERT
2. UPDATE
3. DELETE
4. MERGE
5. INSERT ALL
1. GRANT
2. REVOKE
1. COMMIT
2. ROLLBACK
3. SAVEPOINT
1. SELECT
ONCE A DATABASE HAS BEEN CREATED A PROGRAMMER CAN RUN SQL AND PL/SQL
PROGRAMS FOR THAT DATABASE. FOR THE PROGRAMMER TO INTERACT WITH THAT
DATABASE HE IS PROVIDED WITH A TOOL KNOWN AS ORACLE SQL*PLUS. SQL PLUS ACTS
LIKE A WINDOW TO THE DATABASE FOR THE PROGRAMMER, SQL PLUS WILL PROVIDE THE
PROGRAMMER WITH A COMMAND PROMPT WHERE HE CAN TYPE SQL AND PL/SQL
PROGRAMS AND SEND THOSE PROGRAMS TO THE ORACLE DATABASE SERVER FOR
PROCCESSING OR COMPILATION. FOR SQL STATEMENTS THE SQL COMPILER IS USED AND
FOR PL/SQL STATEMENTS THE PL/SQL COMPILER IS USED. THE SQL COMPILER AND PL/SQL
COMPILER WILL BE ON THE ORACLE DATABASE SERVER. THE SQL COMPILER IS KNOWN AS
THE SQL ENGINE, AND THE PL/SQL COMPILER IS KNOWN AS THE PL/SQL ENGINE
WHEN A DATABASE IS CREATED A SET OF DEFAULT USERS ARE CREATED FOR THAT
DATABASE.
SQLPLUS HAS ITS OWN SET OF COMMANDS KNOWN AS SQL*PLUS COMMANDS USING
THESE COMMANDS WE CAN PERFORM FORMATTING TO THE DATA THAT IS RETURNED BY
THE ORACLE DATABASE TO THE CLIENT SYSTEM. THESE COMMANDS ARE USED FOR REPORT
GENERATION USING SQL*PLUS.
2. ORACLE LITE: - IT IS DEVELOPED FOR LOW RESOURCE SYSTEMS LIKE PALM TOPS AND
LAPTOPS. IT SUPPORTS NETWORKING BUT SECURITY FEATURES ARE LOW.
2. ORACLE SQL: - A LANGUAGE PROVIDED BY THE ORACLE SERVER TO PERFORM ALL DATA
MANIPULATION ON THE ORACLE DATABASE SERVER.
8. ORACLE DATAPUMP (10g) PREVIOUSLY KNOWN AS IMP AND EXP UTILITIES:- USED TO
PERFORM LOGICAL BACKUPS AND ALSO TO PORT DATA FROM ONE SERVER TO ANOTHER
SERVER.
9. LOAD JAVA:- THIS TOOL LOADS JAVA CLASSES AND PACKAGES INTO THE ORACLE
DATABASE. AVIALABLE FROM 8i ONWARDS.
10. DROP JAVA:- THIS TOOL IS USED TO DROP JAVA CLASSES AND PACKAGES FROM
DATABASE.
11. ORACLE DBCA (DATABASE CONFIGURATION ASSISTANT):- IS A JAVA BASED TOOL THAT
GIVES A MENU DRIVEN WIZARD FOR ORACLE DATABASE CREATION.
WHAT IS A DATATYPE?
A DATATYPE WILL INFLUENCE WHAT TYPE OF DATA CAN BE STORED IN A COLUMN OF A
TABLE. EVERY COLUMN OF A TABLE MUST BE DEFINED WITH A DATATYPE.
1. NUMBER
2. DATE
3. CHAR
4. VARCHAR2
5. LONG
6. LARGE OBJECT TYPES (LOB TYPES)
NUMBER: - THIS DATA TYPE IS USED TO STORE BOTH INTEGER AND FLOAT FORMAT DATA.
SYNTAX
- - - - -. - -
EMPNO NUMBER
123.45
DATE: - THE DATE TYPE IS USED TO STORE BOTH DATE AND TIME VALUES. THIS DATATYPE
WILL TREAT THE DATE AS AN ACTUAL DATE AND ALL DATE CALCULATIONS CAN BE
PERFORMED ON THAT DATATYPE.
ORACLE DATE TYPE WILL SUPPORT DATES IN THE RANGE OF '01-JAN-4712 BC'
'31-DEC-9999 AD'
'DD-MON-YY' OR 'DD-MON-YYYY'
'31-AUG-03'
'01-JAN-81' - 2081
'01-JAN-1981'
CHAR: - THE CHAR TYPE IS USED TO STORE CHARACTER STRING FORMAT DATA. A STRING
IS A SET OF ONE OR MORE CHARACTERS ENCLOSED WITHIN SINGLE QUOTES.
WE CAN STORE A MAX OF 2000 CHARS WITHIN A ROW FOR A CHAR COL MIN 1 CHAR
SYNTAX
GENDER CHAR
'M'
'F'
ENAME CHAR
THE CHAR TYPE PERFORMS BLANK PADDING I.E. IT WILL ALWAYS TAKE UP COMPLETE
MEMORY OF THE COL EVEN IF THE DATA SUPPLIED IS LESS THAN THE MAX SIZE OF THE
COL.
VARCHAR2: - THE VARCHAR2 TYPE IS USED TO STORE CHAR STRING FORMAT DATA, BUT
UNLIKE THE CHAR TYPE IT WILL NOT PERFORM ANY BLANK PADDING. WE CAN STORE A MAX
OF 4000 CHARS PER ROW IN VARCHAR2 COL.
SYNTAX
IN THE VARCHAR2 TYPE THE SIZE OF THE COL IS NOT OPTIONAL WE MUST ALWAYS
SPECIFY THE SIZE OF THE COL.
LONG: - THE LONG TYPE IS USED TO STORE VERY LARGE AMOUNT OF TEXT BASED
INFORMATION. WE CAN STORE UPTO 2 GB OF TEXT BASED INFORMATION PER ROW WITHIN
A TABLE.
SYNTAX: -
EMAIL_TEXT LONG
WE CAN HAVE ONLY 1 LONG COL PER TABLE. WE CANNOT USE A LONG COLUMN IN WHERE
CONDITION, WE CANNOT USE A LONG COLUMN IN A GROUP FUNCTION OR GROUP BY
CLAUSE.
LARGE OBJECT TYPES: - THE LOB TYPES WERE INTRODUCED FROM ORACLE 8 ONWARDS
2 BLOB: - BINARY LARGE OBJECT, WE CAN STORE UPTO 4 GB OF BINARY BASED DATA IN A
BLOB COLUMN WE CAN HAVE ANY NUMBER OF BLOB COLUMNS WITHIN A TABLE.
3. BFILE: - BINARY FILE, THIS DATATYPE WILL STORE A FILE POINTER TO A BINARY FORMAT
FILE ON THE O/S THE FILE CAN BE UPT0 4 GB IN SIZE.
TO WORK ON THESE DATA TYPES WE WILL USE THE DBMS_LOB PACKAGE, WHICH IS A PART
OF THE ORACLE INSTALLATION. TO WORK WITH THIS PACKAGE WE MUST BE A DBA.
NULL TYPE: - NULL IS A MISSING OR UNKNOWN VALUE IT WILL TAKE 1 BYTE IN THE
MEMORY
CREATE TABLE: - THIS A DDL COMMAND IT IS USED TO CREATE A DATA BASE TABLE
WITHIN A SCHEMA.
SYNTAX: -
WE CAN HAVE UPTO 1000 COLS PER TABLE WITHIN ORACLE DATABASE.
THIS COMMAND WILL DISPLAY THE INFORMATION WITHIN THE EMPLOYEE TABLE.
SYNTAX
INSERT INTO <TABLE NAME> [(<COL LIST>)] VALUES (<VALUE LIST>);
WHEN WE WISH TO SUPPLY VALUES ONLY FOR SPECIFIC COLS IN A TABLE WE MUST
SPECIFY THE COL LIST AS WELL AS THE VALUES
DELETE FROM EMP WHERE JOB='CLERK'; - WILL DELETE ALL THE CLERKS FROM THE TABLE
DELETE FROM EMP; : - THIS WILL DELETE ALL THE ROWS FROM THE TABLE
DELETE EMP; : - WILL DELETE ALL THE ROWS FROM THE EMP TABLE
UPDATE: - THE UPDATE COMMAND IS USED TO MODIFY THE INFORMATION WITHIN A COL.
SYNTAX: -
UPDATE <TABLE NAME > SET <COL NAME>= <VALUE> [WHERE <CONDITION>];
TO REMOVE THE TABLE FROM THE DATABASE WE USE THE DROP TABLE COMMAND
RENAME: -
SYNTAX
TRUNCATE: - THE TRUNCATE COMMAND IS USED TO REMOVE ALL DATA FROM A TABLE
PERMANENTLY.
COMMIT: -THE COMMIT COMMAND IS USED TO SAVE ANY UNSAVED TRANSACTIONS THAT
HAVE BEEN MADE ON A TABLE.
SYNTAX: -
COMMIT;
1. IMPLICIT COMMIT
2. EXPLICIT COMMIT
EXPLICIT COMMIT IS DONE WHEN WE ISSUE THE COMMIT COMMAND AT THE SQL PROMPT
SQL> COMMIT;
SYNTAX: -
WHEN WE ISSUE A ROLLBACK COMMAND IT WILL UNDO ALL DML TRANSACTIONS THAT ARE
UNCOMMITED UPTO THE LAST COMMIT POINT.
WE CANNOT ROLBACK DDL AND DCL TRANSACTIONS WE CAN ROLLBACK ONLY DML
TRANSACTIONS.
1 row created.
SQL> SAVEPOINT 1;
Savepoint created.
4 rows deleted.
Rollback complete.
SQL> ROLLBACK;
Rollback complete.
FLASHBACK DROP
WHEN WE DROP THE TABLE THE NAME OF THE TABLE WILL BE CHANGED AND IT WILL be
STORED IN THE RECYCLE BIN.
WE CAN CONTINUE TO SELECT DATA FROM THE RENAMED TABLE.
RB: = ROLLBACK
$$44022: - IT IS THE UNIQUE NUMBER GIVEN BY DATA DICTIONARY TO THE TABLE OBJECT.
$TABLE: - INDICATES THE OBJECT TYPE.
$20: - GIVES A VERSION NUMBER FOR UNIQUENESS.
TO GET THE NAMES OF THE OBJECTS IN THE RECYCLE BIN AND THE NAMES OF THE
ORIGINAL OBJECTS WE WRITE THE FOLLOWING QUERY.
THE ABOVE COMMAND WILL RESTORE THE TABLE THAT WE HAD DROPPED.
WHEN WE FLASHBACK A TABLE FROM THE RECYCLE BIN ALL ASSOCIATED INDEXES FOR
THAT TABLE WILL ALSO BE RECOVERED.
CONSTRAINTS: -
A CONSTRAINT IS A CHECK OR A RULE THAT IS DEFINED ON A TABLES COLUMN. A
CONSTRAINT WILL CHECK THE DATA THAT IS BEING ENTERED INTO THE TABLE COLS, IF
THE DATA IS SATISFYING THE CONSTRAINT RULE THEN THAT DATA IS ALLOWED INTO THE
TABLE OTHERWISE IT WILL BE REJECTED.
NOTE: - WE CAN DEFINE ANY CONSTRAINT AT THE TIME OF CREATION OF THE TABLE OR
AFTER CREATION OF THE TABLE.
NOT NULL CONSTRAINT: - WHEN A NOT CONSTRAINT IS DEFINED ON A TABLES COL THEN
THAT COL WILL NOT ALLOW ANY NULL VALUES TO BE INSERTED OR UPDATED INTO THAT
COL.
CREATE TABLE EMP1 (EMPNO NUMBER (4) NOT NULL, ENAME VARCHAR2 (10) NOT NULL,
JOB VARCHAR2 (10), MGR NUMBER (4), DEPTNO NUMBER (4));
THE ABOVE QUERY WILL RETURN ALL CONSTRAINT INFORMATION FOR THE GIVEN TABLE.
IF WE WISH TO SPECIFY THE NAME OF THE CONSTRAINT THEN WE USE THE CONSTRAINT
KEY WORD IN THE CREATE TABLE COMMAND.
CREATE TABLE EMP1 (EMPNO NUMBER (4) CONSTRAINT NN_EMPNO NOT NULL,
ENAME VARCHAR2 (10) CONSTRAINT NN_ENAME NOT NULL,
JOB VARCHAR2 (10), MGR NUMBER (4), DEPTNO NUMBER (4))
UNIQUE: - THE UNIQUE CONSTRAINT WILL NOT ALLOW DUPLICATE VALUES TO BE ENTERED
IN THE SPECIFIED COL.
THE FOLLOWING COMMAND IS USED TO SPECIFY BOTH UNIQUE AND NOT NULL
CONSTRAINTS ON THE TABLE.
CONSTRAINT_NAME C
------------------------------ -
NN_EMPNO C
NN_ENAME C
UN_EMPNO U
CHECK CONSTRAINT: -
THE CHECK CONSTRAINT IS USED TO CHECK A USER DEFINED CONDITION FOR A COL
WHEN THE DATA IS BEING INSERTED OR UPDATED FOR THAT COLUMN.
ENAME WE MUST CHECK THAT THE ENAME MUST ALWAYS IN UPPER CASE
CREATE TABLE EMP1 (EMPNO NUMBER (4) CONSTRAINT UN_EMPNO UNIQUE
CONSTRAINT NN_EMPNO NOT NULL,
ENAME VARCHAR2 (10) CONSTRAINT CK_ENAME CHECK (ENAME=UPPER (ENAME))
CONSTRAINT NN_ENAME NOT NULL,
JOB VARCHAR2 (10), MGR NUMBER (4), DEPTNO NUMBER (4))
WHEN WE DEFINE THE PRIMARY KEY CONSTRAINT ON A TABLE THEN THE FOLLOWING
ACTIONS WILL BE PERFORMED ON THAT TABLE
NOTE: - AN INDEX OBJECT IS USED TO INCREASE THE SPEED FOR SEARCH AND RETRIEVAL
OF DATA WITHIN A TABLES COL.
CREATE TABLE DEPT (DEPTNO NUMBER (2) CONSTRAINT PK_DEPTNO PRIMARY KEY,
DNAME VARCHAR2 (10), LOC VARCHAR2 (10));
CONSTRAINT_NAME C
------------------------------ -
NN_EMPNO C
NN_ENAME C
CK_ENAME C
UN_EMPNO U
FK_DEPTNO R
1 row created.
1 row created.
SQL> COMMIT;
Commit complete.
1 row deleted.
1 row deleted.
SQL>
CREATE TABLE DEPT (DEPTNO NUMBER (2) CONSTRAINT PK_DEPTNO PRIMARY KEY, DNAME
VARCHAR2 (10), LOC VARCHAR2 (10));
1 row created.
SQL> COMMIT;
Commit complete.
1 row created.
1 row created.
SQL> COMMIT;
Commit complete.
1 row deleted.
no rows selected
No rows selected
UNIQUE: -
CREATE TABLE EMP
(EMPNO NUMBER (4),
ENAME VARCHAR2 (10),
JOB VARCHAR2 (10),
SAL NUMBER (7,2),
DEPTNO NUMBER (2), CONSTRAINT UN_EMPNO UNIQUE ( EMPNO ));
CREATE TABLE DEPT (DEPTNO NUMBER (2) CONSTRAINT PK_DEPTNO PRIMARY KEY, DNAME
VARCHAR2 (10) CONSTRAINT PK_DNAME PRIMARY KEY);
TABLE LEVEL CONSTRAINTS ARE DEFINED AFTER ALL THE COLUMN DEFINITIONS.
USING TABLE LEVEL CONSTRAINTS WE CAN DEFINE COMPOSITE UNIQUE, PRIMARY AND
FOREIGN KEYS.
USING TABLE LEVEL CONSTRAINTS WE CAN MAKE COMPARISON BETWEEN COLUMNS
VALUES WITH CHECK CONSTRAINTS.
TABLE LEVEL CONSTRAINTS MAKE THE SYNTAX SIMPLER TO READ SINCE ALL CONSTRAINT
DEFINITIONS ARE KEPT SEPERATE FROM COLUMN DEFINITIONS.
NOT NULL CONSTRAINT CANNOT BE DEFINED AT TABLE LEVEL.
ALTER TABLE: -
THE ALTER TABLE COMMAND IS USED TO MODIFY THE STRUCTURE OF THE TABLE. USING
THE ALTER TABLE COMMAND WE CAN PERFORM THE FOLLOWING TASKS
SYNTAX: -
ALTER TABLE <TABLE NAME> ADD (<COL NAME> <DATA TYPE> [<CONSTRAINT>],...);
ALTER TABLE EMP ADD (GENDER CHAR (1) CONSTRAINT CK_GENDER CHECK (GENDER IN
('M','F')), ADDRESS VARCHAR2 (20));
SYNTAX
NOT NULL: -
SYNTAX: -
ALTER TABLE <TABLE NAME> MODIFY <COL NAME> CONSTRAINT <CONSTRAINT NAME>
NOT NULL;
UNIQUE: -
SYNTAX: -
CHECK: -
PRIMARY KEY: -
ALTER TABLE <TABLE NAME> ADD CONSTRAINT <CONSTRAINT NAME> PRIMARY KEY (<COL
NAME>);
FOREIGN KEY
ALTER TABLE <TABLE NAME> ADD CONSTRAINT <CONSTRAINT NAME> FOREIGN KEY (<COL
NAME>) REFERENCES <TABLE NAME> (<PK COL NAME>);
ALTER TABLE EMP ADD CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES
DEPT (DEPTNO);
WHEN A CONSTRAINT IS DISBABLED WE CAN ENTER DATA THAT IS NOT VALIDATING THE
CONSTRAINT, BUT ONCE THAT DATA HAS BEEN ENTERED INTO THE TABLE WE CANNOT
ENABLE THE CONSTRAINT UNLESS THE INVALID DATA IS REMOVED FROM THE TABLE.
SYNTAX
WE CAN INCREASE OR DECREASE THE SIZE OF A COL, AT ANY TIME WETHER DATA IS,
EXISTING IN THE COL OR NOT.
SYNTAX: -
ALTER TABLE <TABLE NAME> MODIFY <COL NAME> <DATA TYPE> (<NEW SIZE>)
TO CHANGE THE DATATYPE OF A COLUMN THE COL MUST BE EMPTY, BUT IF WE ARE
CHANGING THE DATATYPE FROM CHAR TO VARCHAR2 OR VARCHAR2 TO CHAR THEN THE
COL NEED NOT BE EMPTY.THE SIZE OF THE DATATYPE MUST BE SAME OR LARGER THAN THE
OLD SIZE IN CASE DATA IS ALREADY EXISING IN THE COL.
GRANT/REVOKE: -
GRANT: -
THE GRANT COMMAND IS USED TO GIVE ACCESS PRIVILAGES FOR A OBJECT FROM ONE
USER TO ANOTHER USER.
SYNTAX: -
PRIVILAGE NAME: - IS THE NAME OF THE PRIVILAGE WE WISH TO GRANT FOR THE GIVEN
OBJECT
ALL: - WILL GRANT ALL THE AVAILABLE PRIVILAGES FOR THAT OBJECT TYPE
OBJECT NAME: - IS THE NAME OF THE OBJECT ON WHICH WE WISH TO GRANT ACCESS
USER NAME: - IS THE NAME OF THE ORACLE USER TO WHOM WE WISH TO GRANT ACCESS
PUBLIC: - WILL GRANT THE GIVEN PRIVILAGE TO ALL THE ORACLE DATABASE USERS
User created.
Grant succeeded.
Grant succeeded.
no rows selected
Grant succeeded.
-----
1. SELECT
2. INSERT
3. UPDATE
4. DELETE
5. ALTER
6. REFERENCES: - IF WE GIVE THIS GRANT THEN THE OTHER USER CAN CREATE A FOREIGN
KEY TO THE TABLE THAT HAS BEEN GRANTED.
7. INDEX: - IF WE GIVE THIS GRANT THEN THE OTHER USER CAN CREATE AN INDEX ON THE
TABLE THAT HAS BEEN GRANTED.
IF WE GIVE ALL THEN ALL THE PRIVILAGES WILL GRANT TO DEMO USER AT ONE GO.
Grant succeeded.
THE GIVN QUERY WILL GET THE DETAILS FOR THE TABLE GRANTS.
GRANTEE OWNER
------------------------------ ------------------------------
TABLE_NAME GRANTOR SIDURAIC
------------------------------ ------------------------------ - - - - - - - -
DEMO SCOTT
EMP SCOTT YNNNNNN
REVOKE: - THIS COMMAND IS USED TO REMOVE THE PRIVILAGES FOR A USER FOR A GIVEN
OBJECT
SYNTAX
REVOKE <PRIVILAGE NAME> | ALL ON <OBJECT NAME> FROM <USER NAME> | PUBLIC;
WHEN A GRANT HAS BEEN SPECIFIED EXPLICITLY THEN WE HAVE TO REVOKE THE
PRIVILAGES IN AN EXPLICIT MANNER. BY GIVING THE REVOKE COMMAND EXCLUSIVELY FOR
THAT USER.
VIEWS
SYNTAX: -
WE CAN PERFORM DML OPERATIONS ONLY ON THOSE COLS THAT HAVE BEEN SELECTED
WITHIN THE VIEW.
SEQUENCE: -
Sequence dropped.
Sequence created.
1 row created.
THE ABOVE QUERY WILL RETURN THE CURRENT VALUE OF THE SEQUENCE
MTL_SYSTEM_ITEMS_B
INDEX
WHAT IS AN INDEX?
SYNTAX:-
AN INDEX WILL KEEP SEVERAL DETAILS ABOUT THE DATA WITHIN THE COL.
IT WILL KEEP INFORMATION LIKE
ROWID OF EVERY ROW IN THE COL
DATAFILE ID
DATABLOCK ID
ROWNUM OF EVERY ROW WITHIN THE COLUMN.
1. WHEN THE COLUMN IS CONTAINING VERY LARGE AMOUNT OF UNIQUE VALUES AND IS
NOT BEING UPDATED FREQUENTLY
2. WHEN THE COLUMN IS USED FREQUENTLY IN THE WHERE CLAUSE OF THE QUERY
3. WHEN THE COLUMN IS CONTAINING VERY LARGE NUMBER OF NULL VALUES.
CLUSTER
SYNTAX: -
A SYNONYM WILL NOT KEEP ANY DATA BY ITSELF, IT WILL ONLY CREATE AN ALIAS NAME
FOR ANOTHER DATABASE OBJECT, AND IT WILL ALLOW THE USER TO ACCESS THAT OBJECT
THROUGH THIS ALIAS NAME.
4 rows deleted.
no rows selected
no rows selected
USES OF SYNONYM
1. TO HIDE THE ORIGINAL TABLE NAME FROM OTHER USERS.
2. IF WE GRANT A TABLE TO ANOTHER USER THEN THAT USER CAN ACCESS OUR TABLE
FASTER BY CREATING A SYNONYM FOR OUR TABLE IN HIS SCHEMA.
NOTE: - THE SYNONYM WILL BE WORKING AS LONG AS THE TABLE IS GRANTED, WHEN THE
GRANT OF OUR TABLE IS REMOVED THEN THE SYNONYM WILL STOP WORKING BUT IT WILL
NOT BE REMOVED.
no rows selected
SYNONYM_NAME TABLE_OWNER
------------------------------ ------------------------------
TABLE_NAME
------------------------------
DB_LINK
--------------------------------------------------------------------------------
E SCOTT
EMP
THIS TABLE IS USED TO GET INFORMATION ABOUT ANY SYNONYM WITHIN THE ORACLE
DATABASE SCHEMA.
SELECT - STATEMENTS
THE SELECT COMMAND IS USED TO RETRIEVE DATA OR INFORMATION FROM THE DATABASE
TABLES. WE CAN DISPLAY DATA IN DIFFERENT METHODS USING THE SELECT COMMAND.
SYNTAX: -
GIVING THE <COL LIST> WILL SELECT SPECIFIED COLS FROM THE TABLE
FROM <TABLE NAME> WILL SPECIFY THE NAME OF THE TABLE FROM WHERE WE WISH TO
SELECT THE DATA.
WHEN WE ARE SELECTING FEW COLS FROM A TABLE THE THAT IS KNOWN AS PROJECTION
WHEN WE ARE RESTRICTING THE NO OF ROWS THAT ARE BEING SELECTED FROM THE
TABLE THEN IT IS KNOWN AS RESTRICTION.
WHERE <CONDITION>: -
THE WHERE CLAUSE IS USED TO RESTRICT THE NO OF ROWS THAT ARE SELECTED BASED
ON A CONDITION.
SYNTAX: -
LOGICAL OPERATORS: - THEY ARE USED TO CHECK MORE THAN ONE CONDITION AND
BASED ON THE TYPE OF OPERATOR THEY WILL RETURN TRUE OR FALSE.
AND: - THE AND OPERATOR WILL CHECK 2 OR MORE CONDITIONS AND RETURN TRUE ONLY
IF ALL THE CONDITIONS THAT IT IS CHECKING, RETURN TRUE.
DISPLAY THOSE EMPLOYEES WHO EARN SAL BETWEEN 1000 AND 2500
DISPLAY THOSE EMPLOYEES WHO DID NOT JOIN IN THE YEAR 81'
DISPLAY THOSE EMPLOYEES WHO EARN SAL <1000 AND > 2000
DISPLAY THOSE EMP WHO WORK IN DEPT 10 OR 30 AND JOB IS CLERK OR SALESMAN
DISPLAY THOSE EMP WHO EARN SAL >2500 AND WHOSE WORK ON DEPT 20,30
NOT: -
SYNTAX: -
NOT (<CONDITOIN>)
1. IS NULL
2. IS NOT NULL
3. BETWEEN
4. NOT BETWEEN
5. IN
6. NOT IN
7. LIKE
8. NOT LIKE
IS NULL: -
SYNTAX
WHERE <LEFT VALUE> IS NULL
IS NOT NULL: -
THIS OPERATOR CHECKS IF THE GIVEN LEFT VALUE IS NOT A NULL VALUE
BETWEEN: -
SYNTAX
WHERE <LEFT VALUE> BETWEEN <LOW VALUE> AND <HI VALUE>
NOT BETWEEN: -
SYNTAX
WHERE <LEFT VALUE> NOT BETWEEN <LOW VALUE> AND <HI VALUE>
SELECT * FROM EMP WHERE SAL NOT BETWEEN 1000 AND 2500;
SELECT * FROM EMP WHERE HIREDATE NOT BETWEEN '01-JAN-81' AND '31-DEC-81';
IN: -
SYNTAX
NOT IN
SELECT * FROM EMP WHERE ENAME LIKE '%A%'; - IT WILL SEARCH FOR A AT ANY
POSITION WITHIN THE STRING.
SELECT * FROM EMP WHERE ENAME LIKE '_____'; - IT WILL DISPLAY THOSE ENAMES THAT
ARE 5 CHARS IN LENGTH.
SELECT * FROM EMP WHERE ENAME LIKE '_M%'; - IT WILL DISPLAY THOSE ENAMES WHERE
M IS IN THE SECOND POSITION
SELECT * FROM EMP WHERE SAL LIKE '%. %'; - IT WILL DISPLAY THOSE EMP'S WHO HAVE .
IN THEIR SALARY.
SELECT * FROM EMP WHERE ENAME LIKE 'S%' OR ENAME LIKE '%N'; - IT WILL DISPLAY
THOSE EMP WHOSE ENAME IS STARTING WITH 'S' OR ENDING WITH 'N'
NOT LIKE: -
SELECT * FROM EMP WHERE ENAME NOT LIKE 'S%' AND ENAME NOT LIKE '%N';
SELECT * FROM EMP WHERE ENAME LIKE 'S%' AND HIREDATE NOT LIKE '%82';
SELECT * FROM EMP WHERE ENAME LIKE 'S%' AND HIREDATE LIKE '%82';
SUB-QUERIES
A SUB-QUERY WILL CONSIST OF TWO QUERIES, WHERE ONE QUERY WILL CALL THE OTHER
QUERY.THE QUERY THAT CALLS THE OTHER QUERY IS KNOWN AS THE PARENT QUERY OR
ROOT QUERY. THE QUERY THAT IS BEING CALLED BY THE PARENT QUERY OR ROOT QUERY
IS KNOWN AS THE SUB QUERY OR CHILD QUERY OR NESTED QUERY.
ORACLE SUPPORTS TWO TYPES OF SUB QUERIES
1. INDEPENDENT SUB QUERY
2. CORRELATED SUB QUERY
INDEPENDENT SUB-QUERY:-
SYNTAX:-
2. WHEN OUTPUT IS REQUIRED FROM A SET OF RECORDS OF ONE TABLE BUT CONDITION
REQUIRES ANOTHER RELATED RECORD FROM THE SAME TABLE AS THE OUTPUT TABLE.
IF THE TWO TABLES ARE NOT KEEPING ANY COMMON COLUMNS OR DATA THEN THE TWO
QUERIES CAN BE COMBINED ON THE BASIS OF VALUE RANGE USING >= OR <= OR
BETWEEN OPERATORS.
OUTPUT - *
OUTPUT - EMP
CONDITION
DNAME = SALES
DEPT
EMP.DEPTNO=DEPT.DEPTNO
CORRELATED SUB-QUERY
IN A, CORRELATED SUBQUERY, BOTH THE QUERIES, ARE DEPENDENT ON EACH OTHER, i.e.
PARENT QUERY IS DEPENDENT ON THE CHILD QUERY FOR DATA AND VICE-VERSA.
IN A CORRELATED SUBQUERY WE MUST USE TABLE ALIAS NAMES BECAUSE OUTER QUERY
DATA MUST BE READ WITHIN THE SUB-QUERY.
DISPLAY THOSE EMP WHO WORK IN THE SAME DEPT AS THEIR MANAGER.
ANY: -
DISPLAY THOSE EMP WHO EARN SAL GREATER THAN ANY OF THE FOLLOWING SAL
1500
1200
3000
1250
DISPLAY THOSE MANAGERS WHO ARE EARNING MORE THAN ANY ONE OF THIER SUB-
ORDINATES.
DISPLAY THOSE EMP WHO EARN SAL GREATER THAN ALL OF THE FOLLOWING SAL
1500
1200
3000
1250
DISPLAY THOSE MANAGERS WHO EARN SALARY GREATER THAN ALL THEIR SUBORDINATES.
DISPLAY THOSE EMP WHOSE DEPT LOC IS SAME AS MANAGERS DEPT LOC.
DISPLAY THOSE MANAGERS WHO EARN GREATER THAN ATLEAST ONE OF THEIR SUB-
ORDINATES.
DISPLAY THOSE EMP WHOSE NAME STARTS WITH J AND DEPT NAME ENDS WITH S
DISPLAY THOSE EMP WHO’S MANAGERS JOINED IN 81 AND EMP ALSO JOINED IN 81
SELECT * FROM EMP WHERE EMPNO IN (SELECT MGR FROM EMP WHERE JOB='SALESMAN');
DISPLAY THOSE EMP WHO EARN SALARY > ANY ONE EMP IN DEPT 10
SELECT * FROM EMP WHERE SAL>ANY (SELECT SAL FROM EMP WHERE DEPTNO=10);
DISPLAY THOSE EMP WHOSE SAL IS > ANY SALESMAN'S SALARY
DISPLAY THOSE WHO’S SAL IS GREATER THAN ALL THE EMP OF DEPT 10
SELECT * FROM EMP WHERE SAL>ALL (SELECT SAL FROM EMP
WHERE DEPTNO=10);
SELECT * FROM EMP WHERE SAL>ALL (SELECT SAL FROM EMP WHERE JOB='SALESMAN');
SQL FUNCTIONS: -
A FUNCTION IS A PREDEFINED PROGRAM THAT WILL ACCEPT ONE OR MORE VALUES,
PROCCESS THE SAME AND RETURN A SINGLE VALUE.
1. ROW FUNCTIONS
2. GROUP FUNCTIONS
ROW FUNCTIONS ARE THOSE THAT WILL PROCCESS EACH INDIVIDUAL ROW WITHIN A
TABLE ONE AT A TIME.
GROUP FUNCTIONS ARE THOSE THAT WILL PROCCESS A SET OF ROWS AT A TIME
1. CHARACTER FUNCTIONS
2. NUMBER FUNCTIONS
3. DATE FUNCTIONS
4. CONVERSION FUNCTIONS
DUAL IS A SYSTEM DEFINED TABLE THAT CONSISTS OF ONLY 1 ROW AND 1 COLUMN. THE
DUAL TABLE IS USED TO LEARN SQL FUNCTIONS OR TO TEST PLSQL FUNCTIONS OR TO
PERFORM MINOR CALCULATIONS.SELECT 10+2 FROM DUAL;
GROUP FUNCTIONS
THE COUNT FUNCTION WILL IGNORE NULL VALUES WHEN IT IS USED AT THE COLUMN
LEVEL
THE COUNT FUNCTION WILL NOT, IGNORE, NULL VALUES WHEN IT IS USED AT THE TABLE
LEVEL.
2. GROUP FUNCTIONS CAN BE USED ONLY WITH SELECT AND HAVING CLAUSES.
3. GROUP FUNCTIONS WILL NOT PROCCESS NULL VALUES. EXCEPT THE COUNT(*)
FUNCTION ALL OTHER GROUP FUNCTIONS IGNORE NULLS.
COUNT (*) WILL COUNT NULL VALUES BUT COUNT AT COLUMN LEVEL WILL IGNORE NULL
VALUES.
GROUP BY CLAUSE: -
THE GROUP BY CLAUSE MUST BE ON THE BASIS OF A SINGLE COLUMN OR MORE COLUMNS.
SYNTAX: -
GROUP BY JOB
RELATED RECORDS ARE GROUPED TOGETHER AND PASSED TO THE GROUP FUNCTION ONE
GROUP OF RECORDS AT A TIME. AS THE RECORDS ARE RECIEVED BY THE GROUP FUNCTION
THE GROUP FUNCTION WILL PROCCESS THE SAME AND RETURN A SINGLE VALUE.
THIS PROCCESS WILL CONTINUE UNTILL ALL GROUPS OF RECORDS HAVE BEEN
PROCCESSED.
ALL INDIVIDUAL COLUMNS WHICH WE SPECIFY IN THE SELECT CLAUSE MUST APPEAR IN
THE GROUP BY CLAUSE BUT VICE - VERSA IS NOT A MUST
SELECT DEPTNO, JOB, SUM (SAL) FROM EMP GROUP BY DEPTNO, JOB;
DISPLAY LOCATION WISE JOB WISE TOTAL SALARIES.
DISPLAY NAME OF THE MANAGER WITH TOTAL NO OF EMP UNDER THE MANAGER.
DISPLAY THE DEPT NAMES WITH TOTAL SAL PAID BY EACH DEPT.
HAVING CLAUSE: -
THE HAVING CLAUSE IS USED TO SPECIFY A CONDITION WITH THE GROUP FUNCTION. IT IS
SIMILAR TO THE WHERE CLAUSE BUT IT CAN KEEP A GROUP FUNCTION. THE HAVING
CLAUSE WILL APPEAR ONLY AFTER THE GROUP BY CLAUSE.
SYNTAX: -
DISPLAY DEPTNO AND TOTAL SAL OF THAT DEPT WHICH PAYS TOTAL SAL ABOVE 10000.
DISPLAY DEPTNO AND TOTAL NO OF EMP OF THOSE DEPTS WHICH HAVE COUNT GREATER
THAN 3
DISPLAY MANAGERS NAMES AND TOTAL SAL PAID FOR EMP'S UNDER THEM.
DECODE: -
SELECT DECODE (1,1,2,3) FROM DUAL;
CASE: -
SEARCHED CASE:-
ROLL UP: - THE ROLL UP CLAUSE EXTENDS THE GROUP BY TO RETURN A ROW CONTAINING
A SUBTOTAL FOR EACH GROUP ALONG WITH A TOTAL FOR ALL GROUPS.
CUBE: - THE CUBE CLAUSE EXTENDS GROUP BY CLAUSE TO RETURN ROWS CONTAINING A
SUBTOTAL FOR ALL COMBINATIONS OF COLUMNS INCLUDED IN THE CUBE CLAUSE ALONG
WITH A TOTAL AT THE END.
NOTE ORACLE 9i Release 1 PUTS THE EXTRA ROWS FROM THE CUBE AT THE END BUT
ORACLE 10g/9i Release 2 PUTS THE EXTRA ROWS AT THE BEGGINING.
GROUPING FUNCTION: -
SELECT
DECODE (GROUPING (JOB), 1,'TOTAL FOR ALL JOBS', JOB) JOB, SUM (SAL) FROM EMP
GROUP BY ROLLUP (JOB);
REPLACE FUNCTION: -
TRANSLATE:-
CHARACTER FUNCTIONS: -
INITCAP:- CONVERTS THE INITIAL CHARACTER TO CAPITALS FOR ALL WORDS WITHIN A
STRING
INSTR: - SEARCHES FOR THE GIVEN STRING WITHIN ANOTHER STRING AND RETURNS
POSITION OF THE FIRST STRING IN THE OTHER STRING.
RPAD: - WILL PAD BLANK SPACES OR A SPECIFIC CHARACTER TO THE RHS OF THE
SPECIFIED STRING.
CONCATENATION OPERATOR: -
SELECT ENAME||JOB||HIREDATE FROM EMP;
NUMBER FUNCTIONS
1. SIGN: -
2. POWER: -
3. SQRT
4. MOD
6. ROUND: -
7. CEIL: -
RETURNS THE SMALLEST INTEGER GREATER THAN OR EQUAL TO THE GIVEN VALUE.
8.FLOOR: -
RETURNS THE SMALLEST INTEGER, LESS THAN, OR EQUAL TO THE GIVEN VALUE.
DATE FUNCTIONS: -
NEXT_DAY: -
LAST_DAY: -
CONVERSION FUNCTIONS
TO_NUMBER: -
SELECT GREATEST
('01-JUN-81','31-JAN-81') FROM DUAL;
JOIN QUERIES ARE USED TO RETRIEVE DATA FROM TWO OR MORE TABLES AND DISPLAY
THAT DATA IN A SINGLE OUTPUT.
1. EQUI-JOIN
2. OUTER JOIN
3. SELF JOIN
4. NON-EQUI JOIN
5. CARTESIAN JOIN
6. CROSS JOIN
7. NATURAL JOIN
8. NATURAL JOIN WITH USING CLAUSE
9. ON JOIN
10. LEFT OUTER JOIN
11. RIGHT OUTER JOIN
12. FULL OUTER JOIN
EQUI JOIN:- THIS TYPE OF JOIN IS USED ON THOSE TABLES THAT KEEP COMMON COLUMNS
CONTAINING SOME COMMON DATA.
DISPLAY EMP DETAILS ALONG WITH CORRESPONDING DEPT DETAILS.
OUTER JOIN:- THE OUTER JOIN IS SIMILAR TO THE EQUI JOIN BUT IT WILL GET THAT EXTRA
DATA THAT IS AVAILABLE IN ONLY ONE OF THE TWO TABLES. THIS EXTRA DATA IS
DISPLAYED ALONG WITH ALL OTHER DATA FROM BOTH TABLES.
DISPLAY EMP DETAILS ALONG WITH CORRESPONDING DEPT DETAILS AND ALSO DISPLAY
THAT DEPT'S DETAILS IN, WHICH THERE ARE NO EMPLOYEES.
TO GET THIS EXTRA INFORMATION ORACLE USES THE OUTER JOIN OPERATOR THAT IS (+).
THIS OPERATOR MUST BE PLACED WITHIN THE JOIN CONDITION ON THAT TABLES SIDE
THAT IS DEFFICIENT OF THE DATA.
DISPLAY THOSE EMP WHO ARE EARNING MORE THAN THEIR MANAGER AND ALSO DISPLAY
THE MANAGERS INFORMATION ALONG WITH THE EMP.
NON-EQUI JOIN
IT IS USED ON THOSE TABLES THAT DO NOT KEEP ANY COMMON COLUMNS. THE NON-EQUI
JOIN IS BASED ON VALUE RANGE COMPARISONS.
CARTESIAN JOIN:- THIS TYPE OF JOIN WILL NOT KEEP ANY JOIN CONDITION , IT WILL
SIMPLY DISPLAY ALL DATA FROM TWO OR MORE TABLES THAT HAVE BEEN MENTIONED IN
THE QUERY.
THE CROSS JOIN PRODUCES THE CROSS PRODUCT OF TWO TABLES. IT IS THE SAME AS
CARTESIAN JOIN.
NATURAL JOIN:-
THE NATURAL JOIN IS BASED ON ALL COLUMNS OF TWO TABLES THAT HAVE THE SAME
COLUMN NAME.
IF THE COLUMNS HAVING THE SAME NAME HAVE DIFFERENT DATA TYPES THEN THE
NATURAL JOIN WILL RETURN AN ERROR.
ON JOIN:-
THIS TYPE OF JOIN LETS US SPECIFY THE JOIN CONDITION SEPERATELY FROM THE SEARCH
OR FILTER CONDITION, THERE BY INCREASING THE PERFORMANCE OF THE QUERY
SYNTAX
TREE WALKING
TREE WALKING IS USED TO DISPLAY DATA WITHIN THOSE TABLES THAT KEEP A PARENT
CHILD RELATION WITHIN THE TABLE ITSELF.USING THE TREE WALK WE DISPLAY A TREE
VIEW STRUCTURE OF THE PARENT RECORDS AND RELATED CHILD RECORDS.
SYNTAX
SET OPERATORS
SYNTAX: -
<QUERY1> <SET OPERATOR> <QUERY2>;
1. UNION
2. INTERSECT
3. MINUS
4. UNION ALL
UNION: -
IT RETURNS THE UNIQUE VALUES FROM BOTH THE QUERIES.
INTERSECT:-
IT RETURNS THE UNIQUE VALUES BUT MUST BE PRESENT IN BOTH THE QUERIES OUTPUT.
MINUS:-
RETURNS THOSE VALUES THAT ARE PRESENT IN THE FIRST QUERIES OUTPUT AND NOT
AVAILABLE IN THE SECOND QUERIES OUTPUT.
UNION ALL: - THE COMBINED OUTPUT OF BOTH THE QUERIES IS GIVEN AS THE FINAL
OUTPUT.
THERE IS A RESTRICTION FOR SET OPERATORS i.e. THE COLUMNS IN QUERY1 MUST MATCH
THE COLUMNS IN QUERY2
IN DATATYPE, ORDER AND NUMBER.
SELECT * FROM (SELECT ROWNUM RN, ENAME, SAL FROM (SELECT ENAME, SAL FROM EMP
ORDER BY SAL DESC)) WHERE RN=10;
SELECT * FROM (SELECT ROWNUM RN, ENAME, SAL FROM (SELECT ENAME, SAL FROM EMP
ORDER BY SAL DESC))
WHERE MOD(RN,4)=0;
DELETE THOSE EMP WHO ARE WORKING IN THE COMPANY MORE THAN 2 YEARS.
Inserts to multiple tables in a single INSERT statement are a significant addition to the
Oracle9i database ETL features. This allows the INSERT INTO … SELECT statement to load
data to multiple target tables. A single scan can perform inserts to multiple target tables
[based on the conditions you specify - optional].
Prior to Oracle9i, you may have to write multiple INSERT statements for each table or use a
PL/SQL cursor to insert into different tables.
[ ALL | FIRST ]
WHEN condition THEN insert_into_clause [values_clause]
[insert_into_clause [values_clause]]...
[WHEN condition THEN insert_into_clause [values_clause]
[insert_into_clause [values_clause]]...
]...
[ELSE insert_into_clause [values_clause]
[insert_into_clause [values_clause]]...
]
The INSERT ALL clause inserts rows into the target tables unconditionally. Each row read is
processed against each INSERT clause.
The following example takes each row from SALES_HISTORY table and inserts into the
SALES_MONTHLY table a total amount for each month (flat table to a normalized table):
DESC SALES_HISTORY
Name Null? Type
----------------------------------------- -------- -------------
YEAR NUMBER(4)
REGION CHAR (2)
JAN NUMBER
FEB NUMBER
MAR NUMBER
APR NUMBER
MAY NUMBER
JUN NUMBER
JUL NUMBER
AUG NUMBER
SEP NUMBER
OCT NUMBER
NOV NUMBER
DEC NUMBER
DESC SALES_MONTHLY
Name Null? Type
----------------------------------------- -------- -------------
MONTH_YEAR DATE
AMOUNT NUMBER
INSERT ALL
INTO SALES_MONTHLY (MONTH_YEAR, AMOUNT)
VALUES (TO_DATE('01/'||YEAR,'MM/YYYY'), JAN)
INTO SALES_MONTHLY VALUES (TO_DATE('02/'||YEAR,'MM/YYYY'), FEB)
INTO SALES_MONTHLY VALUES (TO_DATE('03/'||YEAR,'MM/YYYY'), MAR)
INTO SALES_MONTHLY VALUES (TO_DATE('04/'||YEAR,'MM/YYYY'), APR)
INTO SALES_MONTHLY VALUES (TO_DATE('05/'||YEAR,'MM/YYYY'), MAY)
INTO SALES_MONTHLY VALUES (TO_DATE('06/'||YEAR,'MM/YYYY'), JUN)
INTO SALES_MONTHLY VALUES (TO_DATE('07/'||YEAR,'MM/YYYY'), JUL)
INTO SALES_MONTHLY VALUES (TO_DATE('08/'||YEAR,'MM/YYYY'), AUG)
INTO SALES_MONTHLY VALUES (TO_DATE('09/'||YEAR,'MM/YYYY'), SEP)
INTO SALES_MONTHLY VALUES (TO_DATE('10/'||YEAR,'MM/YYYY'), OCT)
INTO SALES_MONTHLY VALUES (TO_DATE('11/'||YEAR,'MM/YYYY'), NOV)
INTO SALES_MONTHLY VALUES (TO_DATE('12/'||YEAR,'MM/YYYY'), DEC)
SELECT YEAR,
SUM(JAN) JAN, SUM(FEB) FEB, SUM(MAR) MAR, SUM(APR) APR,
SUM(MAY) MAY, SUM(JUN) JUN, SUM(JUL) JUL, SUM(AUG) AUG,
SUM(SEP) SEP, SUM(OCT) OCT, SUM(NOV) NOV, SUM(DEC) DEC
FROM SALES_HISTORY
GROUP BY YEAR
/
The ALL in the conditional insert clause makes Oracle evaluate all the WHEN conditions
irrespective of the other WHEN conditions. The FIRST clause stops evaluating other WHEN
conditions the first time any condition is evaluated true. The conditions are evaluated in the
order they appear.
INSERT FIRST
WHEN REGION = 'TX' THEN
INTO SALES_TEXAS (YEAR, TOTAL_AMOUNT)
VALUES (YEAR, TOTAMT)
WHEN REGION = 'CA' THEN
INTO SALES_CALIF (YEAR, TOTAL_AMOUNT)
VALUES (YEAR, TOTAMT)
WHEN REGION = 'NM' THEN
INTO SALES_NEWMEX (YEAR, TOTAL_AMOUNT)
VALUES (YEAR, TOTAMT)
WHEN REGION = 'AZ' THEN
INTO SALES_ARIZ (YEAR, TOTAL_AMOUNT)
VALUES (YEAR, TOTAMT)
ELSE
INTO SALES_OTHER (YEAR, TOTAL_AMOUNT)
VALUES (YEAR, TOTAMT)
SELECT YEAR, REGION,
(JAN+FEB+MAR+APR+MAY+JUN+JUL+AUG+SEP+OCT+NOV+DEC) TOTAMT
FROM SALES_HISTORY
/
If the ELSE clause is omitted, Oracle takes no action on that row.
TABLE PARTITIONING
Partitioning allows tables to be subdivided into smaller pieces, enabling themto be managed
and accessed at a finer level of granularity.
Partitioning allows a table to be subdivided into smaller pieces. Each piece of database object
is called a partition.
Each partition has its own name, and may optionally have its own storage characteristics.
From the perspective of a database administrator, a partitioned object has multiple
pieces that can be managed either collectively or individually.
This gives the administrator considerably flexibility in managing partitioned object.
However, from the perspective of the application, a partitioned table is identical to a
nonpartitioned table; no modifications are necessary when accessing a partitioned
table using SQL DML commands.
ROLLBACK
OR
MOVING A PARTITION:-
ALTER TABLE EMP1 MOVE PARTITION P1 TABLESPACE TS3;
ADDING A PARTITION:-
ALTER TABLE EMP1 MERGE PARTITIONS P1 , P2 INTO PARTITION P1_P2 TABLESPACE TS2;
SPLITTING A PARTITION:-
ALTER TABLE EMP1 SPLIT PARTITION P1_P2 AT 1000 INTO (PARTITION P1 TABLESPACE TS1,
PARTITION P2 TABLESPACE TS2);
RENAME A PARTITION:-
DROP A PARTITION:-
LIST PARTITIONS:-
NVL2 FUNCTION
The NVL2 function extends the functionality found in the NVL function. It lets you substitutes a
value when a null value is encountered as well as when a non-null value is encountered.
The SQL statement above would return 'n/a' if the supplier_city field contained a null value.
Otherwise, it would return the 'Completed'.
Example #2:
select supplier_id,
NVL2(supplier_desc, supplier_name, supplier_name2)
from suppliers;
This SQL statement would return the supplier_name2 field if the supplier_desc contained a null
value. Otherwise, it would return the supplier_name field.
COALESCE
The coalesce function returns the first non-null expression in the list. If all expressions evaluate to
null, then the coalesce function will return null.
For Example:
END IF;
MERGE
Purpose
Use the MERGE statement to select rows from one table for update or insertion into
another table. The decision whether to update or insert into the target table is based
on a condition in the ON clause.
This statement is a convenient way to combine at least two operations. It lets you
avoid multiple INSERT and UPDATE DML statements.
MERGE is a deterministic statement. That is, you cannot update the same row of the
target table multiple times in the same MERGE statement.
Prerequisites
You must have INSERT and UPDATE object privileges on the target table and
SELECT privilege on the source table.
Syntax
merge::=
merge_update_clause::=
MERGE
hint
INTO
schema .
table
t_alias
USING
schema .
table
view
subquery
t_alias
ON ( condition )
WHEN MATCHED THEN merge_update_clause
WHEN NOT MATCHED THEN merge_insert_clause ;
UPDATE SET column =
expr
DEFAULT
,
merge_insert_clause::=
Semantics
INTO Clause
Use the INTO clause to specify the target table you are updating or inserting into.
USING Clause
Use the USING clause to specify the source of the data to be updated or inserted.
The source can be a table, view, or the result of a subquery.
ON Clause
Use the ON clause to specify the condition upon which the MERGE operation either
updates or inserts. For each row in the target table for which the search condition is
true, Oracle updates the row based with corresponding data from the source table.
If the condition is not true for any rows, then Oracle inserts into the target table
based on the corresponding source table row.
WHEN MATCHED | NOT MATCHED
Use these clauses to instruct Oracle how to respond to the results of the join
condition in the ON clause. You can specify these two clauses in either order.
merge_update_clause
The merge_update_clause specifies the new column values of the target table.
Oracle performs this update if the condition of the ON clause is true. If the update
clause is executed, then all update triggers defined on the target table are activated.
Restrictions on Updating a View
You cannot specify DEFAULT when updating a view.
You cannot update a column that is referenced in the ON condition clause.
INSERT ( column
,
) VALUES (
expr
,
DEFAULT
)
MERGE
SQL Statements: DROP SEQUENCE to ROLLBACK 17-79
merge_insert_clause
The merge_insert_clausespecifies values to insert into the column of the target
table if the condition of the ON clause is false. If the insert clause is executed, then all
insert triggers defined on the target table are activated.
Restriction on Merging into a View You cannot specify DEFAULT when updating a
view.
Examples
Merging into a Table: Example The following example creates a bonuses table in
the sample schema oe with a default bonus of 100. It then inserts into the bonuses
table all employees who made sales (based on the sales_rep_id column of the
oe.orders table). Finally, the Human Resources manager decides that all
employees should receive a bonus. Those who have not made sales get a bonus of
1% of their salary. Those who already made sales get an increase in their bonus
equal to 1% of their salary. The MERGE statement implements these changes in one
step:
CREATE TABLE bonuses (employee_id NUMBER, bonus NUMBER DEFAULT 100);
INSERT INTO bonuses(employee_id)
(SELECT e.employee_id FROM employees e, orders o
WHERE e.employee_id = o.sales_rep_id
GROUP BY e.employee_id);
SELECT * FROM bonuses;
EMPLOYEE_ID BONUS
153 100
154 100
155 100
156 100
158 100
159 100
160 100
161 100
163 100
MERGE INTO bonuses D
USING (SELECT employee_id, salary, department_id FROM employees
WHERE department_id = 80) S
MERGE
ON (D.employee_id = S.employee_id)
WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)
VALUES (S.employee_id, S.salary*0.1);
EMPLOYEE_ID BONUS
153 180
154 175
155 170
156 200
158 190
159 180
160 175
161 170
163 195
157 950
145 1400
170 960
179 620
152 900
169 1000
.
.
.
SQL Statements: DROP SEQUENCE to ROLLBACK 17-73
LOCK TABLE
Purpose
Use the LOCK TABLE statement to lock one or more tables (or table partitions or
subpartitions) in a specified mode. This lock manually overrides automatic locking
and permits or denies access to a table or view by other users for the duration of
your operation.
Some forms of locks can be placed on the same table at the same time. Other locks
allow only one lock for a table.
A locked table remains locked until you either commit your transaction or roll it
back, either entirely or to a savepoint before you locked the table.
A lock never prevents other users from querying the table. A query never places a
lock on a table. Readers never block writers and writers never block readers.
Prerequisites
The table or view must be in your own schema or you must have the LOCK ANY
TABLE system privilege, or you must have any object privilege on the table or view.
See Also:
Oracle9i Database Concepts for a complete description of the
interaction of lock modes
COMMIT on page 12-75
LOCK TABLE
17-74 Oracle9 i SQL Reference
Syntax
lock_table::=
Semantics
schema
Specify the schema containing the table or view. If you omit schema, then Oracle
assumes the table or view is in your own schema.
table / view
Specify the name of the table to be locked.
If you specify view, then Oracle locks the view’s base tables.
If you specify PARTITION ( partition) or SUBPARTITION ( subpartition), then
Oracle first acquires an implicit lock on the table. The table lock is the same as the
lock you specify for partition or subpartition, with two exceptions:
If you specify a SHARE lock for the subpartition, then Oracle acquires an