These
are used to impose restrictions on a table.
These
are automatically activated whenever the DML statements are performed on the
table.
This
will provide the High Security.
Domain
Integrity Constraints:
These are used to check for conditional
restrictions of columns on tables….
1)Not Null: It is used for
conditional restriction for a column compulsory…
EX:
Create table xx_std_cons (Sno Number NOT
NULL
,sname
varchar2(100)
,age number);
รจ Table Created…
Now
let us try to insert some records in the above table…
Insert into xx_std_cons values(1,’A’,20);
Insert into xx_std_cons values(2,’B’,20);
Insert into xx_std_cons values(‘’,’C’,20);
This
above insert statement errors bcz the not null constraint is putten for the
column sno.
It
should not be null….
Check
Constarint: It is used to force the user to enter the avlues in a given range
which will be checked during the insertion.
EX:
Create table xx_std_cons1 (Sno Number
NOT NULL
,sname
varchar2(100)
,age number
,sex char(1) check(sex in(‘M’,’F’)));
Insert into xx_std_cons1 values(1,’A’,20,’M’);
Insert into xx_std_cons1 values(2,’B’,20,’’);
Insert into xx_std_cons1 values(2,’B’,20,’P’);
This
above insert statement errors bcz the Check constraint is putten for the column
sex.
The
value should be wither M or F or NULL.
Entity
Integrity Constraints:
1)Unique: It is used to
force the user to enter the Unique value into the column on a table…
The Unique Constraints can be
null.
EX:
Create table xx_std_cons2 (Sno Number UNIQUE
,sname varchar2(100)
,age number
,sex char(1) check(sex in(‘M’,’F’)));
Insert into xx_std_cons2 values(1,’A’,20,’M’);
Insert into xx_std_cons1 values(2,’B’,20,’’);
Insert into xx_std_cons1 values(2,’C’,20,’F’);
This
above insert statement errors bcz the Unique constraint is putten for the
column Sno.
The
value should be Unique or NULL.
EX:
Create table xx_std_cons3 (Sno Number
UNIQUE NOT NULL
,sname
varchar2(100)
,age number
,sex char(1) check(sex in(‘M’,’F’)));
Now
as per above example the sno can be not null and also unique….
Primary
Key: It acts as a marker to the record
on a table.
It cannot be null and must be unique and a
index will be created for the column on
which the primary key is placed.
Primary Key := Unique+Not
Null+Index.
Note:
A table can only have one Primary key. But the primary can be placed on a
single column or combination of more then one column…
EX:
Create table xx_std_cons3 (Sno Number
PRIMARY KEY
,sname
varchar2(100)
,age number
,sex char(1) check(sex in(‘M’,’F’)));
References:
Columns level references: This references
will be applied for maintaining the relation ship between master and child
level.The column level references are used when we place the primary key on a
single column.
Master
level table Primary key will be equal to child level table foreign key.
Master
Table: Create table xx_dept(Deptno Number Primary Key
,Dname varchar2(100) Not Null
,loc varchar2(100));
Insert
into xx_dept values(10,’Accounting’,’New York’);
Insert
into xx_dept values(20,’Sales’,’Florida’);
Child
Level Table: Create table xx_emp(Empno
Number Primary Key
,Ename
varchar2(100) Not Null
,Sex
char(1) check(sex in (‘M’,’F’))
,deptno Number
referenced xx_dept(deptno));
Insert
into xx_emp values(101,’A’,’M’,10);
Insert
into xx_emp values(102,’B’,’M’,20);
Insert
into xx_emp values(103,’C’,’F’,10);
Insert
into xx_emp values(104,’D’,’M’,30);
The
above insert stmt fails bcz the constraint is violated as parent key not
found,this is as deptno 30 doesnot exists in the master table…
Table level references: This references
will be applied for maintaining the relationship between master and child
level. The table level references are used when we place the primary key on
more than one column.
Master
level table Primary key will be equal to child level table foreign key.
EX: Create table xx_bank_dtls(accno Number
,acctype char(1)
,accname varchar2(100) Not Null
,Sex
char(1) check(sex in (‘M’,’F’))
,Constraint
pk_k1 primary key(accno,acctype)
,Constraint
chk_type check(acctype in (‘S’,’C’)));
Insert
into xx_bank_dtls values(100,’S’,’A’,’M’);
Insert
into xx_bank_dtls values(100,’C’,’A’,’M’);
Insert
into xx_bank_dtls values(101,’S’,’B’,’M’);
Insert
into xx_bank_dtls values(101,’C’,’B’,’M’);
Insert
into xx_bank_dtls values(100,’S’,’C’,’M’);
The
above insert stmt errors bcz the combination of accno and acctype should be
unique as the primary key is placed on the combination of those 2columns….
Child
table:
Create table xx_trxn_dtls(accno number
,acctype char(1)
,trx_type
char(1)
,amount
number
,Constraint
fl_trxn foreing key(accno,acctype) references xx_bank_dtls(accno,acctype));
Inser
t into xx_trxn_dtls values(100,’S’,’D’,1000);
Inser
t into xx_trxn_dtls values(100,’S’,’W’,3000);
Inser
t into xx_trxn_dtls values(101,’S’,’D’,1000);
Inser
t into xx_trxn_dtls values(101,’S’,’W’,1000);
Inser t
into xx_trxn_dtls values(103,’S’,’D’,1000);
The
above insert stmt fails bcz the constraint is violated as parent key not
found,this is as acctno 103 and acttype S
combination doesnot exists in the master table…
On Delete Cascade(Limportant for interview)
When
ever we give the relation ship between master and child table and we would like
to delete any record from the master
table it will not allow us to delete that record if any records exists for that
master record in the child table. Inorder to delete the record from the master
table we need to delete all the records related to it in the child table then
we will be able to delete that master record.
Now
By using on delete cascade we can delete the master record even if the records
exists in the child table for that master ecord.
It
will delete the master record and as well the related records n the child
table.
EX:
Create table xx_bank_dtls(accno Number
,acctype
char(1)
,accname varchar2(100) Not Null
,Sex
char(1) check(sex in (‘M’,’F’))
,Constraint
pk_k1 primary key(accno,acctype)
,Constraint
chk_type check(acctype in (‘S’,’C’)));
Insert
into xx_bank_dtls values(100,’S’,’A’,’M’);
Insert
into xx_bank_dtls values(100,’C’,’A’,’M’);
Insert
into xx_bank_dtls values(101,’S’,’B’,’M’);
Insert
into xx_bank_dtls values(101,’C’,’B’,’M’);
Insert
into xx_bank_dtls values(102,’S’,’G’,’M’);
Insert
into xx_bank_dtls values(102,’C’,’G’,’M’);
Not Null
|
Unique
|
Primary Key
|
Foreign Key
|
Null Values
are not allowed |
Null Values
are allowed |
Null Values
are not allowed |
Null Values
are allowed |
Duplicate Values
allowed |
Duplicate Values
not allowed |
Duplicate Values
not allowed |
Duplicate Values
allowed |
Exercise:
1) Create
Item_master table with below colums
Item_code – primary key
Item description
Item name not null
Create item child table with below
columns
Item code –reference to the item code of the
master table
Price –check>10000
Quanity – check>0
2) Create
Medicine master table
Medicine code
Medicine no
n Create
primary key for the above combination of both columns
Medicine type
Child table
Medicine code
Medicine no
n Create foreign key for the above combination
of both columns with master table
Price not null
Qty not null (qty >0)
Interview questions:
1)What
is Primary Key and foreign Key and what is difference.
2)Difference
between not null,unique and primary key.
3)ow
can we delete the parent record even though the child records exists for that
parent record(primary key).
Child
table:
Create table xx_trxn_dtls(accno number
,acctype char(1)
,trx_type
char(1)
,amount
number
,Constraint
fl_trxn foreing key(accno,acctype) references xx_bank_dtls(accno,acctype)
ON DELETE CASCADE);
Inser
t into xx_trxn_dtls values(100,’S’,’D’,1000);
Inser
t into xx_trxn_dtls values(100,’S’,’W’,3000);
Inser
t into xx_trxn_dtls values(101,’S’,’D’,1000);
Inser
t into xx_trxn_dtls values(101,’S’,’W’,1000);
Inser
t into xx_trxn_dtls values(102,’S’,’D’,1000);
Inser
t into xx_trxn_dtls values(102,’S’,’W’,3000);
Inser
t into xx_trxn_dtls values(102,’S’,’D’,4000);
Now
run the below delete command----
Delete
from xx_bank_dtls where accno = 101;
Commit;
This
will delete all the records form the xx_bank_dtls table for the acctno is 101
and as well all the records form the xx_trxn_dtls table where acctno is 101 as
we have placed on delete cascade.
INDEX:
Normal
Index: If we create the index on a single column then it is called as normal
index.
Create
table xx_std_inx(sno number primary key
,sname varchar2(100)
,sex char(1)));
Create
index inx_1 on xx_std_inx(sname);
Composite
Index: If we create the index on more then one column then it is called as composite
index.
Create
table xx_std_inx1(sno number primary key
,std_first_name varchar2(100)
,
,std_last_name varchar2(100)
,sex char(1)));
Create
index inx_i_1 on xx_std_inx1(std_first_name, std_last_name);
UNIQUE
Normal Index: If we create the index on a single column with unique keyword
then it is called as normal index.
Create
table xx_std_inx2(sno number primary key
,sname varchar2(100)
,sex char(1)));
Create
UNIQUE index inx_2 on xx_std_inx(sname);
Composite
Index: If we create the index on more then one column then it is called as
composite index.
Create
table xx_std_inx3(sno number primary key
,std_first_name varchar2(100)
,
,std_last_name varchar2(100)
,sex char(1)));
No comments:
Post a Comment