Mysql 自增列

Mysql 自增列,mysql,sql,mysql-error-1075,Mysql,Sql,Mysql Error 1075,我想在数据库表中创建一个自动增量列,下面是我编写的语法: create table comments ( name varchar(20), mail varchar(30), comment varchar(100), com_no int auto_increment ); 我得到以下错误: 错误1075 42000:表定义不正确;只能有一个自动列,必须将其定义为键 然后我把它作为主键: create table comments ( nam

我想在数据库表中创建一个自动增量列,下面是我编写的语法:

create table comments
(
     name varchar(20),
     mail varchar(30),
     comment varchar(100),
     com_no int auto_increment
);
我得到以下错误:

错误1075 42000:表定义不正确;只能有一个自动列,必须将其定义为键

然后我把它作为主键:

create table comments
(
    name varchar(20),
    mail varchar(30),
    comment varchar(100),
    com_no int primary_key auto_increment
);
我得到以下错误:

错误1064 42000:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行“primary_key auto_increment,name varchar20,mail varchar30,comment varchar100”附近使用的正确语法

怎么了?

它是主键,没有下划线

create table comments
(
    name varchar(20),
    mail varchar(30),
    comment varchar(100),
    com_no int primary key auto_increment
);

它是不带下划线的主键

create table comments
(
    name varchar(20),
    mail varchar(30),
    comment varchar(100),
    com_no int primary key auto_increment
);

根据在线MySQL手册


根据在线MySQL手册。

正确的语法如下所示,例如:

CREATE TABLE `admin` (
    `id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
    `userid` VARCHAR(50) NULL DEFAULT '0',
    `pwd` VARCHAR(50) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
create table comments
(
  com_no int NOT NULL AUTO_INCREMENT,
  name varchar(20),
  mail varchar(30),
  comment varchar(100),
  PRIMARY KEY (com_no)
);

正确的语法如下所示,例如:

CREATE TABLE `admin` (
    `id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
    `userid` VARCHAR(50) NULL DEFAULT '0',
    `pwd` VARCHAR(50) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
create table comments
(
  com_no int NOT NULL AUTO_INCREMENT,
  name varchar(20),
  mail varchar(30),
  comment varchar(100),
  PRIMARY KEY (com_no)
);

.

使用主键代替主键

使用主键代替主键

在中,只能有一列通常称为,也应定义为。例如:

CREATE TABLE `admin` (
    `id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
    `userid` VARCHAR(50) NULL DEFAULT '0',
    `pwd` VARCHAR(50) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
create table comments
(
  com_no int NOT NULL AUTO_INCREMENT,
  name varchar(20),
  mail varchar(30),
  comment varchar(100),
  PRIMARY KEY (com_no)
);
有关更多详细信息,请参阅。

在中,只有一列通常称为,也应定义为。例如:

CREATE TABLE `admin` (
    `id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
    `userid` VARCHAR(50) NULL DEFAULT '0',
    `pwd` VARCHAR(50) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
create table comments
(
  com_no int NOT NULL AUTO_INCREMENT,
  name varchar(20),
  mail varchar(30),
  comment varchar(100),
  PRIMARY KEY (com_no)
);

有关更多详细信息,请参阅。

当您问一个特定于MySQL的问题时,因为大多数其他SQL RDBMS不使用自动增量,那么您应该用MySQL标记您的问题。当您问一个特定于MySQL的问题时,因为大多数其他SQL RDBMS不使用自动增量,那么您应该用mysql标记。是的,但您的行的开头部分更精细。是的,但您的行的开头部分更精细。int unsigned可能更好unsigned可能更好id int unsigned auto_increment主键完全有效。不知道为什么指定了5的显示宽度,为什么在这个实例中还要麻烦一个呢?id int unsigned auto_increment主键是完全有效的。不知道为什么指定显示宽度为5,在本例中为什么还要麻烦使用一个呢?