对于两个通过外键关联的表,相关联字段中主键所在的表是主表,也称之为父表,外键所在的表是从表,也称之为子表,定义外键的时候需要遵守几个规则: 1、父表必须已经存在于数据库中,或者是当前正在创建的表。...列上设置外键,关联fk_test_1的表的id列,这里很明显,fk_test_1是父表,而fk_test_2是子表,接下来我们进行数据插入实验。...fk_test_2上进行删除,没有出现任何问题,而在父表fk_test_1上删除时,显示无法删除id=1的值,原因是有一个外键约束存在,也就是说,默认情况下,在父表进行删除时,无法直接删除子表中已经存在依赖关联的列值...是默认操作,它表示拒绝父表删除或者修改外键已经被子表所依赖的列,这是最安全的设置; cascade表示在父表发生删除的时候直接删除子表的记录,这是最危险的设置; set null表示父表删除的时候,对子表进行...以上是父表进行delete的操作,当父表进行update的时候,子表可以选择的情况也有以上四种,和delete基本保持一致,这里不再赘述。有兴趣可以自己测试一发。
我们实际设计中经常会不经意中使用到数据库到继承,下面分别介绍一下他们的概念: 概念解析 具体表继承 不建立父对象,将父对象的所有属性转移到子对象中,为每个子对象建立对于的表。...单表继承 在一个宽表中列出所有父对象和子对象的属性,同时用一个标识列表示该行数据存储的是哪个子类的数据。...类表继承 对父对象和每个子对象建立一个对应的表,然后在子表中设置该子表的主键为与父表关联的外键。 设计示例 假如你现在在做个教学系统,系统中有三个角色:学生、家长、老师。...、性别、教龄、学科、是否已婚) 单表继承(一张大宽表+类型字段用以区分) 用户表(ID、姓名、年龄、性别、身份证、入学时间、学号、学分、职业、学历、教龄、学科、是否已婚、类型) 类表继承(四张表:一张父表表...总结 数据库设计的原则就是没有原则,需要根据业务场景选择具体的设计方法。
mysql的数据量比较小,所有的数据都在一个mysql服务器上,自增主键是可以很好地工作的,如果mysql的数据量很大,一台主机放不下就需要进行分库分表,使用多个主机来进行存储。...此处起到约束作用的班级,就叫做“父表”(parent),被约束的这个表,就叫做子表(child)。 外键约束,是父表对 子表做了约束,但与此同时。子表也在反过来约束了父表。...id为1,被子表引用了,因此被约束,无法删除id为1的数据。 id为2,没有被引用,可以删除。 这是为什么呢?每次给子表插入数据,势必要在父表中查询一下这个id是否存在。...(相当于复制粘贴~) 查询 聚合查询 本质上是在针对行和行之间进行计算。...进行聚合,需要搭配聚合函数(SQL中内置的一组函数) 聚合函数 常见的聚合函数有: 这些操作都是针对某个列的所有行来进行运算的。
外键约束 MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候,也会自动的创建 对应的索引。...在创建索引时,可以指定在删除、更新父表时,对子表进行的相应操作,包括RESTRICT、CASCADE、SET NULL和NO ACTION。...RESTRICT和NO ACTION相同,是指限制在子表有关联记录的情况下,父表不能更新; CASCADE表示父表在更新或者删除时,更新或者删除子表对应的记录; SET NULL则表示父表在更新或者删除的时候...因为只匹配一行数据,所以很快。如将主键置于where列表中,MySQL就能将该查询转换为一个常亮。const于将“主键”或“唯一”索引的所有部分与常量值进行比较。...本质上也是一种索引访问,返回所有匹配某个单独值的所有行(多个) range :只检索给定返回的行,使用一个索引来选择行。where之后出现between,,in等操作。
,然后外部查询选择了工资高于这个平均值的所有员工。...行子查询 定义:行子查询返回的结果集是一行多列,通常与比较操作符(如=、、IN等)结合使用,但MySQL中直接使用行子查询的情况较少,更多是通过JOIN或其他方式实现类似功能。...说明:虽然MySQL支持行子查询的概念,但在实际使用中,可能更倾向于使用JOIN操作来实现相同的功能,因为JOIN在性能上通常更优,且语法更清晰。...相关性 相关子查询:子查询的结果依赖于外部查询的结果。这种子查询在每次外部查询处理一行时都会重新执行。 不相关子查询:子查询的结果不依赖于外部查询的结果。这种子查询在整个外部查询执行前只执行一次。...在可能的情况下,将复杂的子查询分解为更简单的部分,并使用临时表或CTE(公共表表达式)来存储中间结果。
TABLES语句中的表选项 engine:指定表使用的存储引擎 存储引擎:决定了数据如何存储以及如何访问,还有事务如何处理 show engines 用来查询所有支持的存储引擎 CREATE TABLE...一张表中可以定义多个外键 外键列默认可以给null值 父子表 外键所在的表叫做子表,从表 外键所引用的主键所在的表叫做父表,主表 constraint emp_deptid_fk foreign_key...(deptid) references dept(deptid) 外键的删除规则 当删除父表中的行时,如果子表中有依赖被删除的父行的子行存在,那么就不允许删除,并抛出异常(默认对外键使用on delete...cascade:级联删除,当删除父表中的行时,如果子表中有依赖于被删除父行的子行存在,那么联通子行一起删除,相当于rm -f on delete set null:当删除父表中的行时,如果子表中有依赖于被删除的父行的子行存在...-100 | +------+ 也可以使用ENUM和set来变通地实现check约束,ENUM只能选一个值,SET可以选择多个值 AUTO_INCREMENT 自增 缺点:当删除上一条时会在删除的上一条的基础上加
子表的存储位置将依赖于父表,并且在物理上紧邻存放,根据这个思路,采用基于E-R关系的数据分片策略,这样就解决了在数据分片时,join查询遇到的问题。...关联的子表表名;primaryKey 子表的主键;joinKey 做join连接查询的列名;parentKey 用于join连接查询的列在父表中对应的列名添加后,效果如下3.2 重启mycat修改配置后...,重新启动mycat服务mycat restart3.3 在数据库2创建子表此时,在mycat中进行join查询时,会报错mysql> select * from orders as o left JOIN...3.4 在mycat中重新查询进入到mycat数据端口,重新执行1中的查询。所有记录都能被查询出来。...for sql3.6 数据查询分别进入各数据库分片进行查询,可以发现子表中,与父表关联的数据,被存储于同一个数据库分片中。
公共表表达式(CTEs) 和窗口函数是选择 PostgreSQL 的主要原因。...那么当你在一个列中有一个大型 JSON 对象时会发生什么呢? Postgres 使用 TOAST,这是一个专用的影子表(shadow table)存储。当行和列被选中时,大型对象就会被拉出。...它设计目的是为了更好地使用 SSD,在 SSD 中,写入量与设备的寿命直接相关。 对 MySQL 的压缩不仅适用于页面外的大型对象,而且适用于所有页面。...它是所有主要数据库(包括MySQL,Oracle,IBM DB2和Microsoft SQL Server)支持的最古老,最重要的优化方法之一。...在MySQL上,更新发生在原地,旧的行数据被封存在一个称为回滚段的独立区域中。 结果是你不需要VACUUM,并且提交非常快,而回滚相对较慢,这对于大多数用例来说是一个可取的折衷。
; #父表更新子表更新方式 2、可视化界面设置 选中表—》关/系/外键 | F10 ——》外部键 约束名自动生成不用管,重点是后面的更新和删除关键字 三、相关关键字含义 外键约束(表2)...对父表(表1)的含义: 在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句...关键字含义CASCADE删除包含与已删除键值有参照关系的所有记录SET NULL修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于已标记为NOT NULL的字段)RESTRICT拒绝删除要求...,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最安全的设置)NO ACTION啥也不做 四、外键约束使用最多的两种情况: 场景关键字选择①父表更新时子表也更新,父表删除时如果子表有匹配的项...,删除失败;ON UPDATE CASCADE ON DELETE RESTRICT;②父表更新时子表也更新,父表删除时子表匹配的项也删除。
那么在这1分钟时间内,其他SQL能够分配的资源总量就是70,如此循环,当资源分配完的时候,所有新的SQL执行将会排队等待。...父子表中建立外键的字段数据类型需要一致 2. 关联父表时,父表的字段需要为父表 3. 如果父表为联合主键需要从第一个字段开始关联 4. 书写问题 5....,需要保证写入的数据在父表的主键列拥有该数据才能进行添加是否添加失败,用来保证数据的一致性 外键在进行建立的过程中需要重新写一行进行添加,不能跟在数据类型的后面进行建立 自增 # 自增,如果为某列设置自增列...limit,例如: select id from test limit 10000,10 可以改写为 select id from test where id > 10000 limit 10 11)当只要一行数据时使用...15)在SQL中,尽量不使用like,且禁止使用前缀是%的like匹配。 16)合理选择union all与union 17)禁止在OLTP类型系统中使用没有where条件的查询。
一、什么是约束 约束英文:constraint 约束实际上就是表中数据的限制条件 二、约束作用 表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效性 比如name字段中要让其用户名不重复,这就需要添加约束...主键约束除了可以做到”not null unique”之外,还会默认添加”索引——index” 4、一张表应该有主键字段,如果没有,表示该表无效 主键值:是当前行数据的唯一标识、是当前行数据的身份证号...即使表中两行记录相关数据相同,但由于主键值不同,所以也认为是两行不同的记录 5、按主键约束的字段数量分类 无论是单一主键还是复合主键,一张表主键约束只能有一个(约束只能有一个,但可以作用到好几个字段)...约束 有了外键引用之后,表分为父表和子表 班级表:父表 学生表:子表 创建先创建父表 删除先删除子表数据 插入先插入父表数据 存储学生班级信息 mysql> create table t_class(...:如果父表中的记录被删除,则子表中对应的记录自动被删除 父表——被外键引用的表 子表——引用父表中的健作为外健的表 on delete set null 表的关联列的值设置为null alter table
本文将深入介绍MySQL中的各种约束类型及其使用方法,包括非空约束、唯一约束、主键约束、默认约束、检查约束和外键约束,以及如何在创建表和修改表时添加约束,以及外键约束的相关知识。 一....分类: 约束 描述 关键字 非空约束 限制该字段的数据不能为null NOT NULL 唯一约束 保证该字段的所有数据都是唯一、不重复的 UNIQUE 主键约束 主键是一行数据的唯一标识,要求非空且唯一...(与 NO ACTION 一致) 默认行为 CASCADE 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则 也删除/更新外键在子表中的记录。...SET NULL 当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表 中该外键值为null(这就要求该外键允许取null)。...、分类、使用方法和外键约束的相关知识。
注意,选择列是"同时性操作",在选择列中不能使用列别名来引用列表中的其他列。...表表达式是实实在在符合关系模型的表,即使它可能只是一条或几条语句,也不会将相关数据行进行物理的存储,但在关系引擎看来,它就是表。...但是MySQL/mariadb就允许在order by中使用非select_list列进行排序。它们是如何"偷奸耍滑"的呢?...因为在GROUP BY之前甚至完全没有GROUP BY子句的语句部分,操作的对象都是表中的每行数据,也就是说操作的上下文环境是表的数据行。...在分组以前,知道了该学生的姓名"chenyi"之后,关注点可能要转化为它的主键列sid值"1",因为主键列唯一标识每一行,知道了主键值就知道了该行的所有信息。
在accounts声明为customers子表时,该主键是必须添加的,并且要保证命名、类型、限制等都必须一致。 当插入子表时需要确保父表有对应的行(即以相同父表主键开头的行)。...删除父表行需要满足其中两点之一: 在子表中没有对应的行。 声明ON DELETE CASCADE。...交错行首先按父表的行进行排序,然后在父表共享主键的基础上,对子表进行再排序。...在对数据库进行分片操作的时候,只要父表行以及子表行的大小在8GB以内,并且在子表行中没有热点,则每个父表以及子表的数据的存放区域关系会一同保留下来。...基于负载进行分片 当数据库中的一个表上的10行数据的读取频率高于表中所有其他的行,Cloud Spanner就会为这10行中的每一行添加分片边界,以便于每一行是由不同的服务器处理,以此来避免这10行数据的读写操作只消耗单台服务器的资源
如何选择 在评估用哪种整数类型的时候,你需要考虑 存储空间 和 可靠性 的平衡问题:一方 面,用占用字节数少的整数类型可以节省存储空间;另一方面,要是为了节省存储空间, 使用的整数类型取值范围太小,...约束等级 Cascade方式:在父表上update/delete记录时,同步update/delete掉子表的匹配记录。...Set null方式 :在父表上update/delete记录时,将子表上匹配记录的列设为null,但是要注意子表的外键列不能为not null。...注意点 注意,如果在子表中定义了外键约束,并且外键指定了ON UPDATE/DELETE CASCADE/SET NULL子句,此时修改父表被引用的键值或删除父表被引用的记录行时,也会引起子表的修改和删除操作...“ON DELETE SET NULL”子句,那么如果此时删除父表部门表(t_department)在子表员工表(t_employee)有匹配记录的部门记录时,会引起子表员工表(t_employee)匹配记录的部门编号
主要用在内存当中,看MySQL缓冲中是否有数据。(3)全文索引。...1.3、索引的代价(1)空间上:索引是一种存储结构,需要写入磁盘中,会占用空间,在工程应用中,一般不会超过8个索引。(2)时间上:维护的代价,体现在DML操作会变慢,因为它要维护所有索引对应的B+树。...,引用的表称为子表;-- 外键定义时,可以设置行为 ON DELETE 和 ON UPDATE,行为发生时的操作可选择:-- CASCADE 子表做同样的行为-- SET NULL 更新子表相应字段为...外键定义时,可以设置行为 ON DELETE 和 ON UPDATE,行为发生时的操作可选择:(1)CASCADE,子表做同样的行为。(2)SET NULL, 更新子表相应字段为 NULL。...(4)表的数据量少,没必要创建索引。五、总结一定要确定一个主键索引的原因是 主键索引对应的是聚集索引B+树,所有的数据要存储在主键对应的B+树中。
列的选择性值是在查询该列的典型值时返回的表中的行的百分比。 选择性为1/D,其中D是字段不同值的数目,除非检测到异常值。 选择性基于大致相等的不同值的数量。...所有值都相同的字段的选择性为100%。...在SELECT查询中指定的字段和在视图的SELECT子句中指定的字段使用相同的选择性值。 请注意,视图的行分布可能与源表不同。 这可能会影响视场选择性的精度。...在以下情况下,优化表不测量块计数: 如果表是由数组或列表集合投影的子表。这些类型的子表的BlockCount值与父表数据映射的BlockCount值相同。...如果该子集是代表性子集,则该子集只能是整个数据集的一小部分。如果联接或其他关系中涉及的表的ExtentSize保持大致相同的相对大小,则当表中的行数发生变化时,Tune Table结果仍然是相关的。
5、修改外键相关的子表,根据修改后的数据,修改外键关联的子表。 6、rename源数据表为old表,把新表rename为源表名,并将old表删除。 7、删除触发器。...除非相关的子表太大使得alter过程花费时间过长,一般都采用该方法。...这里的花费时间是通过比较子表中的行数和该工具将原始表数据拷贝到新表中的拷贝速率来评估的,如果评估后发现子表中数据能够在少于--chunk-time的时间内alter完成,就会采用该方法。...另外,因为在MySQL中alter table比外部拷贝数据的速率快很多,所以拷贝速率是按照--chunk-size-limit来决定的 因为MySQL的限制,外键在改表前后的名字会不一样,改表后新表中的外键名前会加一个下划线...--chunk-size 指定块的大小,默认是1000行,可以添加k,M,G后缀.这个块的大小要尽量与--chunk-time匹配,如果明确指定这个选项,那么每个块就会指定行数的大小.
(父表与子表) 父表约束子表,子表被约束。...当子表超出父表给定的关联值时,则会报错。需要搭配primary key来使用。 references 意思引用与父亲表中的val值。...当子表插入时,查看子表中的father_val1中的值在父表中是否存在,不存在则报错。 当父表中已经被子表引用,则无法删除或者修改,需要将子表删除后,在删除父表。...#*来获取所有行 select count(*) from table; #当输入的是字段属性时,获取的是不为null的行数 select count(colName) from table_name...primary 、foreign 、unique 中在mysql中自动生成索引(主动生成的索引不能被删除)。
ERP项目表格布局一般都很复杂,要求大数据、高性能操作 ,这个用JeecgBoot如何解决呢?...下边是我们之前服务过的一个应用行编辑的ERP项目,以强大的行编辑功能,让客户很满意,下面我们来看一下这个项目:1....客户需求每行数据可以实时编辑、自动保存,其他用户数据实时刷新并且有日历翻牌效果和无痕刷新效果;编辑类型包含:文本、下拉框、单选框、复选框、上传文件/图片(同时也可下载)等;实现效果:图片2....客户需求:列表中单击某条数据,弹出子表信息,并且不可遮挡列表选中的数据;实现效果:图片4....客户需求:想有多种布局模板,可根据需求选择不同的模板样式;实现效果:(1) ERP风格图片(2)上面父、左下子、右下孙 点击后才显示子表数据图片(3)左边选择后,记录选到右侧,右侧是父、子图片(4)左侧上边是主表
领取专属 10元无门槛券
手把手带您无忧上云