古詩詞大全網 - 成語大全 - ASP基礎入門:數據庫查詢語言(1)

ASP基礎入門:數據庫查詢語言(1)

原定計劃從本篇開始就要給大家介紹 ASP 內建的 ActiveX

組件,但是考慮到我們在往後的學習中將會接觸到大量的數據庫查詢,因此作者臨時決定花壹到兩篇的篇幅向大家簡要介紹壹些數據庫查詢語言的基本知識,這其實也是學習

ASP

所必須掌握的壹門知識。是否能夠靈活地運用數據庫查詢語言,將直接關系到

ASP 程序的執行效率等壹系列問題,所以請各位務必重視。

相信很多朋友都聽說過 SQL

這個名字,如果妳是計算機方面的行家,SQL

的大名壹定是如雷貫耳。那麽 SQL 究竟是什麽呢?SQL 壹詞實際上是

"Structured Query Language"

結構式查詢語言的縮寫,是用於對存放在計算機數據庫中的數據進行組織、管理和檢索的壹種工具;是壹種特定類型的數據庫

-- 關系數據庫。而控制這種數據庫的計算機程序就是我們常說的

DBMS-- 數據庫管理系統。譬如:SQL Server、Oracle、Sybase、DB2

等等。當用戶想要檢索數據庫中的數據時,就通過 SQL

語言發出請求,接著 DBMS 對該 SQL

請求進行處理並檢索所要求的數據,最後將其返回給用戶,此過程被稱作為數據庫查詢,這也就是數據庫查詢語言這壹名稱的由來。

SQL 並不是象 C、COBOL 和 Fortran 語言那樣的完整的計算機語言。SQL

沒有用於條件測試的 IF 語句,也沒有用於程序分支的 Goto

語句以及循環語句 For 或 Do。確切的講,SQL 是壹種數據庫子語言,SQL

語句可以被嵌入到另壹種語言中,從而使其具有數據庫存取功能。SQL

也非嚴格的結構式語言,它的句法更接近英語語句,因此易於理解,大多數

SQL 語句都是直述其意,讀起來就象自然語言壹樣明了。SQL

還是壹種交互式查詢語言,允許用戶直接查詢存儲數據,利用這壹交互特性,用戶可以在很短的時間內回答相當復雜的問題,而同樣問題若讓程序員編寫相應的報表程序則可能要用幾個星期甚至更長時間。

在大部分 ASP 應用程序中我們都會接觸到數據庫,而我們在編寫

ASP 應用程序時用來進行數據庫操作的標準語法正是 SQL,因此 SQL

語法的重要性是不言而喻的。下面,我們就從最常用的 SQL 語句 SELECT

著手,壹步壹步地來學習 SQL。

查詢是 SQL 語言的核心,而用於表達 SQL 查詢的 SELECT

語句則是功能最強也是最為復雜的 SQL

語句,它從數據庫中檢索數據,並將查詢結果提供給用戶。在本文中我們將建立壹個名為

tianjiao 的簡單數據庫,該庫中存放了壹個叫 sales

的銷售記錄表,如下所示 :

姓名

性別

工資

銷售目標

銷售額

地區

書生

2500

8000

9000

上海

吳冠軍

3000

10000

9999

北京

雷鳴

2000

8000

10000

四川

雪兒

2500

5000

6000

廣州

顧壹

2600

9000

9800

大連

阿卓

2000

4000

4000

天津

熠天

4000

20000

20000

全國

在該表中有六列即六個字段 :

姓名、性別、工資、銷售目標、銷售額、地區,首先我們用 Select

語句列出姓名、銷售目標和銷售額 :

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

結果如下 :

姓名

銷售目標

銷售額

書生

8000

9000

吳冠軍

10000

9999

雷鳴

8000

10000

雪兒

5000

6000

顧壹

9000

9800

阿卓

4000

4000

熠天

20000

20000

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

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

"

結果如下 :

姓名

銷售目標

銷售額

書生

8000

9000

吳冠軍

10000

9999

雷鳴

8000

10000

顧壹

9000

9800

熠天

20000

20000

接下來,我們做壹個相對復雜的查詢,列出銷售額大於銷售目標的所有男性的姓名、銷售目標和銷售額,並且按銷售目標排序。

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

Form sales

Where 銷售額

銷售目標

And 性別 =" 男 "

Order By 銷售目標

結果如下 :

姓名

銷售目標

銷售額

書生

8000

9000

雷鳴

8000

10000

顧壹

9000

9800

熠天

20000

20000

大家可以看到,對於簡單查詢,SQL Select

語句和英文語法很相象,我們來分析壹下 SELECT

語句的完整格式,它包括六個子句,其中 SELECT 和FROM

子句是必須的,其它子句可以任選,每個子句的功能如下 :

1、Select 子句列出所有要求 SELECT 語句檢索的數據項。它放在

SELECT

語句開始處,指定此查詢要檢索的數據項。這些數據項通常用選擇表表示,即壹組用“,”隔開的選擇項。按照從左到右的順序,每個選擇項產生的壹個列的查詢結果,壹個選擇項可能是以下項目:

(1)、列名:標識 FROM

子句指定表中的列。如果列名作為選擇項,則 SQL

直接從數據庫表中每行取出該列的值,再將其放在查詢結果的相應行中。

(2)、常數:指定在查詢結果的每行中都放上該值。

(3)、SQL

表達式:說明必須將要放入查詢結果中的值按表達式的規定進行計算。

2、From 子句列出包含所要查詢數據的表,它由關鍵字 FROM

後跟壹組用逗號分開的表名組成。每個表明都代表壹個包括該查詢要檢索數據的表。這些表稱為此

SQL 語句的表源,因為查詢結果都源於它們。

3、Where 子句告訴 SQL

只查詢某些行中的數據,這些行用搜索條件描述。

4、Group By

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

5、Having 子句告訴 SQL 只產生有 Group By

得到的某些組的結果,和 Where

子句壹樣,所需要的組也用壹個搜索條件指定。

6、Order By

子句將查詢結果按壹列或多列中的數據排序。如果省略此子句,則查詢結果將是無序的。

下面作者將提供壹個簡單但實用的運用 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

' 統計數據庫中的列數

%

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 TITLEasp11a.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 TITLEasp11b.asp /TITLE /HEAD HTML

body bgcolor="#FFFFFF"

%

call query2table("select * from titles where Year_Published

= 1998")

' 將表 titles 中所有發表年份大於或等於 1998 年的記錄查詢出來

%

!--#include virtual="/asptest/subdBTable.inc"-- /BODY

/HTML

HEAD TITLEasp11c.asp /TITLE /HEAD HTML

body bgcolor="#FFFFFF"

%

call query2table("select * from publishers where amount10000 and

sex='male'")

' 將表 publishers 中所有數量大於 10000 且性別為男的記錄查詢出來

%

!--#include virtual="/asptest/subdBTable.inc"-- /BODY

/HTML

HEAD TITLEasp11d.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,妳就可以非常迅速地對數據庫進行查詢,妳所要做的只是將“conntemp.open

"DSN=Student;uid=student;pwd=aspmagic"”中的數據庫名稱、用戶身份和密碼稍加改動,並在調用

query2table 時輸入想要使用的 SQL 查詢語句即可。是不是很簡單 ?

這就是 ASP 和 SQL 的魅力所在 !!!

今天,我們雖然用了壹整篇的篇幅只學習了壹個 SQL

指令,但請妳相信妳所獲得遠不同於壹個 DOS 指令,SELECT

指令使得妳可以非常容易地對數據庫進行查詢,或許在這之前妳對數據庫查詢還壹無所知,但是通過本篇的學習,妳其實已經會使用

ASP 進行常用的數據庫查詢了,是不是很激動 ?

在下壹篇中,作者將繼續給大家介紹 SQL