日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ASP中SQL语句参考及记录集对象

發布時間:2025/3/21 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP中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)
  說明:對某個表格的欄位建立索引以增加查詢時的速度。
  
  4、刪除 
  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)
  資料定義好之後接下來的就是資料的操作。資料的操作不外乎增加資料(insert)、查詢資料(query)、更改資料(update) 、刪除資料(delete)四種模式,以下分 別介紹他們的語法:
  
  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 的那個欄位都會全部被更改。
  
  4、刪除資料:
  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 條件表達式"
  
  (3) 刪除數據記錄:
  
  sql="delete from 數據表 where 條件表達式"
  
  sql="delete from 數據表" (將數據表所有記錄刪除)
  
  (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("別名") 獲取統的計值,其它函數運用同上。
  
  (5) 數據表的建立和刪除:
  
  CREATE TABLE 數據表名稱(字段1 類型1(長度),字段2 類型2(長度) …… )
  
  例:CREATE TABLE tab01(name varchar(50),datetime default now())
  
  DROP TABLE 數據表名稱 (永久性刪除一個數據表)
  
  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.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
1 鍵集游標,其他用戶對記錄說做的修改將反映到記錄集中,但其他用戶增加或刪除記錄不會反映到記錄集中。支持分頁、Recordset、BookMark
2 動態游標功能最強,但耗資源也最多。用戶對記錄說做的修改,增加或刪除記錄都將反映到記錄集中。支持全功能瀏覽。
3 靜態游標,只是數據的一個快照,用戶對記錄說做的修改,增加或刪除記錄都不會反映到記錄集中。支持向前或向后移動


參數B為記錄集的鎖定類型,其取值為:
1 鎖定類型,默認的,只讀,不能作任何修改
2 當編輯時立即鎖定記錄,最安全的方式
3 只有在調用Update方法時才鎖定記錄集,而在此前的其他操作仍可對當前記錄進行更改、插入和刪除等
4 當編輯時記錄不會被鎖定,而更改、插入和刪除是在批處理方式下完成的

打開數據記錄集方法其實不止一種,但是我們用的最多的就是
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 表示只允許在記錄集內的記錄間往前移動。這個是缺省值。
adOpenKeyset 反映由其它用戶所做的對記錄的改變或者刪除動作,但并不反映由其它用戶做作的添加新記錄的動作。
adOpenDynamic 反映由其它用戶所做的對記錄的改變或者刪除動作,包括添加的新記錄
adOpenStatic 不反映其它用戶對記錄所做的修改,添加,刪除動作。
這四個值VBSCRIPT預定義位
adOpenForwardOnly = 0
adOpenKeyset = 1
adOpenDynamic = 2
adOpenStatic = 3

lockType 表示當打開記錄集時,數據提供者用于鎖定數據庫的類型:
adLockReadOnly 數據不能改變,這是缺省值!
adLockPessimistic 數據提供者在開始編輯數據的時候鎖定記錄
adLockOptimistic 僅當調用update方法時,數據提供者鎖定記錄
adLockBatchOptimistic 用于批處理修改
他們的常量值定義分別是:
adLockReadOnly = 1
adLockPessimistic = 2
adLockOptimistic = 3
adLockBatchOptimistic = 4

總結

以上是生活随笔為你收集整理的ASP中SQL语句参考及记录集对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。