SQL函数大全

  1. use pubs   
  2. go   
  3.   
  4. select distinct price from titles where type='business' -- distinct去掉重复的记录   
  5.   
  6. select avg(distinct price)   --算平均数   
  7. from titles   
  8. where type='business'  
  9. go   
  10. use pubs   
  11. go   
  12. select max(ytd_sales)   --最大数   
  13. from titles   
  14. go   
  15.   
  16. use pubs   
  17. go   
  18. select min(ytd_sales) --最小数   
  19. from titles   
  20. go   
  21.   
  22. use pubs   
  23. go   
  24. select type,sum(price),sum(advance)   --求和   
  25. from titles   
  26. group by type   
  27. order by type   
  28. go   
  29.   
  30. use pubs   
  31. go   
  32.   
  33. select distinct city from authors   
  34. select count(distinct city)   --求个数   
  35. from authors   
  36. go   
  37.   
  38. use pubs   
  39. go   
  40. select royalty from titles   
  41. select stdev(royalty) --返回给定表达式中所有值的统计标准偏差   
  42. from titles   
  43. go   
  44.   
  45. select royalty from titles   
  46.   
  47. use pubs   
  48. go   
  49. select stdevp(royalty) --返回表达式中所有制的填充统计标准偏差   
  50. from titles   
  51. go   
  52.   
  53. use pubs   
  54. go   
  55. select var(royalty) --返回所有值的统计方差   
  56. from titles   
  57. go   
  58.   
  59. use pubs   
  60. go   
  61. select varp(royalty) --返回所有值的填充的统计方差   
  62. from titles   
  63. go   
  64.   
  65. --数学函数   
  66.   
  67. select sin(23.45),atan(1.234),rand(),PI(),sign(-2.34) --其中rand是获得一个随机数   
  68. --配置函数   
  69. SELECT @@version --获取当前数据库版本   
  70. SELECT @@LANGUAGE --当前语言   
  71. --时间函数   
  72. select getdate() as 'wawa_getdate' --当前时间   
  73. select getutcdate() as 'wawa_getutcdate' --获取utc时间   
  74. select day(getdate()) as 'wawa_day' --取出天   
  75. select month(getdate()) as 'wawa_month' --取出月   
  76. select year(getdate()) as 'wawa_year' --取出年   
  77. select dateadd(d,3,getdate()) as wawa_dateadd --加三天,注意'd'表示天,'m'表示月,'yy'表示年,下面一样   
  78. select dateadd(m,3,'2009-03-25') as wawa_dateadd   
  79. select dateadd(m,5,getdate()) as wawadateadd   
  80. select dateadd(yy,3,'2009-03-25') as wawa_dateadd   
  81. select datediff(d,'2004-07-01','2004-07-15') as wawa_datediff --计算两个时间的差 (后面日期减去前面日期)   
  82. select datename(d,'2004-07-15') as wawa_datename --取出时间的某一部分   
  83. select datepart(d,getdate()) as wawa_datepart   --取出时间的某一部分,和上面的那个差不多   
  84. --字符串函数   
  85. select ascii(123) as '123',ascii('123') as '"123"',ascii('abc') as '"abc"' --转换成ascii码   
  86. select char(123),char(321),char(-123) --根据ascii转换成字符   
  87. select lower('ABC'),lower('Abc'),upper('Abc'),upper('abc') --转换大小写   
  88. select str(123.45,6,1), str(123.45,2,2) --把数值转换成字符串   
  89. select ltrim('     "左边没有空格"')   --去空格   
  90. select rtrim('"右边没有空格"      ') --去空格   
  91. select ltrim(rtrim('    "左右都没有空格"     ')) --去空格   
  92. select left('sql server',3),right('sql server',6) --取左或者取右   
  93.   
  94. use pubs   
  95. select au_lname,au_fname from authors   
  96. select au_lname,substring(au_fname,1,1) --取子串   
  97. from authors   
  98. order by au_lname   
  99.   
  100. select charindex('123','abc123def',2) --返回字符串中指定表达式的起始位置   
  101. select patindex('123','abc123def'),patindex('%123%','abc123def') --返回表达式中某模式第一次出现的起始位置   
  102. select quotename('abc','{'),quotename('abc') --返回由指定字符扩住的字符串   
  103. select reverse('abc'),reverse('上海') --颠倒字符串顺序   
  104. select replace('abcdefghicde','cde','xxxx') --返回被替换了指定子串的字符串   
  105. select space(0),space(-2)--返回一个有指定长度的空白字符串   
  106.   
  107. --系统函数   
  108. select host_name() as 'host_name',host_id() as 'host_id',user_name() as 'user_name',user_id() as 'user_id',db_name() as 'db_name'  
  109. --变量的定义使用   
  110. --声明局部变量   
  111. declare @mycounter int  
  112. declare @last_name varchar(30),@fname varchar(20),@state varchar(2) --一下声明多个变量   
  113. --给变量赋值   
  114. use northwind   
  115. go   
  116. declare @firstnamevariable varchar(20),   
  117. @regionvariable varchar(30)   
  118. set @firstnamevariable='anne' --可以用set,也可以用select给变量赋值,微软推荐用set,但select在选择一个值直接赋值时很有用   
  119. set @regionvariable ='wa'   
  120.   
  121. select lastname,firstname,title,region   --用声明并赋值过的变量构建一个Select语句并查询   
  122. from employees   
  123. where firstname= @firstnamevariable or region=@regionvariable  
  124. go   
  125. --全局变量   
  126. select @@version   --返回数据库版本   
  127. select @@error   --返回最后的一次脚本错误   
  128. select @@identity   --返回最后的一个自动增长列的id   
  129.   
  130. --while,break,continue的使用   
  131. --首先计算所有数的平均价格,如果低于30的话进入循环让所有的price翻倍,   
  132. --里面又有个if来判断如果最大的单价还大于50的话,退出循环,否则继续循环,知道最大单价大于50就break出循环,呵呵,   
  133. --我分析的应该对吧.   
  134. use pubs   
  135. go   
  136. while (select avg(price) from titles) <$30   
  137. begin   
  138. update titles   
  139.    set price=price*2  
  140.    select max(price) from titles   
  141.    if(select max(price) from titles) >$50  
  142.    break  
  143.    else  
  144.    continue  
  145. end   
  146. print 'too much for the marker to bear'   
  147.   
  148. --事务编程经典例子   
  149. --begin transaction是开始事务,commit transaction是提交事务,rollback transaction是回滚事务   
  150. --这个例子是先插入一条记录,如果出现错误的话就回滚事务,也就是取消,并直接return(返回),如果没错的话就commit 提交这个事务了哦   
  151. --上面的那个return返回可以返回一个整数值,如果这个值是0的话就是执行的时候没出错,如果出错了就是一个负数,   
  152. --这个return也可以用在存储过程中,可用用 exec @return_status= pro_name来获取这个值   
  153. use pubs   
  154. go   
  155. begin tran mytran   
  156. insert into stores(stor_id,stor_name)   
  157.    values('333','my books')   
  158. go   
  159. insert into discounts(discounttype,stor_id,discount)   
  160.    values('清仓甩卖','9999',50.00)   
  161. if @@error<>0  
  162.    begin   
  163.     rollback tran mytran   
  164.     print '插入打折记录出错'  
  165.     return  
  166.    end   
  167. commit tran mytran   
  168.   
  169. --事务处理的保存点示例   
  170. --做了事务保存点后可以rollback(回滚)到指定的保存点,不至于所有的操作都不能用   
  171. use pubs   
  172. go   
  173. select * from stores   
  174. begin transaction testsavetran   
  175. insert into stores(stor_id,stor_name)   
  176.    values('1234','W.Z.D Book')   
  177. save transaction before_insert_data2   
  178. go   
  179. insert into stores(stor_id,stor_name)   
  180.    values('5678','foreat Books')   
  181. go   
  182. rollback transaction before_insert_data2   
  183. select * from stores   
  184.   
  185. --创建存储过程   
  186. use pubs   
  187. if exists(select name from sysobjects where name= 'proc_calculate_taxes' and type='P')   
  188. drop procedure proc_calculate_taxes   
  189. go   
  190. create procedure proc_calculate_taxes (@p1 smallint=42,@p2 char(1),@p3 varchar(8)='char')   
  191. as   
  192. select *   
  193. from titles   
  194. --执行过程   
  195. EXECUTE PROC_CALCULATE_TAXES @P2='A' 

你可能感兴趣的:(sql)