Mysql 这是关于在sql中添加约束的

Mysql 这是关于在sql中添加约束的,mysql,constraints,primary-key,Mysql,Constraints,Primary Key,在这里我不明白什么是PK_学生在添加约束??写这篇文章的目的是什么 添加约束中的PK_学生是什么 每个约束必须有一个名称(更确切地说是“符号”)。此符号在整个数据库中必须在该约束类型上唯一(主键、唯一索引、外键、检查) 因此,这是为主键约束指定名称的尝试 一次毫无意义的失败尝试 主键约束没有名称(或未显示在SHOW CREATE TABLE中),但作为参考,主键约束具有静态、保留和未更改的别名Primary(即,只能创建名为Primary的主键约束或主键索引)。或者主键的名称始终为primary

在这里我不明白什么是PK_学生在添加约束??写这篇文章的目的是什么

添加约束中的PK_学生是什么

每个约束必须有一个名称(更确切地说是“符号”)。此符号在整个数据库中必须在该约束类型上唯一(主键、唯一索引、外键、检查)

因此,这是为主键约束指定名称的尝试

一次毫无意义的失败尝试

主键约束没有名称(或未显示在
SHOW CREATE TABLE
中),但作为参考,主键约束具有静态、保留和未更改的别名
Primary
(即,只能创建名为
Primary
的主键约束或主键索引)。或者主键的名称始终为
primary
,但它没有显示在
SHOW CREATE TABLE
中-它是相同的

因此名称
PK_Student
将被忽略。你可以在地图上看到这一点


换言之:

  • 除了
    主键
    之外,主键的约束符号或索引名将被忽略
  • 将符号/名称
    PRIMARY
    分配给主键以外的约束或索引将失败

  • 特别是在MySQL中,主键的约束名称被忽略。我在我的
    test
    schema中测试了创建示例表,然后检查了元数据:

    CREATE TABLE STUDENT(
    ROLL_NO INT NOT NULL,
    STU_NAME VARCHAR (35) NOT NULL UNIQUE,
    STU_AGE INT NOT NULL,
    STU_ADDRESS VARCHAR (35) UNIQUE,
    CONSTRAINT PK_Student PRIMARY KEY (ROLL_NO)
    );
    
    您可以看到主键约束只是简单地命名为“PRIMARY”,而忽略CREATETABLE语句中的约束名称

    命名约束是有效的SQL语法,但MySQL在这种情况下会自动忽略它

    在其他一些品牌的SQL数据库(如Oracle或Microsoft)中,约束名称会被记住


    约束有名称,以便您可以在元数据中检查它们,或者在某些情况下,可以通过指定名称来删除它们。

    我不认为PK是一个约束,尽管我在技术上可以理解这一点。“Strawberry,是的,PK是一个约束。例如,它出现在TABLE_CONSTRAINTS元数据表中。对于主键约束,将忽略约束名称
    PK_Student
    ,而对于其他约束类型,将存储该名称@BobJarvis表示,除了PK one之外,我没有提到约束/指数的名称。我只说过:1)PK的约束名称或索引名称而非主键将被忽略2)将名称
    主键
    分配给约束或索引而非主键将失败。我只是指出这一点,以方便阅读您的答案但还不知道这一点的任何人。
    mysql> select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where constraint_schema='test';
    +--------------------+-------------------+-----------------+--------------+------------+-----------------+
    | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE |
    +--------------------+-------------------+-----------------+--------------+------------+-----------------+
    | def                | test              | PRIMARY         | test         | STUDENT    | PRIMARY KEY     |
    | def                | test              | STU_NAME        | test         | STUDENT    | UNIQUE          |
    | def                | test              | STU_ADDRESS     | test         | STUDENT    | UNIQUE          |
    +--------------------+-------------------+-----------------+--------------+------------+-----------------+