Differences between "Unique Key" and "Primary Key"
A table can have at most one PRIMARY KEY
constraint but it can have as many as you want UNIQUE KEY
constraints.
Columns that are part of the PRIMARY KEY
must be defined as NOT NULL
. That is not required for columns that are part of UNIQUE KEY
constraints. If the columns are not Nullable, then there is no difference between Unique and Primary Keys.
Another minor difference is that you can choose the name you want for a UNIQUE KEY
constraint (and index). On the other hand, the PRIMARY KEY
has the default name: PRIMARY
.
One major difference
- Primary key disallows nullable columns
- Unique key allows nullable columns
Otherwise, there isn't much difference...
Something others have not pointed out:
- If you don't explicitly declare a PK in InnoDB tables, it will create one under the covers for you. You cannot access, order, or filter by this implicit key. This has ramifications in terms of resources as each secondary index contains a copy pointer to the PK of the row.