zoukankan      html  css  js  c++  java
  • MSSQL基本知识后续会慢慢补充

    ①MSSQL常用数据类型说明:如图

    ②变量

    变量分为: 局部变量: 局部变量必须以标记@作为前缀 ,如@Age int 局部变量:先声明,再赋值

         全局变量(系统变量): 全局变量必须以标记@@作为前缀,如@@version 全局变量由系统定义和维护,      我们只能读取,不能修改全局变量的值

    print 'SQLServer的版本'+@@VERSION print '服务器名称: '+@@SERVERNAME print ‘最后一次放生的错误号'+convert(varchar(5),@@ERROR) print @@identity

     实例1:

    计算平均分数并输出,如果平均分数超过60分输出成绩最高的三个学生的成绩,否则输出后三名的学生

     1 declare @avg float
     2 select @avg=avg(sEnglish) from score
     3   if(@avg>60)
     4     begin
     5       print '前三名'
     6       select top 3 * from score order by sEnglish desc
     7     end
     8   else 
     9     begin
    10       print '后三名'
    11       select top 3 * from score order by sEnglish asc
    12     end

     实例2:

    --如果不及格的人超过半数(考试题出难了),则给每个人增加2分

     1 declare @sum int
     2 
     3 declare @failCount int
     4 
     5 declare @i int
     6 
     7 set @i=1
     8 
     9 select @sum=count(*) from score0
    10 
    11 select @failCount=count(*) from score0 where english<60
    12 
    13 while(@failCount>@sum/2)
    14 
    15   begin
    16 
    17     if(@i<8)
    18 
    19       begin
    20 
    21         update score0 set english=english+2
    22 
    23         select @failCount=count(*) from score0 where english<60
    24 
    25       end
    26 
    27     else break
    28 
    29   end
    30 
    31     update score0 set english=100 where english>100
    32 
    33 select count(*) from score0 where english<60
    34 
    35 select * from score0

    ③事务

    如:转账问题: 假定钱从A转到B,至少需要两步: A的资金减少 然后B的资金相应增加

     1 --创建表
     2 
     3 create table bank
     4 
     5 (
     6 
     7   cId char(4) primary key,
     8 
     9    balance money, --余额
    10 
    11 )
    12 
    13 alter table bank add constraint CH_balance check(balance >=10)
    14 
    15 go
    16 
    17 insert into bank values('0001',1000)
    18 
    19 insert into bank values('0002',10)
    20 
    21 go
    22 
    23 update bank set balance=balance-1000 where cid='0001'
    24 
    25 update bank set balance=balance + 1000 where cid='0002'

     --这样做会出现错误,因为当剪掉1000后 就会受到约束的限制,导致+1000可以 但是-1000出错

    正确的办法是:

     1 begin transaction
     2 declare @error int
     3 set @error = 0
     4 update bank set balance=balance-1000 where cid='0001'
     5 set @error = @error + @@error
     6 update bank set balance=balance + 1000 where cid='0002'
     7 set @error = @error + @@error
     8 if @error != 0
     9     rollback transaction
    10 else
    11     commit transaction
    12 go
    13 select * from bank
  • 相关阅读:
    android之PackageManager简单介绍
    西门子PLC学习笔记二-(工作记录)
    node.js第十课(HTTPserver)
    ubuntu ???????????? no permissions 问题解决
    Web API 设计摘要
    公共 DNS server IP 地址
    用Unicode迎接未来
    vs2010公布时去除msvcp100.dll和msvcr100.dll图讲解明
    linux串口驱动分析
    C++ 中dynamic_cast&lt;&gt;的用法
  • 原文地址:https://www.cnblogs.com/daban/p/2643792.html
Copyright © 2011-2022 走看看