M_ary  
本人热爱编程...更期待和谐的团队.. 有意者,请发送邮件与我.. wangkang198802@126.com

(推荐DB习题地址:)http://www.nowamagic.net/database/db_EmployeeDepartmentSQL.php

1)数据汇总    

  1 聚合函数(max();min();avg();sum();cuont())    

  2 除了count(*);可以用*外其余的都需要指定特定的列名    

  3 聚合函数不能和不是聚合函数的进行一块查询,除非用将不是聚合函数的列分组才可以。    

  4 例子:求最大工资的年龄          //只能用子查询        select name from T_user where salary in (select max(salary) from T_user  )    

  5 order by 列名

2) 通配符Like  

  1 一个长度的任意字符----_  

  2 无限长度的单个字符---%  

  3 有取值范围的单个字符---'_o[1-2]%'  

  4 不再取值范围单个字符---[^a-c]

3)约束  

  1 主外键约束。  

  2 检查约束。

4)空值处理  

  1 is null; is not null

5)多值匹配  

  1 使用in(-,-,-);也可用or来实现,只不过在复选文本框中方便  

  2 where age between 23 and 27(>=;<=)     where age>=23 and age<=27

6)分组之后的结果集进行过滤处理用having;  

  1例如:查询出同等年龄段人数大于5人      

    select age,count(*) from user group by age having count(*)>5

7)  限制结果集的行数用  

  1 top num  

  2 not in//例如取出11-15行;实现简单分页      

    select top 5 * from user where id not in (select top 10 id from user)  

    所以只要知道了页下标和页容量就可以知道;10---(pageindex-1)*pagesize;   5---pagesize;

8)  是排序整齐row_number();  

  select row_number() over(order by id desc) as '规范列名' from user

9)  联合结果集Union(是行的合并)  

  1 要求两个结果集的具有相同的列的个数和类型。  

  2  Union all ;不去除重复列。

10)数字函数  1 abs();ceiling();floor();round(,);

11) 字符串函数  1 len();datalength();lower();upper();ltrim();rtrim();substring(,,,)

12)  日期函数  1 getDate();  dateAdd(year,3,getdate());  datediff(year,getdate(),'2007-03-09')    datapart(year,getdate()); 

13)case函数  1 case 列名 when .. then ...      else ...  2 case when 列名<=.. then ...      else ...             

14)存储过程--在DB中的函数 

  1 优点:在DB中保持的存储过程都是经过编译过的,所以执行速度快;允许模块化设计; 防止sql注入,提高系统安全性; 减少网络流量; 

  2 带分页的存储过程      

  create pro_pageBook      

  @pageIndex int -1,  //页码       @pageSize int =5,   //页容量       @rowcount int output,   //总行数       @pageCount //总页数      

  as        

  begin        

  select * from( select row_number() over(order by id) as rownum,* from book )        as a        

  where a.rownum>(@pageIndex-1)*pageSize and a.rownum<=@pageIndex*@pageSize        

  select @rownum=count(*) from book        

  set @pageCount=ceiling(@rowCount/@pageSize)      

  end   -----------        

  declare @pageSize int ,@pageIndex int ,@rowCount int ,@pageCount int      

  set @pageSize=3,@pageIndex=2      

  exec pro_pageBook  @pageSize,@pageIndex,@rowCount output,@pageCount output    

  select @pageSize,@pageIndex,@rowCount ,@pageCount 

15) 触发器--就是针对某一个表产生操作时,会执行预定好的方法    

  1 create Trigger textTri  on 表明   for delete       

     as begin begin transaction rollback transaction  //语句        

         end




posted on 2011-06-08 15:59  M_ary  阅读(236)  评论(0)    收藏  举报