常用Sql語句及事例_百度文庫_第1頁
常用Sql語句及事例_百度文庫_第2頁
常用Sql語句及事例_百度文庫_第3頁
常用Sql語句及事例_百度文庫_第4頁
常用Sql語句及事例_百度文庫_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、SQL常用函數集錦 文章分類:數據庫 關鍵字: sql 一、字符轉換函數1、ASCII(返回字符表達式最左端字符的ASCII 碼值。在ASCII()函數中,純數字的字符串可不用括起來,但含其它字符的字符串必須用括起來使用,否則會出錯。2、CHAR(將ASCII 碼轉換為字符。如果沒有輸入0  255 之間的ASCII 碼值,CHAR() 返回NULL 。3、LOWER(和UPPER(LOWER(將字符串全部轉為小寫;UPPER(將字符串全部轉為大寫。4、STR(把數值型數據轉換為字符型數據。STR (&l

2、t;float_expression>,length,  length 指定返回的字符串的長度,decimal 指定返回的小數位數。如果沒有指定長度,缺省的length 值為10, decimal 缺省值為0。當length 或者decimal 為負值時,返回NULL;當length 小于小數點左邊(包括符號位)的位數時,返回length 個*;先服從length ,再取decimal ;當返回的字符串位數小于length ,左邊補足空格。二、去空格函數1、L

3、TRIM( 把字符串頭部的空格去掉。2、RTRIM( 把字符串尾部的空格去掉。三、取子串函數1、left( LEFT (<character_expression>, <integer_expression>返回character_expression 左起 integer_expression 個字符。2、RIGHT( RIGHT (<character_expression>, <integer_expression>返回charac

4、ter_expression 右起 integer_expression 個字符。3、SUBSTRING(SUBSTRING (<expression>, <starting_ position>, length返回從字符串左邊第starting_ position 個字符起length個字符的部分。四、字符串比較函數1、CHARINDEX(返回字符串中某個指定的子串出現(xiàn)的開始位置。CHARINDEX (<substring_expression>, 

5、;<expression>其中substring _expression 是所要查找的字符表達式,expression 可為字符串也可為列名表達式。如果沒有發(fā)現(xiàn)子串,則返回0 值。此函數不能用于TEXT 和IMAGE 數據類型。2、PATINDEX(返回字符串中某個指定的子串出現(xiàn)的開始位置。PATINDEX (<%substring _expression%>, <column_ name>其中子串表達式前后必須有百分號“%”否則返回值為0。與CHARINDE

6、X 函數不同的是,PATINDEX函數的子串中可以使用通配符,且此函數可用于CHAR、 VARCHAR 和TEXT 數據類型。五、字符串操作函數1、QUOTENAME(返回被特定字符括起來的字符串。QUOTENAME (<character_expression>, quote_ character 其中quote_ character 標明括字符串所用的字符,缺省值為“”。2、REPLICATE(返回一個重復character_expression 指定次數的字符串。RE

7、PLICATE (character_expression integer_expression 如果integer_expression 值為負值,則返回NULL 。3、REVERSE(將指定的字符串的字符排列順序顛倒。REVERSE (<character_expression> 其中character_expression 可以是字符串、常數或一個列的值。4、REPLACE(返回被替換了指定子串的字符串。REPLACE (<string_expression1>, 

8、<string_expression2>, <string_expression3> 用string_expression3 替換在string_expression1 中的子串string_expression2。5、SPACE(返回一個有指定長度的空白字符串。SPACE (<integer_expression> 如果integer_expression 值為負值,則返回NULL 。6、STUFF(用另一子串替換字符串指定位置、長度的子串。STUFF (<ch

9、aracter_expression1>, <start_ position>, <length>,<character_expression2>如果起始位置為負或長度值為負,或者起始位置大于character_expression1 的長度,則返回NULL 值。如果length 長度大于character_expression1 中 start_ position 以右的長度,則character_expression1 只保留首字符。六、數

10、據類型轉換函數1、CAST(CAST (<expression> AS <data_ type> length 2、CONVERT(CONVERT (<data_ type> length , <expression> , style1)data_type為SQL Server系統(tǒng)定義的數據類型,用戶自定義的數據類型不能在此使用。2)length用于指定數據的長度,缺省值為30。3)把CHAR或VARCHAR

11、類型轉換為諸如INT或SAMLLINT這樣的INTEGER類型、結果必須是帶正號或負號的數值。4)TEXT類型到CHAR或VARCHAR類型轉換最多為8000個字符,即CHAR或VARCHAR數據類型是最大長度。5)IMAGE類型存儲的數據轉換到BINARY或VARBINARY類型,最多為8000個字符。6)把整數值轉換為MONEY或SMALLMONEY類型,按定義的國家的貨幣單位來處理,如人民幣、美元、英鎊等。7)BIT類型的轉換把非零值轉換為1,并仍以BIT類型存儲。8)試圖轉換到不同長度的數據類型,會截短轉換值并在轉換值后顯示“+”,以標識發(fā)生了這種截斷。9)用CONVERT()函數的s

12、tyle 選項能以不同的格式顯示日期和時間。style 是將DATATIME 和SMALLDATETIME 數據轉換為字符串時所選用的由SQL Server 系統(tǒng)提供的轉換樣式編號,不同的樣式編號有不同的輸出格式。七、日期函數1、day(date_expression 返回date_expression中的日期值2、month(date_expression返回date_expression中的月份值3、year(date_expression返回date_expression中的年份值4、DATEADD(DATEADD&#

13、160;(<datepart>, <number>, <date>返回指定日期date 加上指定的額外日期間隔number 產生的新日期。5、DATEDIFF(DATEDIFF (<datepart>, <date1>, <date2>返回兩個指定日期在datepart 方面的不同之處,即date2 超過date1的差距值,其結果值是一個帶有正負號的整數值。6、DATENAME(DATENAME (<datepart&

14、gt;, <date>以字符串的形式返回日期的指定部分此部分。由datepart 來指定。7、DATEPART(DATEPART (<datepart>, <date>以整數值的形式返回日期的指定部分。此部分由datepart 來指定。DATEPART (dd, date 等同于DAY (dateDATEPART (mm, date 等同于MONTH (dateDATEPART (yy, date 等

15、同于YEAR (date8、GETDATE(以DATETIME 的缺省格式返回系統(tǒng)當前的日期和時間。eg:select dateadd(mm,datediff(mm,0,getdate(,0-本月第一天select dateadd(wk,datediff(wk,0,getdate(,0-本周的星期一select dateadd(yy,datediff(yy,0,getdate(,0-一年的第一天select dateadd(qq,datediff(qq,0,getdate(,0-季度的第一天select dateadd(ms,-3,dateadd(mm,datediff(m

16、m,0,getdate(,0-上個月的最后一天select dateadd(ms,-3,dateadd(yy,datediff(yy,0,getdate(,0-去年的最后一天select dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate(+1,0-本月的最后一天select dateadd(wk,0,dateadd(dd,6-datepart(day,getdate(,getdate(-本月的第一個星期一select dateadd(ms,-3,dateadd(yy,datediff(yy,0,getdate(+1,0-今年的最后一天9、Sql Ser

17、ver 中一個非常強大的日期格式化函數 常用:Select CONVERT(varchar(100, GETDATE(, 8: 10:57:46Select CONVERT(varchar(100, GETDATE(, 24: 10:57:46Select CONVERT(varchar(100, GETDATE(, 108: 10:57:46Select CONVERT(varchar(100, GETDATE(, 12: 060516Select CONVERT(varchar(100, GETDATE(, 23: 2006-05-16 八、統(tǒng)計函數 AVG ( ) -

18、返回的平均價值 count( ) -返回的行數 first( ) -返回第一個值 last( ) -返回最后一個值 max( ) -返回的最大價值 min( ) -返回最小的價值 total( ) -返回的總和九、數學函數abs(numeric_expr                   求絕對值ceiling(numeric_expr      

19、0;         取大于等于指定值的最小整數exp(float_expr                      取指數floor(numeric_expr            &#

20、160;     小于等于指定值得最大整數pi(                                 3.1415926.power(numeric_expr,power   &

21、#160;        返回power次方       rand(int_expr                     隨機數產生器round(numeric_expr,int_expr      

22、60;  安int_expr規(guī)定的精度四舍五入sign(int_expr                      根據正數,0,負數,返回+1,0,-1sqrt(float_expr                &#

23、160;    平方根十、系統(tǒng)函數suser_name(       用戶登錄名user_name(        用戶在數據庫中的名字user               用戶在數據庫中的名字show_role(       

24、對當前用戶起作用的規(guī)則db_name(          數據庫名                     object_name(obj_id 數據庫對象名      col_name(obj_id,col_id 列名   &#

25、160;    col_length(objname,colname  列長度 valid_name(char_expr     是否是有效標識符 十一、以上函數的部分實例1:replace 函數第一個參數你的字符串,第二個參數你想替換的部分,第三個參數你要替換成什么select replace('lihan','a','b'-lihbn (所影響的行數為 1 行)=2:substring函數第一個參數你的字符串,第二個是開始替換位置,第三個結束替換位置se

26、lect substring('lihan',0,3 = select substring('lihan',1,2- li(所影響的行數為 1 行)=3:charindex函數第一個參數你要查找的char,第二個參數你被查找的字符串 返回參數一在參數二的位置select charindex('a','lihan'- 4(所影響的行數為 1 行)=4:ASCII函數返回字符表達式中最左側的字符的 ASCII 代碼值。select ASCII('lihan'- 108(所影響的行數為 1 行)=5:nchar函數根據

27、Unicode 標準的定義,返回具有指定的整數代碼的 Unicode 字符。參數是介于 0 與 65535 之間的正整數。如果指定了超出此范圍的值,將返回 NULL。select nchar(3213- unicode字符(所影響的行數為 1 行)=6:soundex返回一個由四個字符組成的代碼 (SOUNDEX,用于評估兩個字符串的相似性。SELECT SOUNDEX ('lihan', SOUNDEX ('lihon'- - L546  L542(所影響的行數為 1 行)=7:char參數為介于 0 和 255 之間的整數。如果該整數表達式不在此范

28、圍內,將返回 NULL 值。SELECT char(125- (所影響的行數為 1 行)=8:str函數第一個參數必須為數字,第二個參數表示轉化成char型占的位置,小于參數一位置返回*,大于右對齊SELECT str(12345,3- *(所影響的行數為 1 行)SELECT str(12345,12-        12345(所影響的行數為 1 行)=9:difference函數返回一個整數值,指示兩個字符表達式的 SOUNDEX 值之間的差異。返回的整數是 SOUNDEX 值中相同字符的個數。返回的值從 0 到 4 不等:0

29、表示幾乎不同或完全不同,4 表示幾乎相同或完全相同。SELECT difference('lihan','liha'- 3(所影響的行數為 1 行)=10:stuff函數(四個參數)函數將字符串插入另一字符串。它在第一個字符串中從開始位置刪除指定長度的字符;然后將第二個字符串插入第一個字符串的開始位置。SELECT stuff('lihan',2,3,'lihan'- llihann(所影響的行數為 1 行)=11:left函數返回最左邊N個字符,由參數決定select left('lihan',4- liha(所

30、影響的行數為 1 行)=12 right函數返回最右邊N個字符,由參數決定select right('lihan',4- ihan(所影響的行數為 1 行)=13:replicate函數我的認為是把參數一復制 參數二 次select replicate('lihan',4- lihanlihanlihanlihan(所影響的行數為 1 行)=14:len函數返回參數長度select len('lihan'- 5(所影響的行數為 1 行)=15:reverse函數反轉字符串select reverse('lihan'- nahil(

31、所影響的行數為 1 行)=16:lower和upper函數參數大小寫轉化select upper('lihan'select lower(upper('lihan'- LIHANlihan(所影響的行數為 2 行)=17:ltrim和rtrim函數刪除左邊空格和右面空格select ltrim(' lihan '- lihan                 (所影響的行數為 1 行)se

32、lect rtrim(' lihan'-     lihan(所影響的行數為 1 行)  追加:排名函數是SQL Server2005新加的功能。在SQL Server2005中有如下四個排名函數:1. row_number2. rank3. dense_rank4. ntile        下面分別介紹一下這四個排名函數的功能及用法。在介紹之前假設有一個t_table表,表結構與表中的數據如圖1所示:圖1其中field1字段的

33、類型是int,field2字段的類型是varchar一、row_number    row_number函數的用途是非常廣泛,這個函數的功能是為查詢出來的每一行記錄生成一個序號。row_number函數的用法如下面的SQL語句所示: select row_number( over(order by field1 as row_number,* from t_table     上面的SQL語句的查詢結果如圖2所示。圖2  &#

34、160; 其中row_number列是由row_number函數生成的序號列。在使用row_number函數是要使用over子句選擇對某一列進行排序,然后才能生成序號。    實際上,row_number函數生成序號的基本原理是先使用over子句中的排序語句對記錄進行排序,然后按著這個順序生成序號。over子句中的order by子句與SQL語句中的order by子句沒有任何關系,這兩處的order by 可以完全不同,如下面的SQL語句所示: select row_number( over(order by f

35、ield2 desc as row_number,* from t_table order by field1 desc     上面的SQL語句的查詢結果如圖3所示。圖3    我們可以使用row_number函數來實現(xiàn)查詢表中指定范圍的記錄,一般將其應用到Web應用程序的分頁功能上。下面的SQL語句可以查詢t_table表中第2條和第3條記錄: with t_rowtableas(    se

36、lect row_number( over(order by field1 as row_number,* from t_tableselect * from t_rowtable where row_number>1 and row_number < 4 order by field1    上面的SQL語句的查詢結果如圖4所示。圖4 

37、0;  上面的SQL語句使用了CTE,關于CTE的介紹將讀者參閱SQL Server2005雜談(1):使用公用表表達式(CTE)簡化嵌套SQL。    另外要注意的是,如果將row_number函數用于分頁處理,over子句中的order by 與排序記錄的order by 應相同,否則生成的序號可能不是有續(xù)的。    當然,不使用row_number函數也可以實現(xiàn)查詢指定范圍的記錄,就是比較麻煩。一般的方法是使用顛倒Top來實現(xiàn),例如,查詢t_table表中第2條和第3條記錄,可以先查出前3條記錄,然后將查詢出來的這三條

38、記錄按倒序排序,再取前2條記錄,最后再將查出來的這2條記錄再按倒序排序,就是最終結果。SQL語句如下:  select * from (select top 2 * from( select top 3 * from t_table order by field1 a order by field1 desc b order by fie

39、ld1 圖5    上面的SQL語句查詢出來的結果如圖5所示。    這個查詢結果除了沒有序號列row_number,其他的與圖4所示的查詢結果完全一樣。二、rank    rank函數考慮到了over子句中排序字段值相同的情況,為了更容易說明問題,在t_table表中再加一條記錄,如圖6所示。                  

40、;       圖6     在圖6所示的記錄中后三條記錄的field1字段值是相同的。如果使用rank函數來生成序號,這3條記錄的序號是相同的,而第4條記錄會根據當前的記錄 數生成序號,后面的記錄依此類推,也就是說,在這個例子中,第4條記錄的序號是4,而不是2。rank函數的使用方法與row_number函數完全相 同,SQL語句如下:  select rank( over(order by field1,* from t_

41、table order by field1                                            圖7 &#

42、160;   上面的SQL語句的查詢結果如圖7所示。  三、dense_rank    dense_rank函數的功能與rank函數類似,只是在生成序號時是連續(xù)的,而rank函數生成的序號有可能不連續(xù)。如上面的例子中如果使用dense_rank函數,第4條記錄的序號應該是2,而不是4。如下面的SQL語句所示:select dense_rank( over(order by field1,* from t_table order by field1

43、     上面的SQL語句的查詢結果如圖8所示。圖8    讀者可以比較圖7和圖8所示的查詢結果有什么不同四、ntile    ntile函數可以對序號進行分組處理。這就相當于將查詢出來的記錄集放到指定長度的數組中,每一個數組元素存放一定數量的記錄。ntile函數為每條記 錄生成的序號就是這條記錄所有的數組元素的索引(從1開始)。也可以將每一個分配記錄的數組元素稱為“桶”。ntile函數有一個參數,用來指定桶數。下 面的SQL語句使用ntile函數對t_table表進行了裝桶處理:select 

44、ntile(4 over(order by field1 as bucket,* from t_table                       圖9     上面的SQL語句的查詢結果如圖9所示。      由于t_table表的記

45、錄總數是6,而上面的SQL語句中的ntile函數指定了桶數為4。    也許有的讀者會問這么一個問題,SQL Server2005怎么來決定某一桶應該放多少記錄呢?可能t_table表中的記錄數有些少,那么我們假設t_table表中有59條記錄,而桶數是5,那么每一桶應放多少記錄呢?    實際上通過兩個約定就可以產生一個算法來決定哪一個桶應放多少記錄,這兩個約定如下:1. 編號小的桶放的記錄不能小于編號大的桶。也就是說,第1捅中的記錄數只能大于等于第2桶及以后的各桶中的記錄。2. 所有桶中的記錄要么都相同,要么從

46、某一個記錄較少的桶開始后面所有捅的記錄數都與該桶的記錄數相同。也就是說,如果有個桶,前三桶的記錄數都是10,而第4捅的記錄數是6,那么第5桶和第6桶的記錄數也必須是6。    根據上面的兩個約定,可以得出如下的算法:    / mod表示取余,div表示取整     if(記錄總數 mod 桶數 = 0          

47、60; recordCount = 記錄總數 div 桶數;        將每桶的記錄數都設為recordCount         else            recordCount1 = 記錄總數 div 桶數

48、 + 1;        int n = 1;  /  n表示桶中記錄數為recordCount1的最大桶數        m = recordCount1 * n;        while(記錄總數 - m

49、  mod  (桶數 -  n  != 0                     n+;            m = recordCount1&#

50、160;* n;                 recordCount2 = (記錄總數 - m div  (桶數 - n;        將前n個桶的記錄數設為recordCount1     &

51、#160;  將n + 1個至后面所有桶的記錄數設為recordCount2    1. 如果需要將字段名或是表名作為參數,則存儲過程需要寫成動態(tài)語句。eg: ALTER proc dbo.SelectWebSet Area nvarchar(50,-字段名name nvarchar(50as-set Area='SName'-set name='圓鋼'declare sqll nvarchar(300set sqll=''set sqll='select *

52、 from BigSort as bisinner join Detail as deon bis.id=de.Bidwhere de.'+Area+'='''+name+''''exec(sqll2. 表dbo.Detail-得到表中所有的字段名select name from syscolumns where id=object_id('Detail'-得到表中Sname字段不重復select distinct SName from Detail3. 動態(tài)語句中的引號-在動態(tài)語句里注意日期的轉換,在動態(tài)

53、語句里面兩個單引號=實際的一個單引號,即要表示''就需要寫''''declare dtDate nvarchar(40set dtDate='2010-08-28'-如果直接查詢則是-SELECT * FROM PlanarPlan WHERE XLEndDate=CONVERT(DATETIME,'+dtDate+''-如果是用動態(tài)語句則是declare sql nvarchar(maxset sql='SELECT * FROM PlanarPlan WHERE XLEndDate='&

54、#39;'+CONVERT(NVARCHAR(50,dtDate,120+''''print(sqlexec(sql4. 動態(tài)語句超過max長度-如果一條動態(tài)語句太長,就分成幾個字符串,最后執(zhí)行時用+連接就可以了exec(sqll+sql2+sql3例子是Barcode_TEST中的proc_GetPlanCompleteDetailData5. 用一個存儲過程調用其他存儲過程結果-一個存儲過程調用其他的存儲過程返回數據集可以直接exec dbo.被調用的存儲過程參數,參數,-例子是Barcode_TEST中的proc_GetCompleteDetail

55、Data-下邊的是一個存儲過程調用到另一個存儲過程中的一個返回值create procedure ProTest ( name varchar(10, money int output as begin if(name='1'set money=1000 else set money=2000end -這個只是一個簡單的示例,這個存儲過程返回的是money 這個參數的值,-那么當我們在另外一個存儲過程中調用此存儲過程的時候如何獲取這個參數呢,-方法如下:declare m int -用來接收返回值的變量exec ProTest name='1',money=m

56、output- -一定要注明是output 就這么簡單,我們就獲得了返回值。6. ISNULLISNULL ( check_expression , replacement_value -check_expression 將被檢查是否為NULL的表達式。check_expression 可以是任何類型的。ISNULL(,函數replacement_value在check_expression 為NULL時將返回的表達式。replacement_value 必須與check_expresssion 具有相同的類型。ISNULL(CompleteNum,07. where 與 having-在下邊

57、聚合函數也需要作為查詢條件時,where是不可以的,需要用havingselect sname, sum(age from dd group by snamehaving sum(age >=20-LEN 函數返回文本字段中值的長度select len(test from dd-ROUND 函數用于把數值字段舍入為指定的小數位數。SELECT ROUND(column_name,decimals FROM table_name8. 設置主鍵不重復-設置主鍵不重復用PRIMARY KEY IDENTITY。IDENTITY 關鍵字來執(zhí)行auto-increment 任務,這樣插入value

58、s的時候該列不用關心declare dd table ( id int PRIMARY KEY IDENTITY,sname nvarchar(50,age int,test nvarchar(50insert dd values ('張三',11,'sdsfdfd'insert dd values ('李四',13,'qertret'insert dd values ('王五',null,'azcvf'insert dd values ('馬六',null,nullinsert d

59、d values ('王四',10,'sdsdfdg'insert dd values ('劉小三',25,'vgtrghtr'select * from dd-COUNT(column 返回某列的行數(不包括NULL 值)9. 查詢庫里面是否有表名類似ConsumeRecord的表-sql2008,sql 2005的寫法SELECT name FROM sys.tables where name like '%ConsumeRecord%'-sql2008,sql 2005,sql2000的寫法SELECT na

60、me FROM.sysobjects where name like '%ConsumeRecord%' and xtype='U'-查詢指定庫中的寫法 mxbxl是指定的庫的名字use mxbxlSELECT count(* FROM.sysobjects where name like '%ConsumeRecord%' and xtype='U'10. 隨機取值-從某張表中隨機取出10條數據select top 10 * from tablename order by newid(11. 刪除重復記錄-刪除重復記錄Delet

61、e from tablename where id not in (select max(id from tablename group by col1,col2,.-例如刪除表Detail中的BName重復的值,只保留重復記錄中id最大的記錄delete from Detail where id not in (select max(id from Detail group by BName12. 選擇一定段的記錄-選擇從10到15的記錄select top 5 * from (select top 15 * from tablename order by id asc table_別名or

62、der by id desc13. 復制表與拷貝表-復制表(只復制表結構,源表名:a 新表名:b)這樣庫里將增加一個叫b的表,結構與a相同,但是卻沒有任何數據select * into b from a where 1<>1-拷貝表(拷貝數據,源表名:a 目標表名:b)將數據也拷貝到b表insert into b(d,e,f select l,m,n from a14. 經典的分組排序取top 要求一句sql取出按照qu分組,并且je最大的結果IF EXISTS(select name from sys.tables where name like 'hard' D

63、ROP TABLE hard;create table hard( qu char(11,co char(11,je numeric(3,0insert into hard values('A','1',3insert into hard values('A','2',4insert into hard values('A','4',2insert into hard values('A','6',9insert into hard values('B'

64、;,'1',4insert into hard values('B','2',5insert into hard values('B','3',6insert into hard values('C','3',4insert into hard values('C','6',7insert into hard values('C','2',3select * from hard結果:第一種:select * from h

65、ard a where (select count(* from hard b where a.qu=b.qu and b.je>=a.je<=2 ORDER BY qu,je DESC結果:第二種:SELECT * FROM hard a where je in (select top 2 je from hard b where a.qu=b.qu order by je desc結果:注意:如果je的值有重復的,用上邊的兩種方法都無法得到現(xiàn)在的結果,我們可以給它再加一列idcreate table hard( id int PRIMARY KEY IDENTITY,qu ch

66、ar(11,co char(11,je numeric(3,0第三種:其他不變,查詢語句可以寫:select * from hard a where id in (select top 2 id from hard b where a.qu=b.qu order by je desc, id asc order by qu asc, je desc結果:其實, 第一種與第二種兩個做法有一個共同點, 就是取出主查詢記錄然后用循環(huán)來做比較(這是讓偶很不爽的方, 也許使用分析涵數會有更好的解法其不同之處在于, 一個是求出件數后用<操作符來比較, 另一個是做排序后用IN操作符來比較效率上考慮的要

67、點有兩點(當然這些都只能用來提高子查詢的效率, 而主查詢因為是循環(huán)子幾乎沒有可能做優(yōu)化:1, 排序計算和合計計算哪個更快2. IN計算有些優(yōu)化的方法有用上索引的可能性, 而<似乎不行15. 快速獲取表tablename中的記錄總數select rows from sysindexes where id=object_id('tablename' and indid in (0,1或select count(* from tablename16. 刪除Sql2000和sql2005可以使用,sql2008沒試過EXECUTE sp_msforeachtable 'truncate table ?' -刪除數據庫所有的表中的數據exec sp_msforeachtable 'drop table ?'刪除數據庫中所有的表,慎用17. Like在sql

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論