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

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

2013-11-15 14:42:49  來源: SQL Server 

  操作字段
  
  通常當你從一個表中取出字段值時該值與創建該表時所定義的字段名聯系在一起如果你從表authors中選擇所有的作者名字所有的值將會與字段名au_lname相聯系但是在某些情況下你需要對字段名進行操作在SELECT語句中你可以在缺省字段名後面僅跟一個新名字來取代它例如可以用一個更直觀易讀的名字Author Last Name來代替字段名au_lname
  
  SELECT au_lname Author Last Name FROM authors
  
  當這個SELECT語句執行時來自字段au_lname的值會與Author Last Name相聯系查詢結果可能是這樣
  
  Author Last Name
  
  ……………………………………………………………………
  
  White
  
  Green
  
  Carson
  
  OLeary
  
  Straight
  
  …
  
  ( row(s) affected)
  
  注意字段標題不再是au_lname而是被Author Last Name所取代
  
  你也可以通過執行運算來操作從一個表返回的字段值例如如果你想把表titles中的所有書的價格加倍你可以使用下面的SELECT語句
  
  SELECT price* FROM titles
  
  當這個查詢執行時每本書的價格從表中取出時都會加倍但是通過這種途徑操作字段不會改變存儲在表中的書價對字段的運算只會影響SELECT語句的輸出而不會影響表中的數據為了同時顯示書的原始價格和漲價後的新價格你可以使用下面的查詢
  
  SELECT price Original price price* New price FROM titles
  
  當數據從表titles中取出時原始價格顯示在標題Original price下面加倍後的價格顯示在標題New price下面結果可能是這樣
  
  original price new price
  
  ………………………………………………………………
  
  
  
  
  
  
  …
  
  ( row(s) affected)
  
  你可以使用大多數標准的數學運算符來操作字段值如加(+)減(乘(*)和除(/)你也可以一次對多個字段進行運算例如
  
  SELECT price*ytd_sales total revenue FROM titles
  
  在這個例子中通過把價格與銷售量相乘計算出了每種書的總銷售額這個SELECT語句的結果將是這樣的
  
  total revenue
  
  ……………………………………………
  
  
  
  
  
  
  
  
  
  
  
  …
  
  ( row(s) affected)
  
  最後你還可以使用連接運算符(它看起來像個加號)來連接兩個字符型字段
  
  SELECT au_fname+ +au_lname author name FROM authors
  
  在這個例子中你把字段au_fname和字段au_lname粘貼在一起中間用一個逗號 隔開並把查詢結果的標題指定為author name這個語句的執行結果將是這樣的
  
  author names
  
  …………………………………………………………
  
  Johnson White
  
  Marjorie Green
  
  Cheryl Carson
  
  Michael OLeary
  
  Dean Straight
  
  …
  
  ( row(s) affected)
  
  可以看到SQL為你提供了對查詢結果的許多控制你應該在ASP編程過程中充分利用這些優點使用SQL來操作查詢結果幾乎總是比使用有同樣作用的腳本效率更高
  
  排序查詢結果
  
  本章的介紹中曾強調過SQL表沒有內在的順序例如從一個表中取第二個記錄是沒有意義的從SQL的角度看來沒有一個記錄在任何其他記錄之前
  
  然而你可以操縱一個SQL查詢結果的順序在缺省情況下當記錄從表中取出時記錄不以特定的順序出現例如當從表authors中取出字段au_lname時查詢結果顯示成這樣
  
  au_lname
  
  ……………………………………
  
  White
  
  Green
  
  Carson
  
  OLeary
  
  Straight
  
  …
  
  ( row(s) affected)
  
  看一列沒有特定順序的名字是很不方便的如果把這些名字按字母順序排列讀起來就會容易得多通過使用ORDER BY子句你可以強制一個查詢結果按升序排列就像這樣
  
  SELECT au_lname FROM authors ORDER BY au_lname
  
  當這個SELECT語句執行時作者名字的顯示將按字母順序排列ORDER BY子句將作者名字按升序排列
  
  你也可以同時對多個列使用ORDER BY子句例如如果你想同時按升序顯示字段au_lname和字段au_fname你需要對兩個字段都進行排序
  
  SELECT au_lnameau_fname FROM authors ORDER BY au_lname au_fname
  
  這個查詢首先把結果按au_lname字段進行排序然後按字段au_fname排序記錄將按如下的順序取出
  
  au_lname au_fname
  
  ……………………………………………………………………
  
  Bennet Abraham
  
  Ringer Albert
  
  Ringer Anne
  
  Smith Meander
  
  …
  
  ( row(s) affected)
  
  注意有兩個作者有相同的名字Ringer名為Albert Ringer的作者出現名為Anne Ringer的作者之前這是因為姓Albert按字母順序應排在姓Anne之前
  
  如果你想把查詢結果按相反的順序排列你可以使用關鍵字DESC關鍵字DESC把查詢結果按降序排列如下例所示
  
  SELECT au_lnameau_fname FROM authors
  
  WHERE au_lname=Ringer ORDER BY au_lname au_fname DESC
  
  這個查詢從表authors中取出所有名字為Ringer的作者記錄ORDER BY子句根據作者的名字和姓將查詢結果按降序排列結果是這樣的
  
  au_lname au_fname
  
  ………………………………………………………………………………………
  
  Ringer Anne
  
  Ringer Albert
  
  ( row(s) affectec)
  
  注意在這個表中姓Anne出現在姓Albert之前作者名字按降序顯示
  
  你也可以按數值型字段對一個查詢結果進行排序例如如果你想按降序取出所有書的價格你可以使用如下的SQL查詢
  
  SELECT price FROM titles ORDER BY price DESC
  
  這個SELECT語句從表中取出所有書的價格顯示結果時價格低的書先顯示價格高的書後顯示
  
  警告
  
  不是特別需要時不要對查詢結果進行排序因為服務器完成這項工作要費些力氣這意味著帶有ORDER BY 子句的SELECT語句執行起來比一般的SELECT語句花的時間長
  
  取出互不相同的記錄
  
  一個表有可能在同一列中有重復的值例如數據庫pubs的表authors中有兩個作者的名字是Ringer如果你從這個表中取出所有的名字名字Ringer將會顯示兩次
  
  在特定情況下你可能只有興趣從一個表中取出互不相同的值如果一個字段有重復的值你也許希望每個值只被選取一次你可以使用關鍵字DISTINCT來做到這一點
  
  SELCET DISTINCT au_lname FROM authors WHERE au_lname=Ringer
  
  當這個SELECT語句執行時只返回一個記錄通過在SELECT語句中包含關鍵字DISTINCT你可以刪除所有重復的值例如假設有一個關於新聞組信息發布的表你想取出所有曾在這個新聞組中發布信息的人的名字那麼你可以使用關鍵字DISTINCT每個用戶的名字只取一次——盡管有的用戶發布了不止一篇信息
  
  警告
  
  如同ORDER BY子句一樣強制服務器返回互不相同的值也會增加運行開銷福氣不得不花費一些時間來完成這項工作因此不是必須的時候不要使用關鍵字DISTINCT
  
  創建新表
  
  前面說過數據庫中的所有數據存儲在表中數據表包括行和列列決定了表中數據的類型行包含了實際的數據
  
  例如數據庫pubs中的表authors有九個字段其中的一個字段名為為au_lname這個字段被用來存儲作者的名字信息每次向這個表中添加新作者時作者名字就被添加到這個字段產生一條新記錄
  
  通過定義字段你可以創建一個新表每個字段有一個名字和一個特定的數據類型(數據類型在後面的字段類型一節中講述)例如字段au_lname存儲的是字符型數據一個字段也可以存儲其它類型的數據
  
  使用SQL Sever創建一個新表的方法是很多的你可以可執行一個SQL語句或使用SQL事務管理器(SQL Enterprise Manager)來創建一個新表在下一節裡你將學會如何用SQL語句來創建一個新表

From:http://tw.wingwit.com/Article/program/SQLServer/201311/22224.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.