1

如果我的 SQL 创建语句如下;

CREATE TABLE TABLENAME12
(
  TAB_ID INT NOT NULL AUTO_INCREMENT,
  NAME_FIRST NVARCHAR(200),
  TYPE NVARCHAR(200),
  PRIMARY KEY( TAB_ID )
);

如果我想向其中插入值,我也应该输入TAB_ID吗?因为它是自动递增的。

当我INSERT INTO SWM_SALES_FEEDBACK VALUES (1,'Jerry','ty');插入它时,如果我没有指定主键,INSERT INTO SWM_SALES_FEEDBACK VALUES ('Jerry','ty');我会收到以下错误:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

1.) 如果它没有自动递增,那么拥有 AUTO_INCREMENT 有什么意义。2.)如果我有一个名为:

BIRTH_TIME DATE,

我应该如何向该字段插入值,因为它是 DATE类型

4

6 回答 6

6

1)您必须尊重表格中列的顺序。您可以执行以下任一操作:

INSERT INTO SWM_SALES_FEEDBACK VALUES (null, 'Jerry','ty');

或者

INSERT INTO SWM_SALES_FEEDBACK (NAME_FIRST, TYPE) VALUES ('Jerry','ty');

2) 日期列可以使用 '2012-07-24' 格式。

于 2012-07-24T13:26:12.227 回答
3

使用自动增量,您需要指定列

INSERT INTO tablename12 ('name_first','type') values ('Jerry','ty')
于 2012-07-24T13:26:22.617 回答
2

如果您没有插入每一列,则需要告诉查询您要插入哪些列。尝试INSERT INTO SWM_SALES_FEEDBACK (NAME_FIRST,TYPE) VALUES ('Jerry','ty');

于 2012-07-24T13:26:49.303 回答
2

不确定 mysql 在新版本中是否有 to_date() 函数:

但是,您可以使用:只需将日期时间字段括在单引号中。您可以指定日期时间格式

  INSERT INTO table_name (birth_date) VALUES ('2008-07-04')

对于其他日期格式问题,请参阅

对于您的自动增量,指定列

INSERT INTO SWM_SALES_FEEDBACK (NAME_FIRST,TYPE) VALUES ('Jerry','ty'); 
于 2012-07-24T13:27:40.877 回答
1

试试下面的代码

INSERT INTO SWM_SALES_FEEDBACK (NAME_FIRST,TYPE) VALUES ('Jerry','ty'); 
于 2012-07-24T13:26:24.763 回答
1

Point 1

如果您不想将所有字段存储在 DB 中,则必须在VALUES子句之前指定这些列名,如下所示。

INSERT INTO myTable (field2,field3) VALUES ('field2','field3')

在你的情况下,声明应该是

INSERT INTO SWM_SALES_FEEDBACK (name_first, type) VALUES ('Jerry','ty')
                               ^^^^^^^^^^^^^^^^^^

Point 2

如果您的字段为 DATETIME,TIMESTAMP 作为数据类型,则可以输入日期为

INSERT INTO myTable (myDate) VALUES ('2012-12-28 12:12:12')

格式为yyyy-mm-dd hh:mm:ss

如果要将系统的当前时间存储在数据库中,可以使用NOW()如下所示。

INSERT INTO myTable (myDate) VALUES (NOW())
于 2012-07-24T13:39:26.737 回答