access文法大全
like查詢用*
SELECT *
FROM flash
WHERE filename like '*http*';
DELETE *
FROM company_guangxi
WHERE 機構名稱 not like '*公司*' and 機構名稱 not like '*工廠*';
刪除查詢
DELETE * FROM 訂單 WHERE 訂單.下單日期 <=#1/1/2002#
更新查詢
UPDATE 產品 SET 產品.建議售價 = [建議售價]*1.2 WHERE 產品.廠牌="MOTOROLA"
access sql語句查詢
查詢時產生序號
SELECT (SELECT Count([xlh].[aa]) AS AutoNum FROM xlh WHERE (((xlh.aa) <=xlh_Alias.aa));) AS 序號, xlh.aa
FROM xlh AS xlh_Alias INNER JOIN xlh ON xlh_Alias.aa=xlh.aa
ORDER BY xlh.aa;
多表sql查詢
SELECT test.aa AS 第一個欄位, test1.bb AS 第二個欄位, test1.cc
FROM test, test1
WHERE test.aa=test1.aa;
多表sql查詢1
SELECT a.aa, b.bb, b.cc, b.cc*100 AS 合計
FROM test AS a, test1 AS b
WHERE a.aa=b.aa;
多表sql查詢排序
SELECT a.aa, b.bb, b.cc AS 第三個欄位
FROM test AS a, test1 AS b
WHERE a.aa=b.aa
ORDER BY b.cc;
查詢例子
SELECT a.dhhm
FROM xl11a AS a, xl919 AS b
WHERE a.dhhm=b.dhhm and aa <>"1";
日期時間分隔字元是#而不是引號
Select * From Tab1 Where [Date]>#2002-1-1#;
函數及計算
合計的群組,運算式及條件
SELECT 訂單.客戶編碼, Sum(訂單.含稅價) AS 含稅價之總計, Last(訂單.訂單日期) AS 訂單日期之最後一筆, Date()-[訂單日期之最後一筆] AS 距今天數 FROM 訂單 WHERE (訂單.訂單日期>=#12/1/2006#) GROUP BY 訂單.客戶編碼
11-2 查詢指令
群組
條件
多個計算欄位
多資料表查詢指令
INNER JOIN-最基本的JOIN方式
SELECT 客戶.公司名稱, 訂單.訂單編號, 訂單.訂單日期 FROM 客戶 INNER JOIN 訂單 ON 客戶.客戶編碼 = 訂單.客戶編碼
11-2 查詢指令
多資料表查詢指令
LEFT及RIGHT JOIN
SELECT 客戶.公司名稱, 客戶.連絡人姓名, 訂單.客戶編碼 FROM 客戶 LEFT JOIN 訂單 ON 客戶.客戶編碼 = 訂單.客戶編碼 WHERE (訂單.客戶編碼 Is Null)
11-2 查詢指令
四種巨集指令查詢指令
製成資料表
SELECT 客戶.客戶編碼, 客戶.公司名稱, 訂單.下單日期, 訂單.含稅價 INTO 客戶及訂單 FROM 客戶 INNER JOIN 訂單 ON 客戶.客戶編碼 = 訂單.客戶編碼
新增查詢
INSERT INTO 客戶及訂單 ( 客戶編碼, 公司名稱, 下單日期, 含稅價 ) SELECT 客戶.客戶編碼, 客戶.公司名稱, 訂單.下單日期, 訂單.含稅價 FROM 客戶 INNER JOIN 訂單 ON 客戶.客戶編碼 = 訂單.客戶編碼
11-3 巨集指令查詢指令
四種巨集指令查詢指令
下邊列出sql server與access的文法差別,方便大家在更換程式資料庫時查詢。
日期分隔符號
access:英鎊符(#)
sql server:撇號(’)
Boolean 常量
access:True、False;On、Off;Yes、No;整數:-1(真)、0(假)。
sql server:整數:1(真)、0(假)
字串串連
access:和號(&)
sql server:加號(+)
萬用字元
access:星號(*)與零個或更多字元匹配。
問號(?)與單個字元匹配。
歎號(!)意味著不在列表中。
英鎊符(#)意味著單個數字。
sql server:百分比符號(%)與零個或更多字元匹配。
底線(_)與單個字元匹配。
上插入符(^)意味著不在列表中。
沒有與英鎊符(#)對應的字元。
DROP INDEX
access:Drop Index <索引名> ON <表名>
sql server:Drop Index <表名>. <索引名>
表添加識別欄位
access:alter table <表名> add <列名> Counter(1,1)
sql server:alter table <表名> add <列名> bigint identity(1,1) not null
1.基本的sql語句
select 欄位,'字串' from 表名 where 條件 order by desc/asc
update 表名 set 欄位=值 where 條件
delete from 表名 where 條件
insert into 表名(欄位名1,欄位名2) VALUES('值1','值2')
注意:欄位名,表名最好使用[]括起來 以免碰到保留字報錯 即使不是保留字 也用下方括弧 養成個好習慣
我這裡使用網站維護管理系統來示範
首先建立一個資料庫
SELECT * FROM [public]
最基本的語句 顯示表裡所有的欄位 如果我們只要顯示一個text那麼,如果需要顯示其他的內容呢。這裡有個好處是access的sql語句 可以對資料做簡單處理 比如一些資料過長 我們只要顯示20字元 下面看
怎麼樣 效果很明顯吧 欄位名可以按照一個變數來處理 調用一些基本函數 這些函數可以參考access的協助
看到了吧
那麼是不是能直接輸出字串呢。我另外設定個常量列 做字串
不過這樣的東西 就不能用這個工具直接改了 畢竟我這個是用來黑站的 不是做實驗……
那麼在實際的應用中 是不是可以直接處理成html代碼直接輸出。
我們看看比如我們需要這樣的<a href="?id=使用者ID>使用者名稱</a>這樣的資料格式 常規做法是從資料庫調ID和使用者名稱出來 再到asp裡分別設定成2個變數處理 那麼我們看看直接在sql裡操作。字串前後要用單引號 串連使用"&"符號
出來了 沒錯吧
SELECT '<a href=?id='&id&'>'&user&'</a>' FROM [user]
我分析下 這裡把'<a href=?id='做常量 之後資料庫的欄位按變數處理 之後串連 就是'常量'&變數&'常量'
這個應該很熟悉了吧 之後要注意的是 這樣把幾個變數合成了一列 一列是按照文字格式設定處理的 長度如果超過了255 後面的資料就會丟失 所以在實際運用的時候 應該注意下分解長度 把很長的一列 分成多列 比如
用,表示分列 之後分別調用就可以了
之後是條件 表名後加where order是排列順序desc倒序/asc順序
很明白了吧
update 表名 set 欄位=值 where 條件
修改就更簡單了 條件最好不要用字元型 要不效率低 也容易出錯
delete 也一樣了DELETE FROM [test] WHERE name='test'
這條資料就刪除了
(欄位名1,欄位名2)這個是可以省略的 省略時表示按順序插入所有欄位(欄位名1,欄位名2)
insert into test VALUES('test',2,now)
注意這個now也是一個函數 表示目前時間 一般的說 時間的值用now的可能性比較大 不用專門設定
sql="select * from 資料表 where 欄位名=欄位值 order by 欄位名 [desc]"
sql="select * from 資料表 where 欄位名 like '%欄位值%' order by 欄位名 [desc]"
sql="select top 10 * from 資料表 where 欄位名 order by 欄位名 [desc]"
sql="select * from 資料表 where 欄位名 in ('值1','值2','值3')"
sql="select * from 資料表 where 欄位名 between 值1 and 值2"
(2) 更新資料記錄:
sql="update 資料表 set 欄位名=欄位值 where 條件運算式"
sql="update 資料表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件運算式"
(3) 刪除資料記錄:
sql="delete from 資料表 where 條件運算式"
sql="delete from 資料表" (將資料表所有記錄刪除)
(4) 添加資料記錄:
sql="insert into 資料表 (欄位1,欄位2,欄位3 …) valuess (值1,值2,值3 …)"
sql="insert into 目標資料表 select * from 來源資料表" (把來源資料表的記錄添加到目標資料表)
(5) 資料記錄統計函數:
AVG(欄位名) 得出一個表格欄平均值
COUNT(*|欄位名) 對資料行數的統計或對某一欄有值的資料行數統計
MAX(欄位名) 取得一個表格欄最大的值
MIN(欄位名) 取得一個表格欄最小的值
SUM(欄位名) 把資料欄的值相加
引用以上函數的方法:
sql="select sum(欄位名) as 別名 from 資料表 where 條件運算式"
set rs=conn.excute(sql)
用 rs("別名") 擷取統的計值,其它函數運用同上。
(5) 資料表的建立和刪除:
CREATE TABLE 資料表名稱(欄位1 類型1(長度),欄位2 類型2(長度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 資料表名稱 (永久性刪除一個資料表)