MySQL Primary Key


## MySQL Primary Key

Summary: in this tutorial, you will learn how to use MySQL primary key constraint to create the primary key for a table.

Introduction to MySQL primary key
A primary key is a column or a set of columns that uniquely identifies each row in the table.  The primary key follows these rules:

A primary key must contain unique values. If the primary key consists of multiple columns, the combination of values in these columns must be unique.
A primary key column cannot have NULL values. Any attempt to insert or update NULL to primary key columns will result in an error. Note that MySQL implicitly adds a NOT NULL constraint to primary key columns.
A table can have one an only one primary key.
mysql primary key
Because MySQL works faster with integers, the data type of the primary key column should be the integer e.g., INT, BIGINT. And you should ensure sure that value ranges of the integer type for the primary key are sufficient for storing all possible rows that the table may have.

A primary key column often has the AUTO_INCREMENT attribute that automatically generates a sequential integer whenever you insert a new row into the table.

When you define a primary key for a table, MySQL automatically creates an index called PRIMARY.

MySQL PRIMARY KEY examples
The PRIMARY KEY constraint allows you to define a primary key of a table when you create or alter table.

1) Define a PRIMARY KEY constraint in CREATE TABLE
Typically, you define the primary key for a table in the CREATE TABLE statement.

If the primary key has one column, you can use the PRIMARY KEY constraint as a column constraint:

CREATE TABLE table_name(
    primary_key_column datatype PRIMARY KEY,
    ...
);
When the primary key has more than one column, you must use the PRIMARY KEY constraint as a table constraint.

CREATE TABLE table_name(
    primary_key_column1 datatype,
    primary_key_column2 datatype,
    ...,
    PRIMARY KEY(column_list)
);
In this syntax, you separate columns in the column_list by commas (,).

The PRIMARY KEY table constraint can be used when the primary key has one column:

CREATE TABLE table_name ( 
    primary_key_column datatype, 
    ... ,
    PRIMARY KEY(primary_key_column)
);
The following example creates a table named users whose primary key is the user_id column:

CREATE TABLE users(
   user_id INT AUTO_INCREMENT PRIMARY KEY,
   username VARCHAR(40),
   password VARCHAR(255),
   email VARCHAR(255)
);
This statement creates the roles table that has the PRIMARY KEY constraint as the table constraint:

CREATE TABLE roles(
   role_id INT AUTO_INCREMENT,
   role_name VARCHAR(50),
   PRIMARY KEY(role_id)
);
In case the primary key consists of multiple columns, you must specify them at the end of the CREATE TABLE  statement. You put a comma-separated list of primary key columns inside parentheses followed the PRIMARY KEY  keywords.

The following example creates the user_roles table whose primary key consists of two columns: user_id and role_id. It defines the PRIMARY KEY constraint as the table constraint:

CREATE TABLE user_roles(
   user_id INT,
   role_id INT,
   PRIMARY KEY(user_id,role_id),
   FOREIGN KEY(user_id) 
       REFERENCES users(user_id),
   FOREIGN KEY(role_id) 
       REFERENCES roles(role_id)
);
Note that the statement also created two foreign key constraints.

2) Define PRIMARY KEY constraints using ALTER TABLE
If a table, for some reasons, does not have a primary key, you can use the ALTER TABLEstatement to add a primary key to the table as follows:

ALTER TABLE table_name
ADD PRIMARY KEY(column_list);
The following example adds the id column to the primary key.

First, create the pkdemos table without a primary key.

CREATE TABLE pkdemos(
   id INT,
   title VARCHAR(255) NOT NULL
);
Second, add a primary key to the pkdemos table using the ALTER TABLE statement:

ALTER TABLE pkdemos
ADD PRIMARY KEY(id);
If you add a primary key to a table that already has data. The data in the column(s), which will be included in the primary key, must be unique and not NULL.

 PRIMARY KEY vs. UNIQUE KEY vs. KEY
KEY is the synonym for INDEX. You use the KEY when you want to create an index for a column or a set of columns that is not the part of a primary key or unique key.

A UNIQUE index ensures that values in a column must be unique. Unlike the PRIMARY index, MySQL allows NULL values in the UNIQUE index. In addition, a table can have multiple UNIQUE indexes.

Suppose that email and username of users in the users table must be unique. To enforce thes rules, you can define UNIQUE indexes for the email and username columns as the following  statement:

Add a UNIQUE index for the username column:

ALTER TABLE users
ADD UNIQUE INDEX username_unique (username ASC) ;
Add a UNIQUE index for the email column:

ALTER TABLE users
ADD UNIQUE INDEX  email_unique (email ASC) ;
In this tutorial, you have learned how to create a primary key for a new table or add a primary key to an existing table.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值