MySQL 主键

MySQL 主键

MySQL主键是一个用于标识表中每条记录的单个或组合字段。 唯一地 。如果列包含主键约束,则不能为 null或空 。一个表可以有重复的列,但只能包含一个主键。它始终包含一个唯一值。

当您向表中插入新行时,主键列也可以使用 AUTO_INCREMENT 属性为该行自动生成连续的编号。 MySQL 在为表定义主键后自动创建一个名为“ Primary ”的索引。由于它有一个关联的索引,我们可以说主键使查询性能快。

主键规则

主键的规则如下:

  1. 主键列的值必须是唯一的。
  2. 每个表只能包含一个主键。
  3. 主键列不能为null或空。
  4. MySQL不允许我们使用现有的主键插入新行。
  5. 建议为主键列使用INT或BIGINT数据类型。

我们可以通过两种方式创建主键:

  • CREATE TABLE语句
  • ALTER TABLE语句

让我们详细讨论每个方式。

使用CREATE TABLE语句创建主键

在本节中,我们将看到如何使用 CREATE TABLE 语句创建主键。

语法

以下是用于在MySQL中创建主键的语法。

如果我们只想在表中创建一个主键列,请使用以下语法:

CREATE TABLE table_name(
    col1 datatype PRIMARY KEY,
    col2 datatype,
    ...
);

如果我们想在表中创建多个主键列,请使用以下语法:

CREATE TABLE table_name
(
  col1 col_definition,
  col2 col_definition,
  ...

  CONSTRAINT [constraint_name] 
   PRIMARY KEY (column_name(s))
);

参数说明

下表详细解释了参数。

参数名 描述
table_name 它是我们要创建的表的名称。
Col1, col2 它是包含在表中的列名。
constraint_name 它是主键的名称。
column_name(s) 它是将成为主键的列名(们)。

主键示例

以下示例说明了MySQL中如何使用主键。

这个语句创建了一个名为“ Login ”的表,其中“ login_id ”列包含了主键:

Mysql> CREATE TABLE Login(
   login_id INT AUTO_INCREMENT PRIMARY KEY,
   username VARCHAR(40),
   password VARCHAR(55),
   email VARCHAR(55)
);

接下来,使用插入查询将数据存储到表中:

mysql> INSERT INTO Login(login_id, username, password, email) 
VALUES (1,'Stephen', 15343434532, 'stephen@javatpoint.com'), 
(2, 'Joseph', 35435479495, 'Joseph@javatpoint.com');

mysql> INSERT INTO Login(login_id, username, password, email) 
VALUES (1,'Peter', 15343434532, 'peter@javatpoint.com');

输出

在下面的输出中,我们可以看到第一个插入查询成功执行。而第二个插入语句失败,并显示一个错误,说:主键列有重复条目。

MySQL 主键

如果您想在 多列上定义主键 ,请使用以下查询:

mysql> CREATE TABLE Students (
        Student_ID int, 
        Roll_No int,
        Name varchar(45) NOT NULL, 
        Age int, 
        City varchar(25),
        Primary Key(Student_ID, Roll_No)
    );

在输出中,我们可以看到主键值包含两列,它们是 Student_IDRoll_No

MySQL 主键

使用ALTER TABLE语句创建主键

该语句允许我们对现有表进行修改。当表中没有主键时,可以使用该语句将主键添加到现有表的列中。

语法

以下是在MySQL中使用ALTER TABLE语句创建主键的语法:

ALTER TABLE table_name ADD PRIMARY KEY(column_list);

示例

以下语句创建一个名为” Persons “的表,该表的定义中没有主键列。

mysql> CREATE TABLE Persons (
        Person_ID int NOT NULL, 
        Name varchar(45), 
        Age int, 
        City varchar(25)
    );

创建表后,如果我们想要给这个表添加一个主键,我们需要执行以下ALTER TABLE语句:

mysql> ALTER TABLE Persons ADD PRIMARY KEY(Person_ID);

我们可以看到输出,两个语句都成功执行。

MySQL 主键

如果需要向已有数据的列中添加主键,则必须确保该列不包含重复值或空值。

删除主键

ALTER TABLE语句还允许我们从表中删除主键。使用以下语法进行主键删除:

ALTER TABLE table_name  DROP PRIMARY KEY;

示例

mysql> ALTER TABLE Login DROP PRIMARY KEY;

主键 vs. 唯一键

以下比较图表解释了它们之间的一些常见区别:

序号 主键 唯一键
1. 它是一个字段或字段的组合,用于唯一标识表中的每条记录。 在没有主键的情况下,它也可以唯一地确定表中的每一行。
2. 它不允许将NULL值存储到主键列中。 它只能接受一个NULL值到唯一键列中。
3. 一个表只能有一个主键。 一个表可以有多个唯一键。
4. 它创建一个聚集索引。 它创建一个非聚集索引。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程