MySQL CREATE TABLE语句中的PRIMARY KEY定义

waa*_*ers 49 mysql

这段代码有什么区别:

CREATE TABLE samples (
  sampleid INT(11) NOT NULL AUTO_INCREMENT,
  sampledate DATE NOT NULL,
  location VARCHAR(25) NOT NULL,
  PRIMARY KEY (sampleid)
)
ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

还有这个:

CREATE TABLE samples (
  sampleid INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  sampledate DATE NOT NULL,
  location VARCHAR(25) NOT NULL,
)
ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

码?

所以单独的PRIMARY KEY语句或作为列定义的一部分.列定义中UNIQUE INDEX和UNIQUE关键字的相同问题.

tho*_*ter 48

第二种语法只是一个快捷方式,允许您指定列并在单个子句中为其添加索引.

如果您只想创建一个列并在其上添加索引,这样就可以正常工作.

如果要执行更复杂的操作,则需要使用第一种语法,例如,基于多列而不是单列添加索引,或者在现有列上添加或更改索引; 也就是说,您不是同时在其上创建列和索引.

  • 谢谢!我喜欢带有争论的答案 (5认同)