mysql怎么查表的外键
时间 : 2023-03-12 13:54:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
在 MySQL 中,我们可以通过使用 DESC 命令或者 SHOW CREATE TABLE 命令来查看一张表的结构信息,也可以通过 SHOW CREATE TABLE 命令来查看一张表包含的外键信息。
下面分别介绍三种查看 MySQL 表外键信息的方法。
## 方法一:使用 DESC 命令查看表结构
我们可以使用 DESC 命令来查看一张表的结构信息,包括表的字段信息、类型、约束和注释等,其中外键信息也会一并显示出来。
具体用法如下:
```sql
DESC table_name;
其中,table_name 表示要查看信息的表名,执行该命令后,会显示出表的结构信息。
通过该命令,我们可以查看一个表中所有的外键,例如下面的表结构信息中包括两个外键:
mysql> DESC orders;
+-------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+-------+
| order_id | int(10) unsigned | NO | PRI | NULL | |
| customer_id | int(10) unsigned | NO | MUL | NULL | |
| order_date | date | YES | | NULL | |
| total_price | decimal(10,2) | YES | | NULL | |
+-------------+------------------+------+-----+---------+-------+
其中,customer_id 字段的 Key 列显示为 MUL,表示该字段是一条外键。同时,我们还可以通过查询 INFORMATION_SCHEMA 库中的 KEY_COLUMN_USAGE 表,来查看表中的所有外键信息。
```sql
SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'table_name' and TABLE_SCHEMA='database_name';
其中,database_name 表示要查看信息的数据库名,table_name 表示要查看信息的表名。
通过该命令,我们可以查询到当前数据库中所有表的外键信息。
举个例子,我们查询 orders 表的键信息,可以使用如下 SQL 查询语句:
```sql
SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'orders' and TABLE_SCHEMA='shopping';
执行该命令后,会返回如下结果:
+----------------------------+-------------+-----------------------+------------------------+
| CONSTRAINT_NAME | COLUMN_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
+----------------------------+-------------+-----------------------+------------------------+
| orders_customer_id_foreign | customer_id | customers | customer_id |
+----------------------------+-------------+-----------------------+------------------------+
结果中,orders_customer_id_foreign 表示该外键的约束名,customer_id 表示该外键在 orders 表中的字段名,customers 表示父表的表名,customer_id 表示父表中对应的字段名。
## 方法三:使用 SHOW CREATE TABLE 命令查看外键信息
我们可以使用 SHOW CREATE TABLE 命令来查看一张表的详细信息,包括表的创建语句、表的所有索引信息和外键信息等。
具体用法如下:
```sql
SHOW CREATE TABLE table_name;
其中,table_name 表示要查看信息的表名。执行该命令后,MySQL 会返回该表的详细信息,在 “CONSTRAINT” 关键字后面的部分就是该表的所有外键信息。
举个例子,我们查询 orders 表的创建语句和外键信息,可以使用如下 SQL 查询语句:
```sql
SHOW CREATE TABLE orders;
执行该命令后,会返回如下结果:
CREATE TABLE `orders` (
`order_id` int(10) unsigned NOT NULL,
`customer_id` int(10) unsigned NOT NULL,
`order_date` date DEFAULT NULL,
`total_price` decimal(10,2) DEFAULT NULL,
PRIMARY KEY (`order_id`),
KEY `orders_customer_id_foreign` (`customer_id`),
CONSTRAINT `orders_customer_id_foreign` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`customer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
结果中,orders_customer_id_foreign 表示外键的约束名,customer_id 列名表示该外键在 orders 表中的字段名,`customers` (`customer_id`) 表示父表名 customers 和父表中对应的字段名 customer_id。
当我们在进行数据库建模时,可能会设置表之间的关系,其中常用的关系类型有主键和外键。主键用于确保表中每一行数据的唯一性,而外键则用于表与表之间的关联。在开发中,如何查找表的外键也是非常重要的一项技能,可以通过如下两种方式查找表的外键。
1. 使用DESCRIBE语句
使用DESCRIBE语句可以查看表的结构信息,其中包括表的外键信息。示例如下:
DESCRIBE 表名;
例如,我们可以使用如下命令查找名为student的表的外键信息:
DESCRIBE student;
执行结果如下:
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(255) | NO | | NULL | |
| class_id | int(11) | YES | MUL | NULL | |
+------------+--------------+------+-----+---------+-------+
可以看到在student表中有一个名为class_id的字段,其拥有外键的索引。
2. 使用SHOW CREATE TABLE语句
使用SHOW CREATE TABLE语句则可以查看表的创建语句。示例如下:
SHOW CREATE TABLE 表名;
例如,我们可以使用如下命令查找名为student的表的外键信息:
SHOW CREATE TABLE student;
执行结果如下:
| student | CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`class_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `class_id` (`class_id`),
CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
可以看到在student表的创建语句中也包括外键信息,其中KEY `class_id` (`class_id`)代表class_id字段拥有索引,而CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`)代表class_id字段是student表的外键,参考的主键在class表中的id字段上。
总结
以上两种方式都可以查找表的外键信息,只不过DESCRIBE语句仅显示表的结构信息,而SHOW CREATE TABLE语句会显示完整的表的创建语句。在实际使用中可以根据情况选择不同的方法来查询表的外键。
上一篇
怎么写入mysql数据库
下一篇
mysql安全漏洞怎么补
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章