我想问一下在哪种情况下可以在SQL中使用UNIQUE关键字。我知道,如果我声明一列作为主键本身具有唯一性,但是其他属性(如国家/地区)会怎样?在此使用唯一约束是否合适?
答案 0 :(得分:3)
只要您希望该列的每一行条目都彼此不同,就使用sql中的unique
关键字。主键列自动是唯一的,但是在某些情况下,您可能希望更多列是唯一的。
例如,如果您有一个product_id
作为主键,它将确保没有其他行具有product_id
作为该行的产品。此外,您不希望两行具有相同的product_imei
,然后可以使product_imei
唯一。
您可以使用Primary Key(column1,column2)
之类的复合主键,但这意味着从product_id
和product_imei
获得的组合将是唯一的。
例如
如果(DLK-22,356938035643809)
是主键,则(DLK-22, 11111111111111)
和(product_id,product_imei)
都可以存在于表中。
因此,您可以在任意数量的列上使用unique
约束,其约束取决于所面临问题的情况。如果有帮助,您可以将unique
约束与country
一起使用,这样做没有问题
答案 1 :(得分:2)
UNIQUE约束确保一列中的所有值都不同。 UNIQUE和PRIMARY KEY约束都为一列或一组列的唯一性提供了保证。 PRIMARY KEY约束自动具有UNIQUE约束。
答案 2 :(得分:1)
与任何其他约束一样,UNIQUE
约束会强制执行某种程度的数据质量。如果将此约束添加到列,则该列上的所有值都将不同。
例如,在EMPLOYEE_PK
已经是唯一的表(因为它是PK)上,您可能要强制执行CARD_NUMBER
列也是唯一的;那是员工卡上显示的数字。在您的模型中,卡号可能与PK不同,并且您可能还需要确保其唯一性。
UNIQUE约束的另一个额外好处是其他表可以将外键链接到它。由于UNIQUE列有效地充当“表键”,因此任何其他表都可以建立指向它的外键。我遇到了很多人,他们[错误地]认为外键只能指向主键。