ACCESS SQL文法參考
一. 基礎概念
可以使用的資料類型如下:
1. TEXT:文本型(指定長度時),備忘型(不指定長度時);
2. CHAR,NCHAR,VARCHAR,NVARCHAR:文本型,可以指定長度,否則預設值為255!
3. BYTE,TINYINT:數字-位元組,不要指定長度和精度,否則會報錯!
4. SMALLINT,SHORT:數字-整型,不要指定長度和精度,否則會報錯!
5. INT,INTEGER,LONG:數字-長整型,不要指定長度和精度,否則會報錯!
6. NUMERIC,DECIMAL:數字-小數,可以指定長度和精度,如只指定長度,那精度預設為0,如都不指定,那麼預設長度18,預設精度0;
7. SINGLE,REAL:數字-單精確度型,不要指定長度和精度,否則會報錯!
8. DOUBLE,FLOAT,NUMBER:數字-雙精確度型,不要指定長度和精度,否則會報錯!
9. MEMO:備忘型,不要指定長度,否則會報錯!
10. BINARY:二進位型,可以指定長度,否則預設長度為510!
11. BIT:位型,可用格式(yes/no, true/false, on/off)
12. MONEY,CURRENCY:貨幣型,不要指定長度和精度,否則會報錯!
13. DATETIME:日期時間型,不要指定長度,否則會報錯!
14. IMAGE,OLEOBJECT: OLE OBJECT型,不要指定長度,否則會報錯!
推薦使用的資料類型如下:
1. 文本類型請使用:TEXT(長度)或 MEMO
2. 數實值型別(整數)請使用:SHORT 或 LONG
3. 數實值型別(小數)請使用:DECIMAL(長度,精度)
4. 日期類型請使用:DATETIME
參考如下MICROSOFT官方資料:
資料類型 儲存大小 說明
BINARY 每字元一個位元組 任何類型的資料都可儲存在這種類型的欄位中。
BIT 1 個位元組 Yes/No(TURE/FALSE, ON/OFF,-1/0)只包含兩值之一的欄位。
TINYINT 1 個位元組 介於 0 到 255 之間的整型數。
MONEY 8 個位元組 介於 – 922,337,203,685,477.5808 到922,337,203,685,477.5807 之間。
DATETIME 8 個位元組 介於 100 到 9999 年的日期或時間數值。
UNIQUEIDENTIFIER 128 個位 用於遠端程序呼叫的唯一識別數字。
REAL 4 個位元組 單精確度浮點數
FLOAT 8 個位元組 雙精確度浮點數
SMALLINT 2 個位元組 介於–32,768 到 32,767 的短整型數。
INTEGER 4 個位元組 介於–2,147,483,648 到 2,147,483,647 的長整型數。
DECIMAL 17 個位元組 你可以定義精度 (1 - 28) 和符號 (0 - 定義精度)。預設精度和符號分別是18和0。
TEXT 每字元2位元組 從0到最大2,14GB位元組。
IMAGE 視實際需要而定 從0到最大2,14GB位元組。用於 OLE 對象。
CHARACTER 每字元2位元組 長度從 0 到 255個字元。
二. DDL
1.建立表:
1)CREATE TABLE XCUST (CUSTNO SHORT NOT NULL,CUSTNAME TEXT(40) NOT NULL,ADDRESS TEXT(60),PRICE DECIMAL(15,4) NOT NULL,SITE DATETIME,TELNO TEXT(30),FAXNO TEXT(30))
2)SELECT * INTO XCUST2 FROM XCUST WHERE CITY NOT LIKE ’中國江西九江’
2.修改表:
1)增加列:ALTER TABLE XCUST ADD COLUMN CITY TEXT(30)
2)刪除列:ALTER TABLE XCUST DROP COLUMN CITY
3)修改列:ALTER TABLE XCUST ALTER COLUMN CITY TEXT(40)
三. DML
1.插入資料:
1)INSERT INTO XCUST (CUST, CITY) VALUES (‘0659’, ’中國上海’)
2)INSERT INTO XCUST VALUES (‘0619’, 18, ’2007-09-22’, ’中國南京’)
3)INSERT INTO XCUST SELECT * FROM XCUST1 WHERE CITY LIKE ‘美國%’
2.修改資料:
1)改日期:UPDATE XCUST SET NDATE='2007/07/17' WHERE CUST='0659'
2)改數值:UPDATE XCUST SET CAGE=33 WHERE CUST='0659'
3)改文本:UPDATE XCUST SET CUST=’0699’ WHERE CUST='0659'
四. 字串比較中使用萬用字元
僅當使用 Microsoft? Jet 4.X 版和 Microsoft OLE DB Provider for Jet 時,ANSI SQL 萬用字元 (%) 和 (_) 才可用。若使用 Microsoft Access 或 DAO,則將其視為原義字元。
在樣式中的字元 在運算式中的匹配
? or _(底線) 任何單一字元
* or % 零個或多個字元
# 任何單一數字(0 — 9)
[字元列表] 任何在字元列表中的單一字元
[!字元列表] 任何不在字元列表中的單一字元
用括在括弧 ([ ]) 中的一組字元(字元表)來匹配運算式中任何的單一字元,而且字元表中幾乎可以包含 ANSI 字元集中的任何字元,包括數字。事實上特殊字元,如左括弧 ([ )、問號(?)、井字型大小(#)和星號(*),當它們括在括弧內時,可以直接和它們自己匹配。一組字元內的右括弧 ( ]) 不能匹配它自己,但是如果它是一組之外的單一字元,就能用來匹配。除了括在括弧內的字元的簡單表列,字元表可以指定一字元範圍,用連字號號 (-) 來隔開範圍的上下界。例如,在樣式中使用 [A-Z] ,可在包含從 A 到 Z 的任何大寫字母的運算式內,找出相應的字元位置。可以在括弧之中包含多個範圍且不需要在範圍間划上界線。例如,[a-zA-Z0-9] 指任何符合文數值的字元。
樣式匹配的重要的規則還有:
?在字元表開頭的驚歎號(!),意味著在運算式中尋找那些不包括在字元表中的字元。若驚歎號(!)在括弧之外,它只匹配它自己。
?如果連字號(-)在字元表的開頭(如果有驚歎號,則緊跟在驚歎號之後),或在字元表的末尾,則它匹配連字號(-)自己。否則它被視為 ANSI 字元範圍的標識。
?當您指定一個字元範圍時,首尾字元必須以升序的順序出現(A-Z 或 0-100)。例如,[A-Z] 是有效,而 [Z-A] 則無效。
?字元順序 [ ] 忽略不計,被看作零長度字串 (“”)。