Sql 可以同时创建一个包含索引的表吗?

Sql 可以同时创建一个包含索引的表吗?,sql,sql-server,Sql,Sql Server,我想创建一个表: CREATE TABLE sfc.OpenId ( Url VARCHAR(255) PRIMARY KEY, UserGuid uniqueidentifier NOT NULL references dbo.aspnet_users(userId), ) …具有UserGuid上的索引 是否可以在create table语句中创建该索引?如果UserGuid上的索引是唯一索引,则可以通过unique约束创建该索引。否则,不会 是否可以在CREATETABLE语句中

我想创建一个表:

CREATE TABLE sfc.OpenId (
  Url VARCHAR(255) PRIMARY KEY,
  UserGuid uniqueidentifier NOT NULL references dbo.aspnet_users(userId),
)
…具有UserGuid上的索引


是否可以在create table语句中创建该索引?

如果UserGuid上的索引是唯一索引,则可以通过unique约束创建该索引。否则,不会

是否可以在CREATETABLE语句中创建该索引

否,只能在中创建约束

如果没有其他定义,主键将自动成为聚集索引-但这不包括
userguid
列。否则需要单独声明。

您能澄清原因吗


您可以在SQL server中使用带有DDL的事务,在大多数情况下,这相当于同时使用。

方便、键入更少、工作量更少。不必键入
begintran
(语句)
rollbackcommit
。在我的语句末尾突出显示
begin-tran
,看看它是否有效,然后有选择地点击突出显示的
commit
rollback
,另外在创建后向表中添加一些内容通常要详细得多。好吧,我认为功能是您的主要目标。。。如果是那样的话,那就没问题了。不过,如果我们谈论的是方便性,那么我们可以提出一个论点,即索引现在确实与CREATETABLE语句属于同一类别。对于某些活动,您可能希望删除所有索引、更改它们或测试不同的索引—为此,冗长和将索引从表定义中分离非常方便。与维护整个系统相比,维护数据库创建脚本从来都不是那么多工作,除非您有数百个表,在这种情况下,您最好编写脚本本身(从一些数据字典中),这样您就不必键入任何内容(详细性并不重要)。拥有一个详细(且注释良好)的数据库创建脚本是一个加号,IMO.no,openId规范是同一个“用户”可以有许多与之关联的URL。