SQL資料運算基礎(初級)2

黄舟
發布: 2016-12-17 14:28:11
原創
1229 人瀏覽過

使用ISQL執行SELECT查詢

當你安裝SQL Sever時,你同時安裝了一個叫作ISQL/w的應用程式。 ISQL/w允許你執行互動的SQL查詢。在把查詢包含到你的asp網頁之前,用ISQL/w對其進行測試是非常有用的。

注意:

在這本書的第一部分,你學習了怎麼安裝和配置Microsoft SQL Sever 。如果沒有安裝SQL Sever或SQL Sever不能運行,請參考第三章「安裝和使用SQL Sever」。

選擇任務上SQL Sever程式組中的ISQL_w以啟動該程式。程式啟動時,首先會出現一個對話框,要求輸入伺服器資訊和登入資訊(見圖10.1)。在Sever框中,輸入你的SQL伺服器的名字。如果伺服器正運行在本機上,伺服器名字就是你電腦的名字。
在登入資訊框中,輸入一個登入帳號和密碼或選擇使用“可信任連接”,然後按一下Connect按鈕。

圖10。1

 

 

注意:

如果你將SQL Sever配置為使用完整安全或混合安全,那麼你可以使用可信任連線。如果你使用標準安全,你則需要提供使用者帳號和
密碼。要了解更多信息,請參閱第三章。

如果一切正常,在你點擊連線按鈕後會出現一個查詢窗口,如圖10.2所示。 (如果有異常,請參考第三章)

 

圖10.2

 

在執行查詢之前,你需要選擇資料庫。安裝 SQL Sever時你已經為自己建立了一個資料庫,SQL Sever還有許多系統資料庫,如master,model,msdb,和tempdb。

方便的是,SQL Sever附帶一個特別的名為pubs的範例資料庫。庫 pubs中包含供一個虛擬的出版商使用的各個表。文件中所有的例子程式都是針對這個庫來設計的。本書中的許多例子也使用這個資料庫。

在查詢視窗頂部的DB下拉框中選擇資料庫pubs,這樣你就選擇了資料庫。你所有的查詢都將針對這個庫中的各個表來執行。現在你可以執行你的第一個查詢了。這真讓人興奮!

你的第一個查詢將針對一個名為autrors的表,表中包含所有為某個虛擬出版商工作的作者的相關資料。點選查詢視窗並輸入以下的語句:

SELECT phone FROM authors WHERE au_name="Ringer"

輸入完成後,點選執行查詢按鈕(一個綠色三角形,看起來像VCR播放鍵)。點選此按鈕後,任何出現在查詢視窗中的語句都會被執
行。查詢視窗會自動變成結果顯示窗口,你可以看到查詢的結果(見圖10.3)。

你看到的查詢結果也許與圖10.3所示的不同。在SQL Sever的不同版本中,庫pubs中的數據會有所不同。對SQL Sever 6.5來說,
將會找到兩筆記錄。結果顯示視窗中應顯示下列內容:

phone

……………….

801 826_0752

801 826_0752

(2 row(s) affected)

圖10.3

 

 

你所執行的SELECT語句從表authors中取出所有名字為Ringer的作者的電話號碼。你透過在WHERE子句中使用特殊的選擇條件來限
制查詢的結果。你也可以忽略選擇條件,從表格中取出所有作者的電話號碼。要做到這一點,請按一下Query標籤,返回查詢窗口,輸
入以下的SELECT語句:

SELECT Phone FROM authors

這個查詢執行後,會取出表格authors中的所有電話號碼(沒有特定的順序)。如果表authors中包含一百個電話號碼,會有一百個記
錄被取出,如果表中有十億個電話號碼,這十億筆記錄都會被取出(這也許需要一些時間)。

表authrs的欄位包括姓,名字,電話號碼,地址,城市,州和郵遞區號。透過在SELECT語句的第一部分指定它們,你可以從表格中取
出任何一個欄位。你可以在一個SELECT語句中一次取出多個字段,例如:

SELECT au_fname ,au_lname, phone FROM authors

這個SELECT語句執行後,將取出這三個欄位的所有值。以下是這個查詢的結果的一個範例(為了節省紙張,只顯示查詢結果的一部
分,其餘記錄用省略號代替):

au_fname au_lname phone

………………………………………………………………………….

Johnson White 408 496_7223

Marjorie Green 415 986_7020

Cheryl Carson 415 548_7723

Michael O’Leary 408 286_2428



(23 row(s) affected)

在SELECT語句中,你需要列出多少個字段,你就可以列出多少。不要忘了把字段名用逗號隔開。你也可以用星號(*)從一個表格中
取出所有的欄位。這裡有一個使用星號的範例:

SELECT * FROM authors

這個SELECT語句執行後,表格中的所有欄位的值都被取出。你會發現你將在SQL查詢中經常使用星號。

技巧:

你可以使用星號來查看一個表格的所有欄位的名字。要做到這一點,只需要在執行完SELECT語句後看一下查詢結果的列標題。

操作多個表

到現在為止,你只嘗試了用一句SQL查詢從一個表中取出資料。你也可以用一個SELECT語句同時從多個表中取出數據,只需在
SELECT語句的FROM從句中列出要從中取出數據的表名稱即可:

SELECT au_lname ,title FROM authors, titles

這個SELECT語句執行時,同時從表authors和表titles中取出資料。從表authors中取出所有的作者名字,從表titles中取出所有
的書名。在ISQL/w程式中執行這個查詢,看看查詢結果。你會發現一些奇怪的出乎意料的情況:作者的名字並沒有和它們所寫的
書相匹配,而是出現了作者名字和書名的所有可能的組合,這也許不是你所希望見到的。

出了什麼差錯?問題在於你沒有指明這兩個表之間的關係。你沒有用任何方式告訴SQL如何把表格和表格關聯在一起。由於不知道如何
關聯兩個表,伺服器只能簡單地傳回取自兩個表中的記錄的所有可能組合。

要從兩個表中選出有意義的記錄組合,你需要透過建立兩個表中欄位的關係來關聯兩個表。要做到這一點的途徑之一是建立第三個
表,專門用來描述另外兩個表的欄位之間的關係。

表authors有一個名為au_id的字段,包含有每個作者的唯一標識。表titles有一個名為title_id的字段,包含每個書名的唯一標
識。如果你能在字段au_id和字段title_id 之間建立一個關係,你就可以關聯這兩個表。資料庫pubs中有一個名為titleauthor的
表,正是用來完成這個工作。表中的每個記錄包括兩個字段,用來把表titles和表authors關聯在一起。下面的SELECT語句使用了
這三個表以獲得正確的結果:

SELECT au_name,title FROM authors,titles,titleauthor

WHERE authors.au_id=titleauthor.au_id

AND titles.title_id=titleauthor.title_id

當這個SELECT語句執行時,每個作者都會與正確的書名相符。表titleauthor指明了表authors和表titles的關係,它透過包含
分別來自兩個表的各一個字段來實現這一點。第三個表的唯一目的是在另外兩個表格的欄位之間建立關係。它本身不包含任何附加數
據。

注意在這個例子中字段名是如何書寫的。為了區別表authors和表titles中相同的欄位名稱au_id,每個欄位名稱前面都加上了表名前
綴和一個句號。名為author.au_id 的欄位屬於表authors,名為titleauthor.au_id的欄位屬於表titleauthor,兩者不會混


透過使用第三個表,你可以在兩個表的欄位之間建立各種類型的關係。例如,一個作者也許寫了許多不同的書,或者一本書也許由
許多不同的作者共同完成。當兩個表格的欄位之間有這種「多對多」的關係時,你需要使用第三個表格來指明這種關係。

但是,在許多情況下,兩個表之間的關係並不復雜。例如你需要指明表titles和表publishers之間的關係。因為一個書名不可能與
多個出版商相匹配,你不需要透過第三個表來指明這兩個表之間的關係。要指明表titles和表publishers之間的關係,你只要讓這
兩個表有一個公共的字段就可以了。在資料庫pubs中,表titles和表格publishers都有一個名為pub_id的欄位。如果你想得到書名
及其出版商的一個列表,你可以使用如下的語句:

SELECT title,pub_name FROM titles,publishers

WHERE titles.pub_id=publishers.pub_id

當然,如果一本書是由兩個出版商共同出版的,那麼你需要第三個表來代表這種關係。

通常,當你予先知道兩個表的字段間存在「多對多」關係時,就使用第三個表來關聯這兩個表。反之,如果兩個表的字段間只有“一對一”或“一對多”關係,你可以使用公共字段來關聯它門。

 以上就是SQL資料操作基礎(初級)2的內容,更多相關文章請關注PHP中文網(www.php.cn)! 


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!