关键字CONSTRAINT在此CREATE TABLE语句中执行的操作

时间:2009-07-24 18:28:44

标签: python sql

我正在学习如何在python中使用sqlite3。我正在阅读的教科书中的示例是一个数据库,其中每个国家/地区记录都有一个Region,Country和Population。

这本书说:

  

以下代码段使用CONSTRAINT关键字指定   表中没有两个条目   创建将具有相同的值   对于地区和国家:

>>> cur.execute('''
CREATE TABLE PopByCountry(
    Region TEXT NOT NULL,
    Country TEXT NOT NULL,
    Population INTEGER NOT NULL,
    CONSTRAINT Country_Key PRIMARY KEY (Region, Country))
''')

请你解释CONSTRAINT Country_Key在这里的作用。如果我删除它,单独使用PRIMARY KEY语句似乎可以确保每个国家/地区都有该区域的唯一名称。

2 个答案:

答案 0 :(得分:12)

Country_key只是为约束命名。如果您不这样做,将为您生成名称。当表上存在多个约束并且您需要删除其中一个约束时,这非常有用。

作为删除约束的示例:

ALTER TABLE PopByCountry DROP CONSTRAINT Country_Key

答案 1 :(得分:1)

如果从语句中省略CONSTRAINT Contry_Key,SQL Server将为您生成PRIMARY KEY约束的名称(PRIMARY KEY是一种约束)。

通过在查询中专门设置CONSTRAINT,您实际上是为主键约束指定了一个名称。