SlideShare a Scribd company logo
MySQL Constraints
Presented By Harish Gyanani
What is Constraint??

Constraints are used to specify rules for the data in a table.

If there is any violation between the constraint and the
data action, the action is aborted by the constraint.

Constraints can be specified when the table is created
(inside the CREATE TABLE statement) or after the table is
created (inside the ALTER TABLE statement).
Types of Constraints
NOT NULL
DEFAULT
UNIQUE

Check
Primary Key
Foreign Key
NOT NULL
The NOT NULL constraint enforces a column to NOT
accept NULL values.

It enforces a field to always contain a value.
This means that you cannot insert a new record, or
update a record without adding a value to this field.
NOT NULL
Set NOT NULL constraint
• While creating table
• After creating table
Verify NOT NULL in table structure

Try to skip the NOT NULL column in INSERT INTO query

Find what is stored, when we skip NOT NULL column values

Try another ways to insert null into not null column

DROP NOT NULL Constraint from Column
Set NOT NULL constraint
While creating
table

After creating
table
Set NOT NULL Constraint
(While Creating Table)

mysql> create table table1
-> (
-> rollno int,
-> name varchar(20) not null
-> );
Query OK, 0 rows affected (0.20 sec)
Set NOT NULL Constraint
(After Creating Table)

mysql> alter table table1
-> modify name varchar(20) not null;
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0
1. Verify NOT NULL in Table Structure

NULL value not allowed in
name column
Try to enter Null value in name
column

Display Warningmysql> show warnings;
+---------+------+-------------------------------------------+
| Level

| Code | Message

|

+---------+------+-------------------------------------------+
| Warning | 1364 | Field 'name' doesn't have a default value |
+---------+------+-------------------------------------------+
1 row in set (0.00 sec)
What has been Stored by Table???.1
What has been Stored by
Table???.2
mysql> select * from table1;
+--------+------+
| rollno | name |
+--------+------+
|

1 |

|

+--------+------+
1 row in set (0.00 sec)

Still not clear what is stored by Table in Name column
What has been Stored by
Table???.3
mysql> select length(name)
-> from table1;
+--------------+
| length(name) |
+--------------+
|

0 |

+--------------+
1 row in set (0.02 sec)

Table stored empty
string
BECAUSE if it is NULL;
length function would
have returned NULL
Another way to check table has
stored empty String in not null
column.1
mysql> select * from table1
-> where name is null;
Empty set (0.01 sec)

BECAUSE table has stored empty string instead of null
null != empty String (null is not equal to empty string )
Another way to check table has
stored empty String in not null
column.1
mysql> select * from table1
-> where name ='';
+--------+------+
| rollno | name |
+--------+------+
|
1 |
|
+--------+------+
1 row in set (0.00 sec)

Hence Proved table has
Stored empty String
Conclusion: - MySQL has stored
empty string because it cannot
store NULL
MySQL Stores these values
when user doesn’t provide value
and
column cannot store NULL;
They are not equivalent to NULL
String

‘’(empty string)

Number

0

Date

0000-00-00

time

00:00:00
Another ways to Insert NULL
value.1

mysql> insert into table1(name)
-> values(NULL);
ERROR 1048 (23000): Column 'name'
cannot be null
Another ways to Insert NULL
value.2

mysql> insert into table1
-> values(23,NULL);
ERROR 1048 (23000): Column 'name'
cannot be null
Another ways to Insert NULL
value.3
mysql> insert into table1
-> values(23);
ERROR 1136 (21S01): Column count
doesn't match value count at row 1
Another ways to Insert NULL
value.4
mysql> insert into table1(rollno,name)
-> values(456);
ERROR 1136 (21S01): Column count doesn't
match value count at row 1
DEFAULT
The DEFAULT constraint is used to insert
a default value into a column.

The default value will be added to all
new records, if no other value is
specified.
DEFAULT
Set DEFAULT constraint

• While creating table
• After creating table
Verify DEFAULT in table structure

Try to skip rollno column value in INSERT INTO

Find what is stored, when we skip NOT NULL column values

Try another ways to insert null into not null column
Set DEFAULT Constraint
While creating
table

After creating
table
Set DEFAULT Constraint
(While Creating Table)

mysql>
->
->
->
->

create table table1
(
rollno int default 500,
name varchar(20)
);

Query OK, 0 rows affected (0.08 sec)
Set DEFAULT Constraint
(After Creating Table)

mysql> alter table table1
-> alter rollno
-> set default 500;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
Verify DEFAULT in Table Structure
mysql> DESC table1;
+--------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| rollno | int(11)
| YES |
| 500
|
|
| name
| varchar(20) | YES |
| NULL
|
|
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.03 sec)

Instead of null value,
default value 500 is stored

DEFAULT value for rollno
column is 500
Try to skip rollno column value in
INSERT INTO

mysql> INSERT INTO table1(name)
-> VALUES('harish');
Query OK, 1 row affected (0.03 sec)
What has been Stored by Table???
Simple!!! The DEFAULT value
mysql> SELECT * FROM table1;
+--------+--------+
| rollno | name
|
+--------+--------+
|
500 | harish |
+--------+--------+
1 row in set (0.00 sec)

Default Value 500 is Stored when we did not specify any value
What happens when we
specify a value????
mysql> INSERT INTO table1
-> VALUES(1,'ramesh');
Query OK, 1 row affected (0.03 sec)
Simple !!! The Specified value is
Stored
mysql> SELECT * FROM table1;
+--------+--------+
| rollno | name
|
+--------+--------+
|
500 | harish |
|
1 | ramesh |
+--------+--------+
2 rows in set (0.00 sec)

The specified value in INSERT INTO statement is stored
What happens when we store
null in rollno column???

mysql> insert into table1
-> values(NULL,'suresh');
Query OK, 1 row affected (0.07 sec)
NULL is stored but why???
mysql> select * from table1;
+--------+--------+
| rollno | name
|
+--------+--------+
|
500 | harish |
|
1 | ramesh |
|
NULL | suresh |
+--------+--------+
3 rows in set (0.00 sec)
NULL can be stored with DEFAULT constraint column
Because…..
mysql> desc table1;
+--------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| rollno | int(11)
| YES |
| 500
|
|
| name
| varchar(20) | YES |
| NULL
|
|
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.03 sec)

NULL is allowed
What happens when we Do not
specify any value????
mysql> insert into table1()
-> values();
Query OK, 1 row affected (0.03 sec)
Simple!!!
Default values are stored
mysql> select * from table1;
+--------+--------+
| rollno | name
|
+--------+--------+
|
500 | harish |
|
1 | ramesh |
|
NULL | suresh |
NULL is stored because it is|
500 | NULL
|
1. Default value for this column
+--------+--------+
2. NULL is allowed
4 rows in set (0.00 sec)
Rollno has default value 500,
that’s why it is stored
Can we specify DEFAULT
constraint in filled table???
Yes!!! We can
When we add DEFAULT Constraint in a Filled
Column,
No Old Values are altered
How to Drop DEFAULT??
mysql> alter table table1
-> alter rollno
-> drop default;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
Verify, DEFAULT Dropped or
Not….
mysql> desc table1;
+--------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| rollno | int(11)
| YES |
| NULL
|
|
| name
| varchar(20) | YES |
| NULL
|
|
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Returned Back to NULL,
like other columns

NO Default value, Only
NULL
Foreign Key
What is Foreign key?
1.

2.
3.

4.
5.

6.
7.

A foreign key is a field (or collection of fields) in one table that uniquely
identifies a row of another table.
In other words, a foreign key is a column or a combination of columns
that is used to establish and enforce a link between two tables.
The table containing the foreign key is called the referencing or child
table, and the table containing the candidate key is called
the referenced or parent table.
A FOREIGN KEY in one table points to a PRIMARY KEY in another table.
The FOREIGN KEY constraint also prevents invalid data from being
inserted into the foreign key column, because it has to be one of the
values contained in the table it points to.
A table can contain more than one foreign key.
This is sometimes called a referencing key.
Example Scenario
For example, consider a database with two tables: a CUSTOMER table that
includes all customer data and an ORDER table that includes all customer
orders. Suppose the business requires that each order must refer to a single
customer. To reflect this in the database, a foreign key column is added to the
ORDER table (e.g., CUSTOMERID), which references the primary key of
CUSTOMER (e.g. ID). Because the primary key of a table must be unique, and
because CUSTOMERID only contains values from that primary key field, we
may assume that, when it has a value, CUSTOMERID will identify the
particular customer which placed the order.
Example 2
Persons table
P_Id

LastName

FirstName

Address

City

1

Hansen

Ola

Timoteivn
10

Sandnes

2

Svendson

Tove

Borgvn 23

Sandnes

3

Pettersen

Kari

Storgt 20

Stavanger

Orders table
O_Id

OrderNo

P_Id

1

77895

3

2

44678

3

3

22456

2

4

24562

1

P_id column is common in these tables. P_id is primary key in persons table. The other
way to check is, p_id values are not unique in orders table. It means persons table
which contains p_id as primary key is parent table and orders table is child table.
Student Table

Example 3

Course Table

Course table is parent
because courseid is primary
key in course table.
Example 4

City table is parent because
cityid is primary key in course
table.
Example 5

Address table is parent
because address_id is
primary key in address table.
Telephone table is child.

You must have a contact before an address or
telephone number.

Contact table is parent
because contact_id is primary
key in contact table. Address
and telephone tables are
children.
Example 6
Example 7
Example 8
Exercise 1
Exercise 2
Exercise 3
Exercise 4
Exercise 5
Exercise 6
Exercise 7
Student table
+------+--------+-----------+
| sid | sname | branch_no |
+------+--------+-----------+
| s001 | Ram
| br001
|
| s002 | Shyam | br001
|
| s003 | Sita
| br002
|
| s004 | Geeta | br003
|
| s005 | Naresh | br002
|
+------+--------+-----------+
Branch table
+-----------+-------------+
| branch_no | branch_name |
+-----------+-------------+
| br001
| IT
|
| br002
| CSE
|
| br003
| ECE
|
+-----------+-------------+
How to add foreign key in
MySQL/Oracle
While creating table
SyntaxCONSTRAINT <constraint_name>
FOREIGN KEY(<column name of this/child table>)
REFERENCES <Parent Table Name> (<column name of parent table>)
ExampleCREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
How to add foreign key in
MySQL/Oracle
After creating table
SyntaxALTER TABLE <child table name>
ADD CONSTRAINT <constraint_name>
FOREIGN KEY(<column name of this/child table>)
REFERENCES <Parent Table Name> (<column name of parent table>);
ExampleALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id);
How to check foreign keys in a table
mysql> DESC orders;
+---------+---------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| O_Id
| int(11) | NO
| PRI | NULL
|
|
| OrderNo | int(11) | NO
|
| NULL
|
|
| P_Id
| int(11) | YES | MUL | NULL
|
|
+---------+---------+------+-----+---------+-------+
This shows a foreign key constraint is set to
p_id column in orders table.
But Where are the Details???
Its parent table?
Linked column in parent table?
Check full details of foreign keys
mysql> SHOW CREATE TABLE orders;

| Table | Create Table
--------------------------------------------------------+
| orders | CREATE TABLE `orders` (
`O_Id` int(11) NOT NULL,
`OrderNo` int(11) NOT NULL,
`P_Id` int(11) DEFAULT NULL,
PRIMARY KEY (`O_Id`),
KEY `fk_PerOrders` (`P_Id`),
CONSTRAINT `fk_PerOrders` FOREIGN KEY (`P_Id`) REFERENCES `persons`
(`p_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+--------+---------------------------------------------------------------------Column in
parent table

Foreign key
constraint name

Column of this
table

Parent table name
Drop Foreign key in MySQL/Oracle
MySQL

Oracle

SyntaxALTER TABLE <child table name>
DROP FOREIGN KEY <constraint name>;

SyntaxALTER TABLE <child table name>
DROP CONSTRAINT <constraint name>;

ExampleALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders;

ExampleALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders
References
• http://rdbms.opengrass.net/2_Database%20Design/2.1_TermsOfRe
ference/2.1.2_Keys.html
• http://www.teachict.com/as_as_computing/ocr/H447/F453/3_3_9/dbkey/miniweb/p
g3.htm
• http://databaserefactoring.com/AddForeignKey.html
• http://www.ssw.com.au/ssw/SQLAuditor/UserguideWizards.aspx
• http://www.cs.usfca.edu/~parrt/course/601/lectures/db.html
• http://www.teachict.com/as_a2_ict_new/ocr/AS_G061/315_database_concepts/ter
minology/miniweb/pg13.htm
• http://www.sparxsystems.com/enterprise_architect_user_guide/9.
0/database_engineering/create_a_foreign_key.html

More Related Content

PPTX
PLSQL Tutorial
PDF
[APJ] Common Table Expressions (CTEs) in SQL
 
PPT
Joins in SQL
PPTX
Sql subquery
PPTX
Sql Constraints
PPTX
Sql server ___________session_17(indexes)
PLSQL Tutorial
[APJ] Common Table Expressions (CTEs) in SQL
 
Joins in SQL
Sql subquery
Sql Constraints
Sql server ___________session_17(indexes)

What's hot (20)

PPTX
PPTX
SUBQUERIES.pptx
PDF
SQL Joins With Examples | Edureka
PPT
Introduction to sql
PPTX
introdution to SQL and SQL functions
PPT
Sql dml & tcl 2
PPT
Introduction to-sql
PDF
SQL Overview
PPTX
Sql commands
PPT
SQL subquery
PPT
SQL Tutorial - Basic Commands
PPT
Sql joins
PPTX
SQL Joins.pptx
PPTX
Basic sql Commands
PPTX
SQL - DML and DDL Commands
PDF
MySQL: Indexing for Better Performance
PPTX
T-SQL Overview
PPTX
MySql:Introduction
PPT
Sql Tutorials
PPTX
SQL Functions
SUBQUERIES.pptx
SQL Joins With Examples | Edureka
Introduction to sql
introdution to SQL and SQL functions
Sql dml & tcl 2
Introduction to-sql
SQL Overview
Sql commands
SQL subquery
SQL Tutorial - Basic Commands
Sql joins
SQL Joins.pptx
Basic sql Commands
SQL - DML and DDL Commands
MySQL: Indexing for Better Performance
T-SQL Overview
MySql:Introduction
Sql Tutorials
SQL Functions
Ad

Viewers also liked (7)

PPT
Introduction to DB design
PDF
Using SQL Standards? Database SQL comparition
PPTX
Naming Standards, Clean Code
PPT
Building a CRM Application
PDF
RDBMS ERD
PDF
外部キー制約に伴うロックの小話
PDF
MySQL Best Practices - OTN
Introduction to DB design
Using SQL Standards? Database SQL comparition
Naming Standards, Clean Code
Building a CRM Application
RDBMS ERD
外部キー制約に伴うロックの小話
MySQL Best Practices - OTN
Ad

Similar to MySQL constraints (20)

PDF
Mysql basics1
DOCX
SQL Tutorial for BCA-2
PPT
DOCX
database-querry-student-note
PPT
Structure query language - Data definition language.ppt
PDF
Mysql alter-command
PPT
mysqlHiep.ppt
PPT
MySQL Database System Hiep Dinh
PPTX
3. ddl create
PPTX
DATA BASE || INTRODUCTION OF DATABASE \\ SQL 2018
PPT
MySql slides (ppt)
PPTX
Sql basics
PPT
Applied Partitioning And Scaling Your Database System Presentation
PPTX
Unit1_3_Database Constraints.pptx igt is about DBMS
PDF
DBMS 4 | MySQL - DDL & DML Commands
PPTX
Optimizing queries MySQL
PDF
[Www.pkbulk.blogspot.com]dbms10
PPTX
MySQL Essential Training
PDF
Table partitioning in PostgreSQL + Rails
Mysql basics1
SQL Tutorial for BCA-2
database-querry-student-note
Structure query language - Data definition language.ppt
Mysql alter-command
mysqlHiep.ppt
MySQL Database System Hiep Dinh
3. ddl create
DATA BASE || INTRODUCTION OF DATABASE \\ SQL 2018
MySql slides (ppt)
Sql basics
Applied Partitioning And Scaling Your Database System Presentation
Unit1_3_Database Constraints.pptx igt is about DBMS
DBMS 4 | MySQL - DDL & DML Commands
Optimizing queries MySQL
[Www.pkbulk.blogspot.com]dbms10
MySQL Essential Training
Table partitioning in PostgreSQL + Rails

Recently uploaded (20)

PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PPTX
Lesson notes of climatology university.
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPTX
GDM (1) (1).pptx small presentation for students
PPTX
PPH.pptx obstetrics and gynecology in nursing
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
Insiders guide to clinical Medicine.pdf
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
Complications of Minimal Access Surgery at WLH
PDF
O7-L3 Supply Chain Operations - ICLT Program
human mycosis Human fungal infections are called human mycosis..pptx
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Lesson notes of climatology university.
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
Supply Chain Operations Speaking Notes -ICLT Program
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
GDM (1) (1).pptx small presentation for students
PPH.pptx obstetrics and gynecology in nursing
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
TR - Agricultural Crops Production NC III.pdf
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Insiders guide to clinical Medicine.pdf
Renaissance Architecture: A Journey from Faith to Humanism
Microbial disease of the cardiovascular and lymphatic systems
Pharmacology of Heart Failure /Pharmacotherapy of CHF
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
O5-L3 Freight Transport Ops (International) V1.pdf
Complications of Minimal Access Surgery at WLH
O7-L3 Supply Chain Operations - ICLT Program

MySQL constraints

  • 2. What is Constraint?? Constraints are used to specify rules for the data in a table. If there is any violation between the constraint and the data action, the action is aborted by the constraint. Constraints can be specified when the table is created (inside the CREATE TABLE statement) or after the table is created (inside the ALTER TABLE statement).
  • 3. Types of Constraints NOT NULL DEFAULT UNIQUE Check Primary Key Foreign Key
  • 4. NOT NULL The NOT NULL constraint enforces a column to NOT accept NULL values. It enforces a field to always contain a value. This means that you cannot insert a new record, or update a record without adding a value to this field.
  • 5. NOT NULL Set NOT NULL constraint • While creating table • After creating table Verify NOT NULL in table structure Try to skip the NOT NULL column in INSERT INTO query Find what is stored, when we skip NOT NULL column values Try another ways to insert null into not null column DROP NOT NULL Constraint from Column
  • 6. Set NOT NULL constraint While creating table After creating table
  • 7. Set NOT NULL Constraint (While Creating Table) mysql> create table table1 -> ( -> rollno int, -> name varchar(20) not null -> ); Query OK, 0 rows affected (0.20 sec)
  • 8. Set NOT NULL Constraint (After Creating Table) mysql> alter table table1 -> modify name varchar(20) not null; Query OK, 0 rows affected (0.10 sec) Records: 0 Duplicates: 0 Warnings: 0
  • 9. 1. Verify NOT NULL in Table Structure NULL value not allowed in name column
  • 10. Try to enter Null value in name column Display Warningmysql> show warnings; +---------+------+-------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------+ | Warning | 1364 | Field 'name' doesn't have a default value | +---------+------+-------------------------------------------+ 1 row in set (0.00 sec)
  • 11. What has been Stored by Table???.1
  • 12. What has been Stored by Table???.2 mysql> select * from table1; +--------+------+ | rollno | name | +--------+------+ | 1 | | +--------+------+ 1 row in set (0.00 sec) Still not clear what is stored by Table in Name column
  • 13. What has been Stored by Table???.3 mysql> select length(name) -> from table1; +--------------+ | length(name) | +--------------+ | 0 | +--------------+ 1 row in set (0.02 sec) Table stored empty string BECAUSE if it is NULL; length function would have returned NULL
  • 14. Another way to check table has stored empty String in not null column.1 mysql> select * from table1 -> where name is null; Empty set (0.01 sec) BECAUSE table has stored empty string instead of null null != empty String (null is not equal to empty string )
  • 15. Another way to check table has stored empty String in not null column.1 mysql> select * from table1 -> where name =''; +--------+------+ | rollno | name | +--------+------+ | 1 | | +--------+------+ 1 row in set (0.00 sec) Hence Proved table has Stored empty String
  • 16. Conclusion: - MySQL has stored empty string because it cannot store NULL
  • 17. MySQL Stores these values when user doesn’t provide value and column cannot store NULL; They are not equivalent to NULL String ‘’(empty string) Number 0 Date 0000-00-00 time 00:00:00
  • 18. Another ways to Insert NULL value.1 mysql> insert into table1(name) -> values(NULL); ERROR 1048 (23000): Column 'name' cannot be null
  • 19. Another ways to Insert NULL value.2 mysql> insert into table1 -> values(23,NULL); ERROR 1048 (23000): Column 'name' cannot be null
  • 20. Another ways to Insert NULL value.3 mysql> insert into table1 -> values(23); ERROR 1136 (21S01): Column count doesn't match value count at row 1
  • 21. Another ways to Insert NULL value.4 mysql> insert into table1(rollno,name) -> values(456); ERROR 1136 (21S01): Column count doesn't match value count at row 1
  • 22. DEFAULT The DEFAULT constraint is used to insert a default value into a column. The default value will be added to all new records, if no other value is specified.
  • 23. DEFAULT Set DEFAULT constraint • While creating table • After creating table Verify DEFAULT in table structure Try to skip rollno column value in INSERT INTO Find what is stored, when we skip NOT NULL column values Try another ways to insert null into not null column
  • 24. Set DEFAULT Constraint While creating table After creating table
  • 25. Set DEFAULT Constraint (While Creating Table) mysql> -> -> -> -> create table table1 ( rollno int default 500, name varchar(20) ); Query OK, 0 rows affected (0.08 sec)
  • 26. Set DEFAULT Constraint (After Creating Table) mysql> alter table table1 -> alter rollno -> set default 500; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0
  • 27. Verify DEFAULT in Table Structure mysql> DESC table1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | rollno | int(11) | YES | | 500 | | | name | varchar(20) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 2 rows in set (0.03 sec) Instead of null value, default value 500 is stored DEFAULT value for rollno column is 500
  • 28. Try to skip rollno column value in INSERT INTO mysql> INSERT INTO table1(name) -> VALUES('harish'); Query OK, 1 row affected (0.03 sec)
  • 29. What has been Stored by Table???
  • 30. Simple!!! The DEFAULT value mysql> SELECT * FROM table1; +--------+--------+ | rollno | name | +--------+--------+ | 500 | harish | +--------+--------+ 1 row in set (0.00 sec) Default Value 500 is Stored when we did not specify any value
  • 31. What happens when we specify a value???? mysql> INSERT INTO table1 -> VALUES(1,'ramesh'); Query OK, 1 row affected (0.03 sec)
  • 32. Simple !!! The Specified value is Stored mysql> SELECT * FROM table1; +--------+--------+ | rollno | name | +--------+--------+ | 500 | harish | | 1 | ramesh | +--------+--------+ 2 rows in set (0.00 sec) The specified value in INSERT INTO statement is stored
  • 33. What happens when we store null in rollno column??? mysql> insert into table1 -> values(NULL,'suresh'); Query OK, 1 row affected (0.07 sec)
  • 34. NULL is stored but why??? mysql> select * from table1; +--------+--------+ | rollno | name | +--------+--------+ | 500 | harish | | 1 | ramesh | | NULL | suresh | +--------+--------+ 3 rows in set (0.00 sec) NULL can be stored with DEFAULT constraint column
  • 35. Because….. mysql> desc table1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | rollno | int(11) | YES | | 500 | | | name | varchar(20) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 2 rows in set (0.03 sec) NULL is allowed
  • 36. What happens when we Do not specify any value???? mysql> insert into table1() -> values(); Query OK, 1 row affected (0.03 sec)
  • 37. Simple!!! Default values are stored mysql> select * from table1; +--------+--------+ | rollno | name | +--------+--------+ | 500 | harish | | 1 | ramesh | | NULL | suresh | NULL is stored because it is| 500 | NULL | 1. Default value for this column +--------+--------+ 2. NULL is allowed 4 rows in set (0.00 sec) Rollno has default value 500, that’s why it is stored
  • 38. Can we specify DEFAULT constraint in filled table???
  • 39. Yes!!! We can When we add DEFAULT Constraint in a Filled Column, No Old Values are altered
  • 40. How to Drop DEFAULT?? mysql> alter table table1 -> alter rollno -> drop default; Query OK, 0 rows affected (0.08 sec) Records: 0 Duplicates: 0 Warnings: 0
  • 41. Verify, DEFAULT Dropped or Not…. mysql> desc table1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | rollno | int(11) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) Returned Back to NULL, like other columns NO Default value, Only NULL
  • 43. What is Foreign key? 1. 2. 3. 4. 5. 6. 7. A foreign key is a field (or collection of fields) in one table that uniquely identifies a row of another table. In other words, a foreign key is a column or a combination of columns that is used to establish and enforce a link between two tables. The table containing the foreign key is called the referencing or child table, and the table containing the candidate key is called the referenced or parent table. A FOREIGN KEY in one table points to a PRIMARY KEY in another table. The FOREIGN KEY constraint also prevents invalid data from being inserted into the foreign key column, because it has to be one of the values contained in the table it points to. A table can contain more than one foreign key. This is sometimes called a referencing key.
  • 44. Example Scenario For example, consider a database with two tables: a CUSTOMER table that includes all customer data and an ORDER table that includes all customer orders. Suppose the business requires that each order must refer to a single customer. To reflect this in the database, a foreign key column is added to the ORDER table (e.g., CUSTOMERID), which references the primary key of CUSTOMER (e.g. ID). Because the primary key of a table must be unique, and because CUSTOMERID only contains values from that primary key field, we may assume that, when it has a value, CUSTOMERID will identify the particular customer which placed the order.
  • 45. Example 2 Persons table P_Id LastName FirstName Address City 1 Hansen Ola Timoteivn 10 Sandnes 2 Svendson Tove Borgvn 23 Sandnes 3 Pettersen Kari Storgt 20 Stavanger Orders table O_Id OrderNo P_Id 1 77895 3 2 44678 3 3 22456 2 4 24562 1 P_id column is common in these tables. P_id is primary key in persons table. The other way to check is, p_id values are not unique in orders table. It means persons table which contains p_id as primary key is parent table and orders table is child table.
  • 46. Student Table Example 3 Course Table Course table is parent because courseid is primary key in course table.
  • 47. Example 4 City table is parent because cityid is primary key in course table.
  • 48. Example 5 Address table is parent because address_id is primary key in address table. Telephone table is child. You must have a contact before an address or telephone number. Contact table is parent because contact_id is primary key in contact table. Address and telephone tables are children.
  • 58. Exercise 7 Student table +------+--------+-----------+ | sid | sname | branch_no | +------+--------+-----------+ | s001 | Ram | br001 | | s002 | Shyam | br001 | | s003 | Sita | br002 | | s004 | Geeta | br003 | | s005 | Naresh | br002 | +------+--------+-----------+ Branch table +-----------+-------------+ | branch_no | branch_name | +-----------+-------------+ | br001 | IT | | br002 | CSE | | br003 | ECE | +-----------+-------------+
  • 59. How to add foreign key in MySQL/Oracle While creating table SyntaxCONSTRAINT <constraint_name> FOREIGN KEY(<column name of this/child table>) REFERENCES <Parent Table Name> (<column name of parent table>) ExampleCREATE TABLE Orders ( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) )
  • 60. How to add foreign key in MySQL/Oracle After creating table SyntaxALTER TABLE <child table name> ADD CONSTRAINT <constraint_name> FOREIGN KEY(<column name of this/child table>) REFERENCES <Parent Table Name> (<column name of parent table>); ExampleALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id);
  • 61. How to check foreign keys in a table mysql> DESC orders; +---------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------+------+-----+---------+-------+ | O_Id | int(11) | NO | PRI | NULL | | | OrderNo | int(11) | NO | | NULL | | | P_Id | int(11) | YES | MUL | NULL | | +---------+---------+------+-----+---------+-------+ This shows a foreign key constraint is set to p_id column in orders table. But Where are the Details??? Its parent table? Linked column in parent table?
  • 62. Check full details of foreign keys mysql> SHOW CREATE TABLE orders; | Table | Create Table --------------------------------------------------------+ | orders | CREATE TABLE `orders` ( `O_Id` int(11) NOT NULL, `OrderNo` int(11) NOT NULL, `P_Id` int(11) DEFAULT NULL, PRIMARY KEY (`O_Id`), KEY `fk_PerOrders` (`P_Id`), CONSTRAINT `fk_PerOrders` FOREIGN KEY (`P_Id`) REFERENCES `persons` (`p_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +--------+---------------------------------------------------------------------Column in parent table Foreign key constraint name Column of this table Parent table name
  • 63. Drop Foreign key in MySQL/Oracle MySQL Oracle SyntaxALTER TABLE <child table name> DROP FOREIGN KEY <constraint name>; SyntaxALTER TABLE <child table name> DROP CONSTRAINT <constraint name>; ExampleALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders; ExampleALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
  • 64. References • http://rdbms.opengrass.net/2_Database%20Design/2.1_TermsOfRe ference/2.1.2_Keys.html • http://www.teachict.com/as_as_computing/ocr/H447/F453/3_3_9/dbkey/miniweb/p g3.htm • http://databaserefactoring.com/AddForeignKey.html • http://www.ssw.com.au/ssw/SQLAuditor/UserguideWizards.aspx • http://www.cs.usfca.edu/~parrt/course/601/lectures/db.html • http://www.teachict.com/as_a2_ict_new/ocr/AS_G061/315_database_concepts/ter minology/miniweb/pg13.htm • http://www.sparxsystems.com/enterprise_architect_user_guide/9. 0/database_engineering/create_a_foreign_key.html