主键、唯一键、唯一索引的使用
2015-02-10 20:45
274 查看
主键只能用一个,不能为NULL,唯一(可以多列作为复合主键,当所有设置为复合主键的列都相同是视为唯一,多对多的表中常用)
唯一键,也称(唯一约束),和主键的区别是可以为有多个唯一键并且值可以为NULL,但NULL也不能重复,也就是说只能有一行的值为NULL。它会隐式的创建唯一索引。
唯一索引,几乎和唯一键一样,但可以添加过滤器来允许重复某些值
对于唯一约束和唯一索引的选择,请参照MSDN上的指导,如下:
唯一约束和唯一索引并没有显著的区别。创建独立的唯一索引和使用唯一约束对于数据的验证方式并无区别。查询优化器也不会区分唯一索引是由约束创建还是手工创建。然而以数据完整性为目标的话,最好创建约束,这使得对应的索引的目标一目了然。
个人认为:如果需要允许重复某些值(如NULL)才用唯一索引
唯一键,也称(唯一约束),和主键的区别是可以为有多个唯一键并且值可以为NULL,但NULL也不能重复,也就是说只能有一行的值为NULL。它会隐式的创建唯一索引。
alter table 表名 add constraint 约束名 unique(列名)
唯一索引,几乎和唯一键一样,但可以添加过滤器来允许重复某些值
CREATE UNIQUE INDEX 索引名 ON 表名 (列名) --如果要允许NULL重复 WHERE 列名 IS NOT NULL --如果还要允许值为xx重复 and 列名!='xx'
对于唯一约束和唯一索引的选择,请参照MSDN上的指导,如下:
唯一约束和唯一索引并没有显著的区别。创建独立的唯一索引和使用唯一约束对于数据的验证方式并无区别。查询优化器也不会区分唯一索引是由约束创建还是手工创建。然而以数据完整性为目标的话,最好创建约束,这使得对应的索引的目标一目了然。
个人认为:如果需要允许重复某些值(如NULL)才用唯一索引
相关文章推荐
- 使用SQL语句查询某表中所有的主键、唯一索引以及这些主键、索引所包含的字段(转)
- 删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005
- 如何删除通过主键和唯一约束创建的索引
- oracle 删除表空间错误 提示:ora-02429:无法删除用于强制唯一/主键的索引。
- 主键与唯一索引的区别(收藏)
- sql server 索引,聚集索引,非聚集索引,唯一索引,主键索引
- 主键与唯一索引的区别
- 主键、唯一键与唯一索引的区别
- 主键与唯一索引
- 主键和唯一索引的区别
- mysql 创建 主键索引 唯一索引 全文索引 多列索引 添加索引
- 主键与唯一索引
- SQL0803N INSERT 语句、UPDATE 语句或由 DELETE 语句导致的外键更新中的一个或多个值无效,因为由 "1" 标识的主键、唯一约束或者唯一索引将表
- 关于主键使用索引的检验
- 主键和唯一索引
- mysql 创建 主键索引 唯一索引 全文索引 多列索引 添加索引
- 主键和唯一索引的区别
- 图解SQL Server:聚集索引、唯一索引、主键
- 主键和唯一索引的区别
- 唯一索引与主键索引的比较