SQL Complete
SQL Complete
SQL Complete
CREATE A TABLE
Syntax
Create table <table name> (column definition 1,column definition 2, . . . . . .
, );
Example
SQL> create table bab(name varchar2(10), eng number(3), tam number(3));
Table created.
ALTER A TABLE
Syntax
Alter table <table name> modify (column definition...);
Alter table <table name> add (column definition...);
Example
SQL> alter table bab modify (name varchar2(15));
Table altered.
Table altered.
TRUNCATE A TABLE
Description
The truncate command deletes all the records from the table.
Syntax
Truncate table <table name>;
Example
SQL> truncate table bab;
Table truncated.
Table dropped.
INSERT COMMAND
Syntax
Insert into <table name> values ( a list of data values);
Example
SQL> insert into bab values('babu',67,89,90);
1 row created.
1 row created.
1 row created.
1 row created.
7 rows selected.
Table altered.
1 row created.
SELECT COMMAND
Syntax
Select column_name ......... from <tale name>;
Example
SQL> select name,eng from bab;
NAME ENG
--------------- ----------
babu 67
ddl 67
sandhya 45
mani 67
kavi 56
jack 100
raj
ram 45
8 rows selected.
ENG
--------------
45
56
67
100
6 rows selected.
SQL>select name ,mat from bab where mat in(select mat from bab
group by mat having count(mat) > 1 );
NAME MAT
--------------- ----------
sandhya 89
ram 89
babu 90
kavi 90
4 rows selected.
MAT
----------
89
90
2 rows selected.
Example2
SQL>select * from bab where mat>(select avg(tam) from bab);
NAME ENG
--------------- ----------
babu 200
ddl 67
mani 67
3 rows selected.
SUM(MAT)
----------
178
180
2 rows selected.
UPDATE COMMAND
Syntax
Update <table name> set field = value,......where condition;
Example
SQL> update bab set eng = 200 where name = 'babu';
1 row updated.
DELETE COMMAND
Syntax
Delete from <table name> where conditions;
Example1
SQL> delete from bab where eng = 100;
1 row deleted.
2 rows deleted.
COMMIT
Description
Changes can made permanent to the database.
Syntax
Commit;
Example
SQL>commit;
Commit complete.
SAVEPOINT
Description
Savepoints are like markers to divided a very lengthy transaction to smaller
ones.
Syntax
savepoint savepoint_id;
Example
SQL> select * from bab;
6 rows selected.
6 rows selected.
SQL> savepoint u;
Savepoint created.
1 row deleted.
1 row updated.
Rollback complete.
6 rows selected.
SQL> rollback;
Rollback complete.
6 rows selected.
Grant succeeded.
Grant succeeded.
Grant succeeded.
Revoke succeeded.
Revoke succeeded.
Table created.
6 rows selected.
Example2
SQL> create table rajesh(stuname,english) as select name,eng from bab;
Table created.
6 rows selected.
Example3
SQL> create table siva as select * from bab where eng = 67;
Table created.
Example4
Note
(Copy table structure only.)
Table created.
no rows selected
Table created.
6 rows created.
6 rows selected.
STUDENT_NAME ENGLISH_MARK
--------------- ------------
babu 200
ddl 67
sandhya 45
mani 67
kavi 56
ram 45
6 rows selected.
ARITHMETIC OPERATORS
Description
The arithmetic operators are addition(+),subtraction(-),multiplication(*),and
division(/).
Example1
SQL> select name,eng+tam total_et from bab where mat = 90;
NAME TOTAL_ET
--------------- ----------
babu 289
kavi 134
Example2
ROLLNO TOTALET
---------- ----------
100 143
101
Example3
SQL> select name,eng*(tam-mat) total from bab where name = 'ram';
NAME TOTAL
--------------- ----------
ram -990
Example4
SQL> select * from bab where eng>mat*2;
COMPARISON OPERATORS
Description
The comparison operators are =,!=,<,>,<=,>=,
BETWEEN(to check between any two values),
IN(to match with any of the values in the list),
LIKE(to match a character pattern),
IS NULL(to check whether it is null).
NOT BETWEEN and NOT LIKE.
Example1
SQL> select * from bab where eng>mat/2;
6 rows selected.
Example2
SQL> select name from bab where eng in(67,89,200,48);
NAME
---------------
Example3
SQL> select * from bab where not (eng = 67 or eng = 45);
Example5
SQL> select name from bab where eng between 44 and 60;
NAME
---------------
sandhya
kavi
ram
Example6
SQL> select eng from bab where name like 'b%';
ENG
----------
200
Example7
SQL> select * from bab where name like 'k_v%';
LOGICAL OPERATORS
Description
The logical operator are AND,NOT and OR.
Example
SQL> select * from bab where eng = 67 and mat = 67;
DATE FUNCTIONS
ADD_MONTHS
Syntax
add_months(d,n),where d is the date and n is the number of months.
Example1
ODATE ADD_MONTH
--------- ---------
12-MAR-98 12-MAY-98
12-MAR-99 12-MAY-99
12-MAY-99 12-JUL-99
12-AUG-96 12-OCT-96
12-MAR-98 12-MAY-98
10-JAN-98 10-MAR-98
6 rows selected.
Example2
SQL> select sysdate, add_months(sysdate,-5) from dual;
SYSDATE ADD_MONTH
--------- ---------
05-FEB-06 05-SEP-05
SYSDATE SYSDATE+5
--------- ---------
05-FEB-06 10-FEB-06
SYSDATE SYSDATE-4
--------- ---------
05-FEB-06 01-FEB-06
LAST_DAY
Description
Returns the last day of the month.
Syntax
last_day(d)
Example
SQL> select sysdate,last_day(odate) from bab where eng > 65;
SYSDATE LAST_DAY(
--------- ---------
26-JAN-06 31-MAR-98
26-JAN-06 31-MAR-99
26-JAN-06 31-AUG-96
MONTH_BETWEEN
Description
To find out the number of months between two dates.
Syntax
months_between(d1,d2) where d1,d2 are dates.
Example1
SQL> select months_between(sysdate,odate) from bab;
MONTHS_BETWEEN(SYSDATE,ODATE)
-----------------------------
94.4794015
82.4794015
6 rows selected.
Example2
SQL> select sysdate, add_months(sysdate,-5) from dual;
SYSDATE ADD_MONTH
--------- ---------
05-FEB-06 05-SEP-05
MONTHS_BETWEEN('12-AUG-02','12-JAN-02')
---------------------------------------
7
SQL> select months_between('12-aug-02','18-july-02') from dual;
MONTHS_BETWEEN('12-AUG-02','18-JULY-02')
----------------------------------------
.806451613
MONTHS_BETWEEN('12-AUG-02','10-JULY-02')
----------------------------------------
1.06451613
ROUND
Description
Returns the date which is rounded(nearest year) to the unit specified by the
format model.
Syntax
round(d,[fmt]) where d is date and fmt is format model.
Example1
SQL> select odate,round(odate,'year') from bab where eng > 64;
ODATE ROUND(ODA
--------- ---------
12-MAR-98 01-JAN-98
12-MAR-99 01-JAN-99
12-AUG-96 01-JAN-97
Example2
SQL> select odate, round(odate,'month') from bab where eng > 64;
ODATE ROUND(ODA
--------- ---------
12-MAR-98 01-MAR-98
12-MAR-99 01-MAR-99
12-AUG-96 01-AUG-96
ODATE ROUND(ODA
--------- ---------
12-MAR-98 15-MAR-98
12-MAR-99 14-MAR-99
12-AUG-96 11-AUG-96
ODATE ROUND(ODA
--------- ---------
12-MAR-98 12-MAR-98
12-MAR-99 12-MAR-99
12-AUG-96 12-AUG-96
SYSDATE NEXT_DAY(
--------- ---------
26-JAN-06 31-JAN-06
SYSDATE TRUNC(SYS
--------- ---------
26-JAN-06 01-JAN-06
SYSDATE TRUNC(SYS
--------- ---------
26-JAN-06 01-JAN-06
SYSDATE TRUNC(SYS
--------- ---------
26-JAN-06 22-JAN-06 (display to the nearest Sunday)
SYSDATE TRUNC(SYS
--------- ---------
26-JAN-06 26-JAN-06 (it is rounded to the nearest day i.e. the sysdate)
GREATEST(10,70,32,12)
---------------------
70
LEAST(10,70,32,12)
------------------
10
LEAS
----
babu
NEW_TIME
Description
Returns the time and date of a date column or literal date in other time zones.
Syntax
new_time(date,’this’,’other’);
Example
SQL> select new_time('13-feb-99','est','yst') from dual;
NEW_TIME(
---------
12-FEB-99 (which is the date in the time sone ‘yst’)
CHARACTER FUNCTIONS
Description
Character functions accept character input and return either character or
number values.
NOTE
Soundex,which is also a character function compares words that are spelled
differently,but sound alike.
Example
SQL> select * from bab where soundex(name)=soundex('baabu');
CHARACTER FUNCTION
Example
SQL> select chr(112) from dual;
LPAD('BABU
----------
======babu
RPAD('BABU
----------
babu======
LENGTH('BABU')
--------------
4
DECODE
Description
DECODE function does a value by value replacement.
Syntax
select decode(<value,if1,then1,if2,then2,...>) from <table_name>;
Example1
SQL> select eng,decode(name,'babu','baabu') changename,tam from bab where eng =
200;
Example2
SQL>
1 select distinct
2 DECODE(name,'babu','mr.k.babu','ddl','dhanlakshmi',name)
3* from bab
4 /
DECODE(NAME,'BA
---------------
dhanlakshmi
kavi
mani
mmm
mr.k.babu
sandhya
6 rows selected.
Example3
DECODE(NAME
-----------
dhanlakshmi
mr.k.babu
RECORD
----------------------------------------------------------------------------
The name is babu english mark is 200 maths mark is 90
The name is mani english mark is 67 maths mark is 56
NUMERIC FUNCTIONS
Example
SQL> select ln(2) from dual;
LN(2)
----------
.693147181
MOD(45,6)
----------
SIGN(-32)
----------
-1
CONVERSION FUNCTIONS
Description
Conversion functions convert a value from one data type to another.
Default date format is dd-mon-yy.
dd------16
dy------sat
day-----Saturday
mm------03
mon-----mar
month---march
fmmonth-march(fullmonth)
yy------02
yyy-----002
yyyy----2002
ddth----16th or 3rd or 2nd or 1st
Syntax
1. To_char()
2. To_date()
3. To_number()
Example
SQL> select to_char (sysdate,'ddth "of" fmmonth yyyy') from dual;
TO_CHAR(SYSDATE,'DDTH"
----------------------
27th of january 2006
TO_DATE('
---------
27-JAN-99
ROUND(TO_
---------
01-JAN-99
TO_NUMBER('100')
----------------
100
UID
----------
66
USER
Description
Returns the login’s user name, which is in varchar2 datatype.
Example
SQL> select user from dual;
USER
------------------------------
SCOTT
NULL VALUE(NVL)
Description
The null value function is used in case where we want to consider null values
as zero.
Syntax (null values and zeroes are not equivalent)
nvl(exp1,exp2) if exp1 is null, nvl will return exp2.
Example1
NAM NVL(ENG,100)
---------- ------------
babu 500
ddl 100
NAM NVL(ENG,100)
---------- ------------
babu 500
ddl 100
san 100
VSIZE
Description
It returns the number of bytes in the exression.
Syntax
vsize(expr).
Example
SQL> select vsize('babu') from dual;
VSIZE('BABU')
-------------
4
GROUP FUNCTIONS
AVG FUNCTION
Example
SQL> select avg(eng) from bab where tam = 89;
AVG(ENG)
----------
133.5
MIN FUNCTION
Example
SQL> select min(eng) from bab where tam = 89;
MIN(ENG)
MAX FUNCTION
Example
SQL> select max(eng) from bab where tam = 89;
MAX(ENG)
----------
200
SUM FUNCTION
Example
SQL> select sum(eng+tam) totalet from bab;
TOTALET
----------
904
COUNT FUNCTION
Example1
SQL> select count(*) from bab;
COUNT(*)
----------
6
Example2
SQL> update bab set mat = null where tam = 78;
1 row updated.
6 rows selected.
COUNT(MAT)
----------
5
COUNT(DISTINCTTAM)
------------------
5
ENG TAM
---------- ----------
200 89
67 56
45 67
67 56
56 78
45 56
6 rows selected.
TAM MAX(ENG)
---------- ----------
56 67
67 45
78 56
89 200
TAM SUM(ENG)
---------- ----------
56 179
67 45
78 56
89 200
HAVING CLAUSE
Example
SQL> select tam,max(eng) from bab group by tam having tam not in (77,45,56);
TAM MAX(ENG)
--------- ----------
67 45
78 56
89 200
STDDEV
Description
Gives the standard deviation of a norm of values.
Example
SQL> select tam,stddev(eng) from bab group by tam;
TAM STDDEV(ENG)
---------- -----------
56 12.7017059
67 0
78 0
89 0
TAM VARIANCE(ENG)
--------- -------------
56 161.333333
67 0
78 0
89 0
SET OPERATORS
SQL> select * from bab;
6 rows selected.
6 rows selected.
UNION
Description
Returns all distinct rows selected by both queries.
Example
SQL> select name from bab union select name from stud;
NAME
---------------
aaaa
babu
bbbbb
ddl
dhana
kavi
mani
9 rows selected.
UNION ALL
Description
Returns all rows selected by either query including duplicates.
Example
SQL> select name from bab union all select name from stud;
NAME
---------
babu
ddl
sandhya
mani
kavi
ram
babu
dhana
ddl
sandhya
aaaa
bbbbb
12 rows selected.
INTERSECT
Description
Returns only rows that are common to both the queries.
Example
SQL> select name from bab intersect select name from stud;
NAME
---------------
babu
ddl
sandhya
MINUS
Description
Returns all distinct rows selected only by the first query and not by the
second.
Example
SQL> select name from bab minus select name from stud;
NAME
---------------
kavi
mani
ram
SIMPLE JOIN
SELF JOIN
Description
Joining of a table itself is known as self join.
Example
SQL> select * from bab;
6 rows selected.
OUTER JOIN
Description
6 rows selected.
SUBQUERIES
Description
Nesting of queries, one within the other, is terned as a subquery.
Example
SQL> select * from bab where name=(select name from stud where eng =250);
Example2
SQL>select * from stud where eng > all(select tam from bab where mat < 100);
MULTIPLE SUBQUERIES
Example1
SQL> select name,eng,odate from bab where name=(select name from stud where
rollno=(select rollno from student where mat = 300));
ENG
----------
45
56
67
200
INTEGRITY CONSTRAINTS
Table created.
Table altered.
Example2
SQL> create table second(a number(3),b number(3));
Table created.
1 row created.
ERROR at line 1:
ORA-02296: cannot enable (SCOTT.) - null values found
CHECK CONSTRAINTS
Example1
SQL>create table third (a number(3),b number(3) constraint bc check(b<50));
Example2
SQL> alter table third add constraint ac check(a in(45,65));
Table altered.
ERROR at line 1:
ORA-02290: check constraint (SCOTT.AC) violated
UNIQUE CONSTRAINTS
Example1
SQL> create table four(a number(3),b number(3) constraint bc1
check(b<90),constraint bu unique(b));
Table created.
Example2
SQL> alter table four add constraint bc2 unique(a);
Table altered.
Table created.
Example2
SQL> create table six(a number(3),b number(3), constraint ap1 primary key(a));
Table created.
Example3
SQL> alter table first add constraint ap2 primary key(b);
Table altered.
Table created.
Example2
SQL> alter table four add constraint af1 foreign key(a) references six(a);
Table altered.
Example3
SQL> delete from five where a=100;
ERROR at line 1:
ORA-02292: integrity constraint (SCOTT.AF) violated - child record found
NOTE
First delete child record and then delete parent record.
Table created.
Table created.
SQL> alter table ten add constraint babu1 foreign key(a) references nine(a) on
delete cascade;
Table altered.
SQL> insert into nine values(1,78);
1 row created.
1 row created.
1 row deleted.
DEFERRABLE CONSTRAINT
Description
Three conditions
Syntax4
Alter table <table_name> drop constraint constraint_name;
Example
SQL> alter table four drop constraint bu;
Table altered.
TYPES OF LOCKS
1. Row Level Locks
2. Table Level Locks
Example
SQL> select * from bab where name = 'ram' for update of eng,tam;
1 row updated.
SHARE LOCK
Description
The table allowing other users to only query but not insert,update or delete
rows in a table.
Example
SQL> lock table bab in share mode;
Table(s) Locked.
EXCLUSIVE LOCK
Description
It allows the other user to only query but not insert, delete or update rows in
a table. It is similar to a share lock but one user can place an exclusive lock
on a table at a time.
Example
SQL> lock table bab in exclusive mode;
Table(s) Locked.
Rollback complete.
NOWAIT
Description
If another user tries to violate the above restrictions by trying to lock the
table, then he will be made to wait indefinitely. This delay could be avoided
by appending a ‘nowait’ clause in the lock table command.
Example
SQL> lock table bab in exclusive mode nowait;
Table(s) Locked.
DEADLOCK
Description
A deadlock occurs when two user have a lock, each on a separate object, the
first person is wait for second person to release lock, but second person is
not release, at that we use deadlock.
TABLE PARTITIONS
Description
A single logical table can be split into a number of physically separate pieces
based on ranges of key values. Each of the parts of the table is called a
partition.
Syntax
Create table <table_name> (column name data type, column name date type,..)
partition by range(column name) (partition <partition name> values less than
<value>, partition <partition name> values less than <value>);
Example
SQL> create table mani(eng number(3),tam number(3),mat number(3)) partition by
range(eng) (partition m1 values less than (40),partition m2 values less than
(90));
Table created.
MOVING PARTITIONS
Description
Move a partition from a most active tablespace to a different tablespace in
order to balace I/O operations. Oracle creates the table in the default
‘system’ tablespace.
Example
SQL> alter table mani move partition m1 tablespace system;
Table altered.
ADDING PARTITIONS
Description
To add a new partition after the existing last partition .
Example
SQL> alter table mani add partition m3 values less than(99);
Table altered.
1 row created.
SPLITTING PARTITIONS
Description
To split a partition into two.
Example
SQL>alter table mani split partition m1 at(20) into(partition m10,partition
m11);
Table altered.
TRUNCATING PARTITION
Description
It is used to truncate the values in the partition without disturbing other
partition values. Structure can’t effect when the partition truncated.
Syntax
Alter table <table name> TRUNCATE partition <partition name>;
Example
Alter table mani truncate partition m10;
DROPPING PARTITIONS
Description
To drop a specified partition.
Example
SQL> select * from mani;
Table altered.
Table altered.
Table altered.
SYNONYM
Description
A synonym is a database object, which is used as an alias(alternative name) for
a table, view or sequence.
Syntax
create [public] synonym <synonym_name> for <table_name>;
Example
SQL> create synonym mani for bab;
Synonym created.
6 rows selected.
Grant succeeded.
Synonym dropped.
SEQUENCES
Description
Sequence created.
SQL>insert into bab(name,eng,tam,mat) values('babu'||frook.nextval,50,34,100);
1 row created.
CURRVAL
----------
2
7 rows selected.
Sequence altered.
DROPING A SEQUENCE
Syntax
Drop sequence <sequencename>;
Example
drop sequence frook;
TO DISPLAY SEQUENCES
Example1
SQL>select * from user_sequences; (OR) select * from user_sequences where
sequence_name = ‘<sequence name’>;
MDSYS SDO_IDX_TAB_SEQUENCE 1
1.0000E+27 1 Y N 20 1
SCOTT FROOK 1
15 1 Y N 4 3
VIEW
Description
A view is a tailored presentation of the data contained in one or more tables.
Syntax
Create [or replace] [[no] [force]] view <view_name> [column alias name...] as
<query> [with [check option] [read only] [constraint]];
Example1
SQL> create view ddl as select * from bab where eng > 60;
View created.
Grant succeeded.
Example2
SQL> update ddl set tam = 100 where name = 'babu';
1 row updated.
Example3
SQL> create or replace view raju as select * from bab where tam < 50
with check option constraint vt;
View created.
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation
Example4
SQL> create or replace view ramesh as select * from bab with read only;
View created.
7 rows selected.
Table created.
A B
---------- ----------
12 34
67 57
56 87
A B
---------- ----------
12 34
67 57
56 87
View altered.
View created.
FUNCTIONS IN VIEW
Example
SQL> select * from bab;
6 rows selected.
View created.
MAT TOTENGTAM
------- ----------
56 156
67 112
89 213
90 434
PARTITION VIEW
Description
Work only no: of columns and column data types are same in all used tables.
Syntax
Create view <viewname> as
select * from <tablename1>
union all
select * from <tablename2>
union all
select * from <tablename3>
Example
SQL> create view anu1 as
2 select * from a
3 union all
4 select * from b
5 union all
6 select * from usha1;
View created.
A
----------
54
54
89
90
99
900
7 rows selected.
View dropped.
INDEX
Description
We can create indexes explicitly to speed up SQL statement execution on a
table.
Example
SQL> create index raj on bab(eng);
Index created.
Index dropped.
UNIQUE INDEXES
Description
Indexes can be unique or non-unique. Unique indexes guarantee that no two rows
of a table have duplicate values in the columns that define the index.
Example
SQL> create unique index venkat on bab(eng);
*
ERROR at line 1:
ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found
Index created.
COMPOSITE INDEXES
Description
A composite index(also called a concatenated index) is an index created on
multiple columns of a table.
Example
SQL> create index mono on bab(name,mat);
Index created.
Index created.
Index altered.
Index created.
ENG TAM
---------- ----------
36 18
45 32
78 54
PARTITIONING IN INDEX
Description
Like table partitions, index partitions could be in different tablespaces.
Syntax
Create index <index name>
on <tablename>(<col1>,<col2>) [global/local]
partition values less than (<value1>) tablespace <tablespacename1>,
partition values less than (<value2>) tablespace <tablespacename2>;
NOTE
Tablespacename 1,Tablespacename 2 refer to the names of the tablespaces which
are associated with the partitions. The clause tablespace <tablespacename> can
be ignored, as partitions are stored in default user tablespace.
LOCAL INDEXES
Description
The partition key in the partition index should refer to the same rows as that
of the underlying table partition.
Example
SQL> create table mani(eng number(3),tam number(3),mat number(3)) partition
by range(eng) (partition m1 values less than (40),partition m2
values less than (90));
Table created.
Index created.
GLOBAL INDEXES
The keys of a global index may refer to rows stored in more than one underlying
partition.
Example
SQL> create table mani(eng number(3),tam number(3),mat number(3)) partition
by range(eng) (partition m1 values less than (40),partition m2
values less than (90),partition m3 values less than (maxvalue));
Table created.
Index created.
ALTER INDEX
Syntax
Alter index <index name> rebuild partition <partition name>;
OBJECT IN ORACLE8
1. Abstract data types
2. Object views
3. Varying arrays
4. Nested Tables
5. Object Tables
6. Object Views with REFs
Type created.
Table created.
column_Name Data_Type
----------------------------------------- -------- -------------
ROLLNO NUMBER(3)
NAME VARCHAR2(10)
STUDMARK MARK1
when the user wants to view the actual values of the MARK1 data type then a
query using the USER_TYPE_ATTRS data dictionary table can be used.
1 row created.
ROLLNO NAME
---------- ----------
STUDMARK(ENG, TAM, MAT)
------------------------------------------------------------
501 babu
MARK1(56, 78, 43)
NAME
----------
babu
ERROR at line 1:
ORA-00904: invalid column name
STUDMARK.ENG
------------
56
1 row updated.
503 ddl
MARK1(45, 78, 32)
1 row deleted.
Type dropped.
ROLLNO NAME
---------- ----------
501 babu
Index created.
OBJECT VIEWS
Description
6 rows selected.
Type created.
Type created.
Type created.
View created.
1 row created.
VARYING ARRAYS
Description
These help in storing repeating attributes of a record in a single row.
Table created.
Column_name Data_type
----------------- --------------------
ROLLNO NUMBER
STUDENT_NAME NAME
ENGLISH ENG
TAMIL TAM
Typecode Attributes
---------- --------------------
COLLECTION 0
ROLLNO
----------
STUDENT_NAME
-------------------------------------------------------------------------------
-
ENGLISH
-------------------------------------------------------------------------------
-
TAMIL
-------------------------------------------------------------------------------
-
510
NAME('babu', 'ddl', 'san', 'jegan', 'frook')
ENG(45, 56, 78, 34, 56)
TAM(23, 45, 67, 89, 90)
ENGLISH
----------------------------------
ENG(45, 56, 78, 34, 56)
NESTED TABLES
Description
Varying arrays have a limited number of entries, whereas nested tables have no
limit on the number of entries per row. A nested table is a table within a
table. A nested table is a table within a table.
Example
SQL> create type first as object (name varchar2(10),eng number(3));
Type created.
Type created.
Table created.
ROLLNO
----------
VAR1(NAME, ENG)
-------------------------------------------------------------
504
SECOND(FIRST('babu', 68))
505
SECOND(FIRST('ddl', 76))
1 row created.
SQL> update the (select var1 from mark2 where rollno = 504) set eng = 100 where
name = 'babu';
1 row updated.
OBJECT TABLES
Example
SQL> create type first as object (eng number(3),
tam number(3));
Type created.
Table created.
1 row created.
ENG TAM
---------- ----------
76 89
72 65
ENG
----------
76
72
REF(B)
-------------------------------------------------------------------------------
-
0000280209193F8CC5E244445899490D1FF4800A32D052F9467C8646E0AFC17F7F294F3CED0040F
0
960000
0000280209C5292359106F482BAF0F920BC818EBC7D052F9467C8646E0AFC17F7F294F3CED0040F
0
960001
DEREF OPERATOR
Description
It takes a reference value and return the value of the row objects. The deref
operator takes as its argument the OID generated for a references.
Example
SQL> create table mark1 (ss number(3), var1 ref first);
Table created.
SQL> insert into mark1 select 99,ref(a) from second a where eng = 76;
1 row created.
SS
----------
VAR1
---------------------------------------------------------------------------
99
0000220208193F8CC5E244445899490D1FF4800A32D052F9467C8646E0AFC17F7F294F3CED
DEREF(A.VAR1)(ENG, TAM)
------------------------------------------
FIRST(76, 89)
VALUE OPERATOR
Example
SQL> select value(a) from second a;
INVALID REFERENCES
Description
The object to which a reference points can be deleted.
Example
SQL> select deref(a.var1) from mark1 a;
DEREF(A.VAR1)(ENG, TAM)
-----------------------------------------
FIRST(76, 89)
FIRST(70, 41)
1 row deleted.
DEREF(A.VAR1)(ENG, TAM)
------------------------------------------
FIRST(76, 89)
Table created.
Table created.
ROLLNO ENG
---------- ----------
100 50
101 60
ROLLNO TAM
---------- ----------
100 65
101 63
GENERATING OIDS
Example
SQL> create or replace type first_ty as object (rollno
number(3),eng number(3));
View created.
MAKE_REF(FIRST_VI,100)
-------------------------------------------------------------------------------
-
00004A038A004686D0CBD1BC0B41BF8C9FEAC2364FF3F2000000142601000100010029000000000
0
090603002A00078401FE0000000A02C2020000000000000000000000000000000000000000
00004A038A004686D0CBD1BC0B41BF8C9FEAC2364FF3F2000000142601000100010029000000000
0
090603002A00078401FE0000000A02C2020000000000000000000000000000000000000000
GENERATION OF REFERENCES
Example
SQL>create view second_vi as select MAKE_REF (first_vi,rollno) var1,
tam from second;
View created.
DEREF(A.VAR1)(ROLLNO, ENG)
---------------------------------------------
FIRST_TY(100, 50)
FIRST_TY(101, 60)
SQL*PLUS
COLUMN HEADINGS
Description
TRUNCATED
Description
To remove the text values based on format model.
Example
SQL> column nam heading 'student_names ' format a5 truncated;
SQL> select * from first;
ENGLISH
-----------
$30.00
$12.00
BREAK
Syntax
Break on <column name>
Example1
SQL> select * from bab;
6 rows selected.
6 rows selected.
Example2
SQL> break on eng skip 1
SQL> select eng,tam,mat from bab;
67 45 67
45 67 89
67 89 56
56 78 90
45 56 89
6 rows selected.
CLEAR BREAK
Example
SQL> clear break;
breaks cleared
COMPUTE
Syntax
Break on <column name>;
compute <function> of <column name> on <break columnname>;
Example
SQL> select * from bab;
TO DISPLAY SETTINGS
Syntax
Show all (or) show <option>
Example
show pagesize;
show newpage;
show linesize;
LIST
Description
To view latest command that we type in sql prompt;
Example
SQL>select name,eng from bab;
NAME ENG
--------------- ----------
babu 200
ddl 67
sandhya 45
mani 67
kavi 56
ERROR at line 1:
ORA-00904: invalid column name
SQL>change/enb/eng;
1* select eng from first
Example2
SQL>select * from first;
COMMENT LINE
Description
–- {rem or remark Single line comment}
/* */ {Multiple line comment}
SPOOL
Description
To store and print the query results. The extension is .lst.
Syntax
spool on;
spool <filename>.<extension>;
type sql query;
spoll off;
Example
SQL>spool on;
SQL>spool babu.lst;
SQL>select * from bab where eng = 65;
no rows selected
SQL>spool off;
Using file menu to open the file babu.lst the following result will display
SQL>
1 SQL>select * from bab where eng = 65;
2 no rows selected
3 SQL>select * from bab where eng = 67;
4 NAME ENG TAM MAT ODATE
5 --------------- ---------- ---------- ---------- ---------
6 ddl 67 45 67 12-MAR-99
7 mani 67 89 56 12-AUG-96
8* SQL>spool off;
PSEUDO COLUMNS
Description
Rowid displays the identification of each and every.
Rownum displays the rownumbers.
Example
SQL>select * from first;
ROWID
------------------
AAAH6YAABAAAPCWAAA
AAAH6YAABAAAPCWAAB
ROWNUM
----------
1
2
SQL> select * from bab x where rowid not in(select min(rowid) from bab where
eng = x.eng);
NAME ENG
--------------- ----------
kavi 56
ddl 67
2 rows deleted.
1 row deleted.
Example2
SQL> delete from bab x where rowid not in(select min(rowid) from bab where mat
= x.mat);
1 row deleted.
DISPLAY ALL COLUMNS AND ROWID WITHOUT SPECIFYING THE COLUMN NAME
Example1
Example2
SQL> select rowid,&n from bab;
Enter value for n: mat
old 1: select rowid,&n from bab
new 1: select rowid,mat from bab
ROWID MAT
------------------ ----------
AAAH4AAABAAAPCZAAA 90
AAAH4AAABAAAPCZAAB 67
AAAH4AAABAAAPCZAAC 89
AAAH4AAABAAAPCZAAD 56
AAAH4AAABAAAPCZAAE 90
Example2
SQL> select name,mat,'maximum' from bab where mat = (select max(mat) from bab)
union select name,mat,' ' from bab where mat != (select max(mat) from bab)
and mat != (select min(mat) from bab) union select name,eng,'minimum'
from bab where mat = (select min(mat) from bab);
ENG
----------
8 rows selected.
Example2
SQL> select eng from bab union select eng+1 from bab minus(select eng
from bab);
ENG
----------
46
57
68
201
SQL>select * from bab where rownum < &a minus select * from bab where
rownum < &b;
Enter value for a: 4
Enter value for b: 2
Example2
SQL> select * from bab where rownum < &&a minus select * from bab where
rownum < &&a-1;
Enter value for a: 4
6 rows selected.
SQL> select max(mat) from bab where mat not in (select max(mat) from bab);
MAX(MAT)
----------
89
MAX(MAT)
----------
76
MAT
----------
76
7 rows selected.
SQL> select * from bab a where rowid not in (select max(rowid) from bab b where
a.mat = b.mat or a.tam = b.tam or a.eng = b.eng or a.name = b.name or
a.odate = b.odate);
ROLLNO TAM
---------- ----------
100 65
101 63
MERGE COMMAND
Description
The merge command to perform inserts and updates into a single table in a
single command.
Example1
SQL> select * from sandhya;
ENG TAM
---------- ----------
45 67
2 45
78 90
ENG TAM
---------- ----------
2 67
78 87
42 90
80 100
SQL>
1 merge into sandhya s
2 using (select eng,tam from anusha) a
3 on (s.tam=a.tam)
4 when matched then
5 update set s.eng = a.eng
6 when not matched then
7* insert (s.eng,s.tam) values (a.eng,a.tam)
SQL> /
4 rows merged.
ENG TAM
Example2
SQL> edit merge;
SQL>
1 merge into sandhya s
2 using (select eng,tam from anusha) a
3 on (s.tam=a.tam and s.tam=500)
4 when matched then
5 update set s.eng = a.eng
6 when not matched then
7* insert (s.eng,s.tam) values (a.eng,a.tam)
SQL> /
4 rows merged.
ENG TAM
---------- ----------
2 67
2 45
42 90
80 100
78 87
80 100
78 87
42 90
2 67
9 rows selected.
REFERENCE BOOK
Example
SQL> select * from bab where name like '%a%a%';
Example
SQL> select * from bab where name = (select name from bab where eng = 67);
*
ERROR at line 1:
ORA-01427: single-row subquery returns more than one row
Example
SQL> select name from bab order by length(name);
NAME
6 rows selected.
FLOOR(-55.78)
-------------
-56
SYSTIMESTAMP
--------------------------------------------------------
08-APR-06 03.41.28.000000 PM +05:30
NOW
---------
22-FEB-06
TO_CHAR(ODATE,'DDTH
-------------------
12th-march -1998
12th-march -1999
12th-may -1999
12th-august -1996
12th-march -1998
SUBSTR(
-------
12345-8
TRANS
-----
jhdfs
NAME
---------------
babu
ddl
NAME
---------------
aaaa
babu
bbbbb
ddl
dhana
sandhya
6 rows selected.
Example
SQL> insert all
2 when eng > 200 then
3 into bab(eng,tam) values (100,100)
4 when tam > 75 then
5 into bab(eng,tam) values (200,200)
6 select name,eng,tam from bab where eng > 10;
3 rows created.
8 rows selected.
Example
SQL>
1 CREATE OR REPLACE TRIGGER T3 BEFORE INSERT OR UPDATE ON bab
2 FOR EACH ROW
3 BEGIN
4 IF :NEW.eng>100 AND :NEW.name<>'dhana' THEN
5 RAISE_APPLICATION_ERROR(-20004,'NOT POSSIBLE');
6 END IF;
7* END;
SQL> /
Trigger created.
SQL> update bab set eng = 102 where name = 'ddl';
update bab set eng = 102 where name = 'ddl'
*
ERROR at line 1:
ORA-20004: NOT POSSIBLE
ORA-06512: at "SCOTT.T3", line 3
ORA-04088: error during execution of trigger 'SCOTT.T3'
1 row created.
Example
SQL>
1 CREATE OR REPLACE TRIGGER T6 BEFORE INSERT OR UPDATE ON bab
2 FOR EACH ROW
3 DECLARE
4 A NUMBER;
5 BEGIN
6 SELECT eng INTO A FROM stud WHERE eng=:NEW.eng;
7 EXCEPTION
8 WHEN NO_DATA_FOUND THEN
9 RAISE_APPLICATION_ERROR(-20004,'PARENT KEY NOT FOUND');
10* END;
SQL> /
Trigger created.
1 row updated.
Example
SQL>
1 CREATE OR REPLACE TRIGGER T9 BEFORE DELETE ON bab FOR EACH ROW
2 DECLARE CURSOR C1 IS SELECT eng FROM stud WHERE
3 eng=:OLD.eng;
4 A NUMBER;
5 BEGIN
Trigger created.
6 rows selected.
6 rows selected.
1 row deleted.
Example1
SQL> select to_char(odate,'day') day from bab;
DAY
---------
6 rows selected.
D
-
2
4
5
5
6
6 rows selected.
DAY
---------
monday
wednesday
thursday
thursday
friday
6 rows selected.