主键与唯一键
可用于标识或访问数据库中的一行或一组行的列或一组列称为键。唯一键是可以唯一标识关系数据库上下文中表中的行的键。唯一键由一列或一组列组成。主键也是表中唯一标识行的列的组合。但它被认为是一种特殊情况下的唯一钥匙。
什么是唯一键?
如前所述,unique key是一个或一组列,可以唯一地标识表中的一行。因此,一个唯一的键被约束,使得它的两个值都不相等。一个重要的属性是唯一键不强制NOTNULL约束。由于NULL表示缺少值,如果一列中有两行为NULL,则不意味着值相等。定义为唯一键的列只允许该列中有一个空值。然后可以使用它唯一地标识该行。例如,在包含学生信息的表中,学生ID可以定义为唯一键。因为没有两个学生可以有相同的ID,它唯一地识别一个学生。因此,student ID列满足唯一键的所有属性。根据数据库的设计,一个表可能有多个唯一键。
什么是主键?
主键也是唯一定义关系数据库表中一行的列或列的组合。一个表最多只能有一个主键。主键强制隐式NOT NULL约束。因此,定义为主键的列中不能有空值。主键可以是表中保证唯一的常规属性,如社会保险号,也可以是数据库管理系统生成的唯一值,如Microsoft SQL Server中的全局唯一标识符(GUID)。主键是通过ansisql标准中的主键约束定义的。也可以在创建表时定义主键。SQL允许主键由一个或多个列组成,并且主键中包含的每个列都隐式定义为NOT NULL。但是一些数据库管理系统要求主键列显式地不为空。
主键和唯一键的区别