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

【重学 MySQL】六十三、唯一约束的使用

【重学 MySQL】六十三、唯一约束的使用 在 MySQL 中,唯一约束(UNIQUE Constraint)用于确保数据库表中的一列或多列的数据在整个表中是唯一的,即不允许有重复的值...在已存在的表上添加唯一约束 如果表已经存在,可以使用 ALTER TABLE 语句来添加唯一约束。...删除唯一约束 要删除唯一约束,可以使用 ALTER TABLE 语句中的 DROP INDEX 子句(对于匿名约束)或 DROP CONSTRAINT 子句(对于命名约束)。...,可以使用 DROP INDEX 来删除它: ALTER TABLE employees DROP INDEX unique_phone_xxxx; -- 替换为实际的约束名称 复合唯一约束 复合唯一约束是指在数据库中...而最后一个INSERT语句则失败,因为尝试插入的班级编号101和座位号1的组合已经存在于表中,违反了复合唯一约束。 总结 复合唯一约束是一种非常有用的数据库约束,它可以确保多个列的组合在表中是唯一的。

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

    GreenDao教程1

    targetGenDir --> 生成数据库文件的目录; 第二步:创建一个实体类 1 @Entity 2 public class ClassInfoBean { 3 //表ID,是每一条记录的唯一标识...当前实体属于哪个schema active:标记一个实体处于活跃状态,活动实体有更新、删除和刷新方法 nameInDb:在数据库中使用的别名,默认使用的是实体的类名 indexes:定义索引,可以跨越多个列...作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束 @Unique:向数据库添加了一个唯一的约束 关系注解 @ToOne:定义与另一个实体(一个实体对象)的关系...的使用的相关配置已经全部配置完毕。...下次会为大家介绍通过使用greenDao来实现数据库的增删改查等操作。

    96441

    GreenDao 3.0解析

    GreenDao 3.0简介: 在Android开发中,数据缓存的开发可能会使用到SQLite,然而在使用它的时候,我们往往要进行许多额外的工作,编写原生的SQL语句与解析查询结果等。...大家应该对ORM框架有了初步的了解,下面我们就来使用GreenDao,我们就通过GreenDao的官网,http://greenrobot.org/greendao/ ,来学习如何对它进行使用。...GreenDao 3.0使用 我们跟着官网的步骤来对学习如何使用GreenDao 3.0 1) 导入相关的包 根据上面的内容,我们需要在在gradle的dependencies中导入如下内容...使用这个插件的话,需要在gradle中配置如下的内容 apply plugin: 'org.greenrobot.greendao' buildscript { repositories {...上面为索引注解 @Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束 @Unique:向数据库列添加了一个唯一的约束

    84120

    GreenDAO快速入门

    前言 之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的差异。...只停留在会使用的阶段。说起来也是惭愧。本文的重点也是在于如何快速使用。不会进行较深的探究。 ---- GreenDAO: 介绍:对象关系映射的数据库(ORM) ?...GreenDAO 官网地址 优点 性能高,号称Android最快的关系型数据库 内存占用小 库文件小,编译时间短 支持数据库加密 API简介易用 说了他的优点,那么我们来看下如何使用。...active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法 nameInDb:在数据中使用的别名,默认使用的是实体的类名 indexes:定义索引,可以跨越多个列 createInDb:标记创建数据库表...,通过name设置索引别名,也可以通过unique给索引添加约束 @Unique:向数据库列添加了一个唯一的约束 关系注解 @ToOne:定义与另一个实体(一个实体对象)的关系 @ToMany:定义与多个实体对象的关系

    1.1K30

    Android十八章:是时候在你项目用上greenDAO3GreenDao

    GreenDao GreenDao3.1.0使用案例包含(增删查改,升级数据库),3.+版本比2....:3.1.0' } 在app/build.gradle目录下设置 apply plugin: 'org.greenrobot.greendao' android { greendao{...//generate set和get方法 toString方法 ... } @Entity 代表数据库里面的USER表 @Id 主键 @Property 表里面的内容 @Unique 唯一的...@Transient 不会被数据库持久化写进数据库 @NotNull 不为空 到此为止,sync gradle来执行greendao配置,下面开始讲解怎么使用 GreenDao使用 如果遇到在生产包下找不到...DaoMaster.OpenHelper,在类的构造函数传入Context,super(context,DB_NAME,null);还要重写onUpgrade方法(注意这里的参数一是Database),然后创建表(传入true,这里使用

    70030

    GreenDao查询,Querying

    SQL组织你的查询语句,或者采用更好的方法,使用greenDao的QueryBuilder API.greenDao的查询也支持延迟加载结果,当结果集很大的时候,它会节省内存和提高性能. 1.QueryBuilder...greenDao支持唯一结果(0或1个结果)、和多个结果的查询.如果你期望唯一的结果,调用Query或者QueryBuilder的unique()方法,它会给你唯一的结果或者null(如果没有找到匹配的实体...greenDao的LazyList类.为了使用时才加载数据,它保存了数据库游标的引用.这也是使用后必须调用关闭方法的原因(一般在try/finally代码块中关闭).一旦所有的元素被访问或遍历到,listLazy...Query对象设置参数而不受其他线程的干扰.如果其他线程试图对query对象设置参数或者执行绑定在其他线程的查询,greenDao会抛出异常.这样,你就不需要使用同步语句.事实上,我们应该避免使用锁,因为如果并发事务使用同一个...为了完全避免潜在的死锁,greenDao1.3引入了forCurrentThread()函数.它会返回本线程的Query实例,它在当前线程可以安全的使用.每次调用forCurrentThread(),传入的参数和使用

    39600

    GreenDao 工具类 --- 使用 Json 快速生成 Bean、表及其结构,炒鸡快!

    前天我再次在项目中使用到 Sqlite 来做缓存,一般的代码是下面这样的。...GreenDao本身已经是很方便了,但我觉得还是不够方便。所以有了下面的"故事"。阅读完这个"故事",从此你使用 GreenDao 真正需要你手写的将会单表是不超过10行!...泛型约束 上面说的 T 泛型是属于 Dao 的配置类,稍作代码分析就可以看出,GreenDao 所有生成的数据表配置类都是继承于 AbstractDao 类。...batchInsertOrUpdateAllInfo(List entityList){ if(entityList.size() <=0 ){ lghLogger.d("本地数据库插入用户信息失败...有了上面的准备,就可以使用了,正在需要自己动手的代码几乎没有。

    1.9K90

    Android开发笔记(八十五)手机数据库Realm

    greenDAO是一个将对象映射到SQLite数据库中的ORM解决方案,它在github上的地址是https://github.com/greenrobot/greenDAO,下面是greenDAO相比直接使用...greenDAO与直接使用SQLite的性能差异,所以只能是跟其他ORM框架比较,比如ORMLite、sugarORM等等) 但是greenDAO使用的数据库引擎还是SQLite,因此某些方面并没有本质的改善...Realm使用C++引擎还有一个好处,就是可以跨平台使用,不但能用于Android,也能用于IOS。...beginTransaction : 开始事务,需与commitTransaction配合使用。 commitTransaction : 结束事务,需与beginTransaction配合使用。...executeTransaction : 单独对指定Realm执行事务,用于需要对事务失败进行处理的场合。 where : 查询指定表。返回RealmQuery对象。

    2.2K20

    AAC---Room使用

    虽然没有ObjectBox,GreenDao等效率高,不过用起来也比较方便。 ?...Room Database ObjectBox是非SQLite的ORM数据库框架,它自定义了自己的数据库文件,它的文件只有官方提供的工具才能打开,并且对于外键、主键等支持也比较完备,并且效率比Room以及GreenDao...等基于SQLite的框架高非常多,不过在真正的产品中使用的话,以后也就不能再升级框架了。...Room使用 Gradle配置,在app的build.gradle中添加如下配置 dependencies { def room_version = "1.1.1" implementation...PrimaryKey,也可以通过一个integer类型的Id定义@PrimaryKey(autoGenerate = true)自动生成Id 为了提升查询的速度,可以通过indices设置索引,如果需要保证属性数据的唯一性

    1.7K20

    【MySQL知识点】唯一约束、主键约束

    ---- 文章目录 前言 唯一约束 定义 插入数据 添加和删除唯一约束 创建复合唯一约束 主键约束 定义 测试 插入数据 删除主键约束 添加主键约束 在这里插入图片描述 总结 ---- 前言 本期学习唯一约束...、主键约束噢~ ---- 唯一约束 定义 唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。...当表级约束仅建立在一个字段上时,其作用效果与列级效果相同。 由以下结果我们可以发现,添加唯一约束后,插入重复记录会失败。...插入数据 插入NULL时,会插入失败,提示id字段不能为NULL 插入重复值也会失败,提示”1“已经存在主键。...删除主键约束 由下图我们可以发现,删除主键约束后,非空约束并没有删除,如果需要删除非空约束,则需要使用modify。

    4.2K30

    被复盘了,mysql索引漫步引发的生产问题

    按照上线当日时间先后顺序复盘项目出现的问题: SQL脚本执行失败一次,索引超长问题 SQL脚本执行失败二次,索引超长问题 违反唯一约束程序报错,唯一索引问题 使用主键进行数据修复失败,索引业务问题 1....受限于一些公司安全条例,主键id统一使用长度为32的varchar,将256改成32继续执行。 2....数据统计跑批任务执行完没有结果,查询日志发现程序报错,数据违反上述2中的唯一约束,数据统计包含多个维度,唯一约束没有实际业务及优化用途且唯一约束并不唯一,于是drop掉唯一索引,跑批任务正常。...数据变更同步问题失效,原业务方数据变更采用先删除后插入方式,项目使用id主键索引进行关联未关联到数据,导致变更数据处理失效。调整为使用原业务数据索引进行关联,数据变更同步正常。...小结:上述两个问题由于索引脱离实际业务,导致索引多余或索引未能正确关联业务数据,本质是索引创建与使用未考虑周全。

    19710

    Android从立项到上线——修仙之路

    项目采用MVP+Retrofit+RxJava+Gson+Glide+Material Design设计 同时也使用了EventBus事件总线、GreenDao数据库、SurfaceView+MediaPlayer...GreenDao: 特点:1.存取速度快; 2.支持数据库加密; 3.轻量级; 4.激活实体; 5.支持缓存; 6.代码自动生成 地址:https://github.com/greenrobot/greenDAO...GreenDao,它代码自动生成、存取速度快、支持加密、一个轻量级别的库,用着方便,推荐大家使用GreenDao。...RxJava + Retrofit 形式的时候,Retrofit 把请求封装进 Observable ,在请求结束后调用 onNext() 或在请求失败后调用 onError()。...可以看到,调用了service的login方法后得到Observable对象,在新的线程中执行网络请求,请求成功后切换到io线程执行保存用户信息的动作,最后再切换到主线程执行请求失败onError()、

    1K20

    MySQL 深度实践:表的约束及其在数据完整性中的作用

    KEY:唯一键约束FOREIGN KEY:外键约束1....显式提供name为NULL:插入失败,因为NOT NULL约束禁止显式插入NULL。*结论:NOT NULL和DEFAULT在语法上可以共存。...唯一键 (UNIQUE KEY)当一张表中,除了主键之外,还有其他列也需要保证其值的唯一性时,就需要使用唯一键。唯一键与主键的异同:相同点:都强制唯一性,都会自动创建索引。...*t17表的id是主键,phone_num是唯一键。插入phone_num为110的记录成功。再次插入110失败,违反唯一键约束。插入phone_num为NULL的记录成功。...customer.email和customer.card_id使用了UNIQUE KEY来保证业务唯一性。customer.sex使用了ENUM类型来限制取值。

    10810

    MySQL,不为人知的主键与唯一索引约束?(第12讲,超硬核)

    InnoDB主键与唯一索引约束 今天聊聊MySQL的主键与唯一索引约束: PRIMARY KEY and UNIQUE Index Constraints 文章不长,保证有收获。...都不对,正确答案是:2, 5, 6, 10 第一行id=1,加1后,没有违反unique约束,执行成功; 第二行id=5,加1后,由于id=6的记录存在,违反uinique约束,SQL终止,修改失败;...另外,对于insert的约束冲突,可以使用: insert … on duplicate key 指出在违反主键或唯一索引约束时,需要进行的额外操作。...总结,对于主键与唯一索引约束: 1. 执行insert和update时,会触发约束检查; 2. InnoDB违反约束时,会回滚对应SQL; 3....通常使用 show warnings; 来查看与调试违反约束的ERROR; 互联网大数据量高并发量业务,为了大家的身心健康,请使用InnoDB。 知其然,知其所以然。 思路比结论更重要。

    13010

    MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解

    本文将深入剖析MySQL中的各种约束,包括非空约束、唯一性约束、主键约束、自增列、外键约束、默认值约束以及CHECK约束等等,同时结合开发场景给出约束使用和实践的技巧和方法,帮助读者更好地掌握MySQL...接着讲解了非空约束、唯一性约束和主键约束的使用方法,以及如何添加、删除和使用复合约束等技巧。 在自增列和外键约束方面,本文详细介绍了其作用和关键字,以及如何指定和删除自增约束和外键约束等技巧。...最后,本文结合实际面试问题,提供约束使用和使用注意事项,帮助读者更好地掌握MySQL中约束的使用方法,提高数据表设计和维护的效率。...主键(非空且唯一)约束 FOREIGN KEY 外键约束 CHECK 检查约束 DEFAULT 默认值约束 注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果...唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。 唯一性约束允许列值为空。 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。

    1.4K10

    数据库圣经--约束

    二.约束类型 NOT NULL 非空约束:确保指定列不能存储 NULL 值,保证数据的完整性。 DEFAULT 默认约束:当列未被赋值时,使用预设的默认值填充。...UNIQUE 唯一约束:要求指定列的每行数据值唯一,避免重复。 PRIMARY KEY 主键约束:是 NOT NULL 和 UNIQUE 的组合,可指定一列或多列,用于防止数据重复并提升查询性能。...,如果不给这个列指定值才会使用默认约束 虽然指定了默认约束,但当我们手动指定这一列的值为 NULL 时 插入的值依然是 NULL,因为这个 NULL 是我们自己手动指定的,也可以理解为我们想要的值 用户指定的优先级要高于默认约束...一个主键是多个列(复合主键),在唯一校验时,只有复合主键中的所有列都相同才被判定为相同 通常为每张表都指定⼀个主键,主键列建议使用bigint类型。...例如在 MySQL 中,若将主键列 id 设为 auto_increment,每次插入新数据,id 会自动从当前最大值加 1,这有助于高效地生成唯一标识,保障数据的唯一性和完整性,常与主键约束配合使用。

    21910
    领券