亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

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

2019-11-03 08:38:08
字體:
來源:轉載
供稿:網友
更新記錄

要修改表中已經存在的一條或多條記錄,應使用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_list2|variable_list2|variable_and_column_list2}…

[,{column_listN|variable_listN|variable_and_column_listN}]]

[WHERE clause]

注意:

你可以對文本型字段使用UPDATE語句。但是,如果你需要更新很長的字符串,應使用UPDATETEXT語句。這部分內容對本書來說太高級了,因此不加討論。要了解更多的信息,請參考Microsoft SQL Sever 的文檔。

如果你不提供WHERE子句,表中的所有記錄都將被更新。有時這是有用的。例如,如果你想把表titles中的所有書的價格加倍,你可以使用如下的UPDATE 語句:

你也可以同時更新多個字段。例如,下面的UPDATE語句同時更新first_column,second_column,和third_column這三個字段:

UPDATE mytable SET first_column=’Updated!’

Second_column=’Updated!’

Third_column=’Updated!’

WHERE first_column=’Update Me1’

技巧:

SQL忽略語句中多余的空格。你可以把SQL語句寫成任何你最容易讀的格式。

 

用SELECT 創建記錄和表

你也許已經注意到,INSERT 語句與DELETE語句和UPDATE語句有一點不同,它一次只操作一個記錄。然而,有一個方法可以使INSERT 語句一次添加多個記錄。要作到這一點,你需要把INSERT 語句與SELECT 語句結合起來,象這樣:

INSERT mytable (first_column,second_column)

SELECT another_first,another_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中出現了兩次,則次函數的返回值是2。

假如你想知道有不同名字的作者的數目。你可以通過使用關鍵字DISTINCT來得到該數目。如下例所示:

SELECT COUNT(DISTINCT au_lname) FROM authors

如果名字’Ringer’出現了不止一次,它將只被計算一次。關鍵字DISTINCT 決定了只有互不相同的值才被計算。

通常,當你使用COUNT()時,字段中的空值將被忽略。一般來說,這正是你所希望的。但是,如果你僅僅想知道表中記錄的數目,那么你需要計算表中所有的記錄─不管它是否包含空值。下面是一個如何做到這一點的例子:

SELECT COUNT(*) FROM authors

注意函數COUNT()沒有指定任何字段。這個語句計算表中所有記錄所數目,包括有空值的記錄。因此,你不需要指定要被計算的特定字段。

函數COUNT()在很多不同情況下是有用的。例如,假設有一個表保存了對你站點的質量進行民意調查的結果。這個表有一個名為vote的字段,該字段的值要么是0,要么是1。0表示反對票,1表示贊成票。要確定贊成票的數量,你可以所有下面的SELECT 語句:

SELECT COUNT(vote) FROM opinion_table WHERE vote=1

計算字段的平均值

使用函數COUNT(),你可以統計一個字段中有多少個值。但有時你需要計算這些值的平均值。使用函數AVG(),你可以返回一個字段中所有值的平均值。

假如你對你的站點進行一次較為復雜的民意調查。訪問者可以在1到10之間投票,表示他們喜歡你站點的程度。你把投票結果保存在名為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()。

返回最大值或最小值

再一次假設你有一個表用來保存對你的站點進行民意調查的結果。訪問者可以選擇從1到10 的值來表示他們對你站點的評價。如果你想知道訪問者對你站點的最高評價,你可以使用如下的語句:

SELECT MAX(vote) FROM opinion

你也許希望有人對你的站點給予了很高的評價。通過函數MAX(),你可以知道一個數值型字段的所有值中的最大值。如果有人對你的站點投了數字10,函數MAX()將返回該值。

另一方面,假如你想知道訪問者對你站點的的最低評價,你可以使用函數MIN(),如下例所示:

SELECT MIN(vote) FROM opinion

函數MIN()返回一個字段的所有值中的最小值。如果字段是空的,函數MIN()返回空值。

其它常用的SQL表達式,函數,和過程

這一節將介紹一些其它的SQL技術。你將學習如何從表中取出數據,其某個字段的值處在一定的范圍,你還將學習如何把字段值從一種類型轉換成另一種類型,如何操作字符串和日期時間數據。最后,你將學會一個發送郵件的簡單方法。

通過匹配一定范圍的值來取出數據

假設你有一個表用來保存對你的站點進行民意調查的結果?,F在你想向所有對你的站點的評價在7到10之間的訪問者發送書面的感謝信。要得到這些人的名字,你可以使用如下的SELECT 語句:

SELECT username FROM opinion WHERE vote>6 and vote<11

這個SELECT 語句會實現你的要求。你使用下面的SELECT 語句也可以得到同樣的結果:

SELECT username FROM opinion WHERE vote BETWEEN 7 AND 10

這個SELECT 語句與上一個語句是等價的。使用哪一種語句是編程風格的問題,但你會發現使用表達式BETWEEN 的語句更易讀。

現在假設你只想取出對你的站點投了1或者10的訪問者的名字。要從表opinion中取出這些名字,你可以使用如下的SELECT 語句:

SELECT username FROM opinion WHERE vote=1 or vote

這個SELECT語句會返回正確的結果,沒有理由不使用它。但是,存在一種等價的方式。使用如下的SELECT可以得到相同的結果:

SELECT username FROM opinion WHERE vote IN (1,10)

注意表達式IN 的使用。這個SELECT 語句只取出vote的值等于括號中的值之一的記錄。

你也可以使用IN來匹配字符數據。例如,假設你只想取出Bill Gates或PResident Clinton的投票值。你可以使用如下的SELECT 語句:

SELECT vote FROM opinion WHERE username IN (‘Bill Gates’,’President Clinton’)

最后,你可以在使用BETWEEN或IN的同時使用表達式NOT。例如,要取出那些投票值不在7到10之間的人的名字,你可以使用如下的SELECT 語句:

SELECT username FROM opinion WHERE vote NOT BETWEEN 7 and 10

要選取那些某個字段的值不在一列值之中的記錄,你可以同時使用NOT 和IN,如下例所示:

SELECT vote FROM opinion

WHERE username NOT IN (‘Bill Gates’,’President Clinton’)

你不是必須在SQL語句中使用BETWEEN或IN,但是,要使你的查詢更接近自然語言,這兩個表達式是有幫助的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美999| 亚洲欧洲高清在线| 精品久久久一区| 亚洲亚裔videos黑人hd| 亚洲片av在线| 久久999免费视频| 18久久久久久| 国产成人一区二区三区| 日韩欧美在线免费| 国产精品美乳一区二区免费| 国产精品高潮呻吟久久av野狼| 国产成人自拍视频在线观看| 久久久久久久久久久国产| 国产欧亚日韩视频| 亚洲精品天天看| 成人免费看黄网站| 欲色天天网综合久久| 最近2019中文字幕mv免费看| 亚洲男女性事视频| 高清日韩电视剧大全免费播放在线观看| 91精品国产91久久| 91久久国产精品| 国产精品欧美久久久| 久久影院免费观看| 国产精品无av码在线观看| 在线播放国产一区二区三区| 久久精品亚洲国产| 91国语精品自产拍在线观看性色| 亚洲视频999| 亚洲女人天堂成人av在线| 欧美人交a欧美精品| 欧美成年人视频网站| 欧美日韩中国免费专区在线看| 国内免费精品永久在线视频| 国产精欧美一区二区三区| 亚洲精品美女在线观看| 久久久久久久久久久免费精品| 日韩a**站在线观看| 在线电影av不卡网址| 久久99精品久久久久久琪琪| 欧美视频在线观看 亚洲欧| 91av在线精品| 日韩欧美国产中文字幕| 久久成人免费视频| 国产精品亚发布| 国产性猛交xxxx免费看久久| 国产精品精品一区二区三区午夜版| 国产精品手机播放| 欧美精品做受xxx性少妇| 国产精品久久久久久久久借妻| 欧美日韩亚洲视频一区| 亚洲tv在线观看| 欧美性生活大片免费观看网址| 亚洲第一免费播放区| 亚洲成人av在线播放| 国产一区二区色| 538国产精品一区二区免费视频| 国产精品美腿一区在线看| 亚洲成人久久一区| 亚洲激情视频在线| 亚洲美女动态图120秒| 欧美成人午夜激情视频| 免费不卡欧美自拍视频| 91禁国产网站| 欧美性猛交xxxx富婆| 欧美影院在线播放| 欧美性生交大片免网| 亚洲新声在线观看| 亚洲欧美国产精品va在线观看| 97在线视频免费播放| 青青久久aⅴ北条麻妃| 日韩欧美中文在线| 国产不卡精品视男人的天堂| 亚洲精品国产精品国自产在线| 国产精品男人的天堂| 九九热这里只有精品6| 成人日韩在线电影| 亚洲深夜福利网站| 成人中文字幕在线观看| 亚洲人成电影在线观看天堂色| 中文字幕日韩欧美在线视频| 69影院欧美专区视频| 久久久久北条麻妃免费看| 91久久久在线| 国产91精品久久久久久久| 日韩成人在线网站| 精品日本美女福利在线观看| 亚洲欧美三级伦理| 国产精品va在线播放我和闺蜜| 中文字幕日韩欧美在线视频| 亚洲精品一区久久久久久| 欧亚精品中文字幕| 亚洲精品一区二区在线| 亚洲电影中文字幕| 97婷婷大伊香蕉精品视频| 中文字幕日韩精品有码视频| 国产精品自产拍在线观看| 午夜精品久久久久久久白皮肤| 91久久精品在线| 欧美床上激情在线观看| 欧美在线视频免费观看| 日韩av综合网| 亚洲精品少妇网址| 亚洲欧美综合另类中字| 久久这里有精品视频| 久久99久久99精品免观看粉嫩| 久久久久久国产精品三级玉女聊斋| 日本久久久久久久| 久久99久国产精品黄毛片入口| 一区二区在线免费视频| 国产精品高清在线| 国产日韩在线视频| 1769国内精品视频在线播放| 国产网站欧美日韩免费精品在线观看| 狠狠躁18三区二区一区| 久久精品国产欧美激情| 国产精品美女视频网站| 欧美一性一乱一交一视频| 国产免费一区二区三区在线观看| 奇米影视亚洲狠狠色| 亚洲在线免费视频| 国产精品自产拍在线观看| 97久久久免费福利网址| 欧美激情在线观看视频| 91老司机在线| 国产成人福利网站| 亚洲三级免费看| 北条麻妃在线一区二区| 国产精品第七十二页| 日韩在线观看高清| 在线观看成人黄色| 久久久免费观看视频| 中文字幕亚洲色图| 欧美国产日韩一区二区三区| 欧美性xxxx极品高清hd直播| 欧美大片在线影院| 欧美激情精品久久久久久免费印度| 久久精品视频免费播放| 欧美日韩精品在线| 久久亚洲精品中文字幕冲田杏梨| 大桥未久av一区二区三区| 精品国产老师黑色丝袜高跟鞋| 亚洲欧洲黄色网| 91po在线观看91精品国产性色| 久久精品久久精品亚洲人| 久久久久久久久久婷婷| 欧美在线观看视频| 亚洲综合色av| 日本一区二区三区四区视频| 久久综合伊人77777蜜臀| 91伊人影院在线播放| 日本最新高清不卡中文字幕| 久久久久久国产| 欧美与黑人午夜性猛交久久久| 国产精品久久久久福利| 国产精品久久婷婷六月丁香| 午夜精品福利视频| 97精品国产97久久久久久| 亚洲影院色在线观看免费| 亚洲电影免费观看高清完整版| 欧美精品www在线观看| 91精品91久久久久久| 国产香蕉精品视频一区二区三区| 欧美电影电视剧在线观看|