Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL CREATE TABLE语句中的主键定义_Mysql - Fatal编程技术网

MySQL CREATE TABLE语句中的主键定义

MySQL CREATE TABLE语句中的主键定义,mysql,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_INCRE

这段代码之间的区别是什么:

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;
密码


因此,可以使用单独的主键语句或作为列定义的一部分。列定义中的唯一索引和唯一关键字也有同样的问题。

给猫换肤的方法有很多种,以上两个例子就是其中的两个。它们是相同的。没有区别。

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

它们实际上是相同的。这里有一个快速的网站,向你展示了不同的方法

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

如果您只想创建一个列并在其上添加索引,那么这种方法就可以了


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

我的看法是。。第一种方法用于创建复合关键点。而如果表中只有主键,则主要使用第二种方法(我更容易理解)


如果要实现复合键,则不能使用第二种方法,因为两者都是相同的,不是吗?我并不完全同意,请看@thomasrutterThank的答案!我喜欢有论据的答案。我并不完全同意,请参阅@ThomasRutter的答案。更确切地说,他提供的两个例子做了完全相同的事情,但前一个例子比后一个例子有更多的特点。