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

【Java 进阶篇】MySQL约束详解

创建约束 在MySQL中,要创建约束,需要遵循以下步骤: 步骤1:定义字段 首先,在引用表中定义一个或多个字段,这些字段将用于与被引用表中的字段建立关联。...步骤2:创建约束 接下来,使用FOREIGN KEY关键字来创建约束。...4.3 引用约束 引用约束是指一个表中的关联到该表中的另一个字段,通常用于表示层次结构关系。...ID字段上创建一个约束,将其与客户表的客户ID字段关联起来。...约束的性能 约束可能会对数据库的性能产生一定影响,特别是在执行大量的插入、更新和删除操作时。以下是一些影响约束性能的因素: 索引维护: 约束通常需要创建索引来加速引用表的查找操作。

68030

MySQL复习笔记(2)-约束

一个表中的字段引用另一个表的主键 主表: 主键所在的表,约束别人的表,将数据给别人用 副表/从表: 所在的表,被约束的表,使用别人的数据 创建 CREATE TABLE 表名 ( 字段名...FOREIGN KEY(约束名); 级联 在修改和删除主表的主键时,同时更新或删除副表的键值,称为级联操作 ON UPDATE CASCADE – 级联更新,主表更新时,从表跟着更新 ON...NAME VARCHAR(30), age INT, dep_id INT, -- 添加约束,并且添加级联更新和级联删除 CONSTRAINT employee_dep_fk...两种建表原则: 唯一:主表的主键和从表的(唯一),形成主外关系,唯一UNIQUE 是主键:主表的主键和从表的主键,形成主外关系 一对 例如:班级和学生,部门和员工,客户和订单,...分类和商品 一对建表原则: 在从表(多方)创建一个字段,字段作为键指向主表(一方)的主键 例如:老师和学生,学生和课程 对多关系建表原则: 需要创建第三张表,中间表中至少两个字段,这两个字段分别作为键指向各自一方的主键

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

系统学习javaweb-10-Hibernate的配置与api操作

基于) 继承映射(extends 所有子类映射到一张表、每个类映射一张表、每个子类映射一张表) 4.1 集合映射 (collection)用户与收货地址,一个用户对应多个地址 4.2...在保存部门的时候,同时保存员工, 数据会保存,但关联关系不会维护,即字段为NULL 2. 获取数据 无影响 3....先清空引用,再删除数据。 inverse=true,没有控制权: 如果删除的记录有被引用,会报错,违反主外引用约束。如果删除的记录没有被引用,可以直接删除。...级联保存、更新、删除 4.3 映射 维护关联关系 设置inverse属性,在对多种维护关联关系的影响 1....基于 mapping.one2one 对一映射添加unique=”true”属性 2.

92820

【MySQL】04_约束

特点: 从表的列,必须引用/参考主表的主键或唯一约束的列。为什么?...当创建约束时,系统默认会在所在的列上建立对应的普通索引。但是索引名是的约束名。...不建约束,你的操作(创建表、删除表、添加、修改、删除)不受限制,要保证数据的 引用完整性 ,只能依 靠程序员的自觉 ,或者是 在Java程序中进行限定 。...那么建和不建约束不影响查询语句执行 阿里开发规范 【 强制 】不得使用级联,一切概念必须在应用层解决。...级联更新适用于 单 机低并发 ,不适合 分布式 、 高并发集群 ;级联更新是强阻塞,存在数据库 更新风暴 的风险;影响 数据库的 插入速度 。

2.4K20

为什么数据库不应该使用

我们在前面的文章中曾经分析过 为什么 MySQL 的增主键不单调也不连续,这篇文章我们来分析关系型数据库中另一个重要的概念 — (Foreign Key)。...从 SQL 语句中的 CONSTRAINT 关键字我们也能推测出外不是一种数据类型,它是不同关系表之间的约束。 ?...一致性检查 当我们使用默认的类型 RESTRICT 时,在创建、修改或者删除记录时都会检查引用的合法性。...级联操作 当我们在关系型数据库中创建约束时,如果使用如下所示的 SQL 语句指定更新或者删除记录时使用 CASCADE 行为,那么在客户端更新或者删除数据时就会触发级联操作: ALTER TABLE...手动实现数据库的级联删除操作是可行的,如果我们在一个事务中按照顺序删除所有的数据,确实可以保证数据的一致性,但是这与级联删除功能没有太大的区别,反而会有更差的表现。

3K10

day30_Hibernate复习_02(补刀)

/Criteria与缓存的关系 => 查询到的对象会放入缓存中,但是每次查询都要发送sql语句。...二、多表设计:一对对一  一对的表达:     在数据库表中如何表达一对多关系:在的一方的表中加入引用的是一的一方的主键。     ...在对象中如何表达一对多关系:在一的一方使用集合表达持有的一方,在的一方引用一的一方的对象。     ...name="的一方属性的引用名称" column="的一方的键名称" class="一的一方所属对象的完整类名" /> 一对的操作:     inverse:一的一方要不要放弃维护关系...,默认值是:false     cascade:取值有:       save-update    级联保存和级联修改       delete    级联删除

34720

Hibernate之关联关系映射(一对一主键映射和一对一映射)

1:Hibernate的关联关系映射的一对一映射:   1.1:第一首先引包,省略   1.2:第二创建实体类:     这里使用用户信息和身份证信息的关系,用户的主键编号既可以做身份证信息的主键又可以做身份证信息的...--               (1)一对一映射,有方               (2)特殊的对一映射,多了一个,设置主键唯一性               (3)cascade="save-update..."级联保存               (4)用户表的主键做身份证信息的               (5)unique="true"给字段添加唯一约束              -->...-- 19 (1)一对一映射,有方 20 (2)特殊的对一映射,多了一个,设置主键唯一性 21 (3)cascade=..."save-update"级联保存 22 (4)用户表的主键做身份证信息的 23 (5)unique="true"给字段添加唯一约束 24

1.3K70

MySQL从删库到跑路_高级(一)——数据完整性

C、引用完整性:在删除和输入记录时,引用完整性保持表之间已定义的关系。引用完整性确保键值在所有表中一致,不能引用不存在的值.如果一个。...not NULL; 删除增列,仍然时主键,但是没有增长功能 4、复合主键 使用表的两列或创建主键。...四、参照完整性 1、参照完整性简介 MySQL参照完整性一般是通过MySQL(foreign key)实现的。 (仅innoDB支持)所引用表的列必须是主键。...声明包括三个部分: A、哪个列或列组合是 B、指定参照的表和列 C、参照动作[cascade(级联操作),restrict(拒绝操作),set null(设为空),no action,set...如果约束指定了参照动作,主表记录做修改,删除,从表引用的列会做相应修改,或不修改,拒绝修改或设置为默认值。 引用表的列名必须是主键,且在删除引用表时必须删除引用关系或者删除当前表。

1.9K20

初识Hibernate之关联映射(一)

显然,在分别创建Student和Grade表之后,Hibernate又向数据库发送了一条alter语句,该语句负责添加关联。下面我们看看能否利用获取到Grade表中的成绩。...也就是说,当Hibernate加载到这里的时候,两张表单独创建完成之后,我要回到这里来,这里有一个一对需要更新,该的表载体在Student中,的名称是grade_id,于是它就会去更新Student...的表结构,为它添加引用,而引用的表就是Grade。...显然,Hibernate是先单独创建两张表,然后发送alter语句添加引用。那究竟set有什么用呢?它里面装的又是什么呢? 假设两张表中有如下信息: ?...而没有设置级联的话,第二三条Sql语句是没有的,报错那也是自然的。

1.3K80

hibernate系列之四

一对的建表原则:在的一方创建键指向一的一方的主键; 的建表原则:创建一个中间表,中间表中至少有两个字段作为分别指向双方的主键; 一对一建表原则:唯一对应:假设一对一中的任意一方为...,在的一方创建键指向一的一方的主键,将设置为唯一       主键对应:一方的主键作为另一方的主键; 在hibernate中采用java对象关系描述数据表之间的关系: ?...-- many-to-one:代表对一: name属性:在实体类中的属性:一的一方的对象的名称; class属性:一的一方的类的全路径 column:表中的,在一的一方中配置的...-- set标签:name属性:在实体类中的属性,指的一方的集合的属性名称 key标签:column:的一方的的名称 one-to-many标签:class...语句冗余:双向维护关系,持久态对象可以自动更新数据库,更新客户的时候会修改一次,更新联系人的时候会修改一次,所以会产生SQL语句冗余; 解决方案:一方放弃的维护,通常交给的一方去维护,所以一的一方就需要放弃维护

33130

Django中的关系映射

级联删除的特殊字段 models.CASCADE:Django模拟SQL约束ON DELETE CASCADE,并删除包含ForeignKey的对象 注意该CASCADE会有限查找是否有关联数据,先删除管理数据...) ---- 无约束的模型类UserMit # 进入Django Shell操作 create1 = UserMit.objects.create(name="henan) 有约束的模型类UserId...,则为查询 # 通过绑定的users_id查询用户,接着上面的创建数据来 >>> a2.id 6 >>> a2.users_id UUID('43ff679f-42b2-4334-85a0...-b493503d6433') 反向查询 没有属性的一方,可以调用反向属性查询到关联的另一方 反向关联的属性为实例对象.引用类名(小写) 当反向引用不存在的时候,则会触发异常 当...一对需要明确出具体角色,在多表上设置 语法:当一个A类对象可以关联多个B类对象 class ClassRoom(models.Model): # 班级唯一 name = models.CharField

1.7K20

关于SQL Server数据库设计的感悟,请指教

多见于特别而且数据量巨大的表。为了提高查询的效率,可以牺牲增删改的效率。 关于表、视图、存储过程: 表就是用来存储数据的,要尽量满足三个范式,不要出现冗余的东西。...我引用联机文档中的原话来描述一下: 在创建非聚集索引之前,应先了解访问数据的方式。考虑对具有以下属性的查询使用非聚集索引: 使用 JOIN 或 GROUP BY 子句。...应为联接和分组操作中所涉及的列创建多个非聚集索引,为任何创建一个聚集索引。 不返回大型结果集的查询。...需要注意的是,建立主键时,SQL Server默认会把主键设置为聚合索引,一定要把他去掉,设置在更有意义的其它字段上,或者压根就不设。 GUID的好处很多,有: 生成主键简单,可预知。...避免数据库表迁移时的麻烦(用增型的主键,在表迁移时简直就是灾难)。 避免了基础表更新时级联更新(主要体现在主键业务无关性上)。 欢迎大家多提意见。

94420

约束

关键字:AUTO_INCREMENT 一个表中最多有一个增列 当需要产生唯一标识符或者顺序值时,可以设置增列 增列所在的列必须是列(主键列primary key、唯一列 unique key...FOREIGN KEY约束 约束 约束会涉及到主表和从表 主表(父表):被引用的表 从表(子表):引用别人的表 从表的必须引用主表的主键或者唯一性约束的列 在创建的时候,如果不给约束的话...,默认名不是列名,而是自动产生一个键名,当然也可以指定约束名 创建表的顺序,先创建主表,再创建从表 删表,先删从表,再上主表 从表的列和主表的列名字可以不相同,但是数据类型必须一样。...当创建约束时,系统默认会在所在的列上创建对应的普通索引,索引名就是的约束名。...在阿里开发规范中:不得使用约束与级联,一切概念必须在应用层解决 CHECK约束 检查模字段的值是否复合要求 MySQL5.7可以支持该约束,但是不起作用。

75920

Java EE之SSM框架整合开发 -- (7) MyBatis映射器

答:MySQL、SQL Server等数据库的表格可以采用自动递增的字段作为主键。自动回填示例如下: 元素 元素的作用在于可以定义SQL语句的一部分(代码片段),方便后面的SQL语句引用它,比如反复使用的列名。...如果表A中有一个引用了表B的主键,A表就是子表,B表就是父表。当查询表A的数据时,通过表A的,也将表B的相关记录返回,这就是级联查询。...例如,查询一个人的信息时,同时根据(身份证号)也将他的身份证信息返回。...1、创建数据表 本例子需要两个数据表,一张是前面已经创建了的user表,一张一订单表orders,其中orders表的user_id是user表的主键id。

2.4K21

数据库知识学习,数据库设计优化攻略(九)

3.2.3 索引 索引是一个表优化的重要指标,在表优化中占有极其重要的成分,所以将单独写一章”SQL 索引一步到位“去告诉大家如何建立和优化索引 3.2.4 主键和的必要性 主键与的设计,在全局数据库的设计中...作为数据库对象,很多人认为麻烦而不用,实际上,在大部分情况下是很有用的,理由是:是最高效的一致性维护方法数据库的一致性要求,依次可以用、CHECK 约束、规则约束、触发器、客户端程序...谨慎使用级联删除和级联更新,级联删除和级联更新作为 SQL SERVER 2000 当年的新功能,在 2005 作了保留,应该有其可用之处。...我这里说的谨慎,是因为级联删除和级联更新有些突破了传统的关于的定义,功能有点太过强大,使用前必须确定自己已经把握好其功能范围,否则,级联删除和级联更新可能让你的数据莫名其妙的被修改或者丢失。...E、 增字段要慎用,不利于数据迁移

57030

【Mysql】耗时7200秒整理的mysql笔记!常用API汇总!包教包会!

, (最大字节长度));# 可以手动插入 正常值# 增值根据上衣条记录加14.约束# 在创建表时添加 FOREIGN KEY# 必须为其他表的主键CREATE TABLE... FOREIGN KEY () REFERENCES ();-- 级联操作# 一个数据需要修改主键 如果其他表联动此表作为 修改后会发生错误 需要添加级联...添加后修改主键会自动更改-- 修改时添加ALTER TABLE ADD CONSTRAINT FOREIGN KEY () REFERENCES () ON UPDATE CASCADE;-- or 创建时添加# 语法:-- 级联更新 ON UPDATE CASCADE-- 级联删除 ON DELETE CASCADE (很危险...,一个课程也可以被很多学生选择一对的表里面 添加一的:利用中间表 进行 的对应数据库设计的范式 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式

1.3K00
领券