Saturday, 30 July 2016

INDEX & MERGE

Index In Oracle

1.Its a Schema Object
2.Its One of the Performance tuning method.
3.It improves the performance of the query.
4.Index created by user and maintained by Database.

Types Of Index::

1.Unique Index
2.Non Unique Index

1.Unique Index::

It's crated by automatically by oracle,When you create Primary Key or Unique Key.

2.Non Unique Index::

It's Created by the programmer to speed up the retrieval of the query.

2.Types of Non Unique Index::

1.B-Tree Index
2.Bitmap Index
3.Functional Based Index
4.Reverse Index.

--------------------------------------------------------------------------------------------
Data Dictionary Table ---For Index Is ---->(USER_INDEX)
---------------------------------------------------------------------------------------------

WHEN TO CREATE INDEX::


1.When a table size is Large.
2.When a column is most often used as a condition in a query.
3.When column Contain wide range of Values.
4.When most of your queries are expected to retrieve less than 4% of the row from the table.

Example::

SELECT * from Employees Where First_Name='Steven';

In this table the Column "First_Name" is mostly used  So We can create Index for the Column.

WHEN NOT TO CREATE INDEX::


1.When the table size is small.
2.When a column is not used as a condition in a query.
3.When a column contains large number of duplicate values.
4.When your query are expect to retrieve more than 10% of the ROW from the table.
5.When a table is frequently Updated.

Example::


CREATE INDEX Dept_Id ON Employees(Department_Id);
[This index in known as Normal index or B-Tree Index]

Functional Index::

When performing a function on an indexed column in the where clause of a query is Known as Functional Index.

Example::

SELECT * FROM Employees WHERE First_Name='neena';
In this the First name is 'Neena' in the table,So its not return the output in this case,we can create Fun Index.

CREATE INDEX First_Nm ON Employees(LOWER(First_Name);

BITMAP INDEX::


When our Column having more duplicate records then we prefer the BITMAP index.

Example::

GENDER Column
CREATE BITMAP INDEX Gender_Ind ON Employees(Gender);

REVERSE INDEX::
 
A reverse key Index can be useful if it e.g. is the primary key (or other Index ) of an column that is filled by a sequence.

When generating new records in the base table, because of the used sequence you'll get a high contention on the same Index branches and thus database blocks.

It can have a high impact on Insert on that table.

SYNTAX::

CREATE INDEX <<INDEX_NAME>>ON <<TABLE_NAME(Col_Name)>> REVERSE;

Example::

CREATE INDEX Rev_Indx ON Bank_Master(Acc_num) REVERSE;

WHEN INDEX IS NOT PERFORM::
If we perform any action with the Index column then the Index is not perform.

Example::

If The Salary having Index,


Select Salary*12 As "Yearly Salary" From Employees;

In this it's not Working.


MERGE

MERGE is nothing but it's combined INSERT + UPDATE
When the Target table match with the Source table then the "UPDATE" will happen
When the target table is unmatched with source table then "INSERT" will happen.

EXAMPLE::

Consider Target_Table & Source Table,Merge [Insert + Update] data's from Source to Target Table

MERGE INTO table_Trg t
USING table_src s
ON(s.Department_Id=t.Department_Id)
WHEN NOT MATCHED THEN
INSERT(t.Department_Id,t.Department_Name,t.Manager_Id,t.location_Id)
VALUES(s.Department_Id,s.Department_Name,s.Manager_Id,s.location_Id)
WHEN MATCHED THEN
UPDATE SET t.Department_Name=s.Department_Name
  t.Manager_Id=s.Manager_Id
  t.Location_Id=s.Location_Id


--------END--------

SET OPERATORS

SET OPERATORS

Set operators are used to join the results of two (or more) SELECT statements.

TYPES::

1.UNION
2.UNION ALL
3.INTERSECT
4.MINUS

Condition to Use SET Operators::

1.Number of Columns Should be same
2.Order By Should be Place at Last of the Query
3.The data types Should Be same
4.First Query Alias Name will take for the Entier Result SET.

1.UNION::

When multiple SELECT queries are joined using UNION operator, Oracle displays the combined result from all the compounded SELECT queries,after removing all duplicates and in sorted order (ascending by default), without ignoring the NULL values.

Example::

SQL> SELECT 1 UNION_RESULT FROM Dual
2  UNION
3  SELECT 2 FROM DUAL
4  UNION
5  SELECT 3 FROM Dual
6  UNION
7  SELECT 3 FROM Dual;

UNION_RESULT
------------
1
2 [Removed Duplicate Records]
3

2.UNION ALL::

UNION and UNION ALL are similar in their functioning with a slight difference. But UNION ALL gives the result set without removing duplication and sorting the data.

Example::

SQL> SELECT 1 UNION_ALL FROM Dual

2  UNION ALL
3  SELECT 1 FROM DUAL
4  UNION ALL
5  SELECT 2 FROM Dual;

UNION_ALL
----------
1
1 [With out Remove Duplicates]
2

3.INTERSECT::

Using INTERSECT operator, Oracle displays the common rows from both the SELECT statements, with no duplicates.


Example::

SQL> SELECT ID,NAME FROM TEST
2  INTERSECT
3  SELECT ID,NAME FROM TESTING;

ID NAME
---------- -------------
1 Vino
2 Mathi
3 Xavi

4.MINUS::

     MINUS takes the first result set, and removes any that exist in the second result set; it also removes any duplicates.


Example::


SQL> SELECT * from Test;


ID NAME
---------- -------------------
1 Vino
2 Mathi
3 Xavi

SQL> SELECT * from Testing;

ID NAME
---------- -------------------
4 xx
5 YY
6 ZZ

SQL> SELECT ID from TEST
2  MINUS
3  SELECT ID FROM TESTING;

ID
----------
1
2
3

SQL> SELECT ID,NAME from TEST
2  MINUS
3  SELECT ID,NAME FROM TESTING;

ID NAME
---------- ----------------------
1 Vino
2 Mathi
3 Xavi

-------END-------

View In Oracle

View In Oracle

Logical representation of subset of data is known as "View".

Types Of View::


1.Simple View         --->DML (INSERT,UPDATE,DELETE Possible)
2.Complex View --->DML (INSERT,UPDATE,DELETE Not Possible)

Some Important Points about View::


        1.The Simple view contain only one table.
2.The Complex View Contains More than one table.
3.If we insert anything to view then the Values are inserted into the base table also.
4.Primary & Not null Values can not Insert
5.Using Group Function,Group By,DISTINCT,Expression we can't Perform the DML Operations in view.

Advantages of View::

1.Restrict the data Access
2.Make Complex Query Easy
3.To Provide data independancy

1.Simple View::

Contains Only one table.

Syntax::

CREATE OR REPLACE VIEW view_name AS
  SELECT columns
  FROM tables
  [WHERE conditions];

Example::

SQL> CREATE OR REPLACE VIEW Test_vw AS
  2  SELECT Name
  3  FROM TEST_LDR
  4  WHERE Name='xxx';

View created.

SQL> Select * from Test_vw;

NAME
-------------
xxx

Updating Simple View::

SQL> select * from TEST_LDR;

NAME                               SALARY
------------------------------ ----------
Test                                 1000
xxx                                  2000
yyy                                  3000

SQL> UPDATE Test_vw SET Name='xxxx' WHERE Name='xxx';

1 row updated.

SQL> select * from TEST_LDR;

NAME                               SALARY
------------------------------ ----------
Test                                 1000
xxxx                                 2000
yyy                                  3000

2.Complex View::

It Contains Multiple tables.

Syntax::

CREATE OR REPLACE VIEW view_name AS
  SELECT t1.column,t2.Column
  FROM tables t1,table t2
  [WHERE conditions];

Example::

SQL>CREATE OR REPLACE VIEW Test_Comp_vw AS
   SELECT e.Employee_Id,e.First_Name,d.Department_Name
   FROM Employees e,Departments d
   WHERE e.Department_Id=d.Department_Id AND d.Department_Id='10';

View created.

SQL> SELECT * FROM TEST_Comp_vw;

EMPLOYEE_ID FIRST_NAME           DEPARTMENT_NAME
----------- -------------------- ------------------------------
200     Jennifer             Administration

With Read Only  & With Check Options::

Read Only in Simple View Example::

*We cant do any dml operations inside the View while using WITH READ ONLY option.


SQL> CREATE OR REPLACE VIEW Test_vw AS
  2  SELECT Name
  3  FROM Test_LDR
  4  WHERE Name='xxx'
WITH READ ONLY;

SQL> UPDATE Test_read_vw SET Name='xxx' WHERE Name='xxxx';
UPDATE Test_read_vw SET Name='xxx' WHERE Name='xxxx'
                        *
ERROR at line 1:
ORA-01733: virtual column not allowed here

With Check Option::

*While Using WITH CHECK OPTION we cant violate the Where Condition in View.

CREATE OR REPLACE VIEW Tst_Check_vw AS
SELECT Name
FROM TEST
WHERE Name='Vino'
WITH CHECK OPTION;

SQL> select * from Test;

ID                NAME
---------- ------------------------------
1                 Vino
2                 Mathi
3                 Xavi

SQL> CREATE OR REPLACE VIEW Tst_Check_vw AS
2  SELECT Name
3  FROM TEST
ORA-01402: view WITH CHECK OPTION where-clause violation
4  WHERE Name='Vino'
5  WITH CHECK OPTION;

View created.

SQL> UPDATE Tst_Check_vw SET Name='Kumar' Where Name='Vino';
UPDATE Tst_Check_vw SET Name='Kumar' Where Name='Vino'
*
ERROR at line 1:

DROP VIEW::

SQL>DROP VIEW VIEW_NAME;

View Dropped

SQL*Loader

SQL*Loader In Oracle


*Loading data's to table from the external File(Like CSV).
*SQL*Loader is a bulk loader utility used for moving data from external files into the Oracle database. 





STEPS::

==>Login into your SQLPLUS Tool
==>CREATE The Table Or Check the Table already existing in the Database
==>Create the Controler File(.ctl Format)
==>Get ready the External file with full of data's(External like Excel(.csv) File)
==>The table Should be Empty While Insert(load data) or other wise the Error Message Will thrown
  [like --> SQL*Loader-601: For INSERT option, table must be empty.]

Commands::


Controller file Syntax::

load data
infile 'External File Path'
  into table Table_Name
  fields terminated by "," optionally enclosed by '"'
  (Col..1,Col...2....etc)

Example Coding::

load data
  infile 'E:\XAVIER WORK\SQL ORACLE\UTL_Load\Testing.csv'
into table TEST_LDR
fields terminated by "," optionally enclosed by '"'
(Name,salary)

========>>Queries to be Follow in SQLPLUS TOOL<<=========

----------------------------------------------------------------------
C:\Users\JESUS>SQLPLUS HR/open
----------------------------------------------------------------------


SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 11 11:50:22 2016

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
-------------------------------------------------------------------------
SQL> $SQLLDR HR@XE/open

control = E:\ORACLE\SQL ORACLE\UTL_Load\Control.ctl
-------------------------------------------------------------------------

SQL*Loader: Release 10.2.0.1.0 - Production on Sat Jun 11 11:17:59 2016

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Commit point reached - logical record count 3

-----------------------------------------
SQL> SELECT * from TEST_LDR;

NAME                               SALARY
------------------------------ ----------
Test                                    1000
xxx                                      2000
yyy                                      3000


========>>If already Some data's in the table then What happens??<<=========

SQL> SELECT * FROM SQL_LRD;

NAME                               SALARY
------------------------------ ----------
Test                                 1000
xxx                                  2000
yyy                                  3000

SQL> $SQLLDR HR@XE/OPEN

control = E:\ORACLE\SQL ORACLE\UTL_Load\Control.ctl

SQL*Loader: Release 10.2.0.1.0 - Production on Sat Jun 11 12:26:46 2016

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL*Loader-601: For INSERT option, table must be empty.  Error on table SQL_LDR

LOAD Data's If the Table Having Some data's::

Use APPEND Key word to load data's into table While have some data's in the table.

load data

  infile 'E:\XAVIER WORK\SQL ORACLE\UTL_Load\Testing.csv'
        APPEND
 into table TEST_LDR
 fields terminated by "," optionally enclosed by '"'
 (Name,salary)
----------------------------------------------------------------------------------------------
Use Truncate Keyword to Truncate the data's from table and Insert New records:

load data

  infile 'E:\XAVIER WORK\SQL ORACLE\UTL_Load\Testing.csv'
        TRUNCATE
 into table TEST_LDR
 fields terminated by "," optionally enclosed by '"'
 (Name,salary)

Draft File or Log file in SQL*Loader::

   When we load the data's using sql*loader in any case,if there is any error will happen ,the remaining data's are stored in one log file that is known as "Draft file" or "Log File".



-----SQL*Loader END-----

Sequence & Synonym

Sequence In Oracle


**Its a Numeric Value Generator
**Its Mostly used in Primary Key Columns
**Its One of the Schema Object
**Its a Sharable Object

NEXTVAL::


The Oracle NEXTVAL function is used to retrieve the next value in a sequence. The Oracle NEXTVAL function must be called before calling the CURRVAL function, or an error will be thrown.

Example::

SQL> create sequence Seq_1;

Sequence created.

SQL> select Seq_1.Nextval from dual;

NEXTVAL
----------
1

SQL> select Seq_1.Nextval from dual;

NEXTVAL
----------
2

SQL> select Seq_1.Nextval from dual;

NEXTVAL
----------
3

SQL> create sequence Seq_2
2  START WITH 10
3  INCREMENT BY 3
4  MAXVALUE 10000
5  CYCLE
6  CACHE 5;

Sequence created.

SQL> select Seq_2.nextval from dual;

NEXTVAL
----------
10

SQL> select Seq_2.nextval from dual;

NEXTVAL
----------
13

SQL> select Seq_2.nextval from dual;

NEXTVAL
----------
16

SQL> select Seq_2.nextval from dual;

NEXTVAL
----------
19


CURRVAL::


**It Returns the current value of a sequence.
**If the Currval Once executed the Nextval Should be the Next Value of the Currval.

Example::

SQL> select Seq_2.Nextval from dual;

NEXTVAL
----------
19
SQL> select Seq_2.CURRVAL from dual;

CURRVAL
----------
19

SQL> select Seq_2.Nextval from dual;

NEXTVAL
----------
22


SYNONYM::

A synonym is an alternative name for objects such as tables, views, sequences, stored procedures, and other database objects.

Example::

SQL> CREATE SYNONYM Emp For Employees;

SYNONYM CREATED.

SQL> select * From Emp;

Advantages of synonyms


Synonyms are often used for security and convenience.

for Example, they can do the following things.

  • Mask the name and owner of an object.
  • Provide location transparency for remote objects of a distributed database.
  • Simplify SQL statements for database users

Private & Public Synonyms::

  • A normal synonym is called private synonym whereas a public synonym is created by a keyword public.
  • A private synonym is accessible within your schema and a public synonym is accessible to any schema in the database.

----------END----------

Pseudocolumn

Pseudocolumn In Oracle

A pseudocolumn behaves like a table column, but it's not actually stored in the table.

TYPES::

1.SYSDATE
2.SYSTIMESTAMP
3.USER
4.UID
5.ROWNUM
6.ROWID
7.NEXTVAL   --- Sequence Related Pseudo Columns
8.CURVAL --  Sequence Related Pseudo Columns


1.SYSDATE::

SYSDATE returns the current date set for the operating system on which the database resides. The datatype of the returned value is DATE.

Example::

SQL> SELECT SYSDATE FROM Dual;

SYSDATE
---------
10-JUN-16

2.SYSTIMESTAMP::

SYSTIMESTAMP is the built in function which returns the current database system date including fractional seconds and region time zone.

Example::

SQL> SELECT SYSTIMESTAMP FROM Dual;

SYSTIMESTAMP
-----------------------------------
10-JUN-16 07.20.13.909000 PM +05:30

3.USER::

The USER indicate in Which USER We are Currently loged In.

Example::

SQL> SELECT USER FROM Dual;


USER
-----
HR

4.UID::

The Oracle UID is a pseudo-column containing a numeric value identifying the current user. Calling the UID() function will return the ID number, the user who is currently logged in.

Example::

SQL> SELECT UID FROM Dual;

       UID
----------
        33

SQL> SELECT USER,UID FROM Dual;

USER                                  UID
------------------------------ ----------
HR                                     33

5.ROWNUM::

ROWNUM is a pseudocolumn returning a sequential number along with the rows retrieved.

Example::

SQL> SELECT ROWNUM "S.NO",Department_Id,Department_Name From Departments;

------------------------------------------------------------------------
      S.NO     DEPARTMENT_ID         DEPARTMENT_NAME
---------- ------------- -----------------------------------------------
         1            10                                Administration
         2            20                                Marketing
         3            30                                 Purchasing
         4            40                                 Human Resources
         5            50                                 Shipping
         6            60                                 IT
         7            70                                 Public Relations
         8            80                                 Sales
         9            90                                 Executive
        10           100                               Finance
        11           110                               Accounting
        12           120                               Treasury
        13           130                               Corporate Tax
        14           140                               Control And Credit
        15           150                               Shareholder Services

Example::

To display &n(th ) Maximum Salary 
=======================================================
SELECT MIN(SALARY)
FROM
  (
   SELECT ROWNUM,SALARY FROM
             (
SELECT SALARY FROM EMPLOYEES ORDER BY 1 DESC)
WHERE ROWNUM <= nth
   );
=======================================================

6.ROWID::

An Oracle server assigns each row in each table with a unique ROWID(Address ID) to identify the row in the table.

Example::

SQL> SELECT ROWID,Department_Name From Departments;
------------------                            -----------------------------
ROWID                                      DEPARTMENT_NAME
------------------                         -----------------------------
AAAC8/AAEAAAAA3AAA        Administration
AAAC8/AAEAAAAA3AAB       Marketing
AAAC8/AAEAAAAA3AAC       Purchasing
AAAC8/AAEAAAAA3AAD       Human Resources
AAAC8/AAEAAAAA3AAE       Shipping
AAAC8/AAEAAAAA3AAF       IT
AAAC8/AAEAAAAA3AAG       Public Relations

-----END-----