MySQL 主键约束

MySQL 主键约束

MySQL 主键约束

介绍

在数据库中,主键(Primary Key)是用于标识一条记录的唯一标识符。主键约束是数据库设计和管理中最基本的概念之一,它用于确保数据表中的主键列的唯一性和空值约束。主键的作用是为了方便快速地检索和访问数据,同时确保数据的一致性和完整性。

主键的类型

MySQL 支持多种类型的主键,其中最常用的是单列主键和复合主键。

单列主键

单列主键是指表中的唯一列作为主键。当一个表中某一列被指定为主键时,该列不允许包含任何重复的或者空值。可以使用 PRIMARY KEY 关键字来定义单列主键。

示例代码:

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

在上述的示例中,id 列被指定为主键,因此不允许重复值或者空值。

复合主键

复合主键是由多个列联合起来作为主键,用于确保多列的唯一性。可以使用 PRIMARY KEY 关键字来定义复合主键。

示例代码:

CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    product_id INT,
    PRIMARY KEY (order_id, customer_id)
);

在上述的示例中,(order_id, customer_id) 联合列被指定为复合主键。

主键约束详解

主键约束是用于声明主键的一种约束力。当一个列被指定为主键时,MySQL会自动应用主键约束。主键约束的特点如下:

唯一性约束

主键约束要求主键列的值在表中是唯一的。这意味着每一行的主键列的值都不能与其他行的主键列的值相同。如果插入或更新了一条违反唯一性约束的记录,MySQL会抛出一个错误。

示例代码:

INSERT INTO students (id, name, age) VALUES (1, 'John', 20);
INSERT INTO students (id, name, age) VALUES (1, 'Jane', 22);  -- 违反唯一性约束

上述示例代码插入了两条具有相同主键值的记录,第二条记录违反了唯一性约束。

空值约束

主键约束要求主键列的值不能为NULL。如果尝试向主键列插入NULL值,MySQL会抛出一个错误。

示例代码:

INSERT INTO students (id, name, age) VALUES (NULL, 'John', 20);  -- 违反空值约束

上述示例代码尝试向主键列插入了NULL值,违反了空值约束。

自动递增

当主键列的数据类型为整型(如INT),并且使用 AUTO_INCREMENT 关键字进行定义时,MySQL会自动为主键列分配一个唯一的递增值。这样可以方便地插入记录,无需手动指定主键的值。

示例代码:

CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

INSERT INTO students (name, age) VALUES ('John', 20);  -- 主键列将自动赋值为1
INSERT INTO students (name, age) VALUES ('Jane', 22);  -- 主键列将自动赋值为2

上述示例代码中,id 列被指定为自动递增的主键列,当插入记录时,主键列会自动递增。

主键的创建和删除

MySQL 中,可以在创建表的时候指定主键,也可以在表已经创建后,使用 ALTER TABLE 语句来添加主键约束。

创建主键

在创建表时指定主键的语法如下:

CREATE TABLE table_name (
    column1 datatype PRIMARY KEY,
    column2 datatype,
    column3 datatype,
    ...
);

在以上语法中,column1 被指定为主键列。

示例代码:

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

以上示例代码创建了一个名为 students 的表,id 列被指定为主键。

添加主键

如果在表已经创建后需要添加主键约束,可以使用 ALTER TABLE 语句。

添加主键的语法如下:

ALTER TABLE table_name
ADD PRIMARY KEY (column1, column2, ...);

在以上语法中,(column1, column2, ...) 被指定为主键。

示例代码:

ALTER TABLE students
ADD PRIMARY KEY (id);

以上示例代码向 students 表添加了一个名为 id 的主键。

删除主键

如果需要删除一个已经存在的主键约束,可以使用 ALTER TABLE 语句。

删除主键的语法如下:

ALTER TABLE table_name
DROP PRIMARY KEY;

示例代码:

ALTER TABLE students
DROP PRIMARY KEY;

以上示例代码删除了 students 表的主键约束。

总结

MySQL 主键约束是一种非常重要的数据库约束,用于确保数据表中的唯一性和完整性。本文介绍了主键的类型、主键约束的特点,以及创建和删除主键的方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程