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

SQL初学者问题:从主表填充一些子表的原则是什么?

从主表填充子表的原则是根据主表和子表之间的关系来确定。在SQL中,主表和子表之间通常通过外键关联。以下是填充子表的原则:

  1. 确定主表和子表之间的关系:主表和子表之间可以是一对一关系、一对多关系或多对多关系。根据关系的不同,填充子表的方法也会有所不同。
  2. 使用INSERT语句插入数据:根据主表和子表的关系,使用INSERT语句将数据插入到子表中。在插入数据时,需要确保子表中的外键列与主表中的主键列相匹配。
  3. 使用SELECT语句查询主表数据:在填充子表之前,通常需要先查询主表中的数据。可以使用SELECT语句查询主表中的数据,并将结果用于填充子表。
  4. 根据业务需求确定填充子表的方式:填充子表的方式可以根据具体的业务需求来确定。例如,可以使用循环遍历主表的每一行,并根据每一行的数据填充子表。
  5. 确保数据的一致性和完整性:在填充子表时,需要确保数据的一致性和完整性。这包括验证外键关系是否正确、处理主表数据的更新和删除等。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议您访问腾讯云官方网站或进行在线搜索,以获取相关产品和介绍信息。

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

相关·内容

外键要建立索引原理和实验

但发现有时开发人员提交SQL语句时未必会注意外键列需要定义索引,或者不清楚为什么外键列需要建立索引,网上一些所谓“宝典”也会将外键列建索引作为其中一条,包括TOM大师,曾说过: 导致死锁头号原因是外键未加索引...在以下两种情况下,Oracle在修改父表后会对子表加一个全表锁: 1)如果更新了父表主键(倘若遵循关系数据库原则,即主键应当是不可变,这种情况就很少见),由于外键上没有索引,所以子表会被锁住。...2)如果删除了父表中一行,整个子表也会被锁住(由于外键上没有索引)。 因此,无论什么角度看,都有必要从原理上好好理解外键为何需要创建索引,或者说外键不创建索引会有什么问题?...当满足以下两个条件时,会获取子表表锁: (1) 子表外键不存在索引。 (2) 修改主表主键(例如,删除一行记录或者修改主键值)或者合并主表多行记录。...实验1 session 1删除主表id=2记录: SQL> delete from t1 where id = 2; 1 row deleted. session 2删除子表id=1记录: SQL>

2.6K20

enq: TM - contention锁争用解决

经过应用确认,该语句正是应用处理慢事务逻辑中开始一个操作,这个TABLE表是另一张主表子表,且是通过ON DELETE CASCADE级联来定义外键约束,夜维程序则是直接删除主表,级联自动删除子表数据...,主表一次删除150条左右记录,对应到子表300条,不存在删除数据量较大导致执行缓慢可能,有理由怀疑,夜维程序DELETE主表和这条DELETE子表之间存在某些关联。...上面的测试,告诉我们外键无索引,对主表操作,无论删除,还是插入,都会对子表加锁,可能请求mode=3锁,或者mode=5锁,都是有影响,但是,如果我们对外键创建索引, SQL> CREATE...外键supplier_id没索引,因此,夜维删除主表操作,就会对子表加锁,和应用中删除子表操作之间,就会存在TM锁争用。 为supplier_id这个外键字段,创建单键值索引,即可解决这问题。...因此,一个问题解决,除了从技术上看,还是要从他原始需求了解,这么做是不是真的有必要,根本解决,才是最重要

1.2K20

Oracle 索引监控与外键索引

而在11g则不会出现类型情形。其次对于存在子表存在外键情形,对于主表进行操作时是否会导致索引被监控呢?下面描述是这个话题。...--为子表填充数据 SQL> begin 2 for i in 1 .. 1000000 3 loop 4 insert into ctb values(i,'name_'||...SQL> set autot trace stat; SQL> delete from ptb where deptno=30; --再次主表删除纪录 1 row deleted....,对于主表得DML操作不会使得子表索引被使用     b、尽管子表索引不会由于主表DML操作被监控到,但如果子表外键索引不存在,主表DML会产生更多一致读(相对外键索引存在)     c、由上可知...,对于外键索引未被监控到情形,不可盲目的认为该索引无效而删除     d、对于子表不存在索引情形,对于主表主键更新以及删除主表一行都将导致整个子表被锁住

63420

一个开发需求解决方案 & Oracle临时表介绍

一、开发需求 最近有一个开发需求,大致需要先使用主表,或主表和几张子表关联查询出ID(主键)及一些主表字段,然后再用这些ID查找最多10张表中对应记录,主表记录数大约2000万,每张子表记录数均为百万以上...现在开发使用逻辑是: 1.使用条件查询主表主表和几张子表(不同场景)符合条件主表记录ID值及其他一些主表字段项。...2.利用这些主表ID值,分别和几张子表使用IN子句,查询出子表中符合条件记录项。有几张子表,就执行几次SQL语句。...这么做弊端是: 由于(1)查出ID值最多可能会有100个以上,因此子表使用IN子句时候很有可能导致CBO选择全表扫描,虽然理论上说,一条SQL未必适用索引扫描效率就一定高,CBO一定是基于现有的统计信息选择一条成本值最低执行计划...方案3,唯一好处就是避免了大表全表扫描,但代价是会多一些SQL交互,至于究竟是否可以弥补性能上差异,只能待性能测试结论来看了。

94120

解决导入过程中出现ORA-02289错误

看看ORA-02298错误描述,因为存在独立字节点记录,导致生效约束操作报错, ? 通俗一些,就是子表外键对应主表主键/唯一约束键值不存在,所以此时无法生效外键约束。...方案1: 既然错误提示子表存在一些主表无记录外键值,那么只要找出这些不符合主外键关系子表记录,并且删除这些,保证子表外键记录,主表中均有对应记录。 创建测试表和相应数据, ?...使用如下SQL,可以找出子表TBL_B中外键字段id_a值未在主表TBL_A中有定义记录,并且删除, ? 此时就可以正常enable约束。...使用如下SQL,可以根据子表名称和子表外键约束名称,自动拼接出需要删除子表非法数据SQL语句,复制出来继续执行就行, SELECT ' delete from '  || a.table_name...,要从根本解决这问题,就需要确保执行expdp操作对应数据属于同一个事务。

1.4K40

General Database Adapter for Biztalk Server 2006 介绍

Receive Adapter功能说明如下 根据条件读取数据库(oracle,sql server 或是所有支持Oledb数据库)中表中数据并且可以通过设定外键约束和该主表关联所有的子表数据一起以标准...,注意:目前必须是主表子表字段名必须一致; ParentTableName:选择主表表名; PollExpression:选择记录条件,注意:不需要带 where,另外请不要使用日期型作为条件或是...ConnectionString:配置数据库连接字符窜; URL:标示唯一性 PrimaryKey:定义一个传进来报文主表关键字段,注意:该关键字段名必须也是所有子表外键,并且名字一致; PrimaryTableName...:定义一个报文中主表表名: 说明:该两个字段只有当报文中表在数据库中没有定义约束及定义关键字得时候会用到,当某个子表在数据库没有定义关键字段是着通过主表关键字段作为条件选择出所有的符合记录并且删除...,还是新增,或是什么都不作 主要类库结构如下 ?

813110

外键值可为空

感官上,外键用于限制主子表关联关系,是一种强关联关系,那么子表外键值不应该为空,而是都会关联到主表对应记录上,但实际上,至少在Oracle中,外键是可以为空,打个比方,班级是主表,学生是子表...,一个班级有多名学生,一名学生肯定会关联到一个存在班级,但来了一个转校生,还没有分班,他现在属于学生子表,但还没有关联到班级主表任何一条记录。...实验: 1.创建主表T_A,子表T_B,子表A_ID列作为外键关联到主表T_A主键ID字段。...3.直接删除有关联子表记录主表记录时,会报错: SQL> delete from t_a where id=1; delete from t_a where id=1 * ERROR...at line 1: ORA-02292: integrity constraint (BISAL.FK_B_A) violated - child record found 4.先删除子表记录,再删除主表对应记录

1.1K30

存在外键关联主表truncate如何做

主外键是数据库提供一种两表之间强制关联方法,也可以应用层实现。.... tbl_a是主表,tbl_b是子表,关联tbl_a。...现在主表子表没有任何数据,此时执行truncate主表 SQL> truncate table tbl_a; Table truncated. 可以执行。 3....主外键是数据库提供强约束,可以帮助我们控制主子表之间关系,但同时还是一把双刃剑,当然,我们认为既然定义了主外键,就是需要这种强制关系,但有时可能就会有一些变更,因此,如何取舍,需要根据实际情况来决策...主外键关联中主表,如果有数据,则不能直接用truncate方式删除,因为会认为有外键和其关联,不能直接截断主表,若需要做,可以先禁止外键约束,主表变成一个独立表,这样就可以执行truncate了。

78730

EDB无法删除分区子表错误

这是杂货铺第432篇文章 EDB相关文章, 《EDB(/PG)对于执行计划解读》 《EDB是什么数据库?》...《EDB日期类型一个问题》 最近某个应用,连接是EDB数据库,测试环境是EDB 9.2版本,在删除一张inherit方式创建分区子表(例如主表a,子表b),先用alter table b no herit...a删除关联,再drop删除子表,提示无法删除,错误提示看,主表a要依赖子表b,建议删除主表a,达到删除子表b效果。...而上述出现问题场景下,主表a使用partition by range创建,新增分区,则使用了inherit创建,效果如何,我们通过实验,模拟一下。 1....不确定这个问题,是EDB 9.2bug,还是EDB 9.3和10在设计上升级,根本思路,还是分区表创建一致性,要么使用partition by range,要么使用inherit,不会交叉使用。

1.7K30

mysql分区表_MySQL分区分表

行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。当出现这种情况时,我们可以考虑分表或分区。...merge分表,分为主表子表主表类似于一个壳子,逻辑上封装了子表,实际上数据都是存储在子表。 我们可以通过主表插入和查询数据,如果清楚分表规律,也可以直接操作子表。...**分表注意事项:** * 子表主表字段定义需要一致,包括数据类型,数据长度等; * 当分表完成后,所有的操作(增删改查)需要对主表进行,虽然主表并不存放实际数据。...第一个子表部分数据如下: 第二个子表部分数据如下: 主表部分查询部分数据如下: 数据总行数如下: 注意:总表只是一个外壳,存取数据发生在一个一个子表里面。...每个子表都有自已独立相关表文件,而主表只是一个壳,并没有完整相关表文件,当确定主表中可以查到数据和分表之前查到数据完全一致时,就可以将原来表删除了,之后对表读写操作,都可以对分表后主表进行

9.8K20

数据蒋堂 | 怎样生成有关联测试数据

根据关联字段是否是表主键(或部分主键)就可以区分出来。同一个表同时是两个表子表时,我们把这两个主表看成子表外键表,而不作为主子表处理,这样能保证没有子表有多个主表。...如果发生这三种之外情况(比如出现非主键和非主键JOIN多对多情况),那多半是用户SQL语句很错了,要明确指出来。...排定次序 知道了关联关系后,就可以排定生成数据次序了。 我们把同维表看成一个逻辑表一起处理,主子表子表则依附于主表先隐藏起来,子表其它外键表也被视为主表外键表,等主表处理完再来处理子表。...同维表可以一起生成,子表则等待主表完成后再生成,如果有多个子表之间还有引用关系(很罕见了,多个子表都较为少见),也可以用上面的办法再排出次序来生成。 专栏作者简介 ?...针对数据领域一些技术难点,站在研发人员角度浅入深,进行全方位、360度无死角深度剖析;对于一些业内观点,站在技术人员角度阐述自己思考和理解。

82020

MySQL 之分区分表

merge分表,分为主表子表主表类似于一个壳子,逻辑上封装了子表,实际上数据都是存储在子表。 我们可以通过主表插入和查询数据,如果清楚分表规律,也可以直接操作子表。...分表注意事项: 子表主表字段定义需要一致,包括数据类型,数据长度等; 当分表完成后,所有的操作(增删改查)需要对主表进行,虽然主表并不存放实际数据。...第二个子表部分数据如下: ? 主表部分查询部分数据如下: ? 数据总行数如下: ? 注意:总表只是一个外壳,存取数据发生在一个一个子表里面。...每个子表都有自已独立相关表文件,而主表只是一个壳,并没有完整相关表文件,当确定主表中可以查到数据和分表之前查到数据完全一致时,就可以将原来表删除了,之后对表读写操作,都可以对分表后主表进行...8)分区中查询数据 ?

1.6K21

360 Atlas生产环境使用心得

,可以根据情况选择,我们选择是单机分表,即一张总表拆成多张子表子表和总表都在一个Mysql实例上。...,用安装目录 bin目录下加密程序encrypt加密 event-threads 工作线程数,对性能影响大 sql-log SQL日志开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL...分表后,如果删掉主表,则不带分表字段查询会报错(如下图);如果保留主表,则查询主表数据。 ? 4....为什么这样呢,设想这样一个场景,用户一共有40条回复,假设分布在4张表中,并且分布很均匀,每张表10条记录,因为每张子表取偏移10-20记录,子表返回为空了,实际是用户是有数据,正确做法是每张表取出前...,如果确定上面都不是问题,就大胆用吧

2K41

如何追踪每一笔记录来龙去脉:一个完整Audit Logging解决方案

该操作还涉及到哪些具体Table?原来数据是什么?新数据又是什么? 本Blog目的就是基于上面提出要求设计一个Audit Logging解决方案。 ...主表T_AUDIT_LOG记录了一个Transaction基本信息:Transaction标识,执行用户帐号和操作具体时间,子表T_AUDIT_LOG_DETAIL则记录了Transaction...T_AUDIT_LOG_DETAIL结构上可以很清楚地看出,该表记录是基于某个具体Table每个记录数据变化。...由于我们Logging数据表采用是一个具有Parent-Child关系两个Table,在通过Trigger为子表T_AUDIT_LOG_DETAIL添加Log记录之前,我们必须保证主表T_AUDIT_LOG...但是这又带来了一个新问题,我们通过为一个即将被Delete记录修改Transaction No时候,他会触发我们上面定义Update Trigger,那么一些错误信息会添加到T_AUDIT_LOG_DETAIL

1.5K100

深度长文探讨Join运算简化和提速

SQL概念体系中并不区分外键表和主子表,多对一和一对多SQL观点看来只是关联方向不同,本质上是一回事。确实,订单也可以理解成订单明细外键表。...如果我们把子表中与主表相关记录看成主表一个字段,那么这个问题也可以不再使用JOIN以及GROUP BY: SELECT id, customer, OrderDetail.SUM(price) FROM...主子表关系是不对等,不过两个方向引用都有意义,上面谈了主表引用子表情况,从子表引用主表则和外键表类似。...对于多个子表分组后与主表对齐运算,在SQL中要写成多个子查询形式。但如果只有一个子表时,可以先JOIN再GROUP,这时不需要子查询。...无非就是表属性(字段)稍复杂了一些:可能有子属性(外键字段指向维表并引用其字段),子属性可能还有子属性(多层维表),有些字段取值是集合而非单值(子表看作为主表字段)。

44710

基于Flink+Hudi在兴盛优选营销域实时数仓实践

一般遇到这种多流join场景我们会基于flinkDataStream API方式进行实现,DataStream API方式相对sql比较灵活,但是更底层一点,细节考虑多一些。...sql的话是比较上层抽象,底层细节已经封装好了,灵活性也大打折扣,无法满足一些特殊复杂场景。...4.数据流向图 图表2 数据流向图 图2是营销实时核销一个数据流向,其中支付券主表、支付券子表、订单子表这三个都是接生产业务库实时产生binlog消息,然后通过数据同步组件同步到kafka,...在procesElement1方法里面[图4],支付券主表会去支付券子表存储状态数据,如果能在状态里找到对应支付券子表数据,我们就把它们关联起来然后输出出去,并通过迭代器把已经找支付券子表数据状态中移除...,也遇到不少问题和补过很多次数,经过不断总结和分析,我们当前初步探索出一些针对复杂场景解决办法。

46410

轻松学习SQL外键约束核心原理和实用技巧

SQL 约束-外键约束简介外键约束(FOREIGN KEY,缩写 FK)是用来实现数据库表参照完整性。...它是指表中某个字段值依赖于另一张表中某个字段值,而被依赖字段必须且有主键约束或者唯一约束。被依赖表通常称之为父表或者主表,设置外键约束表称为子表表。...相关概念主键:可以唯一标识一条记录列外键:表中与主表主键对应字段主表:外键所指向表,约束其他表表:外键所在表,被约束表价值:建立主表关联关系,为两个表数据建立连接,约束两个表中数据一致性和完整性建立外键约束创建表时添加外键约束...id=2部门DELETEFROMdeptWHEREid=2#查看表中数据是否同时被删除SELECT*FROMemp_part总结SQL外键约束是一种参照完整性约束,它用于确保两个表之间数据一致性...当在子表中插入或更新数据时,外键约束确保所提供外键值必须在父表相应主键或唯一键值范围内。如果父表中不存在相应值,则操作将失败,从而确保了数据完整性和一致性。

19110

基于Flink+Hudi在兴盛优选营销域实时数仓实践

一般遇到这种多流join场景我们会基于flinkDataStream API方式进行实现,DataStream API方式相对sql比较灵活,但是更底层一点,细节考虑多一些。...sql的话是比较上层抽象,底层细节已经封装好了,灵活性也大打折扣,无法满足一些特殊复杂场景。...2.相对流状态里面找到同一个key数据,然后join输出。...在procesElement1方法里面[图4],支付券主表会去支付券子表存储状态数据,如果能在状态里找到对应支付券子表数据,我们就把它们关联起来然后输出出去,并通过迭代器把已经找支付券子表数据状态中移除...,也遇到不少问题和补过很多次数,经过不断总结和分析,我们当前初步探索出一些针对复杂场景解决办法。

83820
领券