office交流網(wǎng)--QQ交流群號(hào)及微信交流群

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請用微信掃碼)

        

Access SQL語句 Insert into 詳細(xì)用法 教程及插入數(shù)據(jù)常見錯(cuò)誤的解決辦法

2017-08-16 14:32:00
zstmtony
原創(chuàng)
24476
Access SQL語句 Insert into 詳細(xì)用法 教程及向數(shù)據(jù)表中插入數(shù)據(jù)常見錯(cuò)誤的解決辦法

Access Insert into語句的主要用法:

多記錄追加查詢:
INSERT INTO 目標(biāo)表 [(字段1[, 字段2[, ...]])] [IN 外部數(shù)據(jù)庫] SELECT [源表.]字段1[, 字段2[, ...] FROM 源表
單記錄追加查詢:
INSERT INTO 目標(biāo)表 [(字段1[, 字段2[, ...]])] VALUES (值1[, 值2[, ...])

但偶爾Insert into Sql語句執(zhí)行時(shí)會(huì)提示一些錯(cuò)誤

“Insert Into 語法錯(cuò)誤”,為了這樣一個(gè)錯(cuò)誤要找好久才能解決問題,"Insert Into 語法錯(cuò)誤"這個(gè)提示本身包含的信息量也很少,


為了避免大家在開發(fā)的過程中遇到同樣的錯(cuò)誤和困擾。把常見的解決辦法總結(jié)一下與大家分享。

1.保留關(guān)鍵字:如果你的數(shù)據(jù)庫的表的設(shè)計(jì)包含了Access本身的關(guān)鍵字(保留字),則在插入的時(shí)候會(huì)出現(xiàn)“Insert Into 語法錯(cuò)誤”
例如:
strSql="Insert into 測試表 (Id,Order) values (12,0)"
這行上面這條語句是失敗的,原因是測試表 表中有一個(gè)關(guān)鍵字"Order",解決辦法:
1).將語句中的關(guān)鍵字用[order]處理就可以了。如:
strSql="Insert into 測試表 (Id,[Order]) values (12,0)"
2).將表名及所有的字段都用[]括起來,這種方式來解決關(guān)鍵字的沖突問題。如:

strSql="Insert into [測試表] ([Id],[Order]) values (15,0)"  解決方法就是在表和表的字段上面加上中括號(hào)就可以了

3).在設(shè)計(jì)數(shù)據(jù)庫的時(shí)候盡量避免使用Access本身的保留字。這樣就不會(huì)出現(xiàn)應(yīng)為關(guān)鍵字問題引起的錯(cuò)誤了,這也是最好解決方法。

2.文本類型:字符類型引起的“Insert Into 語法錯(cuò)誤”,通常是因?yàn)閿?shù)據(jù)庫設(shè)計(jì)的時(shí)候字段是字符型的,結(jié)果在Insert into 的時(shí)候字段值沒有加''引起的。

3.備注類型:備注類型的字段和文本字段一樣,碰到問題,可以用同樣的方法解決
4.日期/時(shí)間類型:日期/時(shí)間類型的字段要加#號(hào)



微軟官方的教程:




INSERT INTO 語句 (Microsoft Access SQL)

Office 2013 及更高版本


上次修改時(shí)間:2015年3月9日

適用范圍:Access 2013 | Access 2016

將一個(gè)或多個(gè)記錄添加到表中。該語句稱為追加查詢。

多記錄追加查詢:

INSERT INTO target [(field1[, field2[, ...]])] [IN externaldatabase] SELECT [source.]field1[, field2[, ...] FROM tableexpression

單記錄追加查詢:

INSERT INTO target [(field1[, field2[, ...]])] VALUES (value1[, value2[, ...])

INSERT INTO 語句包含以下部分:

部分

說明

target

要追加記錄的表或查詢的名稱。

field1、field2

向其中追加數(shù)據(jù)的字段的名稱(如果在 target 參數(shù)之后),或獲取其中數(shù)據(jù)的字段的名稱(如果在 source 參數(shù)之后)。

externaldatabase

外部數(shù)據(jù)庫的路徑。有關(guān)路徑的說明,請參閱 IN 子句。

source

要復(fù)制其中記錄的表或查詢的名稱。

tableexpression

作為插入記錄來源的表的名稱。該參數(shù)可以是單個(gè)表名或者是從 INNER JOIN、LEFT JOINRIGHT JOIN 操作或保存的查詢產(chǎn)生的組合結(jié)果。

value1、value2

要插入新記錄特定字段中的值。每個(gè)值將插入到與該值在列表中的位置相對應(yīng)的字段內(nèi):value1 將插入到新記錄的 field1 字段,value2 插入到 field2 字段等等。這些值必須用逗號(hào)分隔,并且用引號(hào) (' ') 引起來。


通過如上所述的單記錄追加查詢語法,可以使用 INSERT INTO 語句向表中追加單個(gè)記錄。在這種情形下,代碼要指定每個(gè)記錄字段的名稱和值。必須指定每一個(gè)將被賦值的記錄字段,并且要給出該字段的值。如果沒有指定每個(gè)字段的值,則在缺少值的列中插入默認(rèn)值或 Null 值。記錄將追加到表的末尾。

通過如上所示的多字段追加查詢語法的 SELECT ... FROM 子句,還可以使用 INSERT INTO 追加一組來自其他表或查詢的記錄。這種情形下,SELECT 子句指定將要追加到指定的 target 表中的字段。

sourcetarget 表可以指定表或查詢。如果指定了查詢,Microsoft Access 數(shù)據(jù)庫引擎會(huì)將記錄追加到查詢指定的任何表或所有表中。

INSERT INTO 是可選的,但是如果包括它,應(yīng)將它置于 SELECT 語句前面。

如果目標(biāo)表中包含主鍵,請確保追加到主鍵字段中的值是唯一的、非 Null 的;否則,Microsoft Access 數(shù)據(jù)庫引擎不會(huì)追加這些記錄。

如果將一個(gè)自動(dòng)編號(hào)字段記錄追加到一個(gè)表中,并且希望對該追加的記錄重新編號(hào),那么不要在查詢語句中包含自動(dòng)編號(hào)字段。如果希望保持字段的原始值,請務(wù)必在查詢語句中包含自動(dòng)編號(hào)字段。

通過 IN 子句可以將記錄追加到其他數(shù)據(jù)庫的表中。

若要新建表,請使用 SELECT... INTO 語句來創(chuàng)建一個(gè)生成表查詢。

若要在運(yùn)行追加查詢之前找出將要追加哪些記錄,可以先執(zhí)行使用同樣選擇條件的選擇查詢并查看其結(jié)果。

追加查詢把記錄從一個(gè)或多個(gè)表復(fù)制到其他表中。包含所追加的記錄的表不會(huì)受追加查詢影響。

如果不想從其他表中追加現(xiàn)有記錄,可以通過 VALUES 子句指定每個(gè)字段在新的單個(gè)記錄中的值。如果忽略了字段列表,VALUES 子句必須包括該表中每個(gè)字段的值;否則,INSERT 操作將會(huì)失敗。通過附加的帶有 VALUES 子句的 INSERT INTO 語句,可以創(chuàng)建希望得到的每一個(gè)新增記錄。









分享
文章分類
聯(lián)系我們
聯(lián)系人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動(dòng)訪問