SET
OPERATORS:
TYPES
- Union
- Union all
- Intersect
- Minus
UNION
This
will combine the records of multiple tables having the same
structure.
Ex:
SQL>
select * from student1 union select * from student2;
UNION
ALL
This
will combine the records of multiple tables having the same structure
but including duplicates.
Ex:
SQL>
select * from student1 union all select * from student2;
INTERSECT
This
will give the common records of multiple tables having the same
structure.
Ex:
SQL>
select * from student1 intersect select * from student2;
MINUS
This
will give the records of a table whose records are not in other
tables having the same structure.
Ex:
SQL>
select * from student1 minus select * from student2;
VIEWS:
A
view is a database object that is a logical representation of a
table. It is delivered from a table but has no storage of its own and
often may be used in the same manner as a table.
A
view takes the output of the query and treats it as a table,
therefore a view can be thought of as a stored query or a virtual
table.
TYPES
- Simple view
- Complex view
Simple
view can be created from one table where as complex view can be
created from multiple tables.
WHY
VIEWS?
- Provides additional level of security by restricting access to a predetermined set of rows and/or columns of a table.
- Hide the data complexity.
- Simplify commands for the user.
VIEWS
WITHOUT DML
- Read only view
- View with group by
- View with aggregate functions
- View with rownum
- Partition view
- View with distinct
Ex:
SQL>
Create view dept_v as select *from dept with read only;
SQL>
Create
view dept_v as select deptno, sum(sal) t_sal from emp group by
deptno;
SQL>
Create
view stud as select rownum no, name, marks from student;
SQL>
Create
view student as select *from student1 union select *from student2;
SQL>
Create
view stud as select distinct no,name from student;
VIEWS
WITH DML
- View with not null column -- insert with out not null column not possible
--
update not null column to null is not possible
--
delete possible
- View with out not null column which was in base table -- insert not possible
--
update, delete possible
- View with expression -- insert , update not possible
--
delete possible
- View with functions (except aggregate) -- insert, update not possible
-- delete
possible
- View was created but the underlying table was dropped then we will get the message like “ view has errors ”.
- View was created but the base table has been altered but still the view was with the initial definition, we have to replace the view to affect the changes.
- Complex view (view with more than one table) -- insert not possible
-- update, delete possible
(not always)
CREATING
VIEW WITHOUT HAVING THE BASE TABLE
SQL>
Create force view stud as select *From student;
--
Once the base table was created then the view is validated.
VIEW
WITH CHECK OPTION CONSTRAINT
SQL>
Create
view stud as select *from student where marks = 500 with check option
constraint
Ck;
- Insert
possible with marks value as 500
- Update
possible excluding marks column
- Delete
possible
DROPPING
VIEWS
SQL>
drop view dept_v;
SYNONYM
AND SEQUENCE:
SYNONYM
A
synonym is a database object, which is used as an alias for a table,
view or sequence.
TYPES
- Private
- Public
Private
synonym is available to the particular user who creates.
Public
synonym is created by DBA which is available to all the users.
ADVANTAGES
- Hide the name and owner of the object.
- Provides location transparency for remote objects of a distributed database.
CREATE
AND DROP
SQL>
create synonym s1 for emp;
SQL>
create public synonym s2 for emp;
SQL>
drop synonym s1;
SEQUENCE
A
sequence is a database object, which can generate unique, sequential
integer values.
It
can be used to automatically generate primary key or unique key
values.
A
sequence can be either in an ascending or descending order.
Syntax:
Create sequence
<seq_name>
[increment bty n] [start with n] [maxvalue n] [minvalue n]
[cycle/nocycle]
[cache/nocache];
By
defalult the sequence starts with 1, increments by 1 with minvalue of
1 and with nocycle, nocache.
Cache
option pre-alloocates a set of sequence numbers and retains them in
memory for faster access.
Ex:
SQL>
create sequence s;
SQL>
create sequence s increment by 10 start with 100 minvalue 5 maxvalue
200 cycle
cache
20;
USING
SEQUENCE
SQL>
create table student(no number(2),name varchar(10));
SQL>
insert into student values(s.nextval, ‘saketh’);
- Initially currval is not defined and nextval is starting value.
- After that nextval and currval are always equal.
CREATING
ALPHA-NUMERIC SEQUENCE
SQL>
create sequence s start with 111234;
SQL>
Insert into student values (s.nextval || translate
(s.nextval,’1234567890’,’abcdefghij’));
ALTERING
SEQUENCE
We
can alter the sequence to perform the following.
- Set or eliminate minvalue or maxvalue.
- Change the increment value.
- Change the number of cached sequence numbers.
Ex:
SQL>
alter sequence s minvalue 5;
SQL>
alter sequence s increment by 2;
SQL>
alter sequence s cache 10;
DROPPING
SEQUENCE
SQL>
drop sequence s;
JOINS:
The
purpose of a join is to combine the data across tables.
A
join is actually performed by the where clause which combines the
specified rows of tables.
If
a join involves in more than two tables then oracle joins first two
tables based on the joins condition and then compares the result with
the next table and so on.
TYPES
- Equi join
- Non-equi join
- Self join
- Natural join
- Cross join
- Outer join
- Left outer
- Right outer
- Full outer
- Inner join
- Using clause
- On clause
Assume
that we have the following tables.
SQL>
select * from dept;
DEPTNO DNAME
LOC
------
---------- ----------
10 mkt
hyd
20 fin
bang
30 hr
bombay
SQL>
select * from emp;
EMPNO ENAME
JOB MGR DEPTNO
----------
---------- ---------- ---------- ----------
111
saketh analyst 444 10
222
sudha clerk 333 20
333
jagan manager 111 10
444
madhu engineer 222 40
EQUI
JOIN
A
join which contains an ‘=’ operator in the joins condition.
Ex:
SQL>
select empno,ename,job,dname,loc from emp e,dept d where
e.deptno=d.deptno;
EMPNO
ENAME JOB DNAME LOC
----------
---------- ---------- ---------- ----------
111
saketh analyst mkt hyd
333
jagan manager mkt hyd
222
sudha clerk fin bang
USING
CLAUSE
SQL>
select empno,ename,job ,dname,loc from emp e join dept d
using(deptno);
EMPNO
ENAME JOB DNAME LOC
----------
---------- ---------- ---------- ----------
111
saketh analyst mkt hyd
333
jagan manager mkt hyd
222
sudha clerk fin bang
ON
CLAUSE
SQL>
select empno,ename,job,dname,loc from emp e join dept d
on(e.deptno=d.deptno);
EMPNO
ENAME JOB DNAME LOC
----------
---------- ---------- ---------- ----------
111
saketh analyst mkt hyd
333
jagan manager mkt hyd
222
sudha clerk fin bang
NON-EQUI
JOIN
A
join which contains an operator other than ‘=’ in the joins
condition.
Ex:
SQL>
select empno,ename,job,dname,loc from emp e,dept d where e.deptno >
d.deptno;
EMPNO
ENAME JOB DNAME LOC
----------
---------- ---------- ---------- ----------
222
sudha clerk mkt hyd
444
madhu engineer mkt hyd
444
madhu engineer fin bang
444
madhu engineer hr bombay
SELF
JOIN
Joining
the table itself is called self join.
Ex:
SQL>
select e1.empno,e2.ename,e1.job,e2.deptno from emp e1,emp e2 where
e1.empno=e2.mgr;
EMPNO
ENAME JOB DEPTNO
----------
---------- ---------- ----------
111
jagan analyst 10
222
madhu clerk 40
333
sudha manager 20
444
saketh engineer 10
NATURAL
JOIN
Natural
join compares all the common columns.
Ex:
SQL>
select empno,ename,job,dname,loc from emp natural join dept;
EMPNO
ENAME JOB DNAME LOC
----------
---------- ---------- ---------- ----------
111
saketh analyst mkt hyd
333
jagan manager mkt hyd
222
sudha clerk fin bang
CROSS
JOIN
This
will gives the cross product.
Ex:
SQL>
select empno,ename,job,dname,loc from emp cross join dept;
EMPNO
ENAME JOB DNAME LOC
----------
---------- ---------- ---------- ----------
111
saketh analyst mkt hyd
222
sudha clerk mkt hyd
333
jagan manager mkt hyd
444
madhu engineer mkt hyd
111
saketh analyst fin bang
222
sudha clerk fin bang
333
jagan manager fin bang
444
madhu engineer fin bang
111
saketh analyst hr bombay
222
sudha clerk hr bombay
333
jagan manager hr bombay
444
madhu engineer hr bombay
OUTER
JOIN
Outer
join gives the non-matching records along with matching records.
LEFT
OUTER JOIN
This
will display the all matching records and the records which are in
left hand side table those that are not in right hand side table.
Ex:
SQL>
select
empno,ename,job,dname,loc from emp e left outer join dept d
on(e.deptno=d.deptno);
Or
SQL>
select empno,ename,job,dname,loc from emp e,dept d where
e.deptno=d.deptno(+);
EMPNO
ENAME JOB DNAME LOC
----------
---------- ---------- ---------- ----------
111
saketh analyst mkt hyd
333
jagan manager mkt hyd
222
sudha clerk fin bang
444
madhu engineer
RIGHT
OUTER JOIN
This
will display the all matching records and the records which are in
right hand side table those that are not in left hand side table.
Ex:
SQL>
select empno,ename,job,dname,loc from emp e right outer join dept d
on(e.deptno=d.deptno);
Or
SQL>
select empno,ename,job,dname,loc from emp e,dept d where e.deptno(+)
= d.deptno;
EMPNO
ENAME JOB DNAME LOC
----------
---------- ---------- ---------- ----------
111
saketh analyst mkt hyd
333
jagan manager mkt hyd
222
sudha clerk fin bang
hr
bombay
FULL
OUTER JOIN
This
will display the all matching records and the non-matching records
from both tables.
Ex:
SQL>
select empno,ename,job,dname,loc from emp e full outer join dept d
on(e.deptno=d.deptno);
EMPNO ENAME JOB
DNAME LOC
----------
---------- ---------- ---------- ----------
333 jagan
manager mkt hyd
111 saketh
analyst mkt hyd
222 sudha
clerk fin bang
444 madhu
engineer
hr
bombay
INNER
JOIN
This
will display all the records that have matched.
Ex:
SQL>
select empno,ename,job,dname,loc from emp inner join dept
using(deptno);
EMPNO
ENAME JOB DNAME LOC
----------
---------- ---------- ---------- ----------
111
saketh analyst mkt hyd
333
jagan manager mkt hyd
222
sudha clerk fin bang
No comments:
Post a Comment