InnoDB 支持 foreign key constraints.
constraint definition in InnoDB
looks like this:
[CONSTRAINT [symbol
]] FOREIGN KEY
[index_name
] (index_col_name
, ...)
REFERENCES tbl_name
(index_col_name
,...)
[ON DELETE reference_option
]
[ON UPDATE reference_option
]
reference_option
:
RESTRICT | CASCADE | SET NULL | NO ACTION
在InnoDB引擎中,
1.constranint [symbol] 中symbol如果指定必须唯一。
2.要建立外键,必须对外键和它参照的列上建立索引。
3.外键可以参照一列或几列,并且参照的列和外键可以是在不同的表中,也可以是同一个表。
可选择的外键约束种类有,RESTRICT | CASCADE | SET NULL | NO ACTION 四种。
外键约束对子表的含义:
如果在父表中找不到候选键,则不允许在子表上进行insert/update
外键约束对父表的含义:
在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,
父表的行为取决于:在定义子表的外键时指定的on update/on delete子句,
InnoDB支持4种方式, 分列如下
. cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录,
Both ON DELETE CASCADE
and ON UPDATE CASCADE
are supported.
Note:cascaded foreign key actions do not activate triggers
. set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能设置为not null。
Both ON DELETE SET NULL
and ON UPDATE SET NULL
clauses are supported.
. Restrict方式
拒绝在父表上的删除或更新,此时如果我们将忽略其他定义在其上的约束如(ON DELETE or ON UPDATE
clause)
. No action方式
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
这个是ANSI SQL-92标准,从mysql4.0.8开始支持
在Mysql 中 Restrict 和No action 的意义是一样的。
参见 Mysql Manual: Foreign Key constraint
分享到:
相关推荐
MySQL 的企业级解决方案,高实用性以及强健的数据完整性 MySQL 事务,行级锁定,热备份以及外键支持 - - 无需损失 MySQL 的高速性能 ...InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。
在MySQL数据库系统中,InnoDB存储引擎是非常重要的一种类型,它支持事务处理(Transactions)、行级锁定(Row-Level Locking)以及外键约束(Foreign Key Constraints),这些特性使得InnoDB成为大多数应用场景中的...
数据完整性可以通过设置约束(Constraints)来实现,例如 PRIMARY KEY、FOREIGN KEY、UNIQUE KEY 等。 知识点七:测试题 测试题是 MySQL 数据库学习的重要部分,用于检测学习者的知识掌握程度。测试题可以涵盖 ...
还增加了Full-Text Search(全文搜索)和Foreign Key Constraints(外键约束)功能。 2. 并发性能优化:改进了线程池管理和查询缓存,提高了多用户环境下的性能。 3. 查询性能提升:通过优化查询执行器和改进索引...
InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。 InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。 在技术上,InnoDB 是一套放在...
本文参考资料为MySQL官方参考手册MySQL 8.0 Reference Manual条目13.1.20.6 FOREIGN KEY Constraints (吐槽一句,这个referential action我真不知道应该翻译成什么,网络上好像也没有统一的叫法,教材上它直接不配...
2. 关联查询:利用外键约束(Foreign Key Constraints)确保数据的一致性和完整性,通过省份ID和城市ID进行关联查询。 3. 数据更新:由于行政区划可能会发生变化,因此需要定期更新这些数据以保持准确性。 4. 性能...
这里的`TableName`是你要创建的表名,`Column1`, `Column2`等是表中的列名,`datatype`是对应的列数据类型,`constraints`可以是NOT NULL、UNIQUE、FOREIGN KEY等约束条件。 **运行SQL脚本** 除了手动输入SQL命令...
在MySQL数据库系统中,外键约束(Foreign Key Constraints)是一种重要的数据完整性机制,它确保了表之间的参照完整性,即一个表中的数据只能引用另一个表中存在的数据。外键约束可以防止非法数据的插入,保证数据库...
- **外键(Foreign Key)**:用于建立表之间的关联。 ### MySQL的基本操作 1. **创建数据库**: ```sql CREATE DATABASE database_name; ``` 2. **选择数据库**: ```sql USE database_name; ``` 3. **创建...
4. **外键(Foreign Key)**:用于实现表与表之间的关联,通常用来实现数据库的参照完整性。 5. **约束(Constraints)**:包括非空约束、唯一约束、检查约束等,用于限制数据输入的规则。 6. **触发器(Triggers...
- **`FOREIGN KEY`**:用于建立表之间的关联。 - **`CHECK`**:定义字段的有效范围或规则。 - **`DEFAULT`**:为字段提供默认值。 #### 五、创建更复杂的表 在实际应用中,可能需要创建包含更多字段或复杂约束的表...
4. **外键检查(FOREIGN KEY constraints)**:对于含有外键约束的表,可以在导入期间暂时关闭外键检查,以便更快地完成导入。 5. **批量插入(Multiple Insert Statements)**:使用批量插入语句代替单条记录的...
CONSTRAINT key_name FOREIGN KEY(child_col_name) REFERENCES parent_table_name(parent_col_name) ``` **2. 设置存储引擎** MySQL支持多种存储引擎,常见的有InnoDB、MyISAM和MEMORY等。不同的存储引擎适用于...
8. **约束(Constraints)**:如主键(PRIMARY KEY)、唯一性(UNIQUE)、外键(FOREIGN KEY)等,用于保证数据的完整性和一致性。 **表的创建与管理** 1. **创建表**:使用`CREATE TABLE`定义表结构,包含字段名...
- **Constraint_type**: 约束类型,可能的值包括'PRIMARY KEY'、'FOREIGN KEY'、'UNIQUE'、'CHECK'等。 #### STATISTICS 表 `STATISTICS` 表提供了关于表索引的信息。 **字段说明:** - **Table_catalog**: 数据...
- 外键码约束(Foreign Key Constraints):确保数据的引用完整性,定义表间关系。 - 非空值约束(NOT NULL Constraints):确保字段不接受空值。 - CHECK约束:用于限制列的值必须满足的条件。 - 断言约束...
ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column); ``` - **示例**: ```sql ALTER TABLE stud_table ADD CONSTRAINT fk_dept FOREIGN KEY (系部...
- **外键约束**:`FOREIGN KEY` 维护表间关系的一致性。 - **检查约束**:虽然MySQL不直接支持,但可以通过触发器实现。 - **使用INFORMATION_SCHEMA表**:查询表的约束信息,如`information_schema.table_...
同时,通过外键约束(Foreign Key Constraints)来维护数据的一致性和完整性,如帖子表中的主题ID和用户ID应与主题表和用户表的主键关联。 此外,还要考虑性能优化,比如使用索引(Indexes)加速查询,尤其是对经常...