mysql的怎么查看外键
时间 : 2023-03-11 15:03:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 MySQL 中,我们可以使用 `SHOW CREATE TABLE` 命令查看表的创建语句,包括表中的外键约束信息。例如,我们想查看名为 `student` 的表中的外键约束信息,可以执行以下 SQL 语句:

```sql

SHOW CREATE TABLE student;

执行结果会返回 `student` 表的创建语句及其中的外键约束信息。例如:

```sql

CREATE TABLE `student` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(50) NOT NULL,

`age` int(11) NOT NULL,

`class_id` int(11) NOT NULL,

PRIMARY KEY (`id`),

KEY `class_id` (`class_id`),

CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

其中,`CONSTRAINT` 关键字标识了外键约束的开始。`student_ibfk_1` 表示约束名称,`FOREIGN KEY` 表示这是一个外键约束,后面的括号中定义了本表中的外键列 `class_id`,`REFERENCES` 关键字标识了需要关联的表和其主键列 `class.id`。

除了使用 `SHOW CREATE TABLE` 命令查看外键约束,我们还可以使用 `SHOW TABLE STATUS` 命令查看表的状态信息,其中也包括了外键约束的相关信息。例如,我们想查看名为 `student` 的表的外键约束,可以执行以下 SQL 语句:

```sql

SHOW TABLE STATUS LIKE 'student'\G

执行结果中,`student` 表的信息会按照属性名和属性值的形式展示。其中,`Create_Table` 属性值中会包括该表的创建语句,包括外键约束信息。例如:

```sql

*************************** 1. row ***************************

Name: student

Engine: InnoDB

Version: 10

Row_format: Dynamic

Rows: 1

Avg_row_length: 16384

Data_length: 16384

Max_data_length: 0

Index_length: 16384

Data_free: 0

Auto_increment: 1

Create_time: 2021-12-31 09:00:00

Update_time: NULL

Check_time: NULL

Collation: utf8mb4_0900_ai_ci

Checksum: NULL

Create_options:

Comment:

1 row in set (0.00 sec)

需要注意的是,在某些情况下,MySQL 不会强制执行外键约束,例如创建表时使用的存储引擎不支持外键,或者在创建外键时使用了 `CASCADE` 或 `SET NULL` 级联操作,但是被关联的表中的行被删除或者修改后,并不会使用级联操作,而是静默地删除或修改了包含外键的行。因此,在使用外键约束时,需要注意存储引擎和级联操作的设置。

在 MySQL 中,可以通过以下两种方法来查看外键:

1. DESC 命令查看表结构

使用 DESC 命令查看 MySQL 表结构是最基本的方法。通过此方法可以查看表的列名称、数据类型、主键以及外键等信息。

例如,假设有一个名为 orders 的表,其中包含 order_id 和 customer_id 列,并且 customer_id 列是作为外键引用了 customers 表的 customer_id 列。使用以下语句查看 orders 表的结构:

DESC orders;

执行以上语句后,系统将返回包含表结构的结果集。结果集中将显示 customer_id 列作为一个外键,其值将显示为 REFERENCES customers(customer_id)。

2. SHOW CREATE TABLE 命令

SHOW CREATE TABLE 命令允许查看表的完整表结构,包括表创建脚本和表中的约束。使用此命令可以查看表中的所有外键信息。

例如,假设有一个名为 orders 的表,其中包含 order_id 和 customer_id 列,并且 customer_id 列是作为外键引用了 customers 表的 customer_id 列。使用以下语句查看 orders 表的完整表结构:

SHOW CREATE TABLE orders;

执行以上语句后,系统将返回包含表创建脚本的结果集。在结果集中,可以查找 CONSTRAINT 关键字,并在其后查找包含外键信息的语句。例如:

CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`customer_id`)

此语句指示 customer_id 列是一个外键,它引用了 customers 表的 customer_id 列。

总结

MySQL 提供了多种方法来查看表中的外键信息,例如使用 DESC 和 SHOW CREATE TABLE 命令。这些方法可以帮助我们快速了解表结构和外键约束,从而更好的管理和维护数据。