INSERT到表中而不指定列名

时间:2013-06-19 11:08:36

标签: sql sql-server

我有INVOICE TABLE 我想通过不指定列名来插入值 使用SQL Server,我尝试了这个,但它没有用。请帮助

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

4 个答案:

答案 0 :(得分:26)

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

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

SQL需要围绕文本值使用单引号。

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

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

答案 1 :(得分:9)

你为什么要这样做?不指定列名是错误的编码实践。

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

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

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

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

答案 2 :(得分:7)

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

insert into `schema`.`tablename` values(val1,val2,val3);

答案 3 :(得分:3)

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

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