Sei sulla pagina 1di 19

Oracle SQL Session

SQL SCHEMA DEFINITIONS

EMP TABLE

DEPT TABLE

SALGRADE
ORACLE SYSTEM COMMANDS

DUAL

SELECT SYSDATE FROM DUAL;

SELECT SYSTIMESTAMP FROM DUAL;

SELECT POWER (2,5) FROM DUAL;

SELECT 2 * 5 FROM DUAL;

SYSTEM COMMANDS

1. Oracle Version - show release

2. Oracle current schema - show user

3. Oracle all parameters - show all

4. To check the schema - show user

5. To check the database current page number - show pno

6. To change the password - password

7. To See The History - select * from dba_hist_sqltext

META DATA TABLES MOST IMPORTANT

1. ALL TABLES ALL_TABLES

2. ALL CONSTRAINTS ALL_CONSTRAINTS

3. ALL USERS ALL_USERS


SQL CREATE TABLE STATEMENTS

TABLE WITH PRIMARY KEY

CREATE TABLE PTAB (DID NUMBER NOT NULL, DNAME VARCHAR2 (100)
NOT NULL, CONSTRAINTS PTAB_PK PRIMARY KEY (DID));

TABLE WITH PRIMARY KEY AND FOREIGN KEY

CREATE TABLE CTAB (EID NUMBER NOT NULL, ENAME VARCHAR2(100),


DID NUMBER NOT NULL, CONSTRAINT CTAB_PK PRIMARY KEY (EID),
CONSTRAINT CTAB_FK FOREIGN KEY (DID) REFERENCES PTAB (DID));

TABLE WITH DEFAULT VALUE

CREATE TABLE DTAB (ID NUMBER NOT NULL, DEPTNAME VARCHAR2


(100) DEFAULT 'TESTING');

TABLE WITH CHECK CONSTRAINT

CREATE TABLE CHECK_TAB (ID NUMBER, NAME VARCHAR2 (100) NOT


NULL, CONSTRAINT CHECK_TAB_CK CHECK (NAME LIKE 'BVR%'));

TESTING WITH DEFAULT VALUE

INSERT INTO DTAB VALUES (100,'DEVOPS');


INSERT INTO DTAB (ID) VALUES (200);

CREATE TABLE FROM OTHER TABLE WITH SAME STRUCTURE

CREATE TABLE EMP_TEST AS SELECT * FROM EMP WHERE 1 = 2;


SQL ALTER STATEMENTS

ADD ANY COLUMN

ALTER TABLE PTAB ADD LOC VARCHAR2 (100);

ADD MULTIPLE COLUMNS

ALTER TABLE PTAB ADD MGRID NUMBER ADD PRESID NUMBER;

CHANGE DATA TYPE

ALTER TABLE PTAB MODIFY LOC VARCHAR2 (200);

REMOVE COLUMN

ALTER TABLE PTAB DROP COLUMN PRESID;

ADDING A NOT NULL CONSTRAINT

ALTER TABLE PTAB MODIFY LOC NOT NULL;

ADDING A CONSTRAINT

ALTER TABLE PTAB ADD CONSTRAINT PTAB_CK CHECK (LOC LIKE


'IND%');
SQL INSERT STATEMENTS

INSERT ALL COLUMN VALUES

INSERT INTO PTAB VALUES (100, 'HR');

INSERT ONLY SELECTED COLUMN VALUES

INSERT INTO PTAB (DID, DNAME, LOC) VALUES (100, 'BVRIT',


'INDHYD');

INSERT FROM OTHER TABLE

INSERT INTO EMP_TEST SELECT * FROM EMP;

INTERACTIVE INSERT

INSERT INTO PTAB (DID, DNAME, LOC) VALUES (&DID, '&DNAME',


'&LOC');

RE-EXECUTE PREVIOUS INSERT

/
SQL SELECT STATEMENTS

SELECT ALL COLUMNS AND ALL ROWS

SELECT * FROM EMP;

SELECT FEW COLUMNS AS ALL ROWS

SELECT EMPNO, ENAME FROM EMP;

SELECT FEW COLUMNS AND FEW ROWS

SELECT EMPNO, ENAME FROM EMP WHERE SAL > 1000;

SELECT WITH COLUMN NAME

SELECT EMPNO AS "Emp Id" FROM EMP;

SELECT WITH ROW NUMBER

SELECT ROWNUM AS "SERIAL NUMBER", EMPNO AS "EMPLOYEE


NUMBER" FROM EMP;

WHERE WITH WHERE CLAUSE

SELECT EMPNO, SAL FROM EMP WHERE SAL BETWEEN 1000 AND 2000;

SELECT EMPNO, SAL FROM EMP WHERE SAL NOT BETWEEN 1000 AND
2000;

SELECT EMPNO, SAL FROM EMP WHERE SAL IN (500, 600, 700, 800,
900, 1000);

SELECT EMPNO, SAL FROM EMP WHERE SAL NOT IN (500, 600, 700,
800, 900, 1000);
SELECT WITH SORTING

SELECT EMPNO, SAL FROM EMP ORDER BY ENAME;

SELECT ENAME, EMPNO, SAL FROM EMP ORDER BY ENAME, EMPNO;

SELECT WITH WHERE AND SORTING

SELECT EMPNO, MGR FROM EMP WHERE SAL > 1200 ORDER BY ENAME;
SQL WHERE CLAUSE

ONE WHERE CLAUSE

SELECT * FROM EMP WHERE SAL = 800;

MULTIPLE WHERE CLAUSE

SELECT * FROM EMP WHERE SAL = 800 AND DEPTNO = 20;

MULTIPLE PRIORITY WHERE CLAUSE

SELECT * FROM EMP WHERE SAL = 800 AND ( DEPTNO = 20 OR DEPTNO


= 30);

SELECT * FROM EMP WHERE ( SAL = 800 AND DEPTNO = 20) OR


DEPTNO = 30;
SQL COLUMN FUNCTION STATEMENTS

NUMERIC FUNCTIONS

SELECT ABS (-100) FROM DUAL;

SELECT CEIL (123.6) FROM DUAL;

SELECT FLOOR (123.6) FROM DUAL;

SELECT ROUND (123.3) FROM DUAL;

SELECT ROUND (123.6) FROM DUAL;

SELECT POWER (5, 2) FROM DUAL;

SELECT SQRT (36) FROM DUAL;

SELECT TRUNC (123.66661, 1) FROM DUAL;

CHARACTER FUNCTIONS

SELECT CONCAT ('MR.', 'BVRIT') FROM DUAL;

SELECT INITCAP (ENAME) FROM EMP;

SELECT LOWER (ENAME) FROM EMP;

SELECT UPPER (ENAME) FROM EMP;

SELECT LTRIM (' BVRIT ') FROM DUAL;

SELECT RTRIM (' BVRIT ') FROM DUAL;

SELECT TRIM (' BVRIT ') FROM DUAL;

SELECT SUBSTR ('BVRIT', 1, 3) FROM DUAL;

DATE TIME FUNCTIONS

SELECT HIREDATE, ADD_MONTHS(HIREDATE,1) FROM EMP;

SELECT CURRENT_DATE FROM DUAL;

SELECT CURRENT_TIMESTAMP FROM DUAL;


SELECT EMPNO, ENAME, LAST_DAY (HIREDATE) FROM EMP;

SELECT NEXT_DAY (SYSDATE, 'SUNDAY') FROM DUAL;

ENCODE AND DECODE FUNCTIONS

SELECT DEPTNO, DECODE (DEPTNO, 10, 'HR', 20, 'TECH', 30, 'FIN', 'NOT
ALLOWCATED') FROM EMP;

SELECT DUMP ('ABC', 10) FROM DUAL;

SELECT DUMP ('ABC', 16) FROM DUAL;

SELECT DUMP ('ABC', 8) FROM DUAL;

NULL VALUE FUNCTIONS

SELECT COMM, NVL (COMM, 0) FROM EMP;

SELECT COMM, COALESCE (COMM, 0) FROM EMP;

SELECT SAL, COMM, NULLIF (SAL, COMM) FROM EMP;

AGGREGATE FUNCTIONS

SELECT AVG (SAL) FROM EMP;

SELECT MAX (SAL) FROM EMP;

SELECT MIN (SAL) FROM EMP;

SELECT MEDIAN (SAL) FROM EMP;

SELECT SUM (SAL) FROM EMP;

SELECT SUM (SAL + NVL (COMM, 0)) FROM EMP;

SELECT STDDEV (SAL) FROM EMP;

SELECT VARIANCE (SAL) FROM EMP;

SELECT COUNT (SAL), COUNT (COMM) FROM EMP;


SQL GROUP BY FUNCTION

GROUP BY

SELECT DEPTNO, MAX (SAL) FROM EMP GROUP BY DEPTNO;

GROUP BY & HAVING

SELECT DEPTNO, MAX (SAL) FROM EMP GROUP BY DEPTNO HAVING MAX
(SAL) > 2900;

WHERE & ORDER BY & GROUP BY & HAVING

SELECT DEPTNO, MAX (SAL) FROM EMP WHERE DEPTNO > 10 GROUP BY
DEPTNO HAVING MAX (SAL) > 2500 ORDER BY MAX (SAL);

SELECT DEPTNO, MAX (SAL) FROM EMP WHERE DEPTNO > 10 GROUP BY
DEPTNO HAVING MAX (SAL) > 2500 ORDER BY MAX (SAL) DESC;
SQL UPDATE STATEMENTS

UPDATE ALL

UPDATE EMP SET COMM = 0;

UPDATE SELECTIVE

UPDATE EMP SET COMM = 0 WHERE EMPNO = 800;

UPDATE MULTIPLE

UPDATE DTAB SET ID = 11 , DEPTNAME = 'DEVOPS' WHERE ID = 10;


SQL JOIN STATEMENTS

SIMPLE JOIN

SELECT EMPNO, E.DEPTNO, D.DNAME FROM EMP E, DEPT D WHERE


E.DEPTNO = D.DEPTNO;

LEFT OUTER JOIN

SELECT EMPNO, E.DEPTNO, D.DNAME FROM EMP E LEFT OUTER JOIN


DEPT D ON E.DEPTNO = D.DEPTNO;

RIGHT OUTER JOIN

SELECT EMPNO, E.DEPTNO, D.DNAME FROM EMP E RIGHT OUTER JOIN


DEPT D ON E.DEPTNO = D.DEPTNO;

FULL OUTER JOIN

SELECT EMPNO, E.DEPTNO, D.DNAME FROM EMP E FULL OUTER JOIN


DEPT D ON E.DEPTNO = D.DEPTNO;

INNER JOIN

SELECT EMPNO, E.DEPTNO, D.DNAME FROM EMP E INNER JOIN DEPT D


ON E.DEPTNO = D.DEPTNO;

SELF JOIN

SELECT E1.ENAME, E2.ENAME FROM EMP E1, EMP E2 WHERE E1.MGR =


E2.EMPNO;
SQL VIEW STATEMENTS

CREATE SIMPLE VIEW

CREATE VIEW TVIEW AS SELECT * FROM EMP;

CREATE CONDITIONED VIEW

CREATE VIEW TVIEW1 AS SELECT * FROM EMP WHERE DEPTNO = 10;

DROP A VIEW

DROP VIEW TVIEW;


SQL TRIGGER STATEMENTS

SINGLE EVERT TRIGGER

CREATE OR REPLACE TRIGGER TRIGG1


BEFORE UPDATE ON EMP
BEGIN
UPDATE PTAB SET ID = 1;
END;

MULTI EVENT TRIGGER

CREATE OR REPLACE TRIGGER TRIGG1


BEFORE UPDATE OR INSERT ON EMP
BEGIN
UPDATE PTAB SET ID = 1;
END;

MULTI ACTION TRIGGER

CREATE OR REPLACE TRIGGER TRIGG1


BEFORE UPDATE ON EMP
BEGIN
DELETE FROM PTAB;
UPDATE PTAB SET ID = 1;
END;
SQL INDEX STATEMENTS

CREATING AN INDEX

CREATE INDEX INDX1 ON EMP (DEPTNO);

CHECKING AN INDEX

SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME='EMP';

DROPPING AN INDEX

DROP INDEX INDX1;


SQL SUB-QUERY STATEMENTS

NESTED SUB-QUERY

SELECT EMPNO, SAL, DEPTNO FROM EMP WHERE SAL = (SELECT MAX
(SAL) FROM EMP);

CORRELATED SUB-QUERY

SELECT EMPNO, SAL, DEPTNO FROM EMP E1 WHERE SAL > ANY (SELECT
SAL FROM EMP WHERE DEPTNO = E1.DEPTNO);
PRACTICE

Write a query to find the salary of employees whose salary is greater


than the salary of employee whose id is 7876.

Write a query to find the employees who all are earning the highest
salary in the department.

Write a query to find the departments in which the least salary is greater
than the highest salary in the department of id 20.

Write a query to find the employees whose salary is equal to the salary of
at least one employee in department of id 30.

Potrebbero piacerti anche