zoukankan      html  css  js  c++  java
  • 主键、唯一键、唯一索引的使用

    • 主键只能用一个,不能为NULL,唯一(可以多列作为复合主键,当所有设置为复合主键的列都相同是视为唯一,多对多的表中常用)
    • 唯一键,也称(唯一约束),和主键的区别是可以为有多个唯一键并且值可以为NULL,但NULL也不能重复,也就是说只能有一行的值为NULL。它会隐式的创建唯一索引。
      alter table 表名
      add constraint 约束名 unique(列名)
    • 唯一索引,几乎和唯一键一样,但可以添加过滤器来允许重复某些值
      CREATE UNIQUE INDEX 索引名 ON 表名 (列名)
      --如果要允许NULL重复
       WHERE 列名 IS NOT NULL 
      --如果还要允许值为xx重复
      and 列名!='xx'

    对于唯一约束和唯一索引的选择,请参照MSDN上的指导,如下:

    唯一约束和唯一索引并没有显著的区别。创建独立的唯一索引和使用唯一约束对于数据的验证方式并无区别。查询优化器也不会区分唯一索引是由约束创建还是手工创建。然而以数据完整性为目标的话,最好创建约束,这使得对应的索引的目标一目了然。

    个人认为:如果需要允许重复某些值(如NULL)才用唯一索引

  • 相关阅读:
    strlen和sizeof
    函数值传递和地址传递
    指向函数的指针变量
    for循环scanf赋值刷新缓冲区
    指针
    排序简化
    随机数找到最大值
    上楼梯问题
    分布式系统并发情况下会生成多个token
    Swagger 文档生成工具
  • 原文地址:https://www.cnblogs.com/Laro/p/4284893.html
Copyright © 2011-2022 走看看