zoukankan      html  css  js  c++  java
  • SQL Sever 学习系列之一

        SQL Sever 学习系列之一 

        本学习系列,从实际工作需要中积累,对于一个新手而言,写出几条漂亮的查询语句,应该是可以受启发的。

         一、问题的需求是:员工薪酬发放,现有资金能发放多少人,哪些人应得?

         /*所有的记录,从头开始累加,直到累加值大于一个给定值以后,返回之前计入累加的记录*/

         先建立相关职工薪酬表,添加测试数据:

    create table Table_1
    (
      id int identity not null primary key,
      name char(10),
      je decimal(8,2),
      date datetime
    )
     
    insert  into Table_1 values('张三',200,GETDATE())
    insert  into Table_1 values('李四',100,GETDATE())
    insert  into Table_1 values('王五',270,GETDATE())
    insert  into Table_1 values('张小三',400,GETDATE())
    insert  into Table_1 values('李四往',180,GETDATE())
    insert  into Table_1 values('王小五',910,GETDATE())
     
    select * from Table_1
    View Code

        结果如下:

         注:列(je)为员工应得薪酬,先假定老板只有现金400元,看看能发多少人,哪些人可以领取?

         解决方案如下:

    declare @i int,@sum1 decimal(8,2),@sum2 decimal(8,2)
    set @i=1
    set @sum2=400
    set @sum1=0
    while @i<(select max(id) from Table_1)
     begin
      set @sum1=@sum1+(select je from Table_1 where id=@i)
      if @sum2<@sum1 
      begin
        break
      end
      set @i=@i+1
     end
    select * from Table_1 where id<@i
    View Code

         结果如下:

        此方法比较简单,还可以用储存过程实现。(读者可以试试)

        二、sql server 2005中如何查询一个数据库中有多少张表?

        --查询当前数据库下所有用户建立的表

    SELECT name
    ,xtype
    ,status
    ,crdate
    ,userstat
    ,sysstat
    ,refdate
    ,version
    FROM sysobjects WHERE  xtype = 'U'  
    View Code
       其中:
           xtype char(2) 对象类型。可以是下列对象类型中的一种: 
           C = CHECK 约束 
           D = 默认值或 DEFAULT 约束 
           F = FOREIGN KEY 约束 
           L = 日志 
           FN = 标量函数 
           IF = 内嵌表函数 
           P = 存储过程 
           PK = PRIMARY KEY 约束(类型是 K) 
           RF = 复制筛选存储过程 
           S  = 系统表 
          TF = 表函数 
          TR = 触发器 
           U = 用户表 
          UQ = UNIQUE 约束(类型是 K) 
          V = 视图 
          X = 扩展存储过程
    
     
    View Code

        结果如图:

         三、(1)查找一个数据库或表中所含的字段

         代码如下:

     --zjm表的字段名称
    select name
    ,xtype
    ,typestat
    ,length
    ,status
    ,type
    ,usertype from   syscolumns   where   id=object_id( 'zjm')
    
    --zjm表的字段数
    select   count(name) 表的字段数  from   syscolumns   where   id=object_id( 'zjm') 
    View Code

         结果如下:

          (2)在一个库中寻找一个字段归属的数据表

    select b.name '表名称' 
    ,a.xtype
    ,a.typestat
    ,a.xusertype
    ,a.language
    ,a.length
    ,b.crdate
    from syscolumns a 
    inner join sysobjects b  on a.id=b.id and b.xtype='U' and a.name='name'
    View Code

         结果如下:

  • 相关阅读:
    Web开发四大作用域(转)
    jsp与servlet(转)
    使用jsp,tomcat实现用户登录注册留言的代码
    java环境变量的配置
    JSP 九大内置对象(转)
    http协议头文件的控制信息(转)
    javaScript实现图片滚动及一个普通图片轮播的代码
    javaScript显示实时时间输出
    javaScript判断输入框是否为空
    1072 威佐夫游戏
  • 原文地址:https://www.cnblogs.com/zhangbc/p/3432960.html
Copyright © 2011-2022 走看看