熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL數據操作基礎(初級)2

2013-11-15 14:44:02  來源: SQL Server 

  使用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以啟動該程序程序啟動時首先會出現一個對話框要求輸入服務器信息和登錄信息(見圖在Sever框中輸入你的SQL服務器的名字如果服務器正運行在本地計算機上服務器名字就是你計算機的名字在登錄信息框中輸入一個登錄帳號和密碼或選擇使用可信連接然後單擊Connect按鈕
  
  圖
  
   
  
   
  
  注意
  
  如果你將SQL Sever配置為使用完整安全或混合安全那麼你可以使用可信連接如果你使用標准安全你則需要提供用戶帳號和密碼要了解更多信息參見第三章
  
  如果一切正常在你單擊連接按鈕後會出現一個查詢窗口如圖所示(如果有異常請參考第三章)
  
   
  
  圖
  
   
  
  在執行查詢之前你需要選擇數據庫安裝 SQL Sever時你已為自己創建了一個數據庫SQL Sever還有許多系統數據庫如mastermodelmsdb和tempdb
  
  方便的是SQL Sever帶有一個特殊的名為pubs的例子數據庫庫 pubs中包含供一個虛擬的出版商使用的各個表文檔中所有的例子程序都是針對這個庫來設計的本書中的許多例子也使用這個數據庫
  
  在查詢窗口頂部的DB下拉框中選擇數據庫pubs這樣你就選擇了數據庫你所有的查詢都將針對這個庫中的各個表來執行現在你可以執行你的第一個查詢了這真讓人興奮!
  
  你的第一個查詢將針對一個名為autrors的表表中包含所有為某個虛擬出版商工作的作者的相關數據單擊查詢窗口並輸入以下的語句
  
  SELECT phone FROM authors WHERE au_name=Ringer
  
  輸入完成後單擊執行查詢按鈕(一個綠色三角形看起來像VCR播放鍵)單擊此按鈕後任何出現在查詢窗口中的語句均會被執行查詢窗口會自動變成結果顯示窗口你可以看到查詢的結果(見圖
  
  你看到的查詢結果也許與圖所示的不同在SQL Sever的不同版本中庫pubs中的數據會有所不同對SQL Sever 來說將會找到兩條記錄結果顯示窗口中應顯示如下內容
  
  phone
  
  ………………
  
   _
  
   _
  
  ( row(s) affected)
  
  圖
  
   
  
   
  
  你所執行的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 _
  
  Marjorie Green _
  
  Cheryl Carson _
  
  Michael OLeary _
  
  …
  
  ( 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_nametitle FROM authorstitlestitleauthor
  
  WHERE authorsau_id=titleauthorau_id
  
  AND titlestitle_id=titleauthortitle_id
  
  當這個SELECT語句執行時每個作者都將與正確的書名相匹配表titleauthor指明了表authors和表titles的關系它通過包含分別來自兩個表的各一個字段實現這一點第三個表的唯一目的是在另外兩個表的字段之間建立關系它本身不包含任何附加數據
  
  注意在這個例子中字段名是如何書寫的為了區別表authors和表titles中相同的字段名au_id每個字段名前面都加上了表名前綴和一個句號名為authorau_id 的字段屬於表authors名為titleauthorau_id的字段屬於表titleauthor兩者不會混淆
  
  通過使用第三個表你可以在兩個表的字段之間建立各種類型的關系例如一個作者也許寫了許多不同的書或者一本書也許由許多不同的作者共同完成當兩個表的字段之間有這種多對多的關系時你需要使用第三個表來指明這種關系
  
  但是在許多情況下兩個表之間的關系並不復雜比如你需要指明表titles和表publishers之間的關系因為一個書名不可能與多個出版商相匹配你不需要通過第三個表來指明這兩個表之間的關系要指明表titles和表publishers之間的關系你只要讓這兩個表有一個公共的字段就可以了在數據庫pubs中表titles和表publishers都有一個名為pub_id的字段如果你想得到書名及其出版商的一個列表你可以使用如下的語句
  
  SELECT titlepub_name FROM titlespublishers
  
  WHERE titlespub_id=publisherspub_id
  
  當然如果一本書是由兩個出版商聯合出版的那麼你需要第三個表來代表這種關系
  
  通常當你予先知道兩個表的字段間存在多對多關系時就使用第三個表來關聯這兩個表反之如果兩個表的字段間只有一對一一對多關系你可以使用公共字段來關聯它門
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22249.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.