CONSTRAINT

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));

Ex- 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));

Ex- ALTER LEVEL SQL> alter table student add check(marks>300);

SQL> alter table student add constraint ch check(marks>300);

 

 

 

UNIQUEThis is used to avoid duplicates but it allows 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));

Ex- 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));

Ex- ALTER LEVEL SQL> alter table student add unique(no);

SQL> alter table student add constraint un unique(no);

 

PRIMARY KEY

1     This is used to avoid duplicates and nulls. This will work as combination of unique and not null.

2     Primary key always attached to the parent table.

3     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));

Ex- 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));

Ex- ALTER LEVEL      SQL> alter table student add primary key(no);

SQL> alter table student add constraint pk primary key(no);

 

FOREIGN KEY

1     This is used to reference the parent table primary key column which allows duplicates.

2     Foreign key always attached to the child table.

3     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));

Ex- 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 cannot remove any parent record if the dependent childs exist.

Questions