首先來看看SQL語法
DB2 提供了關連式資料庫的查詢語言 SQL (Structured Query Language),是一種非常口語化、既易學又易懂的語法。此一語言幾乎是每個資料庫系統都必須提供的,用以表示關連式的操作,包含了資料的定義(DDL)以及資料的處理(DML)。 SQL原來拼成SEQUEL,這語言的原型以"系統 R"的名字在 IBM 聖荷西實驗室完成,經過IBM內部及其他的許多使用性及效率測試,其結果相當令人滿意,並決定在系統R 的技術基礎發展出來 IBM 的產品。而且美國國家標準學會(ANSI)及國際標準化組織(ISO)在1987遵循一個幾乎是以 IBM SQL 為基礎的標準關連式資料語言定義。
一、資料定義 DDL(Data Definition Language)
資料定語言是指對資料的格式和形態下定義的語言,他是每個資料庫要建立時候時首先要面對的,舉凡資料分哪些表格關係、表格內的有什麼欄位主鍵、表格和表格之間互相參考的關係等等,都是在開始的時候所必須規劃好的。
1、建表格:
CREATE TABLE table_name(
column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...)
說明:
DATATYPE --是資料的格式,詳見表。
NUT NULL --可不可以允許資料有空的(尚未有資料填入)。
PRIMARY KEY --是本表的主鍵。
2、更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
ADD PRIMARY KEY (column_name)
說明:更改表得的定義把某個欄位設為主鍵。
DROP PRIMARY KEY (column_name)
3、建立索引
CREATE INDEX index_name ON table_name (column_name)
說明:對某個表格的欄位建立索引以增加查詢時的速度。
DROP table_name
DROP index_name
二、的資料形態 DATATYPEs
smallint
16 位元的整數。
interger
32 位元的整數。
decimal(p,s)
p 精確值和 s 大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數
點後有幾位數。如果沒有特別指定,則系統會設為 p=5; s=0 。
float
32位元的實數。
double
64位元的實數。
char(n)
n 長度的字串,n不能超過 254。
varchar(n)
長度不固定且其最大長度為 n 的字串,n不能超過 4000。
graphic(n)
和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態是為
了支援兩個字元長度的字型,例如中文字。
vargraphic(n)
可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000。
date
包含了 年份、月份、日期。
time
包含了 小時、分鐘、秒。
timestamp
包含了 年、月、日、時、分、秒、千分之一秒。
三、資料操作 DML (Data Manipulation Language)
1、增加資料:
INSERT INTO table_name (column1,column2,...)
valueS ( value1,value2, ...)
1.若沒有指定column 系統則會按表格內的欄位順序填入資料。
2.欄位的資料形態和所填入的資料必須吻合。
3.table_name 也可以是景觀 view_name。
SELECT columnx,columny,... FROM another_table
說明:也可以經過一個子查詢(subquery)把別的表格的資料填入。
2、查詢資料:
基本查詢
SELECT column1,columns2,...
FROM table_name
說明:把table_name 的特定欄位資料全部列出來
SELECT *
WHERE column1 = xxx
[AND column2 > yyy] [OR column3 <> zzz]
1.""*""表示全部的欄位都列出來。
2.WHERE 之後是接條件式,把符合條件的資料列出來。
SELECT column1,column2
ORDER BY column2 [DESC]
說明:ORDER BY 是指定以某個欄位做排序,[DESC]是指從大到小排列,若沒有指明,則是從小到大
排列
組合查詢
表格才能夠得到結果的。
FROM table1,table2
WHERE table1.colum1=table2.column1
1.查詢兩個表格中其中 column1 值相同的資料。
2.當然兩個表格相互比較的欄位,其資料形態必須相同。
3.一個複雜的查詢其動用到的表格可能會很多個。
整合性的查詢:
SELECT COUNT (*)
WHERE column_name = xxx
查詢符合條件的資料共有幾筆。
SELECT SUM(column1)
1.計算出總和,所選的欄位必須是可數的數字形態。
2.除此以外還有 AVG() 是計算平均、MAX()、MIN()計算最大最小值的整合性查詢。
SELECT column1,AVG(column2)
GROUP BY column1
HAVING AVG(column2) > xxx
1.GROUP BY: 以column1 為一組計算 column2 的平均值必須和 AVG、SUM等整合性查詢的關鍵字
一起使用。
2.HAVING : 必須和 GROUP BY 一起使用作為整合性的限制。
複合性的查詢
FROM table_name1
WHERE EXISTS (
FROM table_name2
WHERE conditions )
1.WHERE 的 conditions 可以是另外一個的 query。
2.EXISTS 在此是指存在與否。
WHERE column1 IN (
SELECT column1
1. IN 後面接的是一個集合,表示column1 存在集合裡面。
2. SELECT 出來的資料形態必須符合 column1。
其他查詢
WHERE column1 LIKE ""x%""
說明:LIKE 必須和後面的""x%"" 相呼應表示以 x為開頭的字串。
WHERE column1 IN (""xxx"",""yyy"",..)
說明:IN 後面接的是一個集合,表示column1 存在集合裡面。
WHERE column1 BETWEEN xx AND yy
說明:BETWEEN 表示 column1 的值介於 xx 和 yy 之間。
3、更改資料:
UPDATE table_name
SET column1=""xxx""
WHERE conditoins
1.更改某個欄位設定其值為""xxx""。
2.conditions 是所要符合的條件、若沒有 WHERE 則整個 table 的那個欄位都會全部被更改。
DELETE FROM table_name
WHERE conditions
說明:關於WHERE條件後面如果包含有日期的比較,不同資料庫有不同的表示式。具體如下:
(1)如果是ACCESS資料庫,則為:WHERE mydate>#2000-01-01#
(2)如果是ORACLE資料庫,則為:WHERE mydate>cast(""2000-01-01"" as date)
或:WHERE mydate>to_date(""2000-01-01"",""yyyy-mm-dd"")
在Delphi中寫成:
thedate=""2000-01-01"";
query1.SQL.add(""select * from abc where mydate>cast(""+""""""""+thedate+""""""""+"" as date)"");
如果比較日期時間型,則為:
WHERE mydatetime>to_date(""2000-01-01 10:00:01"",""yyyy-mm-dd hh24:mi:ss"")
-----------
ASP中SQL語句參考及記錄集物件
1. ASP與Access資料庫連線:
<%@ language=VBscript%>
<%
dim conn,mdbfile
mdbfile=server.mappath("資料庫名稱.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=資料庫密碼;dbq="&mdbfile
%>
2. ASP與SQL資料庫連線:
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL伺服器名稱或IP地址;UID=sa;PWD=資料庫密碼;DATABASE=資料庫名稱
建立記錄集物件:
set rs=server.createobject("adodb.recordset")
rs.open SQL語句,conn,3,2
3. SQL常用命令使用方法:
(1) 資料記錄篩選:
sql="select * from 資料表 where 欄位名=欄位值 order by 欄位名 "
sql="select * from 資料表 where 欄位名 like ′%欄位值%′ order by 欄位名 "
sql="select top 10 * from 資料表 where 欄位名 order by 欄位名 "
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 條件表示式"
sql="delete from 資料表 where 條件表示式"
(4) 新增資料記錄:
sql="insert into 資料表 (欄位1,欄位2,欄位3 …) values (值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("別名") 獲取統的計值,其它函式運用同上。
CREATE TABLE 資料表名稱(欄位1 型別1(長度),欄位2 型別2(長度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
4. 記錄集物件的方法:
rs.movenext 將記錄指標從當前的位置向下移一行
rs.moveprevious 將記錄指標從當前的位置向上移一行
rs.movefirst 將記錄指標移到資料表第一行
rs.movelast 將記錄指標移到資料表最後一行
rs.absoluteposition=N 將記錄指標移到資料表第N行
rs.absolutepage=N 將記錄指標移到第N頁的第一行
rs.pagesize=N 設定每頁為N條記錄
rs.pagecount 根據 pagesize 的設定返回總頁數
rs.recordcount 返回記錄總數
rs.bof 返回記錄指標是否超出資料表首端,true表示是,false為否
rs.eof 返回記錄指標是否超出資料表末端,true表示是,false為否
rs.addnew 新增記錄到資料表末端
rs.update 更新資料表記錄
-------------------
Recordset物件方法
Open方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset物件可以透過Source屬性來連線Command物件。Source引數可以是一個Command物件名稱、一段SQL命令、一個指定的資料表名稱或是一個Stored Procedure。假如省略這個引數,系統則採用Recordset物件的Source屬性。
ActiveConnection
Recordset物件可以透過ActiveConnection屬性來連線Connection物件。這裡的ActiveConnection可以是一個Connection物件或是一串包含資料庫連線資訊(ConnectionString)的字串引數。
CursorType
Recordset物件Open方法的CursorType引數表示將以什麼樣的遊標型別啟動資料,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
---------------------------------
常數 常數值 說明
----------------------------------
adOpenForwardOnly 0 預設值,啟動一個只能向前移動的遊標(Forward Only)。
adOpenKeyset 1 啟動一個Keyset型別的遊標。
adOpenDynamic 2 啟動一個Dynamic型別的遊標。
adOpenStatic 3 啟動一個Static型別的遊標。
以上幾個遊標型別將直接影響到Recordset物件所有的屬性和方法,以下列表說明他們之間的區別。
Recordset屬性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
AbsolutePage 不支援 不支援 可讀寫 可讀寫
AbsolutePosition 不支援 不支援 可讀寫 可讀寫
ActiveConnection 可讀寫 可讀寫 可讀寫 可讀寫
BOF 只讀 只讀 只讀 只讀
Bookmark 不支援 不支援 可讀寫 可讀寫
CacheSize 可讀寫 可讀寫 可讀寫 可讀寫
CursorLocation 可讀寫 可讀寫 可讀寫 可讀寫
CursorType 可讀寫 可讀寫 可讀寫 可讀寫
EditMode 只讀 只讀 只讀 只讀
EOF 只讀 只讀 只讀 只讀
Filter 可讀寫 可讀寫 可讀寫 可讀寫
LockType 可讀寫 可讀寫 可讀寫 可讀寫
MarshalOptions 可讀寫 可讀寫 可讀寫 可讀寫
MaxRecords 可讀寫 可讀寫 可讀寫 可讀寫
PageCount 不支援 不支援 只讀 只讀
PageSize 可讀寫 可讀寫 可讀寫 可讀寫
RecordCount 不支援 不支援 只讀 只讀
Source 可讀寫 可讀寫 可讀寫 可讀寫
State 只讀 只讀 只讀 只讀
Status 只讀 只讀 只讀 只讀
AddNew 支援 支援 支援 支援
CancelBatch 支援 支援 支援 支援
CancelUpdate 支援 支援 支援 支援
Clone 不支援 不支援
Close 支援 支援 支援 支援
Delete 支援 支援 支援 支援
GetRows 支援 支援 支援 支援
Move 不支援 支援 支援 支援
MoveFirst 支援 支援 支援 支援
MoveLast 不支援 支援 支援 支援
MoveNext 支援 支援 支援 支援
MovePrevious 不支援 支援 支援 支援
NextRecordset 支援 支援 支援 支援
Open 支援 支援 支援 支援
Requery 支援 支援 支援 支援
Resync 不支援 不支援 支援 支援
Supports 支援 支援 支援 支援
Update 支援 支援 支援 支援
UpdateBatch 支援 支援 支援 支援
其中NextRecordset方法並不適用於Microsoft Access資料庫。
LockType
Recordset物件Open方法的LockType引數表示要採用的Lock型別,如果忽略這個引數,那麼系統會以Recordset物件的LockType屬性為預設值。LockType引數包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
--------------------------
adLockReadOnly 1 預設值,Recordset物件以只讀方式啟動,無法執行AddNew、Update及Delete等方法
adLockPrssimistic 2 當資料來源正在更新時,系統會暫時鎖住其他使用者的動作,以保持資料一致性。
adLockOptimistic 3 當資料來源正在更新時,系統並不會鎖住其他使用者的動作,其他使用者可以對資料進行增、刪、改的操作。
adLockBatchOptimistic 4 當資料來源正在更新時,其他使用者必須將CursorLocation屬性改為adUdeClientBatch才能對資料進行增、
刪、改的操作。
參考:
RS.OPEN SQL,CONN,A,B
引數A為設定遊標的型別,其取值為:
0 僅向前遊標,只能向前瀏覽記錄,不支援分頁、Recordset、BookMark
引數B為記錄集的鎖定型別,其取值為:
1 鎖定型別,預設的,只讀,不能作任何修改
2 當編輯時立即鎖定記錄,最安全的方式
開啟資料記錄集方法其實不止一種,但是我們用的最多的就是
rs.open sql,1,1的方法,可是後面的數字引數很多人不解其意,下面我們來介紹一下。
其實open方法後面有多個引數
CursorType LockType CommandType
比如 rs.open sql,1,1
也可以寫成
rs.cursorType = 1
rs.LockType = 1
rs.open sql
其中CursorType代表從一個表或者一個SQL查詢結果返回的記錄。
這個引數有四個值分別是:
adOpenForwardOnly 表示只允許在記錄集內的記錄間往前移動。這個是預設值。
這四個值VBSCRIPT預定義位
adOpenForwardOnly = 0
adOpenKeyset = 1
adOpenDynamic = 2
adOpenStatic = 3
lockType 表示當開啟記錄集時,資料提供者用於鎖定資料庫的型別:
adLockReadOnly 資料不能改變,這是預設值!
adLockPessimistic 資料提供者在開始編輯資料的時候鎖定記錄
adLockOptimistic 僅當呼叫update方法時,資料提供者鎖定記錄
adLockBatchOptimistic 用於批處理修改
他們的常量值定義分別是:
adLockReadOnly = 1
adLockPessimistic = 2
adLockOptimistic = 3
adLockBatchOptimistic = 4
=============================================
你說的不要網站啊
http://hi.baidu.com/yuanxiangren/blog/item/703e2ea4a66811f69052eea5.html
首先來看看SQL語法
DB2 提供了關連式資料庫的查詢語言 SQL (Structured Query Language),是一種非常口語化、既易學又易懂的語法。此一語言幾乎是每個資料庫系統都必須提供的,用以表示關連式的操作,包含了資料的定義(DDL)以及資料的處理(DML)。 SQL原來拼成SEQUEL,這語言的原型以"系統 R"的名字在 IBM 聖荷西實驗室完成,經過IBM內部及其他的許多使用性及效率測試,其結果相當令人滿意,並決定在系統R 的技術基礎發展出來 IBM 的產品。而且美國國家標準學會(ANSI)及國際標準化組織(ISO)在1987遵循一個幾乎是以 IBM SQL 為基礎的標準關連式資料語言定義。
一、資料定義 DDL(Data Definition Language)
資料定語言是指對資料的格式和形態下定義的語言,他是每個資料庫要建立時候時首先要面對的,舉凡資料分哪些表格關係、表格內的有什麼欄位主鍵、表格和表格之間互相參考的關係等等,都是在開始的時候所必須規劃好的。
1、建表格:
CREATE TABLE table_name(
column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...)
說明:
DATATYPE --是資料的格式,詳見表。
NUT NULL --可不可以允許資料有空的(尚未有資料填入)。
PRIMARY KEY --是本表的主鍵。
2、更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
ALTER TABLE table_name
ADD PRIMARY KEY (column_name)
說明:更改表得的定義把某個欄位設為主鍵。
ALTER TABLE table_name
DROP PRIMARY KEY (column_name)
3、建立索引
CREATE INDEX index_name ON table_name (column_name)
說明:對某個表格的欄位建立索引以增加查詢時的速度。
DROP table_name
DROP index_name
二、的資料形態 DATATYPEs
smallint
16 位元的整數。
interger
32 位元的整數。
decimal(p,s)
p 精確值和 s 大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數
點後有幾位數。如果沒有特別指定,則系統會設為 p=5; s=0 。
float
32位元的實數。
double
64位元的實數。
char(n)
n 長度的字串,n不能超過 254。
varchar(n)
長度不固定且其最大長度為 n 的字串,n不能超過 4000。
graphic(n)
和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態是為
了支援兩個字元長度的字型,例如中文字。
vargraphic(n)
可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000。
date
包含了 年份、月份、日期。
time
包含了 小時、分鐘、秒。
timestamp
包含了 年、月、日、時、分、秒、千分之一秒。
三、資料操作 DML (Data Manipulation Language)
1、增加資料:
INSERT INTO table_name (column1,column2,...)
valueS ( value1,value2, ...)
說明:
1.若沒有指定column 系統則會按表格內的欄位順序填入資料。
2.欄位的資料形態和所填入的資料必須吻合。
3.table_name 也可以是景觀 view_name。
INSERT INTO table_name (column1,column2,...)
SELECT columnx,columny,... FROM another_table
說明:也可以經過一個子查詢(subquery)把別的表格的資料填入。
2、查詢資料:
基本查詢
SELECT column1,columns2,...
FROM table_name
說明:把table_name 的特定欄位資料全部列出來
SELECT *
FROM table_name
WHERE column1 = xxx
[AND column2 > yyy] [OR column3 <> zzz]
說明:
1.""*""表示全部的欄位都列出來。
2.WHERE 之後是接條件式,把符合條件的資料列出來。
SELECT column1,column2
FROM table_name
ORDER BY column2 [DESC]
說明:ORDER BY 是指定以某個欄位做排序,[DESC]是指從大到小排列,若沒有指明,則是從小到大
排列
組合查詢
表格才能夠得到結果的。
SELECT *
FROM table1,table2
WHERE table1.colum1=table2.column1
說明:
1.查詢兩個表格中其中 column1 值相同的資料。
2.當然兩個表格相互比較的欄位,其資料形態必須相同。
3.一個複雜的查詢其動用到的表格可能會很多個。
整合性的查詢:
SELECT COUNT (*)
FROM table_name
WHERE column_name = xxx
說明:
查詢符合條件的資料共有幾筆。
SELECT SUM(column1)
FROM table_name
說明:
1.計算出總和,所選的欄位必須是可數的數字形態。
2.除此以外還有 AVG() 是計算平均、MAX()、MIN()計算最大最小值的整合性查詢。
SELECT column1,AVG(column2)
FROM table_name
GROUP BY column1
HAVING AVG(column2) > xxx
說明:
1.GROUP BY: 以column1 為一組計算 column2 的平均值必須和 AVG、SUM等整合性查詢的關鍵字
一起使用。
2.HAVING : 必須和 GROUP BY 一起使用作為整合性的限制。
複合性的查詢
SELECT *
FROM table_name1
WHERE EXISTS (
SELECT *
FROM table_name2
WHERE conditions )
說明:
1.WHERE 的 conditions 可以是另外一個的 query。
2.EXISTS 在此是指存在與否。
SELECT *
FROM table_name1
WHERE column1 IN (
SELECT column1
FROM table_name2
WHERE conditions )
說明:
1. IN 後面接的是一個集合,表示column1 存在集合裡面。
2. SELECT 出來的資料形態必須符合 column1。
其他查詢
SELECT *
FROM table_name1
WHERE column1 LIKE ""x%""
說明:LIKE 必須和後面的""x%"" 相呼應表示以 x為開頭的字串。
SELECT *
FROM table_name1
WHERE column1 IN (""xxx"",""yyy"",..)
說明:IN 後面接的是一個集合,表示column1 存在集合裡面。
SELECT *
FROM table_name1
WHERE column1 BETWEEN xx AND yy
說明:BETWEEN 表示 column1 的值介於 xx 和 yy 之間。
3、更改資料:
UPDATE table_name
SET column1=""xxx""
WHERE conditoins
說明:
1.更改某個欄位設定其值為""xxx""。
2.conditions 是所要符合的條件、若沒有 WHERE 則整個 table 的那個欄位都會全部被更改。
DELETE FROM table_name
WHERE conditions
說明:關於WHERE條件後面如果包含有日期的比較,不同資料庫有不同的表示式。具體如下:
(1)如果是ACCESS資料庫,則為:WHERE mydate>#2000-01-01#
(2)如果是ORACLE資料庫,則為:WHERE mydate>cast(""2000-01-01"" as date)
或:WHERE mydate>to_date(""2000-01-01"",""yyyy-mm-dd"")
在Delphi中寫成:
thedate=""2000-01-01"";
query1.SQL.add(""select * from abc where mydate>cast(""+""""""""+thedate+""""""""+"" as date)"");
如果比較日期時間型,則為:
WHERE mydatetime>to_date(""2000-01-01 10:00:01"",""yyyy-mm-dd hh24:mi:ss"")
-----------
ASP中SQL語句參考及記錄集物件
1. ASP與Access資料庫連線:
<%@ language=VBscript%>
<%
dim conn,mdbfile
mdbfile=server.mappath("資料庫名稱.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=資料庫密碼;dbq="&mdbfile
%>
2. ASP與SQL資料庫連線:
<%@ language=VBscript%>
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL伺服器名稱或IP地址;UID=sa;PWD=資料庫密碼;DATABASE=資料庫名稱
%>
建立記錄集物件:
set rs=server.createobject("adodb.recordset")
rs.open SQL語句,conn,3,2
3. SQL常用命令使用方法:
(1) 資料記錄篩選:
sql="select * from 資料表 where 欄位名=欄位值 order by 欄位名 "
sql="select * from 資料表 where 欄位名 like ′%欄位值%′ order by 欄位名 "
sql="select top 10 * from 資料表 where 欄位名 order by 欄位名 "
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 條件表示式"
sql="delete from 資料表 where 條件表示式"
(4) 新增資料記錄:
sql="insert into 資料表 (欄位1,欄位2,欄位3 …) values (值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("別名") 獲取統的計值,其它函式運用同上。
CREATE TABLE 資料表名稱(欄位1 型別1(長度),欄位2 型別2(長度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
4. 記錄集物件的方法:
rs.movenext 將記錄指標從當前的位置向下移一行
rs.moveprevious 將記錄指標從當前的位置向上移一行
rs.movefirst 將記錄指標移到資料表第一行
rs.movelast 將記錄指標移到資料表最後一行
rs.absoluteposition=N 將記錄指標移到資料表第N行
rs.absolutepage=N 將記錄指標移到第N頁的第一行
rs.pagesize=N 設定每頁為N條記錄
rs.pagecount 根據 pagesize 的設定返回總頁數
rs.recordcount 返回記錄總數
rs.bof 返回記錄指標是否超出資料表首端,true表示是,false為否
rs.eof 返回記錄指標是否超出資料表末端,true表示是,false為否
rs.addnew 新增記錄到資料表末端
rs.update 更新資料表記錄
-------------------
Recordset物件方法
Open方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset物件可以透過Source屬性來連線Command物件。Source引數可以是一個Command物件名稱、一段SQL命令、一個指定的資料表名稱或是一個Stored Procedure。假如省略這個引數,系統則採用Recordset物件的Source屬性。
ActiveConnection
Recordset物件可以透過ActiveConnection屬性來連線Connection物件。這裡的ActiveConnection可以是一個Connection物件或是一串包含資料庫連線資訊(ConnectionString)的字串引數。
CursorType
Recordset物件Open方法的CursorType引數表示將以什麼樣的遊標型別啟動資料,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
---------------------------------
常數 常數值 說明
----------------------------------
adOpenForwardOnly 0 預設值,啟動一個只能向前移動的遊標(Forward Only)。
adOpenKeyset 1 啟動一個Keyset型別的遊標。
adOpenDynamic 2 啟動一個Dynamic型別的遊標。
adOpenStatic 3 啟動一個Static型別的遊標。
----------------------------------
以上幾個遊標型別將直接影響到Recordset物件所有的屬性和方法,以下列表說明他們之間的區別。
----------------------------------
Recordset屬性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
----------------------------------
AbsolutePage 不支援 不支援 可讀寫 可讀寫
AbsolutePosition 不支援 不支援 可讀寫 可讀寫
ActiveConnection 可讀寫 可讀寫 可讀寫 可讀寫
BOF 只讀 只讀 只讀 只讀
Bookmark 不支援 不支援 可讀寫 可讀寫
CacheSize 可讀寫 可讀寫 可讀寫 可讀寫
CursorLocation 可讀寫 可讀寫 可讀寫 可讀寫
CursorType 可讀寫 可讀寫 可讀寫 可讀寫
EditMode 只讀 只讀 只讀 只讀
EOF 只讀 只讀 只讀 只讀
Filter 可讀寫 可讀寫 可讀寫 可讀寫
LockType 可讀寫 可讀寫 可讀寫 可讀寫
MarshalOptions 可讀寫 可讀寫 可讀寫 可讀寫
MaxRecords 可讀寫 可讀寫 可讀寫 可讀寫
PageCount 不支援 不支援 只讀 只讀
PageSize 可讀寫 可讀寫 可讀寫 可讀寫
RecordCount 不支援 不支援 只讀 只讀
Source 可讀寫 可讀寫 可讀寫 可讀寫
State 只讀 只讀 只讀 只讀
Status 只讀 只讀 只讀 只讀
AddNew 支援 支援 支援 支援
CancelBatch 支援 支援 支援 支援
CancelUpdate 支援 支援 支援 支援
Clone 不支援 不支援
Close 支援 支援 支援 支援
Delete 支援 支援 支援 支援
GetRows 支援 支援 支援 支援
Move 不支援 支援 支援 支援
MoveFirst 支援 支援 支援 支援
MoveLast 不支援 支援 支援 支援
MoveNext 支援 支援 支援 支援
MovePrevious 不支援 支援 支援 支援
NextRecordset 支援 支援 支援 支援
Open 支援 支援 支援 支援
Requery 支援 支援 支援 支援
Resync 不支援 不支援 支援 支援
Supports 支援 支援 支援 支援
Update 支援 支援 支援 支援
UpdateBatch 支援 支援 支援 支援
----------------------------------
其中NextRecordset方法並不適用於Microsoft Access資料庫。
LockType
Recordset物件Open方法的LockType引數表示要採用的Lock型別,如果忽略這個引數,那麼系統會以Recordset物件的LockType屬性為預設值。LockType引數包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
--------------------------
常數 常數值 說明
--------------------------
adLockReadOnly 1 預設值,Recordset物件以只讀方式啟動,無法執行AddNew、Update及Delete等方法
adLockPrssimistic 2 當資料來源正在更新時,系統會暫時鎖住其他使用者的動作,以保持資料一致性。
adLockOptimistic 3 當資料來源正在更新時,系統並不會鎖住其他使用者的動作,其他使用者可以對資料進行增、刪、改的操作。
adLockBatchOptimistic 4 當資料來源正在更新時,其他使用者必須將CursorLocation屬性改為adUdeClientBatch才能對資料進行增、
刪、改的操作。
參考:
RS.OPEN SQL,CONN,A,B
引數A為設定遊標的型別,其取值為:
0 僅向前遊標,只能向前瀏覽記錄,不支援分頁、Recordset、BookMark
引數B為記錄集的鎖定型別,其取值為:
1 鎖定型別,預設的,只讀,不能作任何修改
2 當編輯時立即鎖定記錄,最安全的方式
開啟資料記錄集方法其實不止一種,但是我們用的最多的就是
rs.open sql,1,1的方法,可是後面的數字引數很多人不解其意,下面我們來介紹一下。
其實open方法後面有多個引數
CursorType LockType CommandType
比如 rs.open sql,1,1
也可以寫成
rs.cursorType = 1
rs.LockType = 1
rs.open sql
其中CursorType代表從一個表或者一個SQL查詢結果返回的記錄。
這個引數有四個值分別是:
adOpenForwardOnly 表示只允許在記錄集內的記錄間往前移動。這個是預設值。
這四個值VBSCRIPT預定義位
adOpenForwardOnly = 0
adOpenKeyset = 1
adOpenDynamic = 2
adOpenStatic = 3
lockType 表示當開啟記錄集時,資料提供者用於鎖定資料庫的型別:
adLockReadOnly 資料不能改變,這是預設值!
adLockPessimistic 資料提供者在開始編輯資料的時候鎖定記錄
adLockOptimistic 僅當呼叫update方法時,資料提供者鎖定記錄
adLockBatchOptimistic 用於批處理修改
他們的常量值定義分別是:
adLockReadOnly = 1
adLockPessimistic = 2
adLockOptimistic = 3
adLockBatchOptimistic = 4
=============================================
你說的不要網站啊
http://hi.baidu.com/yuanxiangren/blog/item/703e2ea4a66811f69052eea5.html