|
在VB6中用Select語(yǔ)句檢索記錄 在VB數(shù)據(jù)庫(kù)程序設(shè)計(jì)中經(jīng)常要檢索記錄,常用的是把一條SELECT語(yǔ)句傳送給 Recordset對(duì)象的Open方法或Execute方法。下面就SELECT語(yǔ)句做一比較全面的闡述。 1.簡(jiǎn)單SELECT語(yǔ)句 “SELECT *” 的意思是:返回在所指定的記錄源中能找到的所有字段。這種命令形式很方便, 因?yàn)槟銦o(wú)需知道從表中檢索的字段名稱。然而,檢索表中的所有列是低效的。因此,因該只 檢索需要的字段,這樣可以大大的提高查詢的效率。 2.使用 From 子句指定記錄源 From 子句說(shuō)明的是查詢檢索記錄的記錄源;該記錄源可以是一個(gè)表或另一個(gè)存儲(chǔ)查詢。 例:Select * From students 檢索students表中的所有記錄 3.用 Where 子句說(shuō)明條件 Where 子句告訴數(shù)據(jù)庫(kù)引擎根據(jù)所提供的一個(gè)或多個(gè)條件限定其檢索的記錄。條件是一個(gè)表 達(dá)式,可具有真假兩種判斷。 例:Select * From USERS Where ID='123' (注:標(biāo)準(zhǔn)的SQL語(yǔ)句使用單引號(hào)作為字符的定 界符) 返回USERS表中ID字段為'123'的所有記錄。 使用 And 和 Or 邏輯可以將兩個(gè)或更多的條件鏈接到一起以創(chuàng)建更高級(jí)的 Where 子句。 例:Select * From USERS Where ID = '123' And PWD <> '' 返回ID為“123”PWD不為空的記錄。 SQL語(yǔ)句中的比較運(yùn)算符 操作符 功能 操作符 功能 > 大于 >= 大于或等于 < 小于 <= 小于或等于 = 等于 <> 不等于 Between 在某個(gè)取值范圍內(nèi) Like 匹配某個(gè)模式 1/5頁(yè) In 包含在某個(gè)值列表中 (1)Between 操作符 Select * From USERS Where ID Between 1 And 100 Between 操作符返回的是位于所說(shuō)明的界限之內(nèi)的所有記錄值。這個(gè)例子就返回ID字段從1 到100之間的全部記錄。 (2)Like 操作符和通配符 Select * From USERS Where ID Like '%3%' Like 操作符把記錄匹配到你說(shuō)明的某個(gè)模式。這個(gè)例子是返回ID中含“3”的所有記錄。 四種通配符的含義 通配符 描述 通配符 描述 % 代表零個(gè)或者多個(gè)任意字符 [ ] 指定范圍內(nèi)的任意單個(gè)字符 _ 代表一個(gè)任意字符 [^] 不在指定范圍內(nèi)的任意單個(gè)字符 全部示例子如下: Like 'BR%' 返回以'BR'開(kāi)始的任意字符串 Like 'br%' 返回以'br'開(kāi)始的任意字符串 Like '%een' 返回以'een'結(jié)束的任意字符串 Like '%en%' 返回包含'en'的任意字符串 Like '_en' 返回以'en'結(jié)束的三個(gè)字符串 Like '[CK]%' 返回以'C'或者'K'開(kāi)始的任意字符串 Like '[S-V]ing' 返回長(zhǎng)為四個(gè)字符的字符串,結(jié)尾是'ing',開(kāi)始是從S到V Like 'M[^c]%' 返回以'M'開(kāi)始且第二個(gè)字符不是'c'的任意字符串 4.使用Order By排序 在一個(gè)正式的 Select 查詢之后包含一個(gè) Order By 子句,后跟想排序的字段(可以有多個(gè))便可以說(shuō)明一個(gè)排序順序。 例:Select * From USERS Where ID Like '%3%' Order By ID 對(duì)返回的記錄按ID進(jìn)行排序。 以降序排序(默認(rèn)按升序),只需在排序的字段之后使用 Desc 關(guān)鍵字。 2/5頁(yè) 例:Select * From USERS Where ID Like '%3%' Order By ID Desc 5.使用 Top 顯示某個(gè)范圍的第一個(gè)記錄或最后一個(gè)記錄 使用 Top 關(guān)鍵字可以只顯示一個(gè)大記錄前面或后面的少數(shù)幾個(gè)記錄。在查詢中,Top 關(guān)鍵字與排序子句一起把結(jié)果集限制為少數(shù)幾個(gè)記錄或按某個(gè)百分比顯示整個(gè)結(jié)果記錄集合中的一 部分。 例:Select Top 3 * From USERS 返回USERS表中的前3條記錄 Select Top 10 Percent * From USERS 返回USERS表中前面的10%個(gè) 記錄 Select Top 3 * From USERS Order By ID Desc 返回USERS表中ID最大的的3 條記錄 6.用 As 對(duì)字段名進(jìn)行別名化 為什么在查詢中對(duì)字段命以別名,或重新命名,這樣做的原因有兩個(gè): (1)所涉及的表的字段名很長(zhǎng),想使字段在結(jié)果集中更易處理一些。 (2)創(chuàng)建的查詢產(chǎn)生了某些計(jì)算或合計(jì)列,需要對(duì)之進(jìn)行命名。 例:Select ID As 用戶號(hào) ,PAS As 密碼 From USERS 8.連接查詢 在實(shí)際使用過(guò)程中經(jīng)常需要同時(shí)從兩個(gè)表或者兩個(gè)以上表中檢索數(shù)據(jù)。連接就是允許同時(shí)從 兩個(gè)表或者兩個(gè)以上表中檢索數(shù)據(jù),指定這些表中某個(gè)或者某些列作為連接條件。在 SQL Server 中,可以使用兩種連接語(yǔ)法形式,一種是 Ansi 連接語(yǔ)法形式,這是連接用在 From 子 句中,另外一種是 SQL Server 連接語(yǔ)句形式,這是連接用在 Where 子句中。 Ansi 連接語(yǔ)法形式如下: Select table_name.column_name,table_name.column_name,...... From {table_name [join_type] Join table_name On search_conditions} Where [search_conditions] 在 Ansi 語(yǔ)法形式中,可以 Ansi 連接關(guān)鍵字來(lái)確定使用的連接形式。 (1)使用 Inner Join 關(guān)鍵字,結(jié)果集中僅包含滿足條件的行。 (2)使用 Cross Join 關(guān)鍵字,結(jié)果集中包含兩個(gè)表中所有行的組合。 (3)使用 Outer Join 關(guān)鍵字,結(jié)果集中既包含那些滿足條件的行,還包含那些其中某個(gè)表的 全部行。 連接有多種形式,例如內(nèi)連接、外邊接、無(wú)限制連接、自邊接等外連接又可以分為左外連接、 右外連接和全連接。下面詳細(xì)介紹這些連接方法。 (1)內(nèi)連接 內(nèi)連接用于把兩個(gè)表一個(gè)第三個(gè)表,在這個(gè)第三個(gè)表中,僅包含那么滿足連接條件的記錄的 記錄行。內(nèi)連接主要有兩種形式,即等價(jià)連接和自然連接。 等價(jià)連接就是連接通過(guò)比較列值是相等的列,等價(jià)連接總會(huì)產(chǎn)生冗余行,因?yàn)檫B接的列要顯 示兩次。 自然連接就是比較列值與兩個(gè)或者多個(gè)表中列是否相等,但是連接的列只顯示一次。自然連 接清除了等價(jià)連接產(chǎn)生的冗余行。 (2)無(wú)限制連接 無(wú)限制連接有時(shí)也稱為交叉連接,產(chǎn)生一個(gè)結(jié)果集。在這個(gè)結(jié)果集中中,包含了所連接的兩 個(gè)表中所有行的全部組合。交叉連接既可以使用 Ansi 連接的 Cross Join 關(guān)鍵字來(lái)創(chuàng)建,也可以使用 Where 子句的 SQL Server 連接形式可以產(chǎn)生非常大的結(jié)果集,例如如果在連接 中,一個(gè)表的記錄是12行,另一個(gè)表中的記錄是15行,那么在產(chǎn)生的結(jié)果集中就有 180 行 記錄。因此,這種連接形式通常沒(méi)有什么實(shí)際意義。 3/5頁(yè) (3)外連接 內(nèi)連接是保證兩面三刀個(gè)表中所有的行都要滿足連接條件,而外連接則不然。在外連接中, 某些不滿條件的列也會(huì)顯示出來(lái),也就是說(shuō),只限制其中一個(gè)表的行,而不限制另一個(gè)表中 行。這種連接形式在許多情況下是非常有用的。外連接只能用于兩個(gè)表中。 在 Ansi 語(yǔ)法形式中,包含下列三種外連接關(guān)鍵字: ?Left Outer Join 包含了左表中的全部行(表達(dá)式中第一個(gè)表) ?Right Outer Join 包括了右表中的全部行(表達(dá)式中第二個(gè)表) ?Full Outer Join 包括了左表和右表中所有不滿足條件的行 在 SQL Server 連接語(yǔ)法形式中,包括下列兩種外連接運(yùn)算符: ?* = 包含了左表中的全部行(表達(dá)式中第一個(gè)表) ? = * 包括了右表中的全部行(表達(dá)式中第二個(gè)表) 左外連接和右連接都可以產(chǎn)生同樣的結(jié)果,關(guān)鍵是看表達(dá)式中出現(xiàn)的前后順序 (4)自連接 自連接就是把某一個(gè)表中的行同該表中另外一些行連接起來(lái)。自連接主要用在查詢比較相同 的信息。例如,如果希望得到所有合作出版書(shū)的作者,那么可以使用比較作者代號(hào)的查詢。 所比較的列必須有相同的或者兼容的數(shù)據(jù)類型。 為了連接同一個(gè)表,為該表指定兩個(gè)別名是非常重要的,這樣才可以把該邏輯上作為兩個(gè)不 同的表使用。通過(guò)在 From 子句中的表名后面增加一個(gè)名稱,這種名稱就是表的別名。 在 Ansi 語(yǔ)法形式中,自連接形式如下: Select column_name,column_name,..... From column_name alias [join_type] Join column_name alias On search_conditions Where table_name.column_name join_operator table_name.column_name 在 SQL Server 連接語(yǔ)法形式中,自連接形式如下: Select column_name,column_name,..... Where table_name.column_name join_operator table_name.column_name (5)子查詢 Select 語(yǔ)句可以嵌套在其它許多語(yǔ)句中,例如 Select、Insert、Update 或者 Delete 這些 嵌套的 Select 語(yǔ)句就稱為子查詢。子查詢有兩種類型,一種是只返回一個(gè)單值的子查詢, 這時(shí)它可以用在一個(gè)單值可以使用的地方種是返回一列值的的子查詢,這時(shí)它只能用在 Where 子句中。子查詢必須使用括號(hào)括起來(lái)。 9.在 SQL 查詢中涉及的多個(gè)合計(jì)函數(shù) 合計(jì)函數(shù) 參數(shù) 描述 AVG ([ALL|DISTINCT]expr) 數(shù)據(jù)表達(dá)式的平均值 COUNT ([ALL|DISTINCT]expr) 在某個(gè)表達(dá)式中數(shù)據(jù)值的數(shù)量 4/5頁(yè) COUNT (*) 所選擇行的數(shù)量 MAX (expression) 表達(dá)式中的最大值 MIN (expresion) 表達(dá)式中的最小值 SUM ([ALL|DISTINCT]expr) 數(shù)據(jù)表達(dá)式的總合值 [來(lái)源:programfan.com(編程愛(ài)好者)][選取:kjkimberly] 5/5頁(yè) |
|
|
來(lái)自: GTY_TSG > 《計(jì)算機(jī)》