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

What's hot (20)

PPTX
Introduction of sql server indexing
Mahabubur Rahaman
 
PPTX
Aggregate function
Rayhan Chowdhury
 
PPTX
Normalization in DBMS
Prateek Parimal
 
PPT
Oracle Database Trigger
Eryk Budi Pratama
 
PPT
Lecture 1 data structures and algorithms
Aakash deep Singhal
 
PPTX
Sql commands
Pooja Dixit
 
PPTX
DATABASE CONSTRAINTS
sunanditaAnand
 
PPT
02 Writing Executable Statments
rehaniltifat
 
PPT
PL/SQL Introduction and Concepts
Bharat Kalia
 
PDF
Database Normalization
Arun Sharma
 
PPTX
8. transactions
Amrit Kaur
 
PPTX
Normal forms
Samuel Igbanogu
 
PPTX
Sql joins inner join self join outer joins
Deepthi Rachumallu
 
PPT
Sql join
Vikas Gupta
 
PPT
Working with Databases and MySQL
Nicole Ryan
 
PPTX
Sql Constraints
I L0V3 CODING DR
 
PPTX
Types of keys dbms
Surkhab Shelly
 
Introduction of sql server indexing
Mahabubur Rahaman
 
Aggregate function
Rayhan Chowdhury
 
Normalization in DBMS
Prateek Parimal
 
Oracle Database Trigger
Eryk Budi Pratama
 
Lecture 1 data structures and algorithms
Aakash deep Singhal
 
Sql commands
Pooja Dixit
 
DATABASE CONSTRAINTS
sunanditaAnand
 
02 Writing Executable Statments
rehaniltifat
 
PL/SQL Introduction and Concepts
Bharat Kalia
 
Database Normalization
Arun Sharma
 
8. transactions
Amrit Kaur
 
Normal forms
Samuel Igbanogu
 
Sql joins inner join self join outer joins
Deepthi Rachumallu
 
Sql join
Vikas Gupta
 
Working with Databases and MySQL
Nicole Ryan
 
Sql Constraints
I L0V3 CODING DR
 
Types of keys dbms
Surkhab Shelly
 

Viewers also liked (7)

PPT
Introduction to DB design
Vijay Kalangi
 
PDF
Using SQL Standards? Database SQL comparition
Denish Patel
 
PPTX
Naming Standards, Clean Code
CleanestCode
 
PPT
Building a CRM Application
Iron Speed
 
PDF
RDBMS ERD
Sarmad Ali
 
PDF
外部キー制約に伴うロックの小話
ichirin2501
 
PDF
MySQL Best Practices - OTN
Ronald Bradford
 
Introduction to DB design
Vijay Kalangi
 
Using SQL Standards? Database SQL comparition
Denish Patel
 
Naming Standards, Clean Code
CleanestCode
 
Building a CRM Application
Iron Speed
 
RDBMS ERD
Sarmad Ali
 
外部キー制約に伴うロックの小話
ichirin2501
 
MySQL Best Practices - OTN
Ronald Bradford
 
Ad

Similar to MySQL constraints (20)

PDF
Create table
Nitesh Singh
 
PPTX
2. DBMS Experiment - Lab 2 Made in SQL Used
TheVerse1
 
PPT
SQL Tutorial - Table Constraints
1keydata
 
PPTX
Data base.ppt
TeklayBirhane
 
PPTX
Constraints in Structure Query Language.
anjanasharma77573
 
PPTX
basic of SQL constraints in database management system
anjanasharma77573
 
PPT
Constraints In Sql
Anurag
 
PPTX
data base programming chapter3 47 slides
nights1988
 
PPTX
Database constraints
Khadija Parween
 
DOCX
Integrity and security
Surendra Karki Chettri
 
PPTX
Integrity Constraints in Database Management System.pptx
PallaviPatil905338
 
PPTX
Entigrity constraint
suman kumar
 
PPTX
Data Definition Language Commands in DBMS
agrawalmonikacomp
 
PPT
CSE311_IAH_Slide07_SQL Advanced Quries.ppt
noshinnawar31
 
PPTX
Unit1_3_Database Constraints.pptx igt is about DBMS
NishthaShah16
 
PPTX
DBMS: Week 09 - SQL Constraints and Indexing
RashidFaridChishti
 
PPTX
CONSTRAINTS PPT.pptx
ThangaduraiA4
 
PDF
SQL-8 Table Creation.pdf
HannanKhalid4
 
DOCX
SQL & PLSQL
Prakash Poudel
 
PPT
Module 3 _SQL Database Management System
prajwalr3501
 
Create table
Nitesh Singh
 
2. DBMS Experiment - Lab 2 Made in SQL Used
TheVerse1
 
SQL Tutorial - Table Constraints
1keydata
 
Data base.ppt
TeklayBirhane
 
Constraints in Structure Query Language.
anjanasharma77573
 
basic of SQL constraints in database management system
anjanasharma77573
 
Constraints In Sql
Anurag
 
data base programming chapter3 47 slides
nights1988
 
Database constraints
Khadija Parween
 
Integrity and security
Surendra Karki Chettri
 
Integrity Constraints in Database Management System.pptx
PallaviPatil905338
 
Entigrity constraint
suman kumar
 
Data Definition Language Commands in DBMS
agrawalmonikacomp
 
CSE311_IAH_Slide07_SQL Advanced Quries.ppt
noshinnawar31
 
Unit1_3_Database Constraints.pptx igt is about DBMS
NishthaShah16
 
DBMS: Week 09 - SQL Constraints and Indexing
RashidFaridChishti
 
CONSTRAINTS PPT.pptx
ThangaduraiA4
 
SQL-8 Table Creation.pdf
HannanKhalid4
 
SQL & PLSQL
Prakash Poudel
 
Module 3 _SQL Database Management System
prajwalr3501
 
Ad

Recently uploaded (20)

PPTX
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
PDF
Reconstruct, Restore, Reimagine: New Perspectives on Stoke Newington’s Histor...
History of Stoke Newington
 
PPTX
Post Dated Cheque(PDC) Management in Odoo 18
Celine George
 
PDF
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
PDF
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
PPTX
How to Manage Allocation Report for Manufacturing Orders in Odoo 18
Celine George
 
PDF
Aprendendo Arquitetura Framework Salesforce - Dia 03
Mauricio Alexandre Silva
 
PDF
The Constitution Review Committee (CRC) has released an updated schedule for ...
nservice241
 
PPTX
How to Set Up Tags in Odoo 18 - Odoo Slides
Celine George
 
PDF
Council of Chalcedon Re-Examined
Smiling Lungs
 
PDF
Chapter-V-DED-Entrepreneurship: Institutions Facilitating Entrepreneurship
Dayanand Huded
 
PPTX
Cultivation practice of Litchi in Nepal.pptx
UmeshTimilsina1
 
PPTX
Introduction to Indian Writing in English
Trushali Dodiya
 
PDF
Is Assignment Help Legal in Australia_.pdf
thomas19williams83
 
PDF
Android Programming - Basics of Mobile App, App tools and Android Basics
Kavitha P.V
 
PDF
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
PPTX
CATEGORIES OF NURSING PERSONNEL: HOSPITAL & COLLEGE
PRADEEP ABOTHU
 
PPTX
Controller Request and Response in Odoo18
Celine George
 
PPTX
Difference between write and update in odoo 18
Celine George
 
PDF
Characteristics, Strengths and Weaknesses of Quantitative Research.pdf
Thelma Villaflores
 
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
Reconstruct, Restore, Reimagine: New Perspectives on Stoke Newington’s Histor...
History of Stoke Newington
 
Post Dated Cheque(PDC) Management in Odoo 18
Celine George
 
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
How to Manage Allocation Report for Manufacturing Orders in Odoo 18
Celine George
 
Aprendendo Arquitetura Framework Salesforce - Dia 03
Mauricio Alexandre Silva
 
The Constitution Review Committee (CRC) has released an updated schedule for ...
nservice241
 
How to Set Up Tags in Odoo 18 - Odoo Slides
Celine George
 
Council of Chalcedon Re-Examined
Smiling Lungs
 
Chapter-V-DED-Entrepreneurship: Institutions Facilitating Entrepreneurship
Dayanand Huded
 
Cultivation practice of Litchi in Nepal.pptx
UmeshTimilsina1
 
Introduction to Indian Writing in English
Trushali Dodiya
 
Is Assignment Help Legal in Australia_.pdf
thomas19williams83
 
Android Programming - Basics of Mobile App, App tools and Android Basics
Kavitha P.V
 
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
CATEGORIES OF NURSING PERSONNEL: HOSPITAL & COLLEGE
PRADEEP ABOTHU
 
Controller Request and Response in Odoo18
Celine George
 
Difference between write and update in odoo 18
Celine George
 
Characteristics, Strengths and Weaknesses of Quantitative Research.pdf
Thelma Villaflores
 

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