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