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

首頁 > 開發 > 綜合 > 正文

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

2024-07-21 02:11:06
字體:
來源:轉載
供稿:網友
操作字段

通常,當你從一個表中取出字段值時,該值與創建該表時所定義的字段名聯系在一起。如果你從表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

o’leary

straight



(23 row(s) affected)

注意字段標題不再是au_lname,而是被author last name所取代。

你也可以通過執行運算,來操作從一個表返回的字段值。例如,如果你想把表titles中的所有書的價格加倍,你可以使用下面的
select語句:

select price*2 from titles

當這個查詢執行時,每本書的價格從表中取出時都會加倍。但是,通過這種途徑操作字段不會改變存儲在表中的書價。對字段的運
算只會影響select語句的輸出,而不會影響表中的數據。為了同時顯示書的原始價格和漲價后的新價格,你可以使用下面的查詢:

select price "original price", price*2 "new price" from titles

當數據從表titles中取出時,原始價格顯示在標題original price下面,加倍后的價格顯示在標題new price下面。結果可能是這
樣:

original price new price

……………………………………………………………….

39.98
11.95 23.90

5.98
39.98


(18 row(s) affected)

你可以使用大多數標準的數學運算符來操作字段值,如加(+),減(-),乘(*)和除(/)。你也可以一次對多個字段進行運
算,例如:

select price*ytd_sales "total revenue" from titles

在這個例子中,通過把價格與銷售量相乘,計算出了每種書的總銷售額。這個select語句的結果將是這樣的:

total revenue

……………………………………………..

81,859,05

46,318,20

55,978,78

81,859,05

40,619,68



(18 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 o’leary

dean straight



(23 row(s) affected)

可以看到,sql為你提供了對查詢結果的許多控制。你應該在asp編程過程中充分利用這些優點。使用sql來操作查詢結果幾乎總是
比使用有同樣作用的腳本效率更高。

排序查詢結果

本章的介紹中曾強調過,sql表沒有內在的順序。例如,從一個表中取第二個記錄是沒有意義的。從sql的角度看來,沒有一個記錄
在任何其他記錄之前。

然而,你可以操縱一個sql查詢結果的順序。在缺省情況下,當記錄從表中取出時,記錄不以特定的順序出現。例如,當從表
authors中取出字段au_lname時,查詢結果顯示成這樣:

au_lname

…………………………………….

white

green

carson

o’leary

straight



(23 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_lname,au_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



(23 row(s) affected)

注意有兩個作者有相同的名字ringer。名為albert ringer的作者出現名為anne ringer的作者之前,這是因為姓albert按字母順
序應排在姓anne之前。

如果你想把查詢結果按相反的順序排列,你可以使用關鍵字desc。關鍵字desc把查詢結果按降序排列,如下例所示:

select au_lname,au_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

(2 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語句來創建一個新表。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安多县| 南城县| 东阿县| 基隆市| 台北县| 金山区| 云和县| 满洲里市| 鹰潭市| 乌什县| 金川县| 宕昌县| 古田县| 宁河县| 增城市| 永德县| 成武县| 嘉黎县| 祁连县| 连城县| 永登县| 新平| 类乌齐县| 乡城县| 巩义市| 香港| 安徽省| 东乡| 杭锦后旗| 镇巴县| 商南县| 蒙城县| 武隆县| 丘北县| 奉节县| 抚顺市| 南充市| 南充市| 独山县| 盖州市| 海宁市|