国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQL數(shù)據(jù)操作基礎(chǔ)(初級(jí))2

2019-11-03 08:38:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
使用ISQL執(zhí)行SELECT查詢

當(dāng)你安裝SQL Sever時(shí),你同時(shí)安裝了一個(gè)叫作ISQL/w的應(yīng)用程序。ISQL/w允許你執(zhí)行交互的SQL查詢。在把查詢包括到你的asp網(wǎng)頁(yè)中之前,用ISQL/w對(duì)其進(jìn)行測(cè)試是非常有用的。

注意:

在這本書(shū)的第一部份,你學(xué)習(xí)了怎樣安裝和配置Microsoft SQL Sever 。如果沒(méi)有安裝SQL Sever或者SQL Sever不能運(yùn)行,請(qǐng)參閱第三章“安裝和使用SQL Sever”。

選擇任務(wù)上SQL Sever程序組中的ISQL_w以啟動(dòng)該程序。程序啟動(dòng)時(shí),首先會(huì)出現(xiàn)一個(gè)對(duì)話框,要求輸入服務(wù)器信息和登錄信息(見(jiàn)圖10.1)。在Sever框中,輸入你的SQL服務(wù)器的名字。如果服務(wù)器正運(yùn)行在本地計(jì)算機(jī)上,服務(wù)器名字就是你計(jì)算機(jī)的名字。
在登錄信息框中,輸入一個(gè)登錄帳號(hào)和密碼或選擇使用“可信連接”,然后單擊Connect按鈕。

圖10。1

 

 

注意:

如果你將SQL Sever配置為使用完整安全或混合安全,那么你可以使用可信連接。如果你使用標(biāo)準(zhǔn)安全,你則需要提供用戶帳號(hào)和
密碼。要了解更多信息,參見(jiàn)第三章。

如果一切正常,在你單擊連接按鈕后會(huì)出現(xiàn)一個(gè)查詢窗口,如圖10.2所示。(如果有異常,請(qǐng)參考第三章)

 

圖10.2

 

在執(zhí)行查詢之前,你需要選擇數(shù)據(jù)庫(kù)。安裝 SQL Sever時(shí)你已為自己創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù),SQL Sever還有許多系統(tǒng)數(shù)據(jù)庫(kù),如master,model,msdb,和tempdb。

方便的是,SQL Sever帶有一個(gè)特殊的名為pubs的例子數(shù)據(jù)庫(kù)。庫(kù) pubs中包含供一個(gè)虛擬的出版商使用的各個(gè)表。文檔中所有的例子程序都是針對(duì)這個(gè)庫(kù)來(lái)設(shè)計(jì)的。本書(shū)中的許多例子也使用這個(gè)數(shù)據(jù)庫(kù)。

在查詢窗口頂部的DB下拉框中選擇數(shù)據(jù)庫(kù)pubs,這樣你就選擇了數(shù)據(jù)庫(kù)。你所有的查詢都將針對(duì)這個(gè)庫(kù)中的各個(gè)表來(lái)執(zhí)行。現(xiàn)在你可以執(zhí)行你的第一個(gè)查詢了。這真讓人興奮!

你的第一個(gè)查詢將針對(duì)一個(gè)名為autrors的表,表中包含所有為某個(gè)虛擬出版商工作的作者的相關(guān)數(shù)據(jù)。單擊查詢窗口并輸入以下的語(yǔ)句:

SELECT phone FROM authors WHERE au_name="Ringer"

輸入完成后,單擊執(zhí)行查詢按鈕(一個(gè)綠色三角形,看起來(lái)像VCR播放鍵)。單擊此按鈕后,任何出現(xiàn)在查詢窗口中的語(yǔ)句均會(huì)被執(zhí)
行。查詢窗口會(huì)自動(dòng)變成結(jié)果顯示窗口,你可以看到查詢的結(jié)果(見(jiàn)圖10.3)。

你看到的查詢結(jié)果也許與圖10.3所示的不同。在SQL Sever的不同版本中,庫(kù)pubs中的數(shù)據(jù)會(huì)有所不同。對(duì)SQL Sever 6.5來(lái)說(shuō),
將會(huì)找到兩條記錄。結(jié)果顯示窗口中應(yīng)顯示如下內(nèi)容:

phone

……………….

801 826_0752

801 826_0752

(2 row(s) affected)

圖10.3

 

 

你所執(zhí)行的SELECT語(yǔ)句從表authors中取出所有名字為Ringer的作者的電話號(hào)碼。你通過(guò)在WHERE子句中使用特殊的選擇條件來(lái)限
制查詢的結(jié)果。你也可以忽略選擇條件,從表中取出所有作者的電話號(hào)碼。要做到這一點(diǎn),單擊Query標(biāo)簽,返回到查詢窗口,輸
入以下的SELECT語(yǔ)句:

SELECT Phone FROM authors

這個(gè)查詢執(zhí)行后,會(huì)取出表authors中的所有電話號(hào)碼(沒(méi)有特定的順序)。如果表authors中包含一百個(gè)電話號(hào)碼,會(huì)有一百個(gè)記
錄被取出,如果表中有十億個(gè)電話號(hào)碼,這十億條記錄都會(huì)被取出(這也許需要一些時(shí)間)。

表authrs的字段包括姓,名字,電話號(hào)碼,地址,城市,州和郵政編碼。通過(guò)在SELECT語(yǔ)句的第一部份指定它們,你可以從表中取
出任何一個(gè)字段。你可以在一個(gè)SELECT語(yǔ)句中一次取出多個(gè)字段,比如:

SELECT au_fname ,au_lname, phone FROM authors

這個(gè)SELECT語(yǔ)句執(zhí)行后,將取出這三個(gè)列的所有值。下面是這個(gè)查詢的結(jié)果的一個(gè)示例(為了節(jié)省紙張,只顯示查詢結(jié)果的一部
分,其余記錄用省略號(hào)代替):

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語(yǔ)句中,你需要列出多少個(gè)字段,你就可以列出多少。不要忘了把字段名用逗號(hào)隔開(kāi)。你也可以用星號(hào)(*)從一個(gè)表中
取出所有的字段。這里有一個(gè)使用星號(hào)的例子:

SELECT * FROM authors

這個(gè)SELECT語(yǔ)句執(zhí)行后,表中的所有字段的值都被取出。你會(huì)發(fā)現(xiàn)你將在SQL查詢中頻繁使用星號(hào)。

技巧:

你可以使用星號(hào)來(lái)查看一個(gè)表的所有列的名字。要做到這一點(diǎn),只需要在執(zhí)行完SELECT語(yǔ)句后看一下查詢結(jié)果的列標(biāo)題。

操作多個(gè)表

到現(xiàn)在為止,你只嘗試了用一句SQL查詢從一個(gè)表中取出數(shù)據(jù)。你也可以用一個(gè)SELECT語(yǔ)句同時(shí)從多個(gè)表中取出數(shù)據(jù),只需在
SELECT語(yǔ)句的FROM從句中列出要從中取出數(shù)據(jù)的表名稱即可:

SELECT au_lname ,title FROM authors, titles

這個(gè)SELECT語(yǔ)句執(zhí)行時(shí),同時(shí)從表authors和表titles中取出數(shù)據(jù)。從表authors中取出所有的作者名字,從表titles中取出所有
的書(shū)名。在ISQL/w程序中執(zhí)行這個(gè)查詢,看一下查詢結(jié)果。你會(huì)發(fā)現(xiàn)一些奇怪的出乎意料的情況:作者的名字并沒(méi)有和它們所著的
書(shū)相匹配,而是出現(xiàn)了作者名字和書(shū)名的所有可能的組合,這也許不是你所希望見(jiàn)到的。

出了什么差錯(cuò)?問(wèn)題在于你沒(méi)有指明這兩個(gè)表之間的關(guān)系。你沒(méi)有通過(guò)任何方式告訴SQL如何把表和表關(guān)聯(lián)在一起。由于不知道如何
關(guān)聯(lián)兩個(gè)表,服務(wù)器只能簡(jiǎn)單地返回取自兩個(gè)表中的記錄的所有可能組合。

要從兩個(gè)表中選出有意義的記錄組合,你需要通過(guò)建立兩表中字段的關(guān)系來(lái)關(guān)聯(lián)兩個(gè)表。要做到這一點(diǎn)的途徑之一是創(chuàng)建第三個(gè)
表,專門(mén)用來(lái)描述另外兩個(gè)表的字段之間的關(guān)系。

表authors有一個(gè)名為au_id的字段,包含有每個(gè)作者的唯一標(biāo)識(shí)。表titles有一個(gè)名為title_id的字段,包含每個(gè)書(shū)名的唯一標(biāo)
識(shí)。如果你能在字段au_id和字段title_id 之間建立一個(gè)關(guān)系,你就可以關(guān)聯(lián)這兩個(gè)表。數(shù)據(jù)庫(kù)pubs中有一個(gè)名為titleauthor的
表,正是用來(lái)完成這個(gè)工作。表中的每個(gè)記錄包括兩個(gè)字段,用來(lái)把表titles和表authors關(guān)聯(lián)在一起。下面的SELECT語(yǔ)句使用了
這三個(gè)表以得到正確的結(jié)果:

SELECT au_name,title FROM authors,titles,titleauthor

WHERE authors.au_id=titleauthor.au_id

AND titles.title_id=titleauthor.title_id

當(dāng)這個(gè)SELECT語(yǔ)句執(zhí)行時(shí),每個(gè)作者都將與正確的書(shū)名相匹配。表titleauthor指明了表authors和表titles的關(guān)系,它通過(guò)包含
分別來(lái)自兩個(gè)表的各一個(gè)字段實(shí)現(xiàn)這一點(diǎn)。第三個(gè)表的唯一目的是在另外兩個(gè)表的字段之間建立關(guān)系。它本身不包含任何附加數(shù)
據(jù)。

注意在這個(gè)例子中字段名是如何書(shū)寫(xiě)的。為了區(qū)別表authors和表titles中相同的字段名au_id,每個(gè)字段名前面都加上了表名前
綴和一個(gè)句號(hào)。名為author.au_id 的字段屬于表authors,名為titleauthor.au_id的字段屬于表titleauthor,兩者不會(huì)混
淆。

通過(guò)使用第三個(gè)表,你可以在兩個(gè)表的字段之間建立各種類(lèi)型的關(guān)系。例如,一個(gè)作者也許寫(xiě)了許多不同的書(shū),或者一本書(shū)也許由
許多不同的作者共同完成。當(dāng)兩個(gè)表的字段之間有這種“多對(duì)多”的關(guān)系時(shí),你需要使用第三個(gè)表來(lái)指明這種關(guān)系。

但是,在許多情況下,兩個(gè)表之間的關(guān)系并不復(fù)雜。比如你需要指明表titles和表publishers之間的關(guān)系。因?yàn)橐粋€(gè)書(shū)名不可能與
多個(gè)出版商相匹配,你不需要通過(guò)第三個(gè)表來(lái)指明這兩個(gè)表之間的關(guān)系。要指明表titles和表publishers之間的關(guān)系,你只要讓這
兩個(gè)表有一個(gè)公共的字段就可以了。在數(shù)據(jù)庫(kù)pubs中,表titles和表publishers都有一個(gè)名為pub_id的字段。如果你想得到書(shū)名
及其出版商的一個(gè)列表,你可以使用如下的語(yǔ)句:

SELECT title,pub_name FROM titles,publishers

WHERE titles.pub_id=publishers.pub_id

當(dāng)然,如果一本書(shū)是由兩個(gè)出版商聯(lián)合出版的,那么你需要第三個(gè)表來(lái)代表這種關(guān)系。

通常,當(dāng)你予先知道兩個(gè)表的字段間存在“多對(duì)多”關(guān)系時(shí),就使用第三個(gè)表來(lái)關(guān)聯(lián)這兩個(gè)表。反之,如果兩個(gè)表的字段間只有“一對(duì)一”或“一對(duì)多”關(guān)系,你可以使用公共字段來(lái)關(guān)聯(lián)它門(mén)。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 始兴县| 怀集县| 上林县| 方正县| 扎鲁特旗| 揭西县| 澜沧| 马关县| 玉环县| 乳山市| 石河子市| 明溪县| 壤塘县| 绥中县| 沭阳县| 团风县| 无棣县| 桦甸市| 凤庆县| 抚远县| 鄯善县| 沧源| 陆河县| 盘山县| 禹州市| 收藏| 合山市| 社会| 绍兴市| 汝城县| 松潘县| 山丹县| 铁岭县| 琼中| 杭锦后旗| 阿拉善左旗| 莒南县| 拉孜县| 阜宁县| 乐业县| 商南县|