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