Primary Key
- Primary Key can identify a row as uniquely
- A table can have only one primary key
- It can't be Null
- Indexing added automatically to Primary key
Foreign Key
- A FOREIGN KEY in one table reference to a Primary Key in another table
- A table can have one OR more foreign key.
- It can be Null
- Indexing not added automatically to Foreign key
Unique Key
- Unique Key can identify a row as uniquely.
- A table can have one OR more unique key.
- It can be Null
- Indexing not added automatically to Unique Key
Composite Key
- A composite key contains at least one compound key and one more attribute. Composite keys may also include simple keys and non-key attributes.
- A table can have one OR more composite Key
- It can also be null.
See Example:
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `email` varchar(100) NOT NULL, `phone` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `user_profile` ( `user_id` int(11) NOT NULL, `address1` varchar(100) NOT NULL, `address2` varchar(100) NOT NULL, KEY `user_id` (`user_id`), FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
Primary Key: users.id
Foreign Key: user_profile.user_id
Unique Key: users.email
Foreign Key: user_profile.user_id
Unique Key: users.email