sql語句的一些集合

來源:互聯網
上載者:User

1.ASP與Access資料庫連接:
<%@language=VBscript%>
<%
dimconn,mdbfile
mdbfile=server.mappath("資料庫名稱.mdb")
setconn=server.createobject("adodb.connection")
conn.open"driver={microsoftaccessdriver
(*.mdb)};uid=admin;pwd=資料庫密碼;dbq="&mdbfile
%>
2.ASP與SQL資料庫連接:
<%@language=VBscript%>
<%
dimconn
setconn=server.createobject("ADODB.connection")
con.open"PROVIDER=SQLOLEDB;DATA
SOURCE=SQL伺服器名稱或IP地址;UID=sa;PWD=資料庫密碼;DATABASE=資料庫名稱
%>

建立記錄集對象:

setrs=server.createobject("adodb.recordset")
rs.openSQL語句,conn,3,2

3.SQL常用命令使用方法:
(1)資料記錄篩選:
sql="select*from資料表where欄位名=欄位值orderby欄位名[desc]"
sql="select*from資料表where欄位名like'%欄位值%'orderby欄位名[desc]"
sql="selecttop10*from資料表where欄位名orderby欄位名[desc]"
sql="select*from資料表where欄位名in('值1','值2','值3')"
sql="select*from資料表where欄位名between值1and值2"

(2)更新資料記錄:
sql="update資料表set欄位名=欄位值where條件運算式"
sql="update資料表set欄位1=值1,欄位2=值2……欄位n=值nwhere條件運算式"

(3)刪除資料記錄:
sql="deletefrom資料表where條件運算式"
sql="deletefrom資料表"(將資料表所有記錄刪除)

(4)添加資料記錄:
sql="insertinto資料表(欄位1,欄位2,欄位3…)values(值1,值2,值3…)"
sql="insertinto目標資料表select*from來源資料表"(把來源資料表的記錄添加到目標資料表)

(5)資料記錄統計函數:
AVG(欄位名)得出一個表格欄平均值
COUNT(*|欄位名)對資料行數的統計或對某一欄有值的資料行數統計
MAX(欄位名)取得一個表格欄最大的值
MIN(欄位名)取得一個表格欄最小的值
SUM(欄位名)把資料欄的值相加
引用以上函數的方法:
sql="selectsum(欄位名)as別名from資料表where條件運算式"
setrs=conn.excute(sql)
用rs("別名")擷取統的計值,其它函數運用同上。

(5)資料表的建立和刪除:
CREATETABLE資料表名稱(欄位1類型1(長度),欄位2類型2(長度)……)
例:CREATETABLEtab01(namevarchar(50),datetimedefaultnow())

DROPTABLE資料表名稱(永久性刪除一個資料表)
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.delete刪除目前記錄,但記錄指標不會向下移動
rs.addnew添加記錄到資料表末端
rs.update更新資料表記錄
---------------------------------------
Recordset對象方法
Open方法
recordset.OpenSource,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,分述如下:
--------------------------------------------------------------
常數常數值說明
-------------------------------------------------------------
adOpenForwardOnly0預設值,啟動一個只能向前移動的遊標(ForwardOnly)。
adOpenKeyset1啟動一個Keyset類型的遊標。
adOpenDynamic2啟動一個Dynamic類型的遊標。
adOpenStatic3啟動一個Static類型的遊標。
-------------------------------------------------------------
以上幾個遊標類型將直接影響到Recordset對象所有的屬性和方法,以下列表說明他們之間的區別。
-------------------------------------------------------------
Recordset屬性adOpenForwardOnlyadOpenKeysetadOpenDynamicadOpenStatic
-------------------------------------------------------------
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方法並不適用於MicrosoftAccess資料庫。

LockType
Recordset對象Open方法的LockType參數表示要採用的Lock類型,如果忽略這個參數,那麼系統會以Recordset對象的LockType屬性為預設值。LockType參數包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
-------------------------------------------------------------
常數常數值說明
--------------------------------------------------------------
adLockReadOnly1預設值,Recordset對象以唯讀方式啟動,無法運行AddNew、Update及Delete等方法
adLockPrssimistic2當資料來源正在更新時,系統會暫時鎖住其他使用者的動作,以保持資料一致性。
adLockOptimistic3當資料來源正在更新時,系統並不會鎖住其他使用者的動作,其他使用者可以對資料進行增、刪、改的操作。
adLockBatchOptimistic4當資料來源正在更新時,其他使用者必須將CursorLocation屬性改為adUdeClientBatch才能對資料進行增、
刪、改的操作。
Sqlserver資料庫asp調用的特殊部分
<%
response.writews2(1)
w2=ws2(2)
response.write"a"
response.write"b"&ws2(3)&"c"
response.write"d"&w2
%>

建立一個表
createtablefriends(name1varchar(10),phonevarchar(15))

跟access不同,sqlserver預設的資料庫只能向後讀取,非常嚴格。

在資料庫之間拷貝複製表格
select*intocoolhe.dbo.mainfrommain

刪除資料庫
dropdatabasecoolhe

尋找替換功能

updatecommend
setGIF圖片=stuff(GIF圖片,1,21,"http://192.168.1.2")//替換GIF圖片欄位從頭開始的21個字元為<http://192.168.1.2>

更改記錄
自動增加的欄位無法更改
解決辦法如下

CREATETABLEnew_employees
(
id_numintIDENTITY(1,1),
fnamevarchar(20),
minitchar(1),
lnamevarchar(30)
)

INSERTnew_employees
(fname,minit,lname)
valueS
('Karin','F','Josephs')

修改某個記錄
updatemain
setGIF圖片='新的'whereid=4331

添加一條記錄
insertarticles
(category,title,link,updatetime)
values
('CPU','AMDAthlonXP處理器技術與架構','20011024/01.asp','10-24-2001')

從一個表添加記錄道另一個表
insertmain
selecta,b,c,dfromnew

當main有一個欄位為自動增加時,新表不能選取自動增加的欄位,而避開該欄位以上例的形式書寫

尋找資料庫中所有的表

select*fromsysobjectswherextype='u'

計算某個欄位的和

select'downloadcount'=sum(下載次數)

檢索表定義資訊

sp_help表名

修改表名

sp_rename'cool','commend'

添加表欄位(如果一次添加多欄位後面不加bit)

ALTERTABLEmain
ADD開關bit

altertablemainadd年齡char(3),姓名varchar(8),性別char(2)

修改表欄位類型
原先姓名欄位的類型是char(10)
altertabletablenamealtercolumn姓名varchar(20)

修改密碼
EXECsp_passwordNULL,'ok','Victoria'(密碼為空白時)Victoria為login的使用者名稱
EXECsp_password'ok','coffee'密碼從ok改到coffee

altertabletable_nameaddcolumncolumn_namedatatype

  說明:增加一個欄位(沒有刪除某個欄位的文法。)

  altertabletable_nameaddprimarykey(column_name)

  說明:更改表得的定義把某個欄位設為主鍵。
  
  altertabletable_namedropprimarykey(column_name)

  說明:把主鍵的定義刪除

將一個欄位的預設值設定成0

ALTERTABLEtable_nameADDCONSTRAINTDF_Test_FieldNameDEFAULT(0)FORFieldName

DF_Test_FieldName不要變動

更改欄位名稱
sp_rename'tablename.fieldname','newname','column';
column不要變動

注釋
/*select*fromnews*/或者--select*fromnews--
其中橫線用於插入式注釋

setrs=cn.execute(sql)此語句返回一個SQL語句執行後的結構,把結果賦值給RS
cn.Executesql此語句只是執行SQL語句

資料類型+++++++++++++++++++++++++++++++++++++++++++++++++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
  包含了年、月、日、時、分、秒、千分之一秒。

在SQLServer中提供了這種恢複方式的預存程序。

1.sp_attach_db[@dbname=]dbname,[@filename1=]filename_n

  給系統添加一個資料庫,在dbname指定資料庫名稱,filename_n指定資料庫的檔案和記錄檔。比如我有一個voogiya的庫,停止SQLServer服務備份voogiya_data.mdf,voogiya_log.ldf,啟動SQLserver,刪除掉這個庫,然後再把這兩上檔案拷到sqlserver DATA目錄中,在QueryAnalyzer中執行如下語句:

EXECsp_attach_db@dbname=Nvoogiya,
@filename1=Nd:\mssql7\data\voogiya_data.mdf,(不加N時成功)
@filename2=Nd:\mssql7\data\voogiya_log.ldf(不加N時成功)

就會把這個庫加入到SQLServerGroup中.
2.sp_attach_single_file_db[@dbname=]dbname,
[@physname=]physical_name

  這個命令和上面的功能一樣,在physical_name中只要寫上據庫的物理檔案名稱就可以了,記錄檔SQLserver會重建立立。這個預存程序的運行要先執行下面的預存程序:

sp_detach_db@dbname=dbname

  同樣以上面的為例:

EXECsp_detach_db@dbname=voogiya
EXECsp_attach_single_file_db@dbname=voogiya,
@physname=d:\mssql7\data\voogiya_data.mdf

  要注意執行以上預存程序的使用者要在sysadmin中

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.