為了建立交互站點
你需要使用數據庫來存儲來自訪問者的信息
例如
你要建立一個職業介紹服務的站點
你就需要存儲諸如個人簡歷
所感興趣的工作等等這樣的信息
創建動態網葉也需要使用數據庫
如果你想顯示符合來訪者要求的最好的工作
你就需要從數據庫中取出這份工作的信息
你將會發現
在許多情況下需要使用數據庫
在這一章裡
你將學會怎樣使用
結構化查詢語言
(SQL〕來操作數據庫
SQL語言是數據庫的標准語言
在Active Sever Pages 中
無論何時你要訪問一個數據庫
你就要使用SQL語言
因此
掌握好SQL對ASP編程是非常重要的
注意
你可以把
SQL
讀作
sequel
也可以按單個字母的讀音讀作S-Q-L
兩種發音都是正確的
每種發音各有大量的支持者
在本書裡
認為
SQL
讀作
sequel
通過這一章的學習
你將理解怎樣用SQL實現數據庫查詢
你將學會怎樣使用這種查詢從數據表中取出信息
最後
你將學會怎樣設計和建立自己的數據庫
注意
通過下面幾章對SQL的介紹
你將對SQL有足夠的了解
從而可以有效地使用Active Sever Pages
但是
SQL是一種復雜的語言
本書不可能包括它的全部細節
要全面掌握SQL語言
你需要學習在Microsoft SQL Sever 中使用SQL
你可以到附近的書店去買一本Microsoft SQL Sever
SQL介紹
本書假設你是在SQL操作Microsoft SQL Sever 的數據庫
你也可以用SQL操作許多其它類型的數據庫
SQL是操作數據庫的標准語言
(事實上
關於SQL語言有一個專門的ANSI標准〕
注意
不要在你的站點上試圖用Microsoft Access代替Microsoft SQL Sever
SQL Sever可以同時服務於許多用戶
如果你希望你的站點有較高的訪問率
MS Access是不能勝任的
在學習SQL的細節之前
你需要理解它的兩大特點
一個特點容易掌握
另一個掌握起來有點困難
第一個特點是所有SQL數據庫中的數據都存儲在表中
一個表由行和列組成
例如
下面這個簡單的表包括name 和e
mail address
Name Email Address
Bill Gates
president Clinton pres
Stephen Walther sw
這個表有兩列(列也稱為字段
域〕
Name和Email Address
有三行
每一行包含一組數據
一行中的數據組合在一起稱為一條記錄
無論何時你向表中添加新數據
你就添加了一條新記錄
一個數據表可以有幾十個記錄
也可以有幾千甚至幾十億個記錄
雖然你也許永遠不需要存儲十億個Email地址
但知道你能這樣做總是好的
也許有一天你會有這樣的需要
你的數據庫很有可能包含幾十個表
所有存儲在你數據庫中的信息都被存儲在這些表中
當你考慮怎樣把信息存儲在數據庫中時
你應該考慮怎樣把它們存儲在表中
SQL的第二個特點有些難於掌握
這種語言被設計為不允許你按照某種特定的順序來取出記錄
因為這樣做會降低SQL Sever取記錄的效率
使用SQL
你只能按查詢條件來讀取記錄
當考慮如何從表中取出記錄時
自然會想到按記錄的位置讀取它們
例如
也許你會嘗試通過一個循環
逐個記錄地掃描
來選出特定的記錄
在使用SQL時
你必須訓練自己
不要有這種思路
假如你想選出所有的名字是
Bill Gates
的記錄
如果使用傳統的編程語言
你也許會構造一個循環
逐個查看表中的記錄
看名字域是否是
Bill Gates
這種選擇記錄的方法是可行的
但是效率不高
使用SQL
你只要說
選擇所有名字域等於Bill Gates的記錄
SQL就會為你選出所有符合條件的記錄
SQL會確定實現查詢的最佳方法
建設你想取出表中的前十個記錄
使用傳統的編程語言
你可以做一個循環
取出前十個記錄後結束循環
但使用標准的SQL查詢
這是不可能實現的
從SQL的角度來說
在一個表中不存在前十個記錄這種概念
開始時
當你知道你不能用SQL實現某些你感覺應該能實現的功能
你會受到挫折
你也許會以頭撞牆甚至想寫惡毒的信件給SQL的設計者們
但後來你會認識到
SQL的這個特點不僅不是個限制
反而是其長處
因為SQL不根據位置來讀取記錄
它讀取記錄可以很快
綜上所述
SQL有兩個特點
所有數據存儲在表中
從SQL的角度來說
表中的記錄沒有順序
在下一節
你將學會怎樣用SQL從表中選擇特殊的記錄
使用SQL從表中取記錄
SQL的主要功能之一是實現數據庫查詢
如果你熟悉Internet 引擎
那麼你已經熟悉查詢了
你使用查詢來取得滿足特定條件的信息
例如
如果你想找到有ASP信息的全部站點
你可以連接到 Yahoo!並執行一個對Active Sever Pages的搜索
在你輸入這個查詢後
你會收到一個列表
表中包括所有其描述中包含搜索表達式的站點
多數Internet 引擎允許邏輯查詢
在邏輯查詢中
你可以包括特殊的運算符如AND
OR和NOT
你使用這些運算符來選擇特定的記錄
例如
你可以用AND來限制查詢結果
如果你執行一個對Active Sever Pages AND SQL的搜索
你將得到其描述中同時包含Active Sever Pages 和SQL的記錄
當你需要限制查詢結果時
你可以使用AND
如果你需要擴展查詢的結果
你可以使用邏輯操作符OR
例如
如果你執行一個搜索
搜索所有的其描述中包含Active Sever Pages OR SQL的站點
你收到的列表中將包括所有其描述中同時包含兩個表達式或其中任何一個表達式的站點
如果你想從搜索結果中排除特定的站點
你可以使用NOT
例如
查詢
Active Sever Pages
AND NOT
SQL
將返回一個列表
列表中的站點包含Active Sever Pages
但不包含SQL
當必須排除特定的記錄時
你可以使用NOT
用SQL執行的查詢與用Internet搜索引擎執行的搜索非常相似
當你執行一個SQL查詢時
通過使用包括邏輯運算符的查詢條件
你可以得到一個記錄列表
此時查詢結果是來自一個或多個表
SQL查詢的句法非常簡單
假設有一個名為email_table 的表
包含名字和地址兩個字段
要得到Bill Gates 的e_mail地址
你可以使用下面的查詢
SELECT email from email_table WHERE name=
Bill Gates
當這個查詢執行時
就從名為email_table的表中讀取Bill Gates的e_mail 地址
這個簡單的語句包括三部分
■ SELECT語句的第一部分指名要選取的列
在此例中
只有email列被選取
當執行 時
只顯示email列的值
■ SELECTT語句的第二部份指明要從哪個(些)表中查詢數據
在此例中
要查詢的表名為email_table
■ 最後
SELECT語句的WHERE子句指明要選擇滿足什麼條件的記錄
在此例中
查詢條件為只有name列的值為Bill Gates 的記錄才被選取
Bill Gates很有可能擁有不止一個email地址
如果表中包含Bill Gates的多個email地址
用上述的SELECT語句可以讀取他所有的email地址
SELECT語句從表中取出所有name字段值為Bill Gates 的記錄的email 字段的值
前面說過
查詢可以在查詢條件中包含邏輯運算符
假如你想讀取Bill Gates 或Clinton總統的所有email地址
你可以使用下面的查詢語句
SELECT email FROM email_table WHERE name=
Bill Gates
OR
name=
president Clinton
此例中的查詢條件比前一個復雜了一點
這個語句從表email_table中選出所有name列為Bill Gates或president Clinton的記錄
如果表中含有Bill Gates或president Clinton的多個地址
所有的地址都被讀取
SELECT語句的結構看起來很直觀
如果你請一個朋友從一個表中為你選擇一組記錄
你也許以非常相似的方式提出你的要求
在SQL SELECT語句中
你
SELECT特定的列FROM一個表WHERE某些列滿足一個特定的條件
下一節將介紹怎樣執行SQL查詢來選取記錄
這將幫助你熟悉用SELECT語句從表中取數據的各種不同方法
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22116.html