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

SQL數據操作基礎(中級)8

2013-11-15 14:33:31  來源: SQL Server 

  更新記錄
  
  要修改表中已經存在的一條或多條記錄應使用SQL UPDATE語句同DELETE語句一樣UPDATE語句可以使用WHERE子句來選擇更新特定的記錄請看這個例子
  
  UPDATE mytable SET first_column=Updated! WHERE second_column=Update Me!
  
  這個UPDATE 語句更新所有second_column字段的值為Update Me!的記錄對所有被選中的記錄字段first_column的值被置為Updated!
  
  下面是UPDATE語句的完整句法
  
  UPDATE {table_name|view_name} SET [{table_name|view_name}]
  
  {column_list|variable_list|variable_and_column_list}
  
  [{column_list|variable_list|variable_and_column_list}…
  
  [{column_listN|variable_listN|variable_and_column_listN}]]
  
  [WHERE clause]
  
  注意
  
  你可以對文本型字段使用UPDATE語句但是如果你需要更新很長的字符串應使用UPDATETEXT語句這部分內容對本書來說太高級了因此不加討論要了解更多的信息請參考Microsoft SQL Sever 的文檔
  
  如果你不提供WHERE子句表中的所有記錄都將被更新有時這是有用的例如如果你想把表titles中的所有書的價格加倍你可以使用如下的UPDATE 語句
  
  你也可以同時更新多個字段例如下面的UPDATE語句同時更新first_columnsecond_column和third_column這三個字段
  
  UPDATE mytable SET first_column=Updated!
  
  Second_column=Updated!
  
  Third_column=Updated!
  
  WHERE first_column=Update Me
  
  技巧
  
  SQL忽略語句中多余的空格你可以把SQL語句寫成任何你最容易讀的格式
  
   
  
  用SELECT 創建記錄和表
  
  你也許已經注意到INSERT 語句與DELETE語句和UPDATE語句有一點不同它一次只操作一個記錄然而有一個方法可以使INSERT 語句一次添加多個記錄要作到這一點你需要把INSERT 語句與SELECT 語句結合起來象這樣
  
  INSERT mytable (first_columnsecond_column)
  
  SELECT another_firstanother_second
  
  FROM anothertable
  
  WHERE another_first=Copy Me!
  
  這個語句從anothertable拷貝記錄到mytable只有表anothertable中字段another_first的值為Copy Me!的記錄才被拷貝
  
  當為一個表中的記錄建立備份時這種形式的INSERT 語句是非常有用的在刪除一個表中的記錄之前你可以先用這種方法把它們拷貝到另一個表中
  
  如果你需要拷貝整個表你可以使用SELECT INTO 語句例如下面的語句創建了一個名為newtable的新表該表包含表mytable的所有數據
  
  SELECT * INTO newtable FROM mytable
  
  你也可以指定只有特定的字段被用來創建這個新表要做到這一點只需在字段列表中指定你想要拷貝的字段另外你可以使用WHERE 子句來限制拷貝到新表中的記錄下面的例子只拷貝字段second_columnd的值等於Copy Me!的記錄的first_column字段
  
  SELECT first_column INTO newtable
  
  FROM mytable
  
  WHERE second_column=Copy Me!
  
  使用SQL修改已經建立的表是很困難的例如如果你向一個表中添加了一個字段沒有容易的辦法來去除它另外如果你不小心把一個字段的數據類型給錯了你將沒有辦法改變它但是使用本節中講述的SQL語句你可以繞過這兩個問題
  
  例如假設你想從一個表中刪除一個字段使用SELECT INTO 語句你可以創建該表的一個拷貝但不包含要刪除的字段這使你既刪除了該字段又保留了不想刪除的數據
  
  如果你想改變一個字段的數據類型你可以創建一個包含正確數據類型字段的新表創建好該表後你就可以結合使用UPDATE語句和SELECT 語句把原來表中的所有數據拷貝到新表中通過這種方法你既可以修改表的結構又能保存原有的數據
  
  集合函數
  
  到現在為止你只學習了如何根據特定的條件從表中取出一條或多條記錄但是假如你想對一個表中的記錄進行數據統計例如如果你想統計存儲在表中的一次民意測驗的投票結果或者你想知道一個訪問者在你的站點上平均花費了多少時間要對表中的任何類型的數據進行統計都需要使用集合函數
  
  Microsoft SQL 支持五種類型的集合函數你可以統計記錄數目平均值最小值最大值或者求和當你使用一個集合函數時它只返回一個數該數值代表這幾個統計值之一
  
  注意
  
  要在你的ASP網頁中使用集合函數的返回值你需要給該值起一個名字要作到這一點你可以在SELECT語句中在集合函數後面緊跟一個字段名如下例所示
  
  SELECT AVG(vote) the_average FROM opinion
  
  在這個例子中vote的平均值被命名為 the_average現在你可以在你的ASP網頁的數據庫方法中使用這個名字
  
  統計字段值的數目
  
  函數COUNT()也許是最有用的集合函數你可以用這個函數來統計一個表中有多少條記錄這裡有一個例子
  
  SELECT COUNT(au_lname) FROM authors
  
  這個例子計算表authors中名字(last name)的數目如果相同的名字出現了不止一次該名字將會被計算多次如果你想知道名字為某個特定值的作者有多少個你可以使用WHERE子句如下例所示
  
  SELECT COUNT(au_lname) FROM authors WHERE au_lname=Ringer
  
  這個例子返回名字為Ringer的作者的數目如果這個名字在表authors中出現了兩次則次函數的返回值是
  
  假如你想知道有不同名字的作者的數目你可以通過使用關鍵字DISTINCT來得到該數目如下例所示
  
  SELECT COUNT(DISTINCT au_lname) FROM authors
  
  如果名字Ringer出現了不止一次它將只被計算一次關鍵字DISTINCT 決定了只有互不相同的值才被計算
  
  通常當你使用COUNT()時字段中的空值將被忽略一般來說這正是你所希望的但是如果你僅僅想知道表中記錄的數目那麼你需要計算表中所有的記錄─不管它是否包含空值下面是一個如何做到這一點的例子
  
  SELECT COUNT(*) FROM authors
  
  注意函數COUNT()沒有指定任何字段這個語句計算表中所有記錄所數目包括有空值的記錄因此你不需要指定要被計算的特定字段
  
  函數COUNT()在很多不同情況下是有用的例如假設有一個表保存了對你站點的質量進行民意調查的結果這個表有一個名為vote的字段該字段的值要麼是要麼是表示反對票表示贊成票要確定贊成票的數量你可以所有下面的SELECT 語句
  
  SELECT COUNT(vote) FROM opinion_table WHERE vote=
  
  計算字段的平均值
  
  使用函數COUNT()你可以統計一個字段中有多少個值但有時你需要計算這些值的平均值使用函數AVG()你可以返回一個字段中所有值的平均值
  
  假如你對你的站點進行一次較為復雜的民意調查訪問者可以在之間投票表示他們喜歡你站點的程度你把投票結果保存在名為vote的INT型字段中要計算你的用戶投票的平均值你需要使用函數AVG() SELECT AVG(vote) FROM opinion
  
  這個SELECT語句的返回值代表用戶對你站點的平均喜歡程度函數AVG()只能對數值型字段使用這個函數在計算平均值時也忽略空值
  
  計算字段值的和
  
  假設你的站點被用來出售卡片已經運行了兩個月是該計算賺了多少錢的時候了假設有一個名為orders的表用來記錄所有訪問者的定購信息要計算所有定購量的總和你可以使用函數SUM()
  
  SELECT SUM(purchase_amount) FROM orders
  
  函數SUM()的返回值代表字段purchase_amount中所有值的平均值字段purchase_amount的數據類型也許是MONEY型但你也可以對其它數值型字段使用函數SUM()
  
  返回最大值或最小值
  
  再一次假設你有一個表用來保存對你的站點進行民意調查的結果訪問者可以選擇從 的值來表示他們對你站點的評價如果你想知道訪問者對你站點的最高評價你可以使用如下的語句
  
  SELECT MAX(vote) FROM opinion
  
  你也許希望有人對你的站點給予了很高的評價通過函數MAX()你可以知道一個數值型字段的所有值中的最大值如果有人對你的站點投了數字函數MAX()將返回該值
  
  另一方面假如你想知道訪問者對你站點的的最低評價你可以使用函數MIN()如下例所示
  
  SELECT MIN(vote) FROM opinion
  
  函數MIN()返回一個字段的所有值中的最小值如果字段是空的函數MIN()返回空值
  
  其它常用的SQL表達式函數和過程
  
  這一節將介紹一些其它的SQL技術你將學習如何從表中取出數據其某個字段的值處在一定的范圍你還將學習如何把字段值從一種類型轉換成另一種類型如何操作字符串和日期時間數據最後你將學會一個發送郵件的簡單方法
  
  通過匹配一定范圍的值來取出數據
  
  假設你有一個表用來保存對你的站點進行民意調查的結果現在你想向
From:http://tw.wingwit.com/Article/program/SQLServer/201311/21988.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.