MySQL 如何在MySQL中显示表上所有约束条件?

MySQL 如何在MySQL中显示表上所有约束条件?

当我们在MySQL中创建表的时候,往往需要加上一些约束条件,比如唯一约束、主键约束、外键约束等等,这些约束条件能够保证数据的一致性和完整性。但是,在日常工作中,我们可能需要查询表中的所有约束条件,在进行数据处理和维护的时候更加便利。那么,如何在MySQL中显示表上所有约束条件呢?

阅读更多:MySQL 教程

MySQL中的三种约束条件

在MySQL中,一般有以下三种约束条件:

  • PRIMARY KEY:用于定义主键,要求表中每一行的主键值必须唯一,同时不能为NULL。
  • UNIQUE KEY:用于定义唯一键,要求表中每一行的列值必须唯一,但是可以为NULL。
  • FOREIGN KEY:用于定义外键,要求表中的某个列必须与另外一个表的某个列相对应,并且该列的值必须在关联表中存在。

查看表上所有约束条件

在MySQL中,我们可以使用DESC命令来查看表的结构信息,其中包括该表上所有的约束条件。比如,我们有一个student表,如下所示:

CREATE TABLE student (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(20) NOT NULL,
    age INT NOT NULL,
    gender VARCHAR(10),
    grade FLOAT(2,1) NOT NULL,
    UNIQUE KEY student_code (id)
);

我们可以使用DESC命令来查看该表的结构信息,如下所示:

DESC student;

运行结果如下:

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | NO   |     | NULL    |       |
| age   | int(11)     | NO   |     | NULL    |       |
| gender| varchar(10) | YES  |     | NULL    |       |
| grade | float(2,1)  | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

从上面的结果中,我们可以看到表中每一列的详细信息,包括列名、数据类型、是否可以为NULL、是否为主键等等。同时,在Key列中,如果对应的值为PRI,则表示该列为主键;如果对应的值为UNI,则表示该列为唯一键;如果对应的值为MUL,则表示该列为索引键。

通过SHOW命令查看约束条件

除了使用DESC命令来查看表的结构信息以外,我们还可以使用SHOW命令来查看表上的所有约束条件。比如,我们可以使用如下命令来查看student表上的所有约束条件:

SHOW CREATE TABLE student;

运行结果如下所示:

CREATE TABLE `student` (
  `id` int(11) NOT NULL,
  `name` varchar(20) NOT NULL,
  `age` int(11) NOT NULL,
  `gender` varchar(10) DEFAULT NULL,
  `grade` float(2,1) NOT NULL,
  UNIQUE KEY `student_code` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

从上面的结果中,我们可以清晰地看到student表的全部结构信息,包括了每一列的详细信息,同时我们还能够看到该表所使用的索引和约束信息。

通过INFORMATION_SCHEMA查看约束条件

在MySQL中,我们还可以通过查询INFORMATION_SCHEMA库来查看表上所有的约束条件。比如,我们可以使用如下命令来查询student表上的所有约束条件:

SELECT
    TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
    TABLE_SCHEMA = 'your_database_name'
        AND TABLE_NAME = 'student'
ORDER BY
    TABLE_NAME, CONSTRAINT_NAME;

运行结果如下所示:

+------------+-------------+------------------------+------------------------+------------------------+
| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME        | REFERENCED_TABLE_NAME   | REFERENCED_COLUMN_NAME |
+------------+-------------+------------------------+------------------------+------------------------+
| student    | id          | PRIMARY                |                        |                        |
| student    | id          | student_code           |                        |                        |
| student    | grade       | audit_grade            |                        |                        |
| student    | grade       | FK_student_reference_1 | grade_summary          | grade                  |
| student    | grade       | FK_student_reference_2 | grade_summary          | avg_grade              |
| student    | age         | check_student_age      |                        |                        |
+------------+-------------+------------------------+------------------------+------------------------+

从上面的结果中,我们可以清晰地看到student表的全部结构信息,包括了每一列的详细信息,以及该表上的所有约束条件信息,比如主键、唯一键、外键等等。

结论

在MySQL中,我们可以通过DESC命令、SHOW命令和INFORMATION_SCHEMA库来查看表上的所有约束条件。其中,DESC命令和SHOW命令可以直接查询表的结构信息和约束信息,使用方便,但是显示信息不够详细;而INFORMATION_SCHEMA库可以查询表上的全部结构信息和约束信息,可以提供较为详细的依据,但是查询复杂度较高,不太方便使用。根据业务需求,我们可以选择使用以上任何一种方法来查询我们所需要的信息。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程