SQL中Unique约束有什么用啊?

SQL中Unique约束有什么用啊?,第1张

作用为:唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的。

创建唯一约束可确保在不参与主键的特定列中不输入重复值。当唯一约束和主键都强制唯一性时,如果满足下列条件,则应将唯一约束而不是主键约束附加到表上:

1、希望在列或列的组合中强制唯一性。可将多个唯一约束附加到表,但是只能将一个主键约束附加到表。

2、希望在允许空值的列中强制唯一性。可将唯一约束附加到允许空值的列,但是只能将主键约束附加到不允许空值的列。当将唯一约束附加到允许空值的列时,请确保在约束的列中最多有 一行包含空值。

扩展资料:

SQL中其他约束有:

1、主键约束:

主键列的数据类型不限,但此列必须是唯一并且非空。如该表中已有主键为1000的行,则不能再添加主键为1000。人工或程序不好控制的时候,也可以设置主键列为自动增长列。

2、参考约束:

参考约束是一个规则,可由 SQL 和 XQuery 编译器使用,但数据库管理器不会强制执行它。

查询编译器包括一个重写查询阶段,它将 SQL 和 XQuery 语句变换为可能是优化的格式并改进所需数据的访问路径。该约束的目的不是由数据库管理器对数据执行附加验证,而是为了提高查询性能。

3、用户自定义完整性约束:

用户自定义完整性指针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

例如某个属性必须取唯一值,某个非主属性也不能取空值,某个属性的取值范围在0-100之间等。

参考资料来源:百度百科-唯一约束

参考资料来源:百度百科-主键约束

参考资料来源:百度百科-SQL数据库

用户自定义完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。主要包括非空约束、唯一约束、检查约束、主键约束、外键约束

1、非空约束(Not Null Constraint)

这个可能大家都了解,就是我们在添加那个表 userinfo,在id、name后面都添加了not null,就是有些列不能把它设为空,相信大家都理解,我就说下我在一个英文资料看到的一段英文:The not null specification prohibits the insertion

of a null value for this attribute.Any database modifucation that would cause a null to be inserted in an attribute declared to be not null generates an error diagnostic.(大家就得自己翻译了)

2、唯一约束(Unique Constraint)

一个唯一约束并不包括一个NULL值。直接在字段定义后加入UNIQUE即可定义该唯一约束。

1) 一个表只能创建一个主键约束,但一个表可以根据需要对不同的列创建若干unique约束

2)主键字段不允许为null ,unique允许为空

3)一般创建主键约束时,系统自动产生簇索引,unique约束自动产非簇索引

3、检查约束(The Check Clause)

通过在定义数据库表里,在字段级或者是在表级加入的检查约束,使其满足特定的要求。

我来举一个例子

create table student (

name varchar(15) not null,

student_id varchar(15),

degree_level varchar(15),

primary key(student_id),

check(degree_level in('Bachelors','Masters','Doctorate')))

Here ,we use the check clause to simulate an enumerated type by specifying that degree_level must to be one of 'Bachelors','Masters','Doctorate'

4、主键约束(Primary Key Constraint)

其实主键约束就是一张表只能建立一个主键约束,其实就是唯一约束+非空约束。大家通过上课讨论那么多关于“依赖”的事情,估计大家都能理解了

5、外健约束( Foreign Key Constraint)

Foreign Key Constraint主要是确保同一个表或者不同表之间的引用完整性,所以必须引用一个PRIMARY KEY或者UNIQUE约束,用户必须在应用表上具有REFERENCES权限;一个表中最多可以有31个外部键约束; 在临时表中,不能使用外部键约束; 主键和外部键的数据类型必须严格匹配 。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9630749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存