Constraints are categorized as follows.
Domain integrity constraints
ü Not null
ü Check
Entity integrity constraints
ü Unique
ü Primary key
Referential integrity constraints
ü Foreign key
Constraints are always attached to a column not a table.
We can add constraints in three ways.
ü Column level -- along with the column definition
ü Table level --
after the table definition
ü Alter level --
using alter command
While adding constraints you need not specify the name but the
type only, oracle will internally name the constraint.
If you want to give a name to the constraint, you have to use the
constraint clause.
NOT NULL
This is used to avoid null values.
We can add this constraint in column level only.
Ex:
SQL> create table student(no number(2) not null, name varchar(10),
marks
number(3));
SQL> create table student(no number(2) constraint nn not null, name
varchar(10),
marks number(3));
CHECK
This is used to insert the values based on specified condition.
We can add this constraint in all three levels.
Ex:
COLUMN LEVEL
SQL> create table student(no number(2) , name varchar(10), marks
number(3) check
(marks >
300));
SQL> create table student(no number(2) , name
varchar(10), marks number(3)
constraint
ch check(marks > 300));
TABLE LEVEL
SQL> create table student(no number(2) , name
varchar(10), marks number(3), check
(marks >
300));
SQL> create table student(no number(2) , name
varchar(10), marks number(3),
constraint ch
check(marks > 300));
ALTER LEVEL
SQL> alter table student add
check(marks>300);
SQL> alter table student add constraint ch
check(marks>300);
UNIQUE
This is used to avoid duplicates but it allow nulls.
We can add this constraint in all three levels.
Ex:
COLUMN LEVEL
SQL> create table student(no number(2) unique, name varchar(10), marks
number(3));
SQL> create table student(no number(2) constraint un unique, name varchar(10),
marks
number(3));
TABLE LEVEL
SQL> create table student(no number(2) , name
varchar(10), marks number(3),
unique(no));
SQL> create table student(no number(2) , name
varchar(10), marks number(3),
constraint un
unique(no));
ALTER LEVEL
SQL> alter table student add unique(no);
SQL> alter table student add constraint un
unique(no);
PRIMARY KEY
Ø This is used to avoid duplicates and nulls.
This will work as combination of unique and not null.
Ø Primary key always attached to the parent
table.
Ø We can add this constraint in all three
levels.
Ex:
COLUMN LEVEL
SQL> create table student(no number(2) primary
key, name varchar(10), marks
number(3));
SQL> create table student(no number(2) constraint pk primary key, name varchar(10),
marks
number(3));
TABLE LEVEL
SQL> create table student(no number(2) , name
varchar(10), marks number(3),
primary
key(no));
SQL> create table student(no number(2) , name
varchar(10), marks number(3),
constraint pk
primary key(no));
ALTER LEVEL
SQL> alter table student add primary key(no);
SQL> alter table student add constraint pk
primary key(no);
FOREIGN KEY
Ø This is used to reference the parent table
primary key column which allows duplicates.
Ø Foreign key always attached to the child
table.
Ø We can add this constraint in table and
alter levels only.
Ex:
TABLE LEVEL
SQL> create table emp(empno number(2), ename varchar(10), deptno
number(2),
primary
key(empno), foreign key(deptno) references dept(deptno));
SQL> create table emp(empno number(2), ename
varchar(10), deptno number(2),
constraint pk
primary key(empno), constraint fk foreign key(deptno) references
dept(deptno));
ALTER LEVEL
SQL> alter table emp add foreign key(deptno)
references dept(deptno);
SQL> alter table emp add constraint fk foreign
key(deptno) references dept(deptno);
Once the primary key and foreign key relationship has been created
then you can not remove any parent record if the dependent childs exists.
USING ON DELTE CASCADE
By using this clause you can remove the parent record even it
childs exists.
Because when ever you remove parent record oracle automatically
removes all its dependent records from child table, if this clause is present
while creating foreign key constraint.
Ex:
TABLE LEVEL
SQL> create table emp(empno number(2), ename varchar(10), deptno
number(2),
primary
key(empno), foreign key(deptno) references dept(deptno) on delete
cascade);
SQL> create table emp(empno number(2), ename
varchar(10), deptno number(2),
constraint pk
primary key(empno), constraint fk foreign key(deptno) references
dept(deptno) on
delete cascade);
ALTER LEVEL
SQL> alter table emp add foreign key(deptno)
references dept(deptno) on delete
cascade;
SQL> alter table emp add constraint fk foreign
key(deptno) references dept(deptno) on
delete cascade;
COMPOSITE KEYS
A composite key can be defined on a combination of columns.
We can define composite keys on entity integrity and referential
integrity constraints.
Composite key can be defined in table and alter levels only.
Ex:
UNIQUE (TABLE LEVEL)
SQL> create table student(no number(2) , name
varchar(10), marks number(3),
unique(no,name));
SQL> create table student(no number(2) , name
varchar(10), marks number(3),
constraint un
unique(no,name));
UNIQUE (ALTER LEVEL)
SQL> alter table student add unique(no,name);
SQL> alter table student add constraint un
unique(no,name);
PRIMARY KEY (TABLE LEVEL)
SQL> create table student(no number(2) , name
varchar(10), marks number(3),
primary
key(no,name));
SQL> create table student(no number(2) , name
varchar(10), marks number(3),
constraint pk
primary key(no,name));
PRIMARY KEY (ALTER
LEVEL)
SQL> alter table student add primary
key(no,anme);
SQL> alter table student add constraint pk
primary key(no,name);
FOREIGN KEY (TABLE
LEVEL)
SQL> create table emp(empno number(2), ename varchar(10), deptno
number(2),
dname
varchar(10), primary key(empno), foreign key(deptno,dname) references
dept(deptno,dname));
SQL> create
table emp(empno number(2), ename varchar(10), deptno number(2),
dname
varchar(10), constraint pk primary key(empno), constraint fk foreign
key(deptno,dname) references dept(deptno,dname));
FOREIGN KEY (ALTER
LEVEL)
SQL> alter table emp add foreign
key(deptno,dname) references dept(deptno,dname);
SQL> alter table emp add constraint fk foreign
key(deptno,dname) references
dept(deptno,dname);
DEFERRABLE CONSTRAINTS
Each constraint has two additional attributes to support deferred
checking of constraints.
Ø Deferred initially immediate
Ø Deferred initially deferred
Deferred initially immediate checks for constraint violation at
the time of insert.
Deferred initially deferred checks for constraint violation at the
time of commit.
Ex:
SQL> create table student(no number(2), name varchar(10), marks number(3),
constraint un
unique(no) deferred initially immediate);
SQL> create table student(no number(2), name varchar(10), marks
number(3),
constraint un
unique(no) deferred initially deferred);
SQL> alter table student add constraint un unique(no) deferrable
initially deferred;
SQL> set constraints all immediate;
This will enable all
the constraints violations at the time of inserting.
SQL> set constraints all deferred;
This will enable all the
constraints violations at the time of commit.
OPERATIONS WITH CONSTRAINTS
Possible operations with constraints as follows.
Ø Enable
Ø Disable
Ø Enforce
Ø Drop
ENABLE
This will enable the constraint. Before enable, the constraint
will check the existing data.
Ex:
SQL> alter table student enable constraint un;
DISABLE
This will disable the constraint.
Ex:
SQL> alter table student enable constraint un;
ENFORCE
This will enforce the constraint rather than enable for future
inserts or updates.
This will not check for existing data while enforcing data.
Ex:
SQL> alter table student enforce constraint un;
DROP
This will remove the constraint.
Ex:
SQL> alter table student drop constraint un;
Once the table is
dropped, constraints automatically will drop.
No comments:
Post a Comment