当前位置: 首页 > 面试题库 >

MySQL中外键的基础?

越欣怡
2023-03-14
问题内容

关于如何使用MySQL的外键构造有什么好的解释?

我不太了解MySQL文档本身。到目前为止,我一直在通过联接和编程代码处理诸如外键之类的事情。

问题的第二部分,使用MySQL的内置外键是否有任何改进?


问题答案:

FOREIGN KEYS 只要确保您的数据是一致的。

他们没有从效率上改善查询,只是使一些错误的查询失败。

如果您有这样的关系:

CREATE TABLE department (id INT NOT NULL)
CREATE TABLE employee (id INT NOT NULL, dept_id INT NOT NULL, FOREIGN KEY (dept_id) REFERENCES department(id))

,那么你就不能删除department,如果它有一些employee的。

如果你提供ON DELETE CASCADEFOREIGN KEY定义,引用行会自动与引用的那些一起被删除。

作为约束,FOREIGN KEY实际上会使查询变慢了一点。

从引用表中删除或插入引用表时,需要执行额外的检查。



 类似资料:
  • 问题内容: 我有一个表,该表的主键包含两列(product_id,attribute_id)。我有另一个表需要引用该表。如何在另一个表中创建外键,以使用两个主键将其链接到表中的行? 问题答案: 这样的事情应该做到: MySQL要求对外键进行索引,因此引用列上的索引 使用约束语法使您能够命名约束,从而在以后需要时更容易更改和删除。 InnoDB强制使用外键,而MyISAM不强制。(语法已解析但被忽略

  • 问题内容: 我对在MySQL中添加外键有些困惑 我想做的是参考带有以下内容的学生主键: 但是,我得到的是 我四处搜寻,发现 MySQL“错误1005(HY000):无法创建表’foo。#sql-12c_4’(errno:150)” 但是,我的学生表已经有一个主键,因此这应该不是问题: 我感觉好像缺少了一些基本的东西,但是似乎看不到它。有什么建议吗? 问题答案: 您应该在被引用表之后添加被引用列的名

  • 一开始我尝试过,如下所示,但仍然没有结果: 将两个外键定义为实体框架中的主键 实体框架两个外键作为主键 这是我的实体: 我正在尝试基于两个外键创建主键。有一个错误 EntityType“Passage”未定义键。定义此EntityType的键。 我做错了什么?

  • 问题内容: 我们正在尝试重命名MySQL(5.1.31,InnoDB)中的一列,该列是另一个表的外键。 最初,我们尝试使用Django-South,但遇到了一个已知问题: http://south.aeracode.org/ticket/243 OperationalError:(1025,“将’./xxx/#sql- bf_4d’重命名为’./xxx/cave_event’时出错(错误号:150

  • 主要内容:在创建表时设置外键约束,在修改表时添加外键约束,删除外键约束MySQL外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。 外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。比如,一个水果摊,只有苹果、桃子、李子、西瓜等 4 种水果,那么,你来到水果摊要买水果就只能选择苹果、桃子、李子和西

  • 我在表中添加了一列(下面的查询) 现在我想删除这个专栏(fk_job_id)。我尝试了这些查询,但它们给出了错误。 第一个Alter语句给出的错误为-(但该列存在)。 第二个Alter语句给出错误,因为-