You are on page 1of 3

Class-5(Constraint)

-------------------
> A constraint is nothing but se of rules which we will apply on a table's column
to maintain data integrity.
> It will not allow data redundancy/duplicacy.
> A constraint can be applied on a table level or on a column level
> Table level means when we apply constraint for more than one column
> Column level means when we apply constraint for only one column

Types of Constraint
--------------------
(1) Primary Key
(2) Unique
(3) NOT NULL
(4) CHECK
(5) FOREIGN Key

CREATE TABLE STUDENTS_DATA(ROLL_NO NUMBER(4),


SNAME VARCHAR2(30),
AGE NUMBER(2),
ADDRESS VARCHAR2(100),
DOB DATE
);

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE) VALUES (1001,'Vicky',25);--1 row


inserted.

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE) VALUES (1001,'Vicky',25);--1 row


inserted.

SELECT * FROM STUDENTS_DATA;

Note:It allows us to insert duplicate values into STUDENTS_DATA table,because we


have not applied any constraints

(1) Primary Key


-----------------
> It can applied to a single column as well as multiple columns also
> When we apply on a single column, then it is called as column level primary key.
> When we apply on multiple columns is known as composite primary key
> We can have only one primary key in a table.
> It will not allow duplicate value to those column as well as not allow empty/NULL
value

Syntax(For Column Level)


-------------------------
CREATE TABLE <Table Name>(<Col 1> <Data Type> (<Size>) CONSTRAINT <Constraint Name>
<Constraint Type>,
<Col 2> <Data Type> (<Size>) CONSTRAINT
<Constraint Name> <Constraint Type>,
............................ CONSTRAINT
<Constraint Name> <Constraint Type>,
<Col N> <Data Type> (<Size>) CONSTRAINT
<Constraint Name> <Constraint Type>
);

Note: CONSTRAINT <Constraint Name> is optional for us

Without CONSTRAINT <Constraint Name>


-------------------------------------
DROP TABLE STUDENTS_DATA PURGE;

CREATE TABLE STUDENTS_DATA(ROLL_NO NUMBER(4) PRIMARY KEY,


SNAME VARCHAR2(30),
AGE NUMBER(2),
ADDRESS VARCHAR2(100),
DOB DATE
);

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE) VALUES (1001,'Vicky',25);--1 row


inserted.

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE) VALUES (1001,'Vicky',25);--ORA-00001:


unique constraint (USER1.SYS_C008614) violated

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE) VALUES (NULL,'Vicky',25);--ORA-01400:


cannot insert NULL into ("USER1"."STUDENTS_DATA"."ROLL_NO")

SELECT * FROM STUDENTS_DATA;

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='STUDENTS_DATA';

SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME='STUDENTS_DATA';

Having CONSTRAINT <Constraint Name>


-------------------------------------
DROP TABLE STUDENTS_DATA PURGE;

CREATE TABLE STUDENTS_DATA(ROLL_NO NUMBER(4) CONSTRAINT ROLL_NO_PK PRIMARY KEY,


SNAME VARCHAR2(30),
AGE NUMBER(2),
ADDRESS VARCHAR2(100),
DOB DATE
);

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE) VALUES (1001,'Vicky',25);--1 row


inserted.

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE) VALUES (1001,'Vicky',25);--ORA-00001:


unique constraint (USER1.SYS_C008614) violated

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE) VALUES (NULL,'Vicky',25);--ORA-01400:


cannot insert NULL into ("USER1"."STUDENTS_DATA"."ROLL_NO")

SELECT * FROM STUDENTS_DATA;

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='STUDENTS_DATA';

SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME='STUDENTS_DATA';

Syntax(For Table Level)


-------------------------
CREATE TABLE <Table Name>(<Col 1> <Data Type> (<Size>) ,
<Col 2> <Data Type> (<Size>) ,
............................ ,
<Col N> <Data Type> (<Size>) ,
CONSTRAINT <Constraint Name> <Constraint
Type>(Column List)
);

DROP TABLE STUDENTS_DATA PURGE;

CREATE TABLE STUDENTS_DATA(ROLL_NO NUMBER(4) ,


SNAME VARCHAR2(30),
AGE NUMBER(2),
ADDRESS VARCHAR2(100),
DOB DATE,
MOB_NO VARCHAR(12),
CONSTRAINT ROLL_MOB_NO_CPK PRIMARY
KEY(ROLL_NO,MOB_NO)
);

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE) VALUES (1001,'Vicky',25);--ORA-01400:


cannot insert NULL into ("USER1"."STUDENTS_DATA"."MOB_NO")

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE,MOB_NO) VALUES


(1001,'Vicky',25,'123456');--1 row inserted.

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE,MOB_NO) VALUES


(1001,'Pramod',26,'1234567');--1 row inserted.

INSERT INTO STUDENTS_DATA(ROLL_NO,SNAME,AGE,MOB_NO) VALUES


(1001,'Pramod',26,'1234567');--ORA-00001: unique constraint (USER1.ROLL_MOB_NO_CPK)
violated

SELECT * FROM STUDENTS_DATA;

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='STUDENTS_DATA';

SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME='STUDENTS_DATA';

You might also like