MySQL CREATE TABLE语句中的PRIMARY KEY定义

时间:2011-09-08 15:16:00

标签: 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;

和此:

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

这是一个单独的PRIMARY KEY语句或作为列定义的一部分。列定义中UNIQUE INDEX和UNIQUE关键字的问题相同。

5 个答案:

答案 0 :(得分:46)

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

如果您只是想创建一个列并在其上添加索引,这样就可以了。

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

答案 1 :(得分:3)

MySQL允许使用PRIMARY KEY指令允许您动态设置主键。提供PRIMARY KEY作为构造函数的参数只能在创建列时调用。 PRIMARY KEY(X),PRIMARY KEY(Y),PRIMARY KEY(Z)允许在后续查询中更改主键。

答案 2 :(得分:1)

我看到它的方式是..第一种方法用于创建复合键。虽然表中只有主键,但主要使用第二种方法(对我来说更易读)。

如果要实现复合键

,则无法使用第二种方法

答案 3 :(得分:0)

皮肤猫的方法有很多种,其中2个例子只有2个。它们完全相同。没有区别。

答案 4 :(得分:0)

它们实际上是相同的。这是一个快速网站,向您展示了不同的方式(3)。 http://www.java2s.com/Code/SQL/Key/Defineanduseprimarykey.htm