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

主外关联删除(on delete set null和on delete cascade)

主外关联,当删除是父表数据,参照这些要删除数据,Oracle有三种处理方式: 1、禁止删除,也是Oracle默认方法。 2、将参照要删除数据子表对应数据置空。...3、将参照要删除数据子表对应数据删除。 对于1,比较容易理解,不解释。 对于2,需要使用on delete set null建立外约束。...对于3,需要使用on delete cascade建立外约束。...-------- -------------------- ----------      3 Linda          Liu                     2 可以看到子表中参照父表行也被删除了...ERROR at line 1: ORA-02266: unique/primary keys in table referenced by enabled foreign keys 这种删除表和上面相同

2.8K30

【数据库】MySQL进阶一、主外讲解

MySQL进阶主外讲解 1.什么是外: 主键:是唯一标识一条记录,不能有重复,不允许为空,用来保证数据完整性 外:是另一表主键, 外可以有重复, 可以是空值,用来和其他表建立联系用...Id=Dept_id,而Dept_id就是员工表中:因为员工表中员工需要知道自己属于哪个部门,就可以通过外Dept_id找到对应部门,然后才能找到部门表里各种字段信息,从而让二者相关联。...所以说,外一定是在从表中创建,从而找到与主表之间联系;从表负责维护二者之间关系。 2.外使用需要满足下列条件:(这里涉及到了InnoDB概念) 1....注:InnoDB是数据库引擎。MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外。 2. 建立外关系对应列必须具有相似的InnoDB内部数据类型。...CASCADE(级联):如果主表记录删掉,则从表中相关联记录都将被删掉。 SET NULL:将外设置为空。

2K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mysql join关联查询需注意问题

    3. join优化 用小结果集驱动大结果集,尽量减少join语句中Nested Loop循环总次数; 优先优化Nested Loop内层循环,因为内层循环是循环中执行次数最多,每次循环提升很小性能都能在整个循环中提升很大性能...; 对被驱动表join字段上建立索引; 当被驱动表join字段上无法建立索引时候,设置足够Join Buffer Size。...Join Buffer会缓存所有参与查询列而不是只有Join列。...可以通过调整join_buffer_size缓存大小 join_buffer_size默认值是256K,join_buffer_size最大值在MySQL 5.1.22版本前是4G-1,而之后版本才能在...在进行block_NEST_loop_join 算法时候会将驱动表和 被驱动表查询数据放入到一个内存块中(JOIN buffer size) 其初始内存大小为256K 这个东西也可以进行设置)当查询数据比较打的时候会进行分块存储

    1.4K50

    mysql跨库关联查询(创建视图)

    在 SQL 中,视图是基于 SQL 语句结果集可视化表。 视图包含行和列,就像一个真实表。视图中字段就是来自一个或多个数据库中真实表中字段。...我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一表。...二、使用场景: 我们使用场景是:我们使用是微服务架构,考虑是模块划分,分为了业务配置服务,基础服务,业务服务等模块,数据库也进行了拆分,不同模块使用不同数据库。...由于微服务划分,导致,一些查询,需要跨模块表与表之间关联查询,设计到跨库。...三、跨库创建视图语法: 创建视图: create view 视图名称 as ( SELECT 库名.表名.列名 AS 列重命名.....

    10.1K20

    mysql 多表查询和更新_MySQL update select 多表关联查询更新

    在遇到需要update设置参数来自从其他表select出结果时,需要把update和select结合使用,不同数据库支持形式不一样,在mysql中如下: update A inner join(select...id,name from B) c on A.id = c.id set A.name = c.name; 根据AB两个表id相同为条件,把A表name修改为Bsql语句就如上所示 参考文章:...* [UPDATE从SELECT使用SQL Server – 代码日志](https://codeday.me/bug/20170212/192.html) * [MySQL多表关联UPDATE操作...– jsyandxys博客 – CSDN博客](https://blog.csdn.net/jsyandxys/article/details/83584410) * [mysql中update和select...结合使用 – 404NotFound博客 – CSDN博客](https://blog.csdn.net/qq_36823916/article/details/79403696) * [MySQL

    3.9K10

    mysql如何执行关联查询与优化

    mysql如何执行关联查询与优化 一、前言 在数据库中执行查询(select)在我们工作中是非常常见,工作中离不开CRUD,在执行查询(select)时,多表关联也非常常见,我们用也比较多,那么...mysql内部是如何执行关联查询呢?...今天我们就来揭开mysql关联查询神秘面纱。 二、mysql如何执行关联查询   mysql关联执行策略很简单:mysql对任何关联都执行嵌套循环关联操作。...三、关联查询优化器   mysql优化器最重要一部分就是关联查询优化,它决定了多个表关联顺序。通常多表关联时候,可以有多种不同关联顺序来获得相同结果。...至此,mysql是如何进行关联查询,以及优化,已经介绍完了,欢迎大家多多交流。

    3.3K30

    mysql大量数据分页查询优化-延迟关联

    所有的php初学者都应该知道,mysql分页语句写法如下: select * from a limit (page-1)*page_size,page_size 而当这语句分页到一定程度时,例如1000...页,每页20条 select * from a limit 19980,20 会发现分页之后查询会越来越慢 原因是因为limit a,b 取数据方式是,先取出a+b条数据,再把a条筛选掉,剩b条...,相当于一次性要取a+b条数据,而a条其实是无用 解决方案如下 一:php代码解决 例如我们先查询出第一页数据: select * from a limit 20 保留最后一个id,当需要取第2...,然后才从索引里关联取出20条记录,大大提升了查询速度 实例图: ?...普通方法查询,0.123秒 上一页最后一个id为20000,则 ?  php方法查询,0.070秒 ? mysql索引覆盖查询,0.089秒

    2.6K20

    【说站】mysql使用关联查询注意点

    mysql使用关联查询注意点 1、确保ON和USING字句中列上有索引。 在创建索引时候就要考虑到关联顺序。...实例 假设MySQL按照查询关联顺序A、B来进行关联操作,那么可以用下面的伪代码表示MySQL如何完成这个查询: outer_iterator = SELECT A.xx,A.c FROM A WHERE...A.xx列来查询,A.c上如果有索引的话,整个关联查询也不会使用。...再看内层查询,很明显B.c上如果有索引的话,能够加速查询,因此只需要在关联顺序中第二张表相应列上创建索引即可。...以上就是mysql使用关联查询注意点,算是对关联查询优化,大家学会后也赶快试试吧。更多mysql学习指路:MySQL 推荐操作系统:windows7系统、mysql5.8、DELL G3电脑

    95030

    MySQL3_外查询

    文章目录 MySQL_外查询 1.数据完整性 (1).保证实体完整 (2).保证域完整性 (3).引用完整性 (4).自定义完整性 2.外 3.实体之间关系 (1).一对一:主键关系 (...13.插入语句其它用法 MySQL_外查询 1.数据完整性 1.实体完整性,一条记录,就是一个实体,如果记录无法区分,则失去了实体完整性 2.域完整性:如果有两个字段无法区分,则失去了域完整性...).自定义完整性 1.存储过程(相当于python中自定义函数) 2.触发器 2.外:从表公共字段 外约束主要是用来保证引用完整性,主外名字可以不一样,但是数据类型可以一样...._1 外名字,外可以有多个 alter table score drop foreign key score_ibfk_1; #外只能在innodb引擎上使用 3.实体之间关系 实体关系...,建立表,设定关联度.

    3K20
    领券