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