mysql怎么看所有约束
时间 : 2023-03-19 08:24:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 MySQL 中,可以通过查询系统表来查看所有的约束。以下是各种约束类型的系统表及其说明:

1. PRIMARY KEY 约束:在 information_schema.KEY_COLUMN_USAGE 表中查询。

该表包含了所有主键和唯一键的信息,可以通过查询 CONSTRAINT_NAME 字段来获取所有主键和唯一键的名称,QUERY_NAME 字段表示这些键所属的表,COLUMN_NAME 字段表示主键或唯一键所对应的列名。

查询示例:

SELECT * FROM information_schema.KEY_COLUMN_USAGE

WHERE CONSTRAINT_NAME = 'PRIMARY';

2. FOREIGN KEY 约束:在 information_schema.REFERENTIAL_CONSTRAINTS 表中查询。

该表包含了所有外键的信息,可以通过查询 CONSTRAINT_NAME 字段来获取所有外键的名称,QUERY_NAME 字段表示包含对应外键的表,REFERENCED_TABLE_NAME 字段表示被引用的表,MATCH_OPTION 字段表示匹配方式(FULL、PARTIAL 或 SIMPLE)。

查询示例:

SELECT * FROM information_schema.REFERENTIAL_CONSTRAINTS;

3. CHECK 约束:在 information_schema.CHECK_CONSTRAINTS 表中查询。

该表包含了所有 CHECK 约束的信息,可以通过查询 CONSTRAINT_NAME 字段来获取所有 CHECK 约束的名称,QUERY_NAME 字段表示这些约束所属的表,CHECK_CLAUSE 字段表示 CHECK 约束条件。

查询示例:

SELECT * FROM information_schema.CHECK_CONSTRAINTS;

4. DEFAULT 约束:在 information_schema.COLUMNS 表中查询。

该表包含了所有列的信息,可以通过查询 COLUMN_NAME 字段来获取所有列的名称,QUERY_NAME 字段表示这些列所属的表,COLUMN_DEFAULT 字段表示 DEFAULT 约束的默认值。

查询示例:

SELECT * FROM information_schema.COLUMNS

WHERE COLUMN_DEFAULT IS NOT NULL;

以上就是查询 MySQL 中各种约束的系统表及其说明,这些系统表提供了非常好的信息查询支持。

在MySQL中,可以使用DESCRIBE语句或SHOW CREATE TABLE语句来查看特定表的约束。但是如果想查看所有约束,可以使用MySQL提供的INFORMATION_SCHEMA数据库来查询。

INFORMATION_SCHEMA数据库是MySQL自带的一个元数据数据库,它包含了关于MySQL服务器所维护的所有信息的视图表和系统表。其中,INFORMATION_SCHEMA.TABLE_CONSTRAINTS视图包含了所有表约束的信息。

下面是一个示例查询,用于查看所有约束名称、约束类型、表名和约束所涉及的列:

SELECT

CONSTRAINT_NAME,

CONSTRAINT_TYPE,

TABLE_NAME,

GROUP_CONCAT(COLUMN_NAME) AS COLUMNS

FROM

INFORMATION_SCHEMA.TABLE_CONSTRAINTS

INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE

ON TABLE_CONSTRAINTS.CONSTRAINT_NAME = KEY_COLUMN_USAGE.CONSTRAINT_NAME

WHERE

CONSTRAINT_SCHEMA = 'your_database_name'

GROUP BY

CONSTRAINT_NAME,

CONSTRAINT_TYPE,

TABLE_NAME;

在上面的查询中,我们连接了INFORMATION_SCHEMA.TABLE_CONSTRAINTS表和INFORMATION_SCHEMA.KEY_COLUMN_USAGE表,以获取表约束的详细信息。同时我们使用了GROUP_CONCAT函数来将约束的所有涉及的列名组合成一个字符串。最后,我们还指定了约束所在的数据库名,以仅获取我们需要的信息。

请注意,如果您使用的是Mysql 8.0或更高版本,可以使用SHOW CREATE TABLE语句中的INCLUDING CONSTRAINTS选项来查看特定表的所有约束。例如,以下命令将显示名为“my_table”的表及其所有约束的信息:

SHOW CREATE TABLE my_table INCLUDING CONSTRAINTS;

综上所述,在MySQL中查看所有约束需要使用INFORMATION_SCHEMA数据库和特定的查询,或在Mysql 8.0及更高版本中使用SHOW CREATE TABLE语句的INCLUDING CONSTRAINTS选项。