• Mysql中让两个字段不同时相同的方法


    有时候我们会遇到这样的一种情况:有一些不同的专业,每个专业中有一些不同的学号,专业+学号能对应到个人。这时,应该如何在数据库中定义列,来保证专业+学号对应的学生的唯一性呢?

    把学号定义成唯一(UNIQUE)显然是行不通的,因为A专业和B专业都存在1000这样一个学号。

    方法1:联合主键

    PRIMARY KEY(major,id);

    不推荐。因为联合主键会给表的维护带来不便。另外,可能已经设定好了主键。

    方法2:建立联合唯一约束(联合唯一索引)(推荐

    联合唯一约束:(创建唯一性约束时会自动创建唯一性索引)

    ALTER TABLE student ADD CONSTRAINT major_id UNIQUE (major,id);

    联合唯一索引:

    CREATE UNIQUE INDEX major_id_index ON student(major,id);

    二者的区别:

    ①当往数据库中插入20条数据,其中5条数据重复时,如果用唯一性约束,结果必然是20条数据全部被拒绝插入。如果使用唯一性索引,若打开了“忽略重复值”开关(插入时在INSERT后面加上IGNORE,即:INSERT IGNORE INTO students () VALUES ();),则会将15条不重复的数据正确插入,5条重复数据被忽略。

    ②如果某列多行值为null,则不能在该列上建立唯一性索引。

  • 相关阅读:
    zabbix自动发现 url 以及对http返回状态码监控实现 告警
    iOS 开发者账号到期续费流程
    iOS 开发 -----公司测试打包上传流程
    go语言 二叉树
    GO 语言队列实现
    GO 语言常用排序
    go 语言实现栈原理
    循环链表实现原理及运用约瑟夫环实例
    双向链表实现原理
    单向链表实现原理
  • 原文地址:https://www.cnblogs.com/cage666/p/7352211.html
Copyright © 2020-2023  润新知