首页
学习
活动
专区
圈层
工具
发布

数据库约束-主键约束-唯一约束-非空约束-默认值

数据库约束-主键约束-唯一约束-非空约束-默认值 约束概述 约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。...约束的类型 约束名 约束关键字 主键 primary key 非空 not null 唯一 unique 外键 foreign key ... references 默认 default 1....通常不用业务字段作为主键,单独给每张表设计一个id的字段,把id作为主键。主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行。...非空约束 NOT NULL 被修饰的这个字段必须设置值,不能是NULL 3.1 非空约束的基本格式 字段名 字段类型 NOT NULL 3.2 实现非空约束 具体操作: 创建表学生表st8, 包含字段(...INTO st8 VALUES (5, NULL, '男'); ERROR 1048 (23000): Column 'NAME' cannot be null mysql> -- 可以看到设置了非空约束后

7.1K10

Hibernate注解之基本注解的注解使用

主键相关的注解 1.5. 与非主键相关的注解 1.6. 实例 1.7. @JoinColumn 1.8. @JoinTabl 1.9....=,generator="") : 主键生成策略 Strategy的值 GenerationType.AUTO - 根据底层数据库自动选择(默认),若数据库支持自动增长类型,则为自动增长。...与非主键相关的注解 @Version - 可以在实体bean中使用@Version注解,通过这种方式可添加对乐观锁定的支持 @Basic - 用于声明属性的存取策略: @Basic(fetch=FetchType.EAGER...@Transient - 可选,表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient。...,但是我们也可以使用这个注解改变这个名称 这个注解是用来设置自动生成的外键的属性,比如外键的名称,非空…… name 指定外键的名称 nullable 指定外键是否为空,默认的是true

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

    基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

    聚合 正如前面所讲,一个聚合是一系列对象(实体和值对象)的集合,通过聚合根将所有关联对象绑定在一起。本节将介绍与聚合相关的最佳实践和原则。...如果你仔细想想,当使用非关系型数据库(如MongoDB)时,当Role和User都有关系列表时还有一个问题:在这种情况下,相同的信息会在不同的集合中重复出现,将很难保持数据的一致性,每当你在User.Roles...当传递的值为空时,抛出异常ArgumentException。 初始化子集合,当使用 Labels 集合时,不会获取到空引用异常。...public Guid RepositoryId {get; private set;} //不更改 public string Title { get; private set; } //更改,需要非空验证...IUserIssueService 是一个任意的服务,用于获取分配给用户的问题数量。如果业务规则不满足,则抛出异常。所有规则满足,则设置 AssignedUserId 属性值。

    3.9K30

    【BCVP升级】泛型主键的使用

    1、自定义特性 配置服务SqlsugarSetup 既然要实现泛型主键,那我们就需要对主键进行处理,因为只有int类型的主键才需要自增,其他类型的是不需要的,当然如果在非int类型的主键上配置自增了也是会报错的...修改实体基类RootEntityTkey 这里我重写了一个基于泛型主键的实体基类RootEntityTkey,因为有了上边的配置,所以就不需要在主键上增加自增了,只需要配置一个属性:是否为主键即可,因为肯定不为空...Guid,就算是一个空的对象实例,存入的时候也会有值,具体的写法我下文会举例说明的。...我参照着实体泛型基类,又单独针对特定的有外键需求的实体,抽离了一个中间父类,请注意我的命名:实体类-->父类(非必须)-->泛型基类,用UserRole来举例。...DateFormatHandling.MicrosoftDateFormat; setting.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //空值处理

    84410

    go语言面试题:主键索引和唯一索引的区别

    主键索引和唯一索引在MySQL中都是特殊的BTree索引,但两者有以下区别: 主键索引要求主键列不能为空。为了定义一个主键索引,必须先定义一个唯一性索引。...每个表只能有一个主键索引,用于标识唯一行标识符,并且可以自动添加到外键表中。 唯一索引列可以为空,但只容许具有一个空值;而主键索引则不允许任何空值。...在InnoDB存储引擎中,如果未将 PRIMARY KEY 或 UNIQUE 关键字分配给索引声明,则第一个非NULL唯一索引被用作InnoDB的主键索引。...如果将某一列设置为唯一索引,那么这一列相同的值每种只能出现一次(除NULL)。而主键索引除了唯一性属性之外,还应该满足非空属性,即主键列不能有重复的 NULL 值。...在连接查询和聚合计算时,优先使用主键索引提高查询效率。如果没有明确的理由,在对需要添加或修改约束的列进行索引时,最好使用主键索引。

    18800

    【开源毕设】前后端分离,基于 Vue 和 SpringBoot 的假日旅社管理系统

    后端 Spring Boot:构建系统核心逻辑的后端框架,本系统采用 2.7.0 版本。 MyBatis / MyBatis Plus:后端连接数据库的框架,本系统采用 3.5.2 版本。...民宿实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 Title Varchar 255 民宿名称 非空 areaSize BigDecimal...民宿新闻实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 newTitle Varchar 255 新闻标题 非空 newDescribe...非空 isTop Varchar 255 是否置顶 非空 nSort Varchar 255 排序值 非空 remark Varchar 255 备注 create_time DateTime 15...民宿预订单实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 dormitoryId Varchar 255 民宿 ID 非空 dormitoryName

    73420

    SpringBoot+Vue打造资产出入库管理系统

    后端 Spring Boot:构建系统核心逻辑的后端框架,本系统采用 2.7.3 版本。 MyBatis Plus:后端连接数据库的框架,本系统采用 3.5.2 版本。...资产类型实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 assetName Varchar 255 资产名称 非空 nature Varchar...BigDecimal 15 单价 非空 totalPrice BigDecimal 15 总价 非空 remarks Varchar 255 备注 我将资产分为了固定资产和耗材,用nature字段来区分...资产入库单实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 assetId Varchar 255 资产ID 非空,外键 assetName...资产出库领用单实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 assetId Varchar 255 资产ID 非空,外键 assetName

    1.1K20

    oracle基础|数据库如何设计|数据库的六种范式|数据库的主键和外键|数据库的约束

    ,从而顾客姓名间接的依赖于订单编号,那么这里产生了依赖传递,所以这个设计是不满足第三范式的 三、主键和外键 主键: 1.能做主键的列必要满足非空唯一的特点 2.只要满足非空唯一的列都可以做主键 3.可以让表中一个有意义的列做主键...,比如说学号,它既表示学生学号又作为表中的主键,因为这个列满足非空唯一的条件 4.也可以找一个没有意义的列做主键,就是用来唯一标识一行记录的 5.我们可以让多个列联合在一起做表中的主键,那么它就是联合主键...,要求这几个列的值联合在一起是非空唯一的 外键: 1.表中的某一个列声明为外键列,一般这个外键列的值都会引用于另外一张表的主键列的值(有唯一约束的列就可以,不一定非要引用主键列) 2.另外一张表的主键列中出现过的值都可以在外键列中使用...3.外键列值也可以为空的,提前是这个外键列在表中不做主键,因为我们也可以把表中的外键列当做主键来使用(只有满足非空唯一的要求就可以) 4.如果把B表中的联合主键的值引用到A表中做外键,因为是俩个列在B...表中做联合主键,那么A表引用过来的时候也要把俩个列的值都引用过来,那么它们在A表中就会作为一个联合外键出现 四、完整性约束 实体完整性: 引用完整性 列级完整性 用户自定义 五、建表 1.映射实体---

    88540

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

    B、域完整性:限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则)。...二、实体完整性实现 1、实体完整性的实现简介 实体完整性的实现有两种方式: A、主键约束:一张表只能有一列设置主键,值必须唯一,不允许为空,innoDB存储引擎,主键就是索引。...B、唯一值约束:一张表可以有多个列添加唯一值约束,一直允许一条记录为空值。 实体完整性,由主键和唯一性约束来实现,确保表中记录有一列唯一标识。...主键约束相当于唯一约束与非空约束的组合,主键约束列不允许重复,也不允许出现空值;多列组合的主键约束,列都不允许为空值,并且组合的值不允许重复。...column subject VARCHAR(20) default NULL; 2、创建非空约束 非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。

    2.3K20

    【Note_01】通用 mapper

    建立实体类与数据库表之间的对应关系 默认类名首字母小写 @Column 实体类属性 建立实体类字段与数据库字段的对应关系 实体类:驼峰;数据库:_分隔 @Id 实体类属性 标识主键 未标识主键则认为该实体类为全字段联合主键...@GeneratedValue 实体类属性 获取 insert 自增的主键 属性:strategy = GenerationType.IDENTITY @Transient 实体类属性 标识实体类与数据库不对应的字段...非数据库表中字段 四、CRUD 4.1 select(Entity entity) * 用于根据实体类查询多条数据 * mapper自动生成的SQL entity = {id = null,username...* 补充 ⇨ insertSelective(Entity entity)属性为空的使用默认值 4.3 updateByPrimaryKey(Entity entity) * 根据主键修改 * mapper...* 补充 ⇨ updateByPrimaryKeySelective(Entity entity)属性为空的不更新【推荐】 4.4 delete(Entity entity) * 根据实体类删除 * mapper

    54600

    springboot实战之ORM整合(JPA篇)

    简单来说就是将数据库表与java实体对象做一个映射 2、ORM的优缺点 优点:符合面向对象编程;技术与业务解耦,开发时不需要关注数据库的连接与释放; 缺点:orm会牺牲程序的执行效率和会固定思维模式 3...在javax.persistence的包下面,用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从烦琐的JDBC和SQL代码中解脱出来。...JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。...//标记为新增数据 optionalT = Optional.empty(); } else { //若ID非空...//1.获取最新对象 T target = optionalT.get(); //2.将非空属性覆盖到最新对象

    6.6K20

    mysql学习笔记(四)约束与索引

    PRIMARY KEY主键约束不能重复,不能为空NOT NULL 非空约束不能为空DEFAULT默认约束插入数据时此列没有值插入,则使用默认值UNIQUE KEY唯一约束此列不能有重复值FROEIGN...alter table 表名 add constraint 约束名 primary key (列名)  一个表有且只有一个主键约束 主键约束意味着唯一且非空 创建主键会自动创建对应的索引,删除主键也会删除对应的索引...(10), primary key(id,name) ); 将多个元素设置为主键。...set null方式:主动权在主表上,如果主表被依赖字段修改了,从表的外键字段会将值设置为Null,这里要求,外键字段不能有非空约束。...七、非空约束(not null) 一个表可以有很多的非空约束 非空约束只能针对某一个字段来说 非空约束意味着该字段不能存入null alter table 数据库名.表名称 modify 字段名 数据类型

    2.6K00

    所谓的数据质量

    数据完整性维度大类下可细分为以下维度小类: 非空约束:描述检核对象是否存在数据值为空的情况。如客户开户时,客户名称是必填项,不能出现为空的情况。...非空约束 非空约束比较容易理解,简单的讲就是字段不能为空,检查方式也比较容易,只需要设定需要检查的字段,通过 sql 查询列值不能为空即可。将为空的数据查询出来进行整改。...当然非空约束可以通过设置非空约束的方式限制数据无法写入数据库,如果支持这种方式可以避免事后的数据非空检查。 ?...数据唯一性维度大类下可细分为以下维度小类: 唯一性约束:描述同一客观实体在不同业务数据集中的信息,经整合后是唯一的,针对目标通常是单一主键或联合主键,如证件类型+证件号码+姓名相同,则其客户编号应唯一。...这种情况的如果是单一的业务主键,可以通过对主键分组去重的方式检查,如果是业务联合属性判断唯一实体的情况只能业务人员进行手动检查。 ?

    2K20

    快速学完数据库管理

    :就是在候选键中选取的一个 -- 外键:即在其他表中为主键的字段 -- 极端情况下,候选键只有一个属性或者全部属性才能构成一个候选键 6.关系数据库的数据完整性 -- 实体完整性 --即主键值唯一且不能为空值...--联系也可以有属性 -- 一对一的联系 --在两个实体之间任意一个加入另外一个实体的主键即可产生联系 -- 一对多的联系 --在多端实体加入一端实体的主键即可产生联系 -- 多对多的联系...等值连接 --条件运算符是等号的连接 非等值连接 即一般的条件判断连接,符合规则然后连接 --还有一些概念,例如左外连接,右外连接,全外连接,即连接时如果没有匹配到值做的一些处理,将没有值的部分置为空值...作用:使得插入的数据不能为空值 --这里就是创建了一个非空约束 create table student( name varchar(10) primary key, age int not...--首先要确保当前的要添加主键约束的字段非空 --不然就不满足实体完整性 create table student1( name varchar(10) not null, age int

    2.2K30

    深入剖析MySQL数据库约束:原理、应用与实践

    非空约束和检查约束则主要用于保证数据的准确性。非空约束规定字段的值不能为空,在创建表时,如果将某个字段定义为非空约束,那么在插入或更新数据时,必须为该字段提供一个具体的值,否则操作将被拒绝。...2.2.4 非空约束(NOT NULL) 非空约束是一种用于确保列中的值不为空的约束。当为某个列定义了非空约束后,在插入或更新数据时,必须为该列提供一个非空的值,否则操作将触发非空约束错误。...非空性则规定主键字段的值不能为空值,因为空值无法作为有效的唯一标识,无法准确地定位到具体的记录。...非空约束确保了username字段的值不能为空,这是因为用户名是用户登录系统的重要标识,不能为空值。如果username为空,系统将无法准确识别用户身份,导致登录和用户管理功能无法正常进行。...主键约束通过确保表中每一行记录具有唯一且非空的标识符,为数据的唯一性提供了坚实保障,如同为每个数据实体赋予了独一无二的 “身份证”,使得数据在存储和检索过程中能够被准确识别。

    96610

    四、数据完整性

    要求每张表都有一个唯一标识符,这个唯一标识符常用的就是主键约束(将某个字段设置为主键),主键字段和不能为空并且不能重复。...例如在学生表中学号作为主键,那么我们在插入数据的时候,如果插入的数据的学号和数据表中已存在数据的学号重复的话,将无法插入。...要求关系中不允许引用不存在实体。例如我们有学生表和成绩表,学生表的主键学号字段为成绩表的外键,那么如果我们在成绩表里插入数据的学号在学成表里不存在将无法插入。...域完整性约束 域完整性主要是对列的输入有要求,通过限制列的数据类型、格式或值的范围来实现。是针对某一具体关系数据库的约束条件,它保证表中的某些列不能输入无效值。...约束方法包括:限制数据类型、检查约束、默认值和非空约束。

    96130
    领券