久久―日本道色综合久久,亚洲欧美精品在线,狼狼色丁香久久婷婷综合五月,香蕉人人超,日本网站黄,国产在线观看不卡免费高清,无遮挡的毛片免费

2023信創(chuàng)獨角獸企業(yè)100強
全世界各行各業(yè)聯(lián)合起來,internet一定要實現(xiàn)!

SQL數(shù)據(jù)庫查詢語言(1)

2004-02-19 eNet&Ciweek

  SQL 并不是象 C、COBOL 和 Fortran 語言那樣的完整的計算機語言。SQL 沒有用于條件測試的 IF 語句,也沒有用于程序分支的 Goto 語句以及循環(huán)語句 For 或 Do。確切的講,SQL 是一種數(shù)據(jù)庫子語言,SQL 語句可以被嵌入到另一種語言中,從而使其具有數(shù)據(jù)庫存取功能。SQL 也非嚴格的結構式語言,它的句法更接近英語語句,因此易于理解,大多數(shù) SQL 語句都是直述其意,讀起來就象自然語言一樣明了。SQL 還是一種交互式查詢語言,允許用戶直接查詢存儲數(shù)據(jù),利用這一交互特性,用戶可以在很短的時間內回答相當復雜的問題,而同樣問題若讓程序員編寫相應的報表程序則可能要用幾個星期甚至更長時間。

   在大部分 ASP 應用程序中我們都會接觸到數(shù)據(jù)庫,而我們在編寫 ASP 應用程序時用來進行數(shù)據(jù)庫操作的標準語法正是 SQL,因此 SQL 語法的重要性是不言而喻的。下面,我們就從最常用的 SQL 語句 SELECT 著手,一步一步地來學習 SQL。

   查詢是 SQL 語言的核心,而用于表達 SQL 查詢的 SELECT 語句則是功能最強也是最為復雜的 SQL 語句,它從數(shù)據(jù)庫中檢索數(shù)據(jù),并將查詢結果提供給用戶。在本文中我們將建立一個名為 tianjiao 的簡單數(shù)據(jù)庫,該庫中存放了一個叫 sales 的銷售記錄表,如下所示 :





































































姓名性別工資銷售目標銷售額地區(qū)
888250080009000上海
吳冠軍3000100009999北京
雷鳴2000800010000四川
雪兒250050006000廣州
顧一260090009800大連
阿卓200040004000天津
熠天40002000020000全國




  在該表中有六列即六個字段 : 姓名、性別、工資、銷售目標、銷售額、地區(qū),首先我們用 Select 語句列出姓名、銷售目標和銷售額 :

   Select 姓名,銷售目標,銷售額 From sales

   結果如下 :












































姓名銷售目標銷售額
88880009000
吳冠軍100009999
雷鳴800010000
雪兒50006000
顧一90009800
阿卓40004000
熠天2000020000


  然后,我們再列出所有男性的姓名、銷售目標和銷售額 :

  Select 姓名,銷售目標,銷售額 From sales Where 性別 =" 男 "

  結果如下 :


































姓名銷售目標銷售額
88880009000
吳冠軍100009999
雷鳴800010000
顧一90009800
熠天2000020000

  接下來,我們做一個相對復雜的查詢,列出銷售額大于銷售目標的所有男性的姓名、銷售目標和銷售額,并且按銷售目標排序。
  Select 姓名,銷售目標,銷售額
  Form sales
  Where 銷售額 > 銷售目標
  And 性別 =" 男 "
  Order By 銷售目標

  結果如下 :




























姓名銷售目標銷售額
88880009000
雷鳴800010000
顧一90009800
熠天2000020000

大家可以看到,對于簡單查詢,SQL Select 語句和英文語法很相象,我們來分析一下 SELECT 語句的完整格式,它包括六個子句,其中 SELECT 和 FROM 子句是必須的,其它子句可以任選,每個子句的功能如下 :

   1、Select 子句列出所有要求 SELECT 語句檢索的數(shù)據(jù)項。它放在 SELECT 語句開始處,指定此查詢要檢索的數(shù)據(jù)項。這些數(shù)據(jù)項通常用選擇表表示,即一組用“,”隔開的選擇項。按照從左到右的順序,每個選擇項產生的一個列的查詢結果,一個選擇項可能是以下項目:

   (1)、列名:標識 FROM 子句指定表中的列。如果列名作為選擇項,則 SQL 直接從數(shù)據(jù)庫表中每行取出該列的值,再將其放在查詢結果的相應行中。
   (2)、常數(shù):指定在查詢結果的每行中都放上該值。

   (3)、SQL 表達式:說明必須將要放入查詢結果中的值按表達式的規(guī)定進行計算。

   2、From 子句列出包含所要查詢數(shù)據(jù)的表,它由關鍵字 FROM 后跟一組用逗號分開的表名組成。每個表明都代表一個包括該查詢要檢索數(shù)據(jù)的表。這些表稱為此 SQL 語句的表源,因為查詢結果都源于它們。
   3、Where 子句告訴 SQL 只查詢某些行中的數(shù)據(jù),這些行用搜索條件描述。

   4、Group By 子句指定匯總查詢,即不是對每行產生一個查詢結果,而是將相似的行進行分組,再對每組產生一個匯總結果。

   5、Having 子句告訴 SQL 只產生有 Group By 得到的某些組的結果,和 Where 子句一樣,所需要的組也用一個搜索條件指定。

   6、Order By 子句將查詢結果按一列或多列中的數(shù)據(jù)排序。如果省略此子句,則查詢結果將是無序的。

   下面作者將提供一個簡單但實用的運用 SQL 語句查詢的 ASP 程序供大家參考。

   為了使大家更清楚更直接地了解 SQL 語法在 ASP 中的應用,我們先將查詢的所有核心過程寫成一個名為 query2table 的 SUB,然后利用 ASP 的服務器端包容功能調用該 SUB。請將以下語句剪貼到記事簿,保存為 subdbtable.inc 文件,并置于虛擬目錄 asptest 下 :
 ?。?%
  sub query2table(inputquery)
  set conntemp=server.createobject("adodb.connection")
  conntemp.open "DSN=Student;uid=student;pwd=aspmagic"
  set rstemp=conntemp.execute(inputquery)
  howmanyfields=rstemp.fields.count -1
  ' 統(tǒng)計數(shù)據(jù)庫中的列數(shù)
  %>
  < table border=1>< tr>
 ?。?%
  for i=0 to howmanyfields
  %>
  < td>< b>< %=rstemp(i).name%>< /B>< /TD>
 ?。?% next %>
 ?。?/tr>
 ?。?%
  do while not rstemp.eof
  %>
 ?。?tr>
 ?。?% for i = 0 to howmanyfields
  thisvalue=rstemp(i)
  If isnull(thisvalue) then
  thisvalue="?
  ' 如果字段為空,則將變量 thisvalue 的值定義為一個空格
  end if%>
  < td valign=top>< %=thisvalue%>< /td>
 ?。?% next %>
 ?。?/tr>
  < %rstemp.movenext
  loop%>
 ?。?/table>
 ?。?%
  rstemp.close
  set rstemp=nothing
  conntemp.close
  set conntemp=nothingend sub%>

   完成了 SUB 的定義過程,在下面幾個 ASP 程序中我們只要加入想要使用的 SQL 查詢語句,并調用該過程就可以非常方便的得到查詢結果。將以下四段代碼分別保存為 asp11a.asp、asp11b.asp、asp11c.asp、asp11d.asp 四個 .asp 文件。

 ?。?HEAD>< TITLE>asp11a.asp< /TITLE>< /HEAD>
 ?。?HTML>< body bgcolor="#FFFFFF">
 ?。?%
  call query2table("select > from publishers where name like 'A%%'")
' 將表 publishers 中所有姓名中有字母 A 的記錄查詢出來
  %>
 ?。?!--#include virtual="/asptest/subdbtable.inc"-->< /BODY>< /HTML>


 ?。?HEAD>< TITLE>asp11b.asp< /TITLE>< /HEAD>< HTML>< body bgcolor="#FFFFFF">
  < %
  call query2table("select > from titles where Year_Published > = 1998")
' 將表 titles 中所有發(fā)表年份大于或等于 1998 年的記錄查詢出來
  %>
 ?。?!--#include virtual="/asptest/subdbtable.inc"-->< /BODY>< /HTML>


  < HEAD>< TITLE>asp11c.asp< /TITLE>< /HEAD>< HTML>< body bgcolor="#FFFFFF">
 ?。?%
  call query2table("select > from publishers where amount>10000 and sex='male'")
' 將表 publishers 中所有數(shù)量大于 10000 且性別為男的記錄查詢出來
  %>
  < !--#include virtual="/asptest/subdbtable.inc"-->< /BODY>< /HTML>


 ?。?HEAD>< TITLE>asp11d.asp< /TITLE>< /HEAD>< HTML>< body bgcolor="#FFFFFF">
 ?。?%
  call query2table("select > from publishers where state< > 'NY'")
'將表 publishers 中所有所在城市不為紐約的記錄查詢出來。
  %>
 ?。?!--#include virtual="/asptest/subdbtable.inc"-->< /BODY>< /HTML>

   利用 subdbtable.inc 文件中的所定義的過程 query2table,你就可以非常迅速地對數(shù)據(jù)庫進行查詢,你所要做的只是將“conntemp.open "DSN=Student;uid=student;pwd=aspmagic"”中的數(shù)據(jù)庫名稱、用戶身份和密碼稍加改動,并在調用 query2table 時輸入想要使用的 SQL 查詢語句即可。是不是很簡單 ? 這就是 ASP 和 SQL 的魅力所在 !!!

   今天,我們雖然用了一整篇的篇幅只學習了一個 SQL 指令,但請你相信你所獲得遠不同于一個 DOS 指令,SELECT 指令使得你可以非常容易地對數(shù)據(jù)庫進行查詢,或許在這之前你對數(shù)據(jù)庫查詢還一無所知,但是通過本篇的學習,你其實已經會使用 ASP 進行常用的數(shù)據(jù)庫查詢了,是不是很激動 ? 在下一篇中,作者將繼續(xù)給大家介紹 SQL 的其它幾個基本指令。


相關頻道: eNews

您對本文或本站有任何意見,請在下方提交,謝謝!

投稿信箱:tougao@enet16.com