You are on page 1of 13

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
/

You might also like