36

我正在 SQL Server 2008 中创建一个数据库,

CREATE TABLE Users
(
    U_Id INT NOT NULL
    FirstName VARCHAR(50) NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    Email VARCHAR(200)
    Password VARCHAR(50)
)

我想让 U_Id 成为主键。我想问一下有什么区别

 CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

 CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

还有这个

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

什么时候使用每个?

我读了一些文章,但我仍然不清楚。有人可以给我一个快速的解释吗?

4

1 回答 1

50

以下声明:

CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

和这个一样:

CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

您只能使表数据物理性按其中一个索引排序,并且默认情况下,该索引是用于主键的索引(索引始终支持主键唯一约束)。

如果您想根据其他索引保留要存储的表数据的顺序,那么您应该使用以下命令创建主键:

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

然后使用以下命令创建聚集索引:

CREATE CLUSTERED INDEX ix_Email ON Users (Email); 
于 2012-05-22T17:50:05.873 回答