【正文】
便地實(shí)現(xiàn)多重選擇,類似select 中的case。select type,sum(case vender when 39。A39。 then pcs else 0 end),sum(case vender when 39。C39。 then pcs else 0 end),sum(case vender when 39。B39。 then pcs else 0 end)FROM tablename group by type 顯示結(jié)果: type vender pcs 電腦 A 1 電腦 A 1 光盤(pán) B 2 光盤(pán) A 2 手機(jī) B 3 手機(jī) C 32說(shuō)明:初始化表table1 TRUNCATE TABLE table12說(shuō)明:選擇從10到15的記錄select top 5 * from(select top 15 * from table order by id asc)table_別名 order by id desc 隨機(jī)選擇數(shù)據(jù)庫(kù)記錄的方法(使用Randomize函數(shù),通過(guò)SQL語(yǔ)句實(shí)現(xiàn))對(duì)存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)來(lái)說(shuō),隨機(jī)數(shù)特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP“找個(gè)隨機(jī)數(shù)”然后打印出來(lái)。實(shí)際上常見(jiàn)的解決方案是建立如下所示的循環(huán):Randomize RNumber = Int(Rnd*499)+1 While Not If objRec(“ID”)= RNumber THEN...這里是執(zhí)行腳本...end if Wend 這很容易理解。首先,你取出1到500范圍之內(nèi)的一個(gè)隨機(jī)數(shù)(假設(shè)500就是數(shù)據(jù)庫(kù)內(nèi)記錄的總數(shù))。然后,你遍歷每一記錄來(lái)測(cè)試ID 的值、檢查其是否匹配RNumber。滿足條件的話就執(zhí)行由THEN 關(guān)鍵字開(kāi)始的那一塊代碼。假如你的RNumber 等于495,那么要循環(huán)一遍數(shù)據(jù)庫(kù)花的時(shí)間可就長(zhǎng)了。雖然500這個(gè)數(shù)字看起來(lái)大了些,但相比更為穩(wěn)固的企業(yè)解決方案這還是個(gè)小型數(shù)據(jù)庫(kù)了,后者通常在一個(gè)數(shù)據(jù)庫(kù)內(nèi)就包含了成千上萬(wàn)條記錄。這時(shí)候不就死定了? 采用SQL,你就可以很快地找出準(zhǔn)確的記錄并且打開(kāi)一個(gè)只包含該記錄的 recordset,如下所示:Randomize RNumber = Int(Rnd*499)+ 1 SQL = “SELECT * FROM Customers WHERE ID = ” amp。 RNumber set objRec = (SQL) amp。 “ = ” amp。 objRec(“ID”)amp。 “ ” amp。 objRec(“c_”)不必寫(xiě)出RNumber 和ID,你只需要檢查匹配情況即可。只要你對(duì)以上代碼的工作滿意,你自可按需操作“隨機(jī)”記錄。Recordset沒(méi)有包含其他內(nèi)容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時(shí)間。再談隨機(jī)數(shù)現(xiàn)在你下定決心要榨干Random 函數(shù)的最后一滴油,那么你可能會(huì)一次取出多條隨機(jī)記錄或者想采用一定隨機(jī)范圍內(nèi)的記錄。把上面的標(biāo)準(zhǔn)Random 示例擴(kuò)展一下就可以用SQL應(yīng)對(duì)上面兩種情況了。為了取出幾條隨機(jī)選擇的記錄并存放在同一recordset內(nèi),你可以存儲(chǔ)三個(gè)隨機(jī)數(shù),然后查詢數(shù)據(jù)庫(kù)獲得匹配這些數(shù)字的記錄:SQL = “SELECT * FROM Customers WHERE ID = ” amp。 RNumber amp。 “ OR ID = ” amp。 RNumber2 amp。 “ OR ID = ” amp。 RNumber3 假如你想選出10條記錄(也許是每次頁(yè)面裝載時(shí)的10條鏈接的列表),你可以用BETWEEN 或者數(shù)學(xué)等式選出第一條記錄和適當(dāng)數(shù)量的遞增記錄。這一操作可以通過(guò)好幾種方式來(lái)完成,但是 SELECT 語(yǔ)句只顯示一種可能(這里的ID 是自動(dòng)生成的號(hào)碼):SQL = “SELECT * FROM Customers WHERE ID BETWEEN ” amp。 RNumber amp。 “ AND ” amp。 RNumber amp。 “+ 9” 注意:以上代碼的執(zhí)行目的不是檢查數(shù)據(jù)庫(kù)內(nèi)是否有9條并發(fā)記錄。隨機(jī)讀取若干條記錄,測(cè)試過(guò)Access語(yǔ)法:SELECT top 10 * From 表名 ORDER BY Rnd(id)Sql server:select top n * from 表名 order by newid()mysql select * From 表名 Order By rand()Limit n Access左連接語(yǔ)法(最近開(kāi)發(fā)要用左連接,Access幫助什么都沒(méi)有,網(wǎng)上沒(méi)有Access的SQL說(shuō)明,只有自己測(cè)試, 現(xiàn)在記下以備后查)語(yǔ)法 select ,table1,fd2, From table1 left join table2 on , where...使用SQL語(yǔ)句 用...代替過(guò)長(zhǎng)的字符串顯示 語(yǔ)法: SQL數(shù)據(jù)庫(kù):select case when len(field)10 then left(field,10)+39。...39。 else field end as news_name,news_id from tablename Access數(shù)據(jù)庫(kù):SELECT iif(len(field)2,left(field,2)+39。...39。,field)FROM tablename。 Execute方法該方法用于執(zhí)行SQL語(yǔ)句。根據(jù)SQL語(yǔ)句執(zhí)行后是否返回記錄集,該方法的使用格式分為以下兩種:,將返回查詢得到的記錄集。用法為: Set 對(duì)象變量名=(“SQL 查詢語(yǔ)言”)Execute方法調(diào)用后,會(huì)自動(dòng)創(chuàng)建記錄集對(duì)象,并將查詢結(jié)果存儲(chǔ)在該記錄對(duì)象中,通過(guò)Set方法,將記錄集賦給指定的對(duì)象保存,以后對(duì)象變量就代表了該記錄集對(duì)象。,沒(méi)有記錄集的返回。此時(shí)用法為: “SQL 操作性語(yǔ)句” [, RecordAffected][, Option] RecordAffected 為可選項(xiàng),此出可放置一個(gè)變量,SQL語(yǔ)句執(zhí)行后,所生效的記錄數(shù)會(huì)自動(dòng)保存到該變量中。通過(guò)訪問(wèn)該變量,就可知道SQL語(yǔ)句隊(duì)多少條記錄進(jìn)行了操作。Option 可選項(xiàng),該參數(shù)的取值通常為adCMDText,它用于告訴ADO,應(yīng)該將Execute方法之后的第一個(gè)字符解釋為命令文本。通過(guò)指定該參數(shù),可使執(zhí)行更高效。BeginTrans、RollbackTrans、CommitTrans方法 這三個(gè)方法是連接對(duì)象提供的用于事務(wù)處理的方法。BeginTrans用于開(kāi)始一個(gè)事物。RollbackTrans用于回滾事務(wù)。CommitTrans用于提交所有的事務(wù)處理結(jié)果,即確認(rèn)事務(wù)的處理。事務(wù)處理可以將一組操作視為一個(gè)整體,只有全部語(yǔ)句都成功執(zhí)行后,事務(wù)處理才算成功。若其中有一個(gè)語(yǔ)句執(zhí)行失敗,則整個(gè)處理就算失敗,并恢復(fù)到處里前的狀態(tài)。BeginTrans和CommitTrans用于標(biāo)記事務(wù)的開(kāi)始和結(jié)束,在這兩個(gè)之間的語(yǔ)句,就是作為事務(wù)處理的語(yǔ)句。判斷事務(wù)處理是否成功,可通過(guò)連接對(duì)象的Error集合來(lái)實(shí)現(xiàn),若Error集合的成員個(gè)數(shù)不為0,則說(shuō)明有錯(cuò)誤發(fā)生,事務(wù)處理失敗。Error集合中的每一個(gè)Error對(duì)象,代表一個(gè)錯(cuò)誤信息。SQL語(yǔ)句大全精要 2006/10/26 13:46 DELETE 語(yǔ)句DELETE語(yǔ)句:用于創(chuàng)建一個(gè)刪除查詢,可從列在 FROM 子句之中的一個(gè)或多個(gè)表中刪除記錄,且該子句滿足 WHERE 子句中的條件,可以使用DELETE刪除多個(gè)記錄。語(yǔ)法:DELETE [table.*] FROM table WHERE criteria 語(yǔ)法:DELETE * FROM table WHERE criteria=39。查詢的字39。 說(shuō)明:table參數(shù)用于指定從其中刪除記錄的表的名稱。criteria參數(shù)為一個(gè)表達(dá)式,用于指定哪些記錄應(yīng)該被刪除的表達(dá)式??梢允褂?Execute 方法與一個(gè) DROP 語(yǔ)句從數(shù)據(jù)庫(kù)中放棄整個(gè)表。不過(guò),若用這種方法刪除表,將會(huì)失去表的結(jié)構(gòu)。不同的是當(dāng)使用 DELETE,只有數(shù)據(jù)會(huì)被刪除。表的結(jié)構(gòu)以及表的所有屬性仍然保留,例如字段屬性及索引。以上就是精品學(xué)習(xí)網(wǎng)提供的關(guān)于經(jīng)典實(shí)用SQL語(yǔ)句大全的內(nèi)容,希望對(duì)大家有所幫助。第四篇:SQL語(yǔ)句總結(jié)SQL語(yǔ)句總結(jié)一、插入記錄1. 插入固定的數(shù)值語(yǔ)法:INSERT[INTO]表名[(字段列表)]VALUES(值列表)示例1:Insert into Students values(39。Mary’,24,’mary@’)若沒(méi)有指定給Student表的哪些字段插入數(shù)據(jù):表示給該表的所有字段插入數(shù)據(jù),根據(jù)數(shù)據(jù)的個(gè)數(shù),可以得知Students表中一共有3個(gè)字段表中有4個(gè)字段,其中一個(gè)字段是標(biāo)識(shí)列。示例2:Insert into Students(Sname,Sage)values(‘Mary’,24)指定給表中的Sname,Sage兩個(gè)字段插入數(shù)據(jù)。注意事項(xiàng):1)該命令運(yùn)行一次向表中插入1條記錄。無(wú)法實(shí)現(xiàn)向已存在的某記錄中插入一個(gè)數(shù)據(jù)2)如果不指定給哪些字段插入數(shù)值,則應(yīng)注意值列表的值個(gè)數(shù)3)插入數(shù)據(jù)時(shí),注意值的數(shù)據(jù)類型要與對(duì)應(yīng)的字段數(shù)據(jù)類型匹配4)插入數(shù)據(jù)時(shí),如果沒(méi)有給值的字段必須保證允許其為空5)插入數(shù)據(jù)時(shí),要注意字段中的一些約束2. 插入的記錄集為一個(gè)查詢結(jié)果語(yǔ)法:INSERTINTO表名[(字段列表)]SELECT 字段列表 FROM表WHERE條件 示例1:InsertintoTeacherselectSname,Sage,SfromStudent從Student表中查詢?nèi)齻€(gè)字段的全部記錄,插入Teacher表,沒(méi)有指定Teacher表的具體字段,表示給Teacher表的全部字段插入數(shù)值示例2:InsertintoTeacherselectSname,Sage,SfromStudentwhereSage25從Student表中查詢?nèi)齻€(gè)字段的部分記錄,插入Teacher表示例3:InsertintoTeacher(tid,tname)selectSname , SagefromStudent 從Student表中查詢兩個(gè)字段的全部記錄,插入到Teacher表中的tid,tname字段 注意事項(xiàng):查詢表的字段要和插入表的字段數(shù)據(jù)類型一一對(duì)應(yīng)3. 生成表查詢語(yǔ)法:SELECT字段列表INTO新表名FROM原表WHERE條件示例1:SelectSname,Sage,SintonewStudentfrom Studentwhere Sage共6頁(yè)當(dāng)前第1頁(yè)示例2:Select Sname,Sage,SintonewStudentfromStudentwhere 1=2利用Student表的表結(jié)構(gòu)生成新表newStudent,newStudent表中記錄為空注意事項(xiàng):執(zhí)行該語(yǔ)句時(shí),確保數(shù)據(jù)庫(kù)中不存在into關(guān)鍵字后面的指定的表名二、刪除記錄1)刪除滿足條件的記錄語(yǔ)法:DELETEFROM表名WHERE條件示例1:DeletefromStudentwhereSage從Student表中刪除年齡小于20歲的學(xué)生的記錄示例2:DeletefromStudent沒(méi)有設(shè)置條件,刪除Student表的全部記錄2)刪除表的全部記錄語(yǔ)法:TRUNCATETABLE表名示例:TruncatetableStudent刪除表Student中的全部記錄,約束依然存在三、修改記錄語(yǔ)法:UPDATE表名SET字段=新值WHERE條件示例1:UpdateStudentsetS=’Email’+SwhereSisnotnull把有的學(xué)員的地址變?yōu)樵鹊牡刂非凹由稀瓻mail’字符串示例2:UpdateStudentsetSage=Sage+1把所有記錄的Sage變?yōu)樵鹊闹导?,例如過(guò)一年學(xué)生要長(zhǎng)一歲四、查詢記錄1. 基本查詢語(yǔ)法:SELECT字段列表FROM表示例1:SelectsName,sAge,sEmailfromStudents從Students表中查詢3個(gè)字段的所有的記錄示例2:Select*fromStudents從Students表中查詢所有字段的所有的記錄(字段列表位置寫(xiě)*代表查詢表中所有字段)2. 帶WHERE子句的查詢語(yǔ)法:SELECT字段列表FROM表WHERE條件示例1:SelectSNamefromStudentswhereSage23查詢Students表中年齡大于23的學(xué)員的姓名3. 應(yīng)用別名語(yǔ)法1:SELECT字段列表AS別名??示例1:SelectSNameas學(xué)員姓名,sAgeas學(xué)員年齡fromStudents將查詢的兩個(gè)字段分別用中文別名顯示語(yǔ)法2:SELECT別名=字段??示例2:Select學(xué)員姓名=sName, 學(xué)員年齡=sAgefromStudents注意事項(xiàng):別名可以是英文,也可以是中文,別名可以用單引號(hào)引起,也可以不引4. 使用常量(利用‘+’連接字段和常量)示例:SelectsName+’的年齡是’+convert(varchar(2),sAge)as 學(xué)員信息from Students從Students表中查詢,將學(xué)員的姓名和年齡信息與一個(gè)常量連接起來(lái),顯示為一個(gè)字段,該字段以“學(xué)員信息”為別名5. 限制返回的行數(shù)語(yǔ)法1:SELECTTOPN字段列表 FROM表示例1:Select top 3sName,sAgefromStudents查詢Students表的前三條記錄語(yǔ)法2:SELECTTOPNPERCENT字段列表FROM表示例2:Selecttop30percentsName,sAge from Students查詢Students表的前30%條記錄6. 排序語(yǔ)法:SELECT字段列表FROM表WHERE條件ORDER BY字段ASC/DESC 示例1:Select*fromStudentswhere sAge20order by sAge查詢年齡大于20歲的學(xué)員信息,并且按照年齡升序排序(若不指定升降序,默認(rèn)