首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建外键会改变被引用的表吗?

创建外键不会直接改变被引用的表,但它会对被引用的表产生一定的影响。外键是用来建立表与表之间的关联关系的约束,它定义了一个表中的列与另一个表中的列之间的关系。当创建外键时,会在被引用的表中创建一个索引,用于加速查询和维护数据的完整性。

具体影响如下:

  1. 数据完整性:外键约束可以确保被引用表中的数据的完整性,即被引用表中的数据必须存在于引用表中。当尝试插入或更新数据时,如果违反了外键约束,数据库会拒绝操作,从而保证数据的一致性和完整性。
  2. 查询性能:创建外键会在被引用表中创建索引,这可以提高查询的性能。当查询涉及到外键列时,数据库可以使用索引快速定位到相关的数据。
  3. 数据关联:外键可以建立表与表之间的关联关系,使得数据之间的关系更加清晰和可维护。通过外键,可以方便地进行表之间的连接查询,获取相关联的数据。
  4. 数据更新和删除:当更新或删除引用表中的数据时,外键约束会自动检查被引用表中是否存在相关的数据。如果存在相关数据,数据库会根据外键约束的设置来决定是禁止更新或删除操作,还是进行级联更新或删除。

腾讯云相关产品推荐:

  • 云数据库 MySQL:https://cloud.tencent.com/product/cdb_mysql
  • 云数据库 PostgreSQL:https://cloud.tencent.com/product/cdb_postgresql
  • 云数据库 SQL Server:https://cloud.tencent.com/product/cdb_sqlserver

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和情况进行评估。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

sqlserver语句创建表格_创建sql语句

今天介绍一下如何使用SQL Server语句创建并添加数据 首先先了解一下模式,在数据库中根据模式进行分组避免名称冲突 在SQL Server 2014中直接新建是默认前缀dbo 而命名其他模式需要使用...SQL Server语句进行创建 下面将一步一步进行演示,首先是创建一个数据库 然后创建模式在后面使用 根据创建模式或者使用默认模式名,进行创建,语句如下图 下面解释一下句子意思 看一下新建好...后面介绍如何在新表里面添加数据 根据列数和对应数据类型在括号中一一对应添加数据并使用逗号隔开 注意,以上添加数据方法需要同时添加全部字段 如果需要添加单个字段或者较多且不是全部字段则方法如下...当添加不是全部字段时注意不能为空字段必须写入数据 最后看一下添加好数据 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183704.html原文链接:https

2.2K10
  • Django中基创建字段属性简介、脏数据概念、子序列化

    Django中基设置 通过图书管理系统引入多表操作:如果我们创建方式是先抽象出之间相同字段建一个父类,然后在用每个类去继承这个父类,如下面的代码,我们将无法得到期望表字段。...db_table = 'xxx'指定该类数据库表单名字。当然如果不指定也没关系,Django自动默认按照一定规则生成数据模型对应数据库名。...反过来先操作B后操作A,更满足逻辑思维,一样可以执行。通过逻辑将A、B进行连查询,不会有任何异常。如两张建立了一对一字段,在A,那么先往B写数据就更合理。...假设图书管理系统中书、出版社、作者、作者详细信息四张之间关系如下: """ 关系 1)Book 和 Publish 一对多:在多一方 Book 2)Book 和 Author 多对多:在查询频率高一方...,假设A依赖B,B记录删除,A字段不做任何处理 例子:作者被删了,作者书还存在,书还是该作者写;出版社没了,出版社出版书还在 SET_DEFAULT:假设A依赖B,B记录删除,A字段重置为

    4.3K30

    《深入浅出SQL》问答录(六)

    ---- Q:不能单纯使用另一张,称之为,而不加上约束? A:其实可以,但创建约束后,就只能插入已经存在于父值,有助于加强两张连接。...A:约束能确保引用完整性(换句话说,如果某行有,约束能确保该行通过与另一张某一行一一对应)。...如果我们试着删除主键行或者是改变主键值,而这个主键是其他约束时,你就会收到错误警告。 ---- Q:所以上面说那种,我就不能删除了是?... 约束 创建一张并加上可作为列虽然很简单,但除非你利用CREATE或ALTER语句来指定,否则都不算是真的创建在结构内被称为约束。...插入值必须已经存在与父来源中,这是引用完整性。 创建作为约束提供了明确优势,如果违反了规则,约束阻止我们破坏不一定要是父主键,但是要具有唯一性。

    1.1K20

    《深入浅出SQL》问答录

    不能单纯使用另一张,称之为,而不加上约束? A:其实可以,但创建约束后,就只能插入已经存在于父值,有助于加强两张连接。 加强连接?是什么意思?...A:约束能确保引用完整性(换句话说,如果某行有,约束能确保该行通过与另一张某一行一一对应)。...如果我们试着删除主键行或者是改变主键值,而这个主键是其他约束时,你就会收到错误警告。 所以上面说那种,我就不能删除了是? A:还是可以,先移除外行即可。...约束 创建一张并加上可作为列虽然很简单,但除非你利用CREATE或ALTER语句来指定,否则都不算是真的创建在结构内被称为约束。...插入值必须已经存在与父来源中,这是引用完整性。 创建作为约束提供了明确优势,如果违反了规则,约束阻止我们破坏不一定要是父主键,但是要具有唯一性。 ?

    2.9K50

    SQL反模式学习笔记5 约束【不用钥匙入口】

    ; 3、数据库为建立索引影响性能; 4、当前使用数据库不支持。...1、假设无暇代码:要避免在没有约束情况下产生引用不完整状态,需要再任何改变生效前执行额外Select查询, 以此来确保这些改变不会导致引用错误。...4、可能有些用户直接操作了数据库,修改或删除引用字段值,导致其他引用发生未知错误; 而且你不能确定所有的应用程序或者脚本在访问数据库时所做操作都是正确合理。...自动完成这些,并且会使用这父索引尽可能高效完成) 3、有人说不要用影响数据库效率。...解决方案:声明约束 1、通过使用来确保应用完整性; 使用约束时:(1)数据库本身拒绝所有不合理改变,无论这个改变是通过什么方式造成

    82130

    【MySQL】04_约束

    + 非空约束组合) PRIMARY 约束 限定某个某个字段引用完整性。...FOREIGN KEY 约束 别名:约束 主表和从/父和子表 主表(父):引用参考(子表):引用别人,参考别人 例如:员工员工所在部门这个字段值要参考部门:...因为依赖/参考值必须是唯一创建约束时,如果不给约束命名,默认名不是列名,而是自动产生一个键名(例如student_ibfk_1;),也可以指定约束名。...创建(CREATE)时就指定约束的话,先创建主表,再创建时,先删从(或先删除外约束),再删除主表 当主表记录参照时,主表记录将不允许删除,如果要删除数据,需要先删除从中依赖该记录数据...不建约束,你操作(创建、删除、添加、修改、删除)不受限制,要保证数据 引用完整性 ,只能依 靠程序员自觉 ,或者是 在Java程序中进行限定 。

    2.4K20

    你真的会玩SQL?三范式、数据完整性

    ❑范式化允许修改少量数据(即单记录)。换言之,一个具体字段记录更新时,影响其他引用。...但是,设计遵从范式越高则存在“过度设计“问题,增加多表间查询开销,我们只能适度设计,适度反范式。...实体完整性:保证每一行都能由称为主键属性来标识 域完整性:保证在效范围内值才能存储到相应列中 引用完整性:确保外值必须与相关主键相匹配,禁止在从中插入包含主表中不存在关键字数据行; 用户定义完整性...:由用户指定一组规则 实现数据完整性主要方式是约束 主键约束 primary key 确保字段值不重复不为NULL 唯一约束 unique 确保字段值不重复 约束 foreign key 确保字段值必须来自于指定...检查约束 check 确保字段值取值范围 缺省约束 default  给相应字段提供默认值 注:约束即可在创创建,也可在已存在上添加 练习 ?

    87170

    【Java 进阶篇】MySQL约束详解

    创建约束 在MySQL中,要创建约束,需要遵循以下步骤: 步骤1:定义字段 首先,在引用中定义一个或多个字段,这些字段将用于与引用字段建立关联。...约束语法如下: FOREIGN KEY (字段) REFERENCES 引用(引用字段); 字段是在引用中定义字段,用于与引用字段建立关联。...引用是要与引用建立关联引用字段是引用字段,与引用字段建立关联。...步骤3:指定约束操作 您可以选择指定约束操作,以定义在引用引用中执行DML操作时行为。...索引大小: 创建约束可能增加索引大小,因此要谨慎考虑索引大小和性能。 备份和恢复: 备份和恢复数据库时,需要考虑约束影响,确保数据完整性。 9.

    91330

    2024Mysql And Redis基础与进阶操作系列(4)作者——LJS

    1.2 关键字 FOREIGN KEY 1.3 主表和从/父和子表 主表(父):引用参考(子表):引用别人,参考别人 例如:员工员工所在部门这个字段值要参考部门...因为依赖/参考值必须是唯一创建约束时,如果不给约束命名,默认名不是列名,而是自动产生一个键名 例如 student_ibfk_1,也可以指定约束名。...创建(CREATE)时就指定约束的话,先创建主表,再创建 当主表记录参照时,主表记录将不允许删除....不建约束,你操作(创建、删除、添加、修改、删 除)不受限制,要保证数据引用完整性 ,只能依靠程序员自觉 ,或者是在Java程序中进行限定 。...答案:没有 在 MySQL 里,约束是有成本,需要消耗系统资源。对于大并发 SQL 操作,有可能不适合。 比如大型网站中央数据库,可能因为约束系统开销而变得非常慢 。

    9610

    MySQL数据库基础练习系列16、在线问卷调查系统

    数据库DDL(注意创建顺序) 为了直接运行DDL语句并创建,我们需要确保在创建含有约束之前,相关引用(即键指向)已经存在。...所以我们在创建时候一定要按照一定顺序来创建,否则就会出现没有关系导致创建异常。...ID,关联usersuser_id creator_id INT, -- 创建时间,默认为当前时间戳 create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP..., -- 设置约束,确保引用数据存在 FOREIGN KEY (creator_id) REFERENCES users(user_id) ); -- 创建问题 CREATE...- 问题类型,如单选、多选、文本等,不能为空 question_type VARCHAR(50) NOT NULL, -- 设置约束,确保引用数据存在 FOREIGN KEY

    14610

    MySQL约束详接

    从以下四个方面考虑: 什么是约束 约束是强制规定。 可以在创建时规定约束(通过 CREATE TABLE 语句),或者在创建之后通过 ALTER TABLE 语句规定约束。  ...MySQL会给唯一约束列上默认创建一个唯一索引。 添加唯一约束 举例:    删除唯一约束 添加唯一性约束列上也自动创建唯一索引。 删除唯一约束只能通过删除唯一索引方式删除。...每次计数器发生改变,都会将其写入重做日志中。如果数据库重启,InnoDB根据重做日志中信息来初始化计数器内存值。 FOREIGN KEY 约束 作用 限定某个某个字段引用完整性。...FOREIGN KEY关键字  主表和从/父和子表 主表(父):引用参考(子表):引用别人,参考别人 例如:员工员工所在部门这个字段值要参考部门:部门是主表,员工是从...总结:约束关系是针对双方添加了约束后,主表修改和删除数据受约束添加了约束后,从添加和修改数据受约束在从上建立,要求主表必须存在删除主表时,要求从先删除,或将从中外引用该主表关系先删除

    1.8K10

    【重学 MySQL】六十六、约束使用

    关键字 FOREIGN KEY 主表和从/父和子表 主表(父):引用参考(子表):引用别人,参考别人 例如:员工员工所在部门这个字段值要参考部门:部门是主表,...因为依赖/参考值必须是唯一创建约束时,如果不给约束命名,默认名不是列名,而是自动产生一个键名(例如 student_ibfk_1;),也可以指定约束名。...创建(CREATE)时就指定约束的话,先创建主表,再创建时,先删从(或先删除外约束),再删除主表 当主表记录参照时,主表记录将不允许删除,如果要删除数据,需要先删除从中依赖该记录数据...不建约束,你操作(创建、删除、添加、修改、删除)不受限制,要保证数据引用完整性,只能依靠程序员自觉,或者是在Java程序中进行限定。...对于大并发 SQL 操作,有可能不适合。比如大型网站中央数据库,可能因为约束系统开销而变得非常慢。所以, MySQL 允许你不使用系统自带约束,在应用层面完成检查数据一致性逻辑。

    7810

    【MySQL 系列】MySQL 语句篇_DDL 语句

    DELETE 返回删除行数; 如果一个其他引用,对此 TRUNCATE 操作失败。 2.3、数据列操作 MySQL 允许您使用 ALTER TABLE 语句来修改一个现有的。...你也不能为一个城市设定一个不存在 country_id,否则这个城市数据就是错误。 3.2.1、创建 通常,所属被称作子表,引用被称作父。...它是可选; 位于 FOREIGN KEY 关键字之后是作为列名; 位于 REFERENCES 关键字之后引用和列; ON DELETE 和 ON UPDATE 指定了删除或更新引用数据时要采取约束策略...我们可以使用以下 3 个策略中一个: CASCADE:如果引用一行被删除或更新,该中匹配行自动删除或更新。...RESTRICT: 如果引用一行在该中有匹配行,试图删除或更新引用中行时会引发 MySQL 错误。这是默认策略。

    24510

    从 MySQL 物理开始思考

    我们来看个例子,然后我们根据以下点来分析: 一、性能问题 我刚写了一些,然后发现有人写更好而且简洁,就引用吧:@mysqlops 为何说有性能问题: 1.数据库需要维护内部管理; 2....等于把数据一致性事务实现,全部交给数据库服务器完成; 3.有了,当做一些涉及字段增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源; 4.还会因为需要请求对其他内部加锁而容易出现死锁情况...这样后果之一是BLOB和TEXT列不被包括在一个中,这是因为对这些列索引必须总是包含一个前缀长度 InnoDB不对那些或包含NULL列引用键值检查约束 关于对SQL标准背离(这里只贴其中一个点...四、对拓展性限制和影响 计划赶不上变化,主从关系是定,然后你因为这个做很多事情,但是万一哪天主键所在就见鬼去了呢?万一哪天你发现不是非得跟人家主键挂上关系呢?...即使你对业务理解深刻,对外也掌握透彻,你也不太希望老是你管一部分他管一部分吧? 五、反对声音 最后再来说说一些坚持用思考 有人问:原本在物理开销,在程序上不也有开销

    3.8K20

    Sentry 开发者贡献指南 - 数据库迁移

    目录 命令 将您数据库升级到最新 将您数据库移动到特定迁移 为迁移生成 SQL 生成迁移 将迁移合并到 master 指南 过滤器 索引 删除列/ 重命名表 添加列 向列添加 NOT...如果该在其他中被引用,则需要格外小心。...在这种情况下,首先删除其他列,然后返回到此步骤。 通过在列上设置 db_constraint=False,删除此到其他任何数据库级约束。...部署 从 sentry 代码库中删除模型和所有引用。确保迁移仅将状态标记为已删除。 部署。 创建一个删除迁移。... 创建大多没问题,但是对于像 Project、Group 这样大/繁忙,由于获取锁困难,它可能导致问题。您仍然可以创建 Django 级别的,而无需创建数据库约束。

    3.6K20

    第13章_约束

    因为依赖 / 参考值必须是唯一 (2)在创建约束时,如果不给约束命名,默认名不是列名,而是自动产生一个键名(例如 student_ibfk_1;),也可以指定约束名。...(3)创建 (CREATE) 时就指定约束的话,先创建主表,再创建 (4)删时,先删从(或先删除外约束),再删除主表 (5)当主表记录参照时,主表记录将不允许删除,如果要删除数据...,需要先删除从中依赖该记录数据,然后才可以删除主表数据 (6)在 “从” 中指定约束,并且一个可以建立多个约束 (7)从列与主表参照列名字可以不相同,但是数据类型必须一样,...emp引用了,所以部门1001字段对应记录就不能被删除 总结:约束关系是针对双方 添加了约束后,主表修改和删除数据受约束 添加了约束后,从添加和修改数据受约束 在从上建立...不建约束,你操作(创建、删除、添加、修改、删除)不受限制,要保证数据 引用完整性 ,只能依 靠程序员自觉 ,或者是 在Java程序中进行限定 。

    37930

    MySQL使用详解--Java学习网

    (1)只有InnoDB类型才可以使用,mysql默认是MyISAM,这种类型不支持约束 (2)好处:可以使得两张关联,保证数据一致性和实现一些级联操作; (3)作用: 保持数据一致性...使两张表形成关联,只能引用外表中值! (4)建立前提: 两个必须是InnoDB类型。 使用在外关系域必须为索引型(Index)。...使用在外关系域必须与数据类型相似 (5)创建步骤 指定主键关键字:foreign key(列名) 引用关键字:references (列名) (6)事件触发限制:on delete...(7)举例 outTable 主键 id 类型 int 创建含有: 代码如下: create table temp( id int, name char(20), foreign key...本中对应列筛除 当改变中对应列值改变

    92140
    领券