2013-06-19 71 views
7

INVOICETABLE 我想插入使用SQL Server不指定列名 價值,我已經試過這一點,但它不是working..please幫助INSERT到表而不指定列名

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

沒有你的表結構,我們將無法幫助... –

+2

和錯誤是?什麼是'KEYBOARD'?你有沒有指定所有的列?其有據可查http://msdn.microsoft.com/en-us/library/ms174335.aspx – Jodrell

+2

INSERT INTO table_name(column1,column2,column3,...) VALUES(value1,value2,value3,...) ; – null

回答

8

爲什麼你想這樣做嗎?不指定列名是不好的編碼習慣。

在你的情況,不過,keyboard需要由單引號包圍:

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

如果你只是不想鍵入列名,你可以很容易地在SQL Server Management Studio中得到它們。打開「對象瀏覽器」,打開數據庫,然後選擇「表格」。選擇Invoice表格。其中一個選項是「列」。

只需點擊「列」名稱(無需打開它)並將其拖入查詢窗口。它會插入列​​的列表。

18

只要在INSERT語句中有適當的列數,並且只要KEYBOARD以外的所有值都是某種數字數據類型,並且只要您具有合適的權限,就可以工作。

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

SQL需要單引號圍繞文本值。

但是不使用列名不是一個好的做法。人們改變表格中列的順序並不是聞所未聞。改變列的順序也不是一個好習慣,但有些人堅持要這樣做。

如果有人這樣做,並將表中的第5和第7列互換,那麼INSERT語句仍然會成功 - 這兩列都是數字 - 但INSERT會搞砸你的數據。

+0

剛剛在生產中的代碼崩潰時遇到了這種情況,因爲我的團隊主管在分階段數據庫中以不同的順序創建了Prod DB上的表。所以,雙方都有不好的做法。 –

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

你忘了,包括在鍵盤的單引號,文本需要在SQL單引號

2

是的,你可以按照如下直接將值插入表:

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