SQL語(yǔ)句的一些集合
發(fā)表時(shí)間:2024-01-27 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]1.ASP與Access數(shù)據(jù)庫(kù)連接: <%@language=VBscript%> <% dimconn,mdbfile mdbfile=server.mappath("數(shù)據(jù)庫(kù)名稱.mdb") setconn=server.createobject("...
1.ASP與Access數(shù)據(jù)庫(kù)連接:
<%@language=VBscript%>
<%
dimconn,mdbfile
mdbfile=server.mappath("數(shù)據(jù)庫(kù)名稱.mdb")
setconn=server.createobject("adodb.connection")
conn.open"driver={microsoft access driver
(*.mdb)};uid=admin;pwd=數(shù)據(jù)庫(kù)密碼;dbq="&mdbfile
%>
2.ASP與SQL數(shù)據(jù)庫(kù)連接:
<%@language=VBscript%>
<%
dimconn
setconn=server.createobject("ADODB.connection")
con.open"PROVIDER=SQLOLEDB;DATA
SOURCE=SQL服務(wù)器名稱或IP地址;UID=sa;PWD=數(shù)據(jù)庫(kù)密碼;DATABASE=數(shù)據(jù)庫(kù)名稱
%>
建立記錄集對(duì)象:
setrs=server.createobject("adodb.recordset")
rs.openSQL語(yǔ)句,conn,3,2
3.SQL常用命令使用方法:
(1)數(shù)據(jù)記錄篩選:
sql="select*from數(shù)據(jù)表where字段名=字段值orderby字段名[desc]"
sql="select*from數(shù)據(jù)表where字段名like'%字段值%'orderby字段名[desc]"
sql="selecttop10*from數(shù)據(jù)表where字段名orderby字段名[desc]"
sql="select*from數(shù)據(jù)表where字段名in('值1','值2','值3')"
sql="select*from數(shù)據(jù)表where字段名between值1and值2"
(2)更新數(shù)據(jù)記錄:
sql="update數(shù)據(jù)表set字段名=字段值where條件表達(dá)式"
sql="update數(shù)據(jù)表set字段1=值1,字段2=值2……字段n=值nwhere條件表達(dá)式"
(3)刪除數(shù)據(jù)記錄:
sql="deletefrom數(shù)據(jù)表where條件表達(dá)式"
sql="deletefrom數(shù)據(jù)表"(將數(shù)據(jù)表所有記錄刪除)
(4)添加數(shù)據(jù)記錄:
sql="insertinto數(shù)據(jù)表(字段1,字段2,字段3…)values(值1,值2,值3…)"
sql="insertinto目標(biāo)數(shù)據(jù)表select*from源數(shù)據(jù)表"(把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表)
(5)數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù):
AVG(字段名)得出一個(gè)表格欄平均值
COUNT(*¦字段名)對(duì)數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì)
MAX(字段名)取得一個(gè)表格欄最大的值
MIN(字段名)取得一個(gè)表格欄最小的值
SUM(字段名)把數(shù)據(jù)欄的值相加
引用以上函數(shù)的方法:
sql="selectsum(字段名)as別名from數(shù)據(jù)表where條件表達(dá)式"
setrs=conn.excute(sql)
用rs("別名")獲取統(tǒng)的計(jì)值,其它函數(shù)運(yùn)用同上。
(5)數(shù)據(jù)表的建立和刪除:
CREATETABLE數(shù)據(jù)表名稱(字段1類型1(長(zhǎng)度),字段2類型2(長(zhǎng)度)……)
例:CREATETABLEtab01(namevarchar(50),datetimedefaultnow())
DROPTABLE數(shù)據(jù)表名稱(永久性刪除一個(gè)數(shù)據(jù)表)
4.記錄集對(duì)象的方法:
rs.movenext將記錄指針從當(dāng)前的位置向下移一行
rs.moveprevious將記錄指針從當(dāng)前的位置向上移一行
rs.movefirst將記錄指針移到數(shù)據(jù)表第一行
rs.movelast將記錄指針移到數(shù)據(jù)表最后一行
rs.absoluteposition=N將記錄指針移到數(shù)據(jù)表第N行
rs.absolutepage=N將記錄指針移到第N頁(yè)的第一行
rs.pagesize=N設(shè)置每頁(yè)為N條記錄
rs.pagecount根據(jù)pagesize的設(shè)置返回總頁(yè)數(shù)
rs.recordcount返回記錄總數(shù)
rs.bof返回記錄指針是否超出數(shù)據(jù)表首端,true表示是,false為否
rs.eof返回記錄指針是否超出數(shù)據(jù)表末端,true表示是,false為否
rs.delete刪除當(dāng)前記錄,但記錄指針不會(huì)向下移動(dòng)
rs.addnew添加記錄到數(shù)據(jù)表末端
rs.update更新數(shù)據(jù)表記錄
---------------------------------------
Recordset對(duì)象方法
Open方法
recordset.OpenSource,ActiveConnection,CursorType,LockType,Options
Source
Recordset對(duì)象可以通過(guò)Source屬性來(lái)連接Command對(duì)象。Source參數(shù)可以是一個(gè)Command對(duì)象名稱、一段SQL命令、一個(gè)指定的數(shù)據(jù)表名稱或是一個(gè)Stored
Procedure。假如省略這個(gè)參數(shù),系統(tǒng)則采用Recordset對(duì)象的Source屬性。
ActiveConnection
Recordset對(duì)象可以通過(guò)ActiveConnection屬性來(lái)連接Connection對(duì)象。這里的ActiveConnection可以是一個(gè)Connection對(duì)象或是一串包含數(shù)據(jù)庫(kù)連接信息(ConnectionString)的字符串參數(shù)。
CursorType
Recordset對(duì)象Open方法的CursorType參數(shù)表示將以什么樣的游標(biāo)類型啟動(dòng)數(shù)據(jù),包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
--------------------------------------------------------------
常數(shù)常數(shù)值說(shuō)明
-------------------------------------------------------------
adOpenForwardOnly0缺省值,啟動(dòng)一個(gè)只能向前移動(dòng)的游標(biāo)(ForwardOnly)。
adOpenKeyset1啟動(dòng)一個(gè)Keyset類型的游標(biāo)。
adOpenDynamic2啟動(dòng)一個(gè)Dynamic類型的游標(biāo)。
adOpenStatic3啟動(dòng)一個(gè)Static類型的游標(biāo)。
-------------------------------------------------------------
以上幾個(gè)游標(biāo)類型將直接影響到Recordset對(duì)象所有的屬性和方法,以下列表說(shuō)明他們之間的區(qū)別。
-------------------------------------------------------------
Recordset屬性adOpenForwardOnlyadOpenKeysetadOpenDynamicadOpenStatic
-------------------------------------------------------------
AbsolutePage不支持不支持可讀寫(xiě)可讀寫(xiě)
AbsolutePosition不支持不支持可讀寫(xiě)可讀寫(xiě)
ActiveConnection可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
BOF只讀只讀只讀只讀
Bookmark不支持不支持可讀寫(xiě)可讀寫(xiě)
CacheSize可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
CursorLocation可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
CursorType可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
EditMode只讀只讀只讀
只讀
EOF只讀只讀只讀
只讀
Filter可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
LockType可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
MarshalOptions可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
MaxRecords可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
PageCount不支持不支持只讀只讀
PageSize可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
RecordCount不支持不支持只讀只讀
Source可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)可讀寫(xiě)
State只讀只讀只讀只讀
Status只讀只讀只讀只讀
AddNew支持支持支持支持
CancelBatch支持支持支持支持
CancelUpdate支持支持支持支持
Clone不支持不支持
Close支持支持支持支持
Delete支持支持支持支持
GetRows支持支持支持支持
Move不支持支持支持支持
MoveFirst支持支持支持支持
MoveLast不支持支持支持支持
MoveNext支持支持支持支持
MovePrevious不支持支持支持支持
NextRecordset支持支持支持支持
Open支持支持支持支持
Requery支持支持支持支持
Resync不支持不支持支持支持
Supports支持支持支持支持
Update支持支持支持支持
UpdateBatch支持支持支持支持
--------------------------------------------------------------
其中NextRecordset方法并不適用于MicrosoftAccess數(shù)據(jù)庫(kù)。
LockType
Recordset對(duì)象Open方法的LockType參數(shù)表示要采用的Lock類型,如果忽略這個(gè)參數(shù),那么系統(tǒng)會(huì)以Recordset對(duì)象的LockType屬性為預(yù)設(shè)值。LockType參數(shù)包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
-------------------------------------------------------------
常數(shù)常數(shù)值說(shuō)明
--------------------------------------------------------------
adLockReadOnly1缺省值,Recordset對(duì)象以只讀方式啟動(dòng),無(wú)法運(yùn)行AddNew、Update及Delete等方法
adLockPrssimistic2當(dāng)數(shù)據(jù)源正在更新時(shí),系統(tǒng)會(huì)暫時(shí)鎖住其他用戶的動(dòng)作,以保持?jǐn)?shù)據(jù)一致性。
adLockOptimistic3當(dāng)數(shù)據(jù)源正在更新時(shí),系統(tǒng)并不會(huì)鎖住其他用戶的動(dòng)作,其他用戶可以對(duì)數(shù)據(jù)進(jìn)行增、刪、改的操作。
adLockBatchOptimistic4當(dāng)數(shù)據(jù)源正在更新時(shí),其他用戶必須將CursorLocation屬性改為adUdeClientBatch才能對(duì)數(shù)據(jù)進(jìn)行增、
刪、改的操作。
Sqlserver數(shù)據(jù)庫(kù)asp調(diào)用的特殊部分
<%
response.writews2(1)
w2=ws2(2)
response.write"a"
response.write"b"&ws2(3)&"c"
response.write"d"&w2
%>
建立一個(gè)表
createtablefriends(name1varchar(10),phonevarchar(15))
跟access不同,sqlserver默認(rèn)的數(shù)據(jù)庫(kù)只能向后讀取,非常嚴(yán)格。
在數(shù)據(jù)庫(kù)之間拷貝復(fù)制表格
select*intocoolhe.dbo.mainfrommain
刪除數(shù)據(jù)庫(kù)
dropdatabasecoolhe
查找替換功能
updatecommend
setGIF圖片=stuff(GIF圖片,1,21,"http://192.168.1.2")//替換GIF圖片字段從頭開(kāi)始的21個(gè)字符為<http://192.168.1.2>
更改記錄
自動(dòng)增加的字段無(wú)法更改
解決辦法如下
CREATETABLEnew_employees
(
id_numintIDENTITY(1,1),
fnamevarchar(20),
minitchar(1),
lnamevarchar(30)
)
INSERTnew_employees
(fname,minit,lname)
valueS
('Karin','F','Josephs')
修改某個(gè)記錄
updatemain
setGIF圖片=’新的’whereid=4331
添加一條記錄
insertarticles
(category,title,link,updatetime)
values
('CPU','AMDAthlonXP處理器技術(shù)與架構(gòu)','20011024/01.asp','10-24-2001')
從一個(gè)表添加記錄道另一個(gè)表
insertmain
selecta,b,c,dfromnew
當(dāng)main有一個(gè)字段為自動(dòng)增加時(shí),新表不能選取自動(dòng)增加的字段,而避開(kāi)該字段以上例的形式書(shū)寫(xiě)
查找數(shù)據(jù)庫(kù)中所有的表
select*fromsysobjectswherextype='u'
計(jì)算某個(gè)字段的和
select'downloadcount'=sum(下載次數(shù))
檢索表定義信息
sp_help表名
修改表名
sp_rename'cool','commend'
添加表字段(如果一次添加多字段后面不加bit)
ALTERTABLEmain
ADD開(kāi)關(guān)bit
altertablemainadd年齡char(3),姓名varchar(8),性別char(2)
修改表字段類型
原先姓名字段的類型是char(10)
altertabletablenamealtercolumn姓名varchar(20)
修改密碼
EXECsp_passwordNULL,'ok','Victoria'(密碼為空時(shí))Victoria為login的用戶名
EXECsp_password'ok','coffee'密碼從ok改到coffee
altertabletable_nameaddcolumncolumn_namedatatype
說(shuō)明:增加一個(gè)欄位(沒(méi)有刪除某個(gè)欄位的語(yǔ)法。)
altertabletable_nameaddprimarykey(column_name)
說(shuō)明:更改表得的定義把某個(gè)欄位設(shè)為主鍵。
altertabletable_namedropprimarykey(column_name)
說(shuō)明:把主鍵的定義刪除
將一個(gè)字段的默認(rèn)值設(shè)置成0
ALTERTABLEtable_nameADDCONSTRAINTDF_Test_FieldNameDEFAULT(0)FORFieldName
DF_Test_FieldName不要變動(dòng)
更改字段名稱
sp_rename'tablename.fieldname','newname','column';
column不要變動(dòng)
注釋
/*select*fromnews*/或者--select*fromnews--
其中橫線用于插入式注釋
setrs=cn.execute(sql)此語(yǔ)句返回一個(gè)SQL語(yǔ)句執(zhí)行后的結(jié)構(gòu),把結(jié)果賦值給RS
cn.Executesql此語(yǔ)句只是執(zhí)行SQL語(yǔ)句
數(shù)據(jù)類型+++++++++++++++++++++++++++++++++++++++++++++++++datatypes
smallint
16位元的整數(shù)。
interger
32位元的整數(shù)。
decimal(p,s)
p精確值和s大小的十進(jìn)位整數(shù),精確值p是指全部有幾個(gè)數(shù)(digits)大小值,s是指小數(shù)後有幾位數(shù)。如果沒(méi)有特別指定,則系統(tǒng)會(huì)設(shè)為p=5;s=0。
float
32位元的實(shí)數(shù)。
double
64位元的實(shí)數(shù)。
char(n)
n長(zhǎng)度的字串,n不能超過(guò)254。
varchar(n)
長(zhǎng)度不固定且其最大長(zhǎng)度為n的字串,n不能超過(guò)4000。
graphic(n)
和char(n)一樣,不過(guò)其單位是兩個(gè)字元double-bytes,n不能超過(guò)127。這個(gè)形態(tài)是為支援兩個(gè)字元長(zhǎng)度的字體,例如中文字。
vargraphic(n)
可變長(zhǎng)度且其最大長(zhǎng)度為n的雙字元字串,n不能超過(guò)2000。
date
包含了年份、月份、日期。
time
包含了小時(shí)、分鐘、秒。
timestamp
包含了年、月、日、時(shí)、分、秒、千分之一秒。
在SQLServer中提供了這種恢復(fù)方式的存儲(chǔ)過(guò)程。
1.sp_attach_db[@dbname=]dbname,[@filename1=]filename_n
給系統(tǒng)添加一個(gè)數(shù)據(jù)庫(kù),在dbname指定數(shù)據(jù)庫(kù)名稱,filename_n指定數(shù)據(jù)庫(kù)的文件和日志文件。比如我有一個(gè)voogiya的庫(kù),停止SQLServer服務(wù)備份voogiya_data.mdf,voogiya_log.ldf,啟動(dòng)SQLserver,刪除掉這個(gè)庫(kù),然后再把這兩上文件拷到sqlserverDATA目錄中,在QueryAnalyzer中執(zhí)行如下語(yǔ)句:
EXECsp_attach_db@dbname=Nvoogiya,
@filename1=Nd:\mssql7\data\voogiya_data.mdf,(不加N時(shí)成功)
@filename2=Nd:\mssql7\data\voogiya_log.ldf(不加N時(shí)成功)
就會(huì)把這個(gè)庫(kù)加入到SQLServerGroup中.
2.sp_attach_single_file_db[@dbname=]dbname,
[@physname=]physical_name
這個(gè)命令和上面的功能一樣,在physical_name中只要寫(xiě)上據(jù)庫(kù)的物理文件名就可以了,日志文件SQLserver會(huì)重新建立。這個(gè)存儲(chǔ)過(guò)程的運(yùn)行要先執(zhí)行下面的存儲(chǔ)過(guò)程:
sp_detach_db@dbname=dbname
同樣以上面的為例:
EXECsp_detach_db@dbname=voogiya
EXECsp_attach_single_file_db@dbname=voogiya,
@physname=d:\mssql7\data\voogiya_data.mdf
要注意執(zhí)行以上存儲(chǔ)過(guò)程的用戶要在sysadmin中