25

我有INVOICE TABLE 我想通过不指定列名来插入值SQL Server,我已经尝试过了,但它不起作用..请帮助

INSERT INTO INVOICE
VALUES( 1,1,KEYBOARD,1,15,5,75)
4

4 回答 4

43

只要您在 INSERT 语句中有正确的列数,并且除了 KEYBOARD 之外的所有值都是某种数字数据类型,并且只要您具有适当的权限,这应该可以工作。

INSERT INTO INVOICE VALUES( 1,1,'KEYBOARD',1,15,5,75);

SQL 要求在文本值周围加上单引号。

但不使用列名不是一个好习惯。人们改变表中列的顺序并非闻所未闻。更改列的顺序也不是一个好习惯,但有些人还是坚持这样做。

如果有人这样做,并交换表中的第 5 列和第 7 列,您的 INSERT 语句仍然会成功——这两列都是数字的——但 INSERT 会搞砸你的数据。

于 2013-06-19T11:10:32.750 回答
13

你为什么想做这个?不指定列名是不好的编码习惯。

但是,在您的情况下,keyboard需要用单引号括起来:

INSERT INTO INVOICE VALUES( 1,1, 'KEYBOARD',1,15,5,75)

如果您只是不想键入列名,则可以在 SQL Server Management Studio 中轻松获取它们。打开“对象浏览器”,打开数据库,然后选择“表”。选择Invoice表。选项之一是“列”。

只需单击“列”名称(无需打开它)并将其拖到查询窗口中。它将插入列列表。

于 2013-06-19T11:10:25.140 回答
9

是的,您可以直接将值插入表中,如下所示:

insert into `schema`.`tablename` values(val1,val2,val3);
于 2017-02-27T18:40:53.277 回答
4
INSERT INTO INVOICE VALUES( 1,1,'KEYBOARD',1,15,5,75);

您忘记在键盘中包含单引号,在 sql 中文本需要单引号

于 2013-06-19T13:15:52.380 回答