MySQL怎么加主键外键
时间 : 2023-03-12 15:52:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL是一种关系数据库管理系统,主键和外键是关系型数据库中非常重要的概念。主键是表中唯一标识每个记录的列,而外键是与另一个表中列有关联的列。在MySQL中加入主键外键可以提高数据表的查询、更新等效率,也有助于保证数据库的一致性和完整性。

下面我们来看如何在MySQL中加入主键和外键。

## 加入主键

### 通过CREATE TABLE语句定义主键

在定义表结构时,可以通过CREATE TABLE语句定义主键。例如,假设我们要创建一个学生表,学生表的主键为ID,我们可以使用以下语句:

CREATE TABLE students (

ID INT NOT NULL,

Name VARCHAR(255),

Age INT,

PRIMARY KEY (ID)

);

在上面的例子中,我们使用PRIMARY KEY关键字定义了ID列为主键。

### 添加已有表的主键

如果已经有表了,我们可以通过如下ALTER TABLE语句添加主键:

ALTER TABLE students ADD PRIMARY KEY (ID);

这个语句会将学生表中的ID列设置为主键。

### 自增长主键

通常情况下,主键会自动排序,这时候我们可以使用AUTO_INCREMENT关键字给主键赋值。当插入新记录时,MySQL会自动分配一个唯一的值给该列,这样就不用手动插入主键的值了。例如,我们可以这样定义学生表:

CREATE TABLE students (

ID INT UNSIGNED NOT NULL AUTO_INCREMENT,

Name VARCHAR(255),

Age INT,

PRIMARY KEY (ID)

);

注意,如果主键列定义为自增长类型,那么该列的数据类型必须是整型。

## 加入外键

在MySQL中,外键是一种约束规则,用来保证表与表之间的数据一致性。外键必须引用另一个表中的主键或唯一键。在MySQL中,可以使用ALTER TABLE语句添加外键。

例如,我们要建立一个学生表和一个班级表,学生表和班级表之间的关系是“一个学生只能属于一个班级,一个班级可以有多个学生”。我们可以使用以下语句创建学生表和班级表:

CREATE TABLE students (

ID INT UNSIGNED NOT NULL AUTO_INCREMENT,

Name VARCHAR(255),

Age INT,

ClassID INT,

PRIMARY KEY (ID),

FOREIGN KEY (ClassID) REFERENCES classes(ID)

);

CREATE TABLE classes (

ID INT UNSIGNED NOT NULL AUTO_INCREMENT,

ClassName VARCHAR(255),

PRIMARY KEY (ID)

);

在上面的例子中,我们使用FOREIGN KEY关键字定义了ClassID列为外键,并通过REFERENCES关键字指定了该列引用的班级表的主键ID。这样就保证了学生表和班级表之间的数据一致性。

除了使用ALTER TABLE语句,还可以在CREATE TABLE语句中定义外键约束。例如:

CREATE TABLE students (

ID INT UNSIGNED NOT NULL AUTO_INCREMENT,

Name VARCHAR(255),

Age INT,

ClassID INT,

PRIMARY KEY (ID),

FOREIGN KEY (ClassID) REFERENCES classes(ID)

) ENGINE=InnoDB;

需要注意的是,只有使用InnoDB存储引擎的表才支持外键关系。

总之,加入主键外键可以提高数据表的查询、更新等效率,也有助于保证数据库的一致性和完整性。以上就是MySQL添加主键外键的基本过程。

MySQL是一种被广泛使用的关系型数据库管理系统(RDBMS),在设计数据库时,创建主键和外键是非常重要的步骤。本文将介绍如何在MySQL中创建主键和外键。

## 什么是主键?

主键是用于唯一标识数据库表中每一行数据的一列或一组列。主键具有以下特性:

- 主键必须唯一,不能重复。

- 主键不允许为NULL(空值)。

- 主键可以是一个或多个列的组合。

在MySQL中,可以使用以下语法来创建主键:

CREATE TABLE table_name (

column1 datatype PRIMARY KEY,

column2 datatype,

...

);

例如,以下示例创建了一个名为“employees”的表,其中“id”列是主键:

CREATE TABLE employees (

id INT PRIMARY KEY,

name VARCHAR(50),

age INT,

salary FLOAT

);

如果要创建一个由多列组成的主键,可以使用以下语法:

CREATE TABLE table_name (

column1 datatype,

column2 datatype,

...,

PRIMARY KEY (column1, column2, ...)

);

例如,以下示例创建了一个名为“orders”的表,其中“order_id”和“product_id”列一起组成主键:

CREATE TABLE orders (

order_id INT,

product_id INT,

quantity INT,

PRIMARY KEY (order_id, product_id)

);

## 什么是外键?

外键是用于建立两个表之间关系的一种约束。它建立在一个表中,指向另一个表中的某一列或列组合。外键具有以下特性:

- 外键必须指向另一个表中的唯一键(主键或唯一索引)。

- 外键可以为NULL(空值),表示该行数据与另一个表中的行数据无关联。

- 外键可以是一个或多个列的组合。

在MySQL中,可以使用以下语法来创建外键:

CREATE TABLE table_name (

column1 datatype,

column2 datatype,

...,

FOREIGN KEY (column1, column2, ...) REFERENCES referred_table (referred_column1, referred_column2, ...)

);

例如,以下示例创建了一个名为“orders”的表,其中“product_id”列是外键,它指向另一个表中的“products”表的“id”列:

CREATE TABLE orders (

order_id INT PRIMARY KEY,

product_id INT,

quantity INT,

FOREIGN KEY (product_id) REFERENCES products (id)

);

注意,在创建外键之前,必须先创建所引用表的主键或唯一键。

## 总结

在MySQL中创建主键和外键是设计数据库的重要步骤。主键用于唯一标识每一行数据,外键用于建立不同表之间的关系。应该尽量遵循规范来创建主键和外键,以确保数据库的正常运行和数据的准确性。