TYPES OF JOINS
--EQUI JOIN
--NON EQUI JOIN
--OUTER JOIN(LEFT,RIGHT,FULL)
--SELF JOIN
--NATURAL JOIN
SQL> SELECT * FROM EMP JOIN DEPT
2 ON(EMP.D#=DEPT.DEPTNO);
EMPNO ENAME
JOB
D#
DEPTNO DNAME
---------- ---------- ------------- ---------- --7369 SMITH
CLERK
20
20 RESEARCH
7499 ALLEN
SALESMAN
30
30 SALES
7521 WARD
SALESMAN
30
30 SALES
7566 JONES
MANAGER
20
20 RESEARCH
7654 MARTIN
SALESMAN
30
30 SALES
7698 BLAKE
MANAGER
30
30 SALES
7782 CLARK
MANAGER
10
10 ACCOUNTING
7788 SCOTT
ANALYST
20
20 RESEARCH
7839 KING
PRESIDENT
10
10 ACCOUNTING
7844 TURNER
SALESMAN
30
30 SALES
7876 ADAMS
CLERK
20
20 RESEARCH
7900 JAMES
CLERK
30
30 SALES
7902 FORD
ANALYST
20
20 RESEARCH
7934 MILLER
CLERK
10
10 ACCOUNTING
MGR HIREDATE
SAL
COMM
LOC
---------- --------- ---------- ---------- ----7902 17-DEC-80
7698
CHICAGO
7698
CHICAGO
7839
DALLAS
7698
CHICAGO
7839
CHICAGO
7839
NEW YORK
7566
DALLAS
NEW YORK
7698
CHICAGO
7788
DALLAS
7698
CHICAGO
7566
DALLAS
7782
NEW YORK
20-FEB-81
1600
300
22-FEB-81
1250
500
02-APR-81
2975
28-SEP-81
1250
01-MAY-81
2850
09-JUN-81
2450
19-APR-87
3000
17-NOV-81
5000
08-SEP-81
1500
23-MAY-87
1100
03-DEC-81
950
03-DEC-81
3000
23-JAN-82
1300
14 rows selected.
SQL>
ALTER TABLE EMP
RENAME COLUMN DEPTNO TO D#;
SQL> SELECT ENAME,DNAME FROM EMP RIGHT OUTER JOIN DEPT
2 ON(DEPTNO=D#);
ENAME
DNAME
---------- --------------
800
DALLAS
1400
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
SQL>
2
3
4
SQL>
SQL>
SQL>
SQL>
2
3
RESEARCH
SALES
SALES
RESEARCH
SALES
SALES
ACCOUNTING
RESEARCH
ACCOUNTING
SALES
RESEARCH
SALES
RESEARCH
ACCOUNTING
OPERATIONS
SELECT W.ENAME,M.NAME FROM EMP W JOIN EMP M
ON(W.MGR=M.EMPNO)
ED
SELECT W.ENAME,M.ENAME FROM EMP W JOIN EMP M
ON(W.MGR=M.EMPNO)
/
ENAME
---------FORD
SCOTT
JAMES
TURNER
MARTIN
WARD
ALLEN
MILLER
ADAMS
CLARK
BLAKE
JONES
SMITH
ENAME
---------JONES
JONES
BLAKE
BLAKE
BLAKE
BLAKE
BLAKE
CLARK
SCOTT
KING
KING
KING
FORD
13 rows selected.
SQL> SELECT ENAME,GRADE FROM EMP JOIN SALGRADE
2 ON (SAL BETWEEN LOSAL AND HISAL);
ENAME
GRADE
---------- ---------SMITH
1
JAMES
1
ADAMS
1
WARD
2
MARTIN
2
MILLER
2
TURNER
3
ALLEN
3
CLARK
4
BLAKE
JONES
SCOTT
FORD
KING
SQL>
2
3
4
4
4
4
4
5
SELECT * FROM EMP WHERE SAL>
(
SELECT AVG(SAL) FROM EMP E WHERE E.DEPTNO=EMP.DEPTNO
);
EMPNO
EPTNO
-------------7499
30
7566
20
7698
30
7788
20
7839
10
7902
20
ENAME
JOB
MGR HIREDATE
ALLEN
SALESMAN
7698 20-FEB-81
1600
JONES
MANAGER
7839 02-APR-81
2975
BLAKE
MANAGER
7839 01-MAY-81
2850
SCOTT
ANALYST
7566 19-APR-87
3000
KING
PRESIDENT
17-NOV-81
5000
FORD
ANALYST
7566 03-DEC-81
3000
SQL>
SELECT ENAME,DNAME,GRADE FROM EMP JOIN DEPT
ON(EMP.DEPTNO=DEPT.DEPTNO)
JOIN SALGRADE
ON(SAL BETWEEN LOSAL AND HISAL);
ENAME
---------SMITH
JAMES
ADAMS
WARD
MARTIN
MILLER
TURNER
ALLEN
CLARK
BLAKE
JONES
SCOTT
FORD
KING
DNAME
GRADE
-------------- ---------RESEARCH
1
SALES
1
RESEARCH
1
SALES
2
SALES
2
ACCOUNTING
2
SALES
3
SALES
3
ACCOUNTING
4
SALES
4
RESEARCH
4
RESEARCH
4
RESEARCH
4
ACCOUNTING
5
14 rows selected.
SQL>
COMM
---------- --------- ---------- --------- ---------- ---------- -----
6 rows selected.
SQL>
2
3
4
SAL
300
SELECT ENAME,DNAME FROM EMP RIGHT OUTER JOIN DEPT
ON(DEPTNO=D#);
88888888888888888888888888888888888888888888888888888888888888888888888888888888
SUBQUERIES
SINGLE ROW
MULTI ROW
CORELATED
DDL
CREATE
ALTER
DROP
TRUNCATE
RENAME
CREATE TABLEE
CREATE TABLE BOOK
(
ISBN# VARCHAR2(20) PRIMARY KEY,
TITLE VARCHAR2(50) NOT NULL,
AUTHOR VARCHAR2(25) NOT NULL,
PUBLISHER VARCHAR2(25) NOT NULL,
PRICE NUMBER(7,2) CHECK(PRICE>0)
);
CREATE TABLE ISSUE
(
ISBNO VARCHAR2(20) REFERENCES BOOK(ISDN#),
M# NUMBER(3),
ISSUEDT DATE,
PRIMARY KEY(ISBNO,ISSUEDT)
)
SQL>
SQL>
2
3
4
5
6
7
8
CREATE TABLE BOOK
(
ISBN# VARCHAR2(20) PRIMARY KEY,
TITLE VARCHAR2(50) NOT NULL,
AUTHOR VARCHAR2(25) NOT NULL,
PUBLISHER VARCHAR2(25) NOT NULL,
PRICE NUMBER(4) CHECK(PRICE>0)
);
Table created.
SQL>
2
3
4
5
6
7
CREATE TABLE ISSUE
(
ISBNO VARCHAR2(20) REFERENCES BOOK(ISBN#),
M# NUMBER(3),
ISSUEDT DATE,
PRIMARY KEY(ISBNO,ISSUEDT)
);
Table created.
SQL> ALTER TABLE ISSUE
2 ADD(RETURNDT DATE)
3 /
Table altered.
SQL> ALTER TABLE BOOK---MODIFY ANY ATTRIBUTE
2 MODIFY(TITLE,NUMBER)-HERE NOT DONE.
3
SQL>
SQL> ALTER TABLE BOOK
2 DROP COLUMN PUBLISHER;
Table altered.
SQL> INSERT INTO BOOK
2
SQL>
SQL> SELECT * FROM BOOK
2
SQL> INSERT INTO BOOK
2 VALUES('1','ORACLE10G','IVAN BAYROSS','BPB',450);
INSERT INTO BOOK
*
ERROR at line 1:
ORA-00913: too many values
SQL> INSERT INTO BOOK
2
SQL>
SQL>
SQL>
SQL> DESC BOOK
Name
-----------------------------------------------------------------------ISBN#
TITLE
AUTHOR
PRICE
SQL> INSERT INTO BOOK
2 VALUES('1','ORACLE','GRH',450);
1 row created.
SQL> INSERT INTO BOOK
2 VALUES('2','CG','KGH',340);
1 row created.
SQL> UPDATE BOOK
SQL> UPDATE BOOK
2 SET TITLE='ALCHEMIST'
3 WHERE ISBN#=1;
1 row updated.
SQL> DESC BOOK;
Name
-------------------------------------------------------------------------------------------------ISBN#
TITLE
AUTHOR
PRICE
SQL> SELECT * FROM BOOK;
ISBN#
TITLE
AUTHOR
PRICE
-------------------- -------------------------------------------------- ------------------------ -1
ALCHEMIST
GRH
450
2
CG
KGH
340
SQL> DELETE
SQL> DESC BOOK
Name
-------------------------------------------------------------------------------
-------------------ISBN#
TITLE
AUTHOR
PRICE
SQL> INSERT INTO BOOK
2 VALUES('1','ORACLE','GRH',450);
1 row created.
SQL> INSERT INTO BOOK
2 VALUES('2','CG','KGH',340);
1 row created.
SQL> UPDATE BOOK
2 SET TITLE='ALCHEMIST'
3 WHERE ISBN#=1;
1 row updated.
SQL> UPDATE BOOK
2 SET TITLE
3
SQL>
SQL>
SQL> DESC BOOK
Name
-------------------------------------------------------------------------------------------------ISBN#
TITLE
AUTHOR
PRICE
SQL> UPDATE BOOK
2 SET TITLE='ALCHEMIST'
3 WHERE ISBN#=1;
1 row updated.
SQL> DESC BOOK;
Name
-------------------------------------------------------------------------------------------------ISBN#
TITLE
AUTHOR
PRICE
SQL> SELECT * FROM BOOK;
ISBN#
TITLE
AUTHOR
PRICE
-------------------- -------------------------------------------------- ------------------------ -1
ALCHEMIST
GRH
450
2
CG
KGH
340
SQL> UPDATE BOOK
2 SET TITLE='ALCHEMIST';
2 rows updated.
SQL> SELECT * FROM BOOK;
ISBN#
TITLE
AUTHOR
PRICE
-------------------- -------------------------------------------------- ------------------------ -1
ALCHEMIST
GRH
450
2
ALCHEMIST
KGH
340
SQL> DELETE FROM BOOK WHERE AUTHOR='GRH';
1 row deleted.
SQL> SELECT * FROM BOOK;
ISBN#
TITLE
AUTHOR
PRICE
-------------------- -------------------------------------------------- ------------------------ -2
ALCHEMIST
KGH
340
SQL> ROLLBACK;
Rollback complete.
SQL> SELECT * FROM BOOK;
no rows selected
SQL> INSERT INTO BOOK
2 VALUES('1','ORACLE','GRH',450);
1 row created.
SQL> INSERT INTO BOOK
2 VALUES('2','CG','KGH',340);
1 row created.
SQL> COMMIT;
Commit complete.
SQL> DELETE FROM BOOK WHERE AUTHOR='GRH';
1 row deleted.
SQL> ROLLBACK;
Rollback complete.
SQL> SELECT * FROM BOOK;
ISBN#
TITLE
AUTHOR
PRICE
-------------------- -------------------------------------------------- ------------------------ -1
ORACLE
GRH
450
2
CG
KGH
340
SQL> INSERT INTO BOOK;
INSERT INTO BOOK
*
ERROR at line 1:
ORA-00926: missing VALUES keyword
SQL> INSERT INTO BOOK
2 VALUES('&ISBN#','&TITLE','&AUTHOR',&PRICE);
Enter value for isbn: 4
Enter value for title: HAR
Enter value for author: HAR
Enter value for price: 16
old 2: VALUES('&ISBN#','&TITLE','&AUTHOR',&PRICE)
new 2: VALUES('4#','HAR','HAR',16)
1 row created.
SQL>
SQL> INSERT INTO BOOK
2 VALUES('&ISBN#','&TITLE','&AUTHOR',&PRICE);
Enter value for isbn: 4
Enter value for title: HAR
Enter value for author: HAR
Enter value for price: 16
old 2: VALUES('&ISBN#','&TITLE','&AUTHOR',&PRICE)
new 2: VALUES('4#','HAR','HAR',16)
1 row created.
SQL> RENAME BOOK TO JOURNAL;
Table renamed.
SQL> SELECT * FROM JOURNAL;
ISBN#
TITLE
AUTHOR
PRICE
-------------------- -------------------------------------------------- ------------------------ -1
ORACLE
GRH
450
2
CG
KGH
340
4#
HAR
HAR
16
SQL> RENAME BOOK TO JOURNAL;
Table renamed.
SQL> SELECT * FROM JOURNAL;
ISBN#
TITLE
AUTHOR
-------------------- -------------------------------------------------- ---------1
ORACLE
GRH
2
CG
KGH
4#
HAR
HAR
SQL>
SQL> SELECT ROWID FROM EMP;
ROWID
-----------------AAAMfPAAEAAAAAgAAA
AAAMfPAAEAAAAAgAAB
AAAMfPAAEAAAAAgAAC
AAAMfPAAEAAAAAgAAD
AAAMfPAAEAAAAAgAAE
AAAMfPAAEAAAAAgAAF
AAAMfPAAEAAAAAgAAG
AAAMfPAAEAAAAAgAAH
AAAMfPAAEAAAAAgAAI
AAAMfPAAEAAAAAgAAJ
AAAMfPAAEAAAAAgAAK
AAAMfPAAEAAAAAgAAL
AAAMfPAAEAAAAAgAAM
AAAMfPAAEAAAAAgAAN
14 rows selected.
SQL> SELECT ROWID FROM DEPT;
ROWID
-----------------AAAMfNAAEAAAAAQAAA
AAAMfNAAEAAAAAQAAB
AAAMfNAAEAAAAAQAAC
AAAMfNAAEAAAAAQAAD
SQL> CREATE INDEX ENNIDX ON EMP(ENAME);
Index created.
SQL> DROP INDEX ENNIDX;
Index dropped.
SQL> CREATE BITMAP INDEX DBTIDX ON EMP(DEPTNO);
Index created.
SQL> CON SYS AS SYSDBA
SP2-0734: unknown command beginning "CON SYS AS..." - rest of line ignored.
SQL> CONN SYS AS SYSDBA
Enter password: *****
Connected.
SQL>
SQL>
SQL> CREATE SYNONYM WORKER FOR EMP;
Synonym created.
SQL> SELECT * FROM WORKER;
SELECT * FROM WORKER
*
ERROR at line 1:
ORA-00980: synonym translation is no longer valid
SQL> DROP SYNONYM WORKER;
Synonym dropped.
SQL> CONN SCOTT;
Enter password: *****
Connected.
SQL> CREATE SYNONYM WORKER FOR EMP;
CREATE SYNONYM WORKER FOR EMP
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> CONN SCOTT;
Enter password:
ERROR:
ORA-01005: null password given; logon denied
Warning: You are no longer connected to ORACLE.
SQL>
SQL>
SQL>
SQL> CONN SYS AS SYSDBA
Enter password:
Connected.
SQL>
SQL> GRANT CREATE ANY SYNONYM TO SCOTT;
Grant succeeded.
SQL> CONN SCOTT;
Enter password: *****
Connected.
SQL> CREATE SYNONYM WORKER FOR EMP;
Synonym created.
SQL> SELECT * FROM WORKER;
EMPNO
EPTNO
-------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20
7839
10
7844
30
7876
20
7900
30
7902
20
7934
10
ENAME
JOB
SAL
COMM
---------- --------- ---------- --------- ---------- ---------- ----SMITH
CLERK
7902 17-DEC-80
800
ALLEN
SALESMAN
7698 20-FEB-81
1600
300
WARD
SALESMAN
7698 22-FEB-81
1250
500
JONES
MANAGER
7839 02-APR-81
2975
MARTIN
SALESMAN
7698 28-SEP-81
1250
BLAKE
MANAGER
7839 01-MAY-81
2850
CLARK
MANAGER
7839 09-JUN-81
2450
SCOTT
ANALYST
7566 19-APR-87
3000
KING
PRESIDENT
17-NOV-81
5000
TURNER
SALESMAN
7698 08-SEP-81
1500
ADAMS
CLERK
7788 23-MAY-87
1100
JAMES
CLERK
7698 03-DEC-81
950
FORD
ANALYST
7566 03-DEC-81
3000
MILLER
CLERK
7782 23-JAN-82
1300
14 rows selected.
CREATE
SQL> SELECT ABC.NEXTVAL FROM DUAL;
NEXTVAL
MGR HIREDATE
1400
---------1000
SQL> /
NEXTVAL
---------1004
SQL> /
NEXTVAL
---------1008
SQL>
SQL>
2
3
4
5
6
7
SQL>
CREATE SEQUENCE ABC
START WITH 1000
INCREMENT BY 4
MINVALUE 996
MAXVALUE 1012
CYCLE CACHE 4
/