T-SQL的INSERT命令的語法:
INSERT [INTO]
{table_name|view_name}
[{(column_name,column_name,…)}]
{VALUES (expression,expression,…)}
方括號內是可選的。
列名的列表必須用圓括號包圍住,逗號分隔。
關鍵字VALUES是必須的,數據值用圓括號包圍,逗號分隔。
最好是盡量避免在名稱中包含空格;
如果表或視圖的名稱與保留字相同或包含空格,則必須用方括號或雙引號將名稱包圍起來。
不過,如果確實需要,那么最好使用方括號,因為有時要把列數據值設置為類似Acme's Rockets的值,此時用雙引號包圍Acme's Rockets便於添加數據,如下所示:
VALUES
(...
"Acme's Rockets",
...)
當用雙引號來替代方括號包圍表或視圖名稱時,是在使用引用標識符,也就是在創建數據庫時,使用了如下設置:
SET QUOTED_IDENTIFIER ON
如果數據庫設置了“SET QUOTED_IDENTIFIER ON”,那么就不能使用雙引號包圍類似Acme's Rockets這樣的數據值了。
為了確保查詢編輯器設置為允許以雙引號分隔字符串,可以在任何需要用到引號的查詢處,放置下面的代碼:
SET QUOTED_IDENTIFIER OFF
GO
注意,使用SET QUOTED_IDENTIFIER OFF有一個隱藏的麻煩:當使用T-SQL命令時,許多時候可能要用雙引號來包圍保留字,而非方括號;然而,如果將QUOTED_IDENTIFIER設置為OFF,就只能用方括號包圍保留字。如果將QUOTED_IDENTIFIER設置為ON,則無法在名稱中輸入類似與Acme's這樣的字符串,而必須把代碼中的單引號用兩個單引號來表示:
VALUES
(...
'Acme''s Rockets',
...)
如果沒有在INSERT語句中指定列,那么提供的數據值的數目必須與要在其中進行插入的表的列數相同;如果指定了列的列表,則數據值的數目必須與INSERT語句中指定列表中的列數相同。
建議永遠指明列名,即便是以列在表中布局的順序向表的所有列中插入數據。
能夠從一個INSERT語句插入多行數據,要實現這一目的,可以把要添加的每一行用它自己單獨的一對圓括號包圍起來,而各對圓括號之間用逗號分隔開,如下:
VALUES
(...
"Acme's Rockets",
...),
(...
"Tom's Rockets",
...),
…