天天看點

Asp程式設計中常見的SQL指令

 asp以及asp.net程式設計中掌握了sql文法才能寫好asp程式,sql文法可以說是asp程式設計中的最核心的技術,而且sql指令也影響程式的執行效率,本文在别人總結的基礎上進行了解釋和說明。

(1) 資料記錄篩選:

對特定字段值機進行查詢

sql="select * from 資料表 where 字段名=字段值 order by 字段名 "

比對查詢

sql="select * from 資料表 where 字段名 like ‘%字段值%‘ order by 字段名 " 

前10條記錄,這在網站首頁提取最新10條記錄時最常用。

sql="select top 10 * from 資料表 where 字段名 order by 字段名 " 

在三個值中的任何記錄

sql="select * from 資料表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)" 

介于值1和值2之間的所有記錄。

sql="select * from 資料表 where 字段名 between 值1 and 值2"

select * from book where id=1

select * from book where pub_date=#2002-1-7# (Access)

select * from book where pub_date=’2002-1-7’ (SQL Server)

(2) 更新資料記錄:

sql="update 資料表 set 字段名=字段值 where 條件表達式"

update tab_user set username=haha where userid=1

sql="update 資料表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式"

文法:update table set field1=value1,field2=value2,...where fieldx=valuex

例子:update book set author=’babycrazy’ where bookno=’CF001’

如果用到變量就如下:

strno=request.form("bookno")

strau=request.form("author")

strsql="update book set author=’"&strau&"’ where bookno=’"&strno"’"

更新資料庫中多個字段值 

(3) 删除資料記錄:

sql="delete from 資料表 where 條件表達式" 

sql="delete from 資料表" (将資料表所有記錄删除)

例子:删除book表中作者是cancer的記錄

delete book where author=’cancer’

(注意:如果book表中author字段的值為cancer的記錄有多條,将會删除所有author為cancer的記錄)

(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 資料表名稱 (永久性删除一個資料表)

(6) 記錄集對象的方法: 

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.delete 删除目前記錄,但記錄指針不會向下移動 

rs.addnew 添加記錄到資料表末端 

rs.update 更新資料表記錄

(7)判斷所填資料是數字型

if not isNumeric(request("字段名稱")) then 

response.write "不是數字" 

else 

response.write "數字" 

end if

(8)判斷是否為日期

if not isdate(request("字段名稱")) then 

response.write "不是日期" 

response.write "是日期" 

提示:

日期函數to_date不是标準sql文,不是所有的資料庫适用,是以大家在使用的時候要參考資料庫具體文法

但是字元型一定不能按照數字格式寫,需要注意。

(9)添加記錄(Insert)

文法:Insert into table(field1,field2,....) Values (value1,value2,....)

例子:添加一作者是"cancer"的記錄入book表:

insert into book (bookno,author,bookname) values (’CF001’,’cancer’,’Cancer無元件上傳程式’)

同樣,如果用到變量就如下:

strname=request.form("bookname")

strsql="insert into book (bookno,author,bookname) values (’"&strno&"’,’"&strau&"’,’"&strname&"’)"

(10)用Recordset對象的Addnew插入資料的方法:

文法:

rs.addnew

rs("field1").value=value1

rs("field2").value=value2

...

rs.update

Recordset對象的Update方法:

注意:使用文法3和文法5的時候,一定要注意字段的類型(尤其是日期型)一緻,否則出錯的幾率非常的高。

例子:

set adocon=server.createobject("adodb.connection")

adocon.open "Driver={Microsoft Access Driver(*.mdb)};DBQ=" & _

Server.Mappath=("/cancer/cancer.mdb")

strsql="select * from book where bookno=’"&strno&"’"

set rs=server.createobject("adodb.recordset")

rs.open strsql,adconn,1,3

if not rs.eof then ’如果有此記錄的話

rs("author").value=strau

rs.close

set rs=nothing

adocon.close

set adocon=nothing

 本文轉自 simeon2005 51CTO部落格,原文連結:http://blog.51cto.com/simeon/9668