MSSQL基本知识后续会慢慢补充

摘要:
① MSSQL常见数据类型说明:如图所示② 变量变量分为:局部变量:局部变量必须以标记@为前缀,例如,@Agent局部变量:首先声明,然后分配全局变量(系统变量):全局变量必须以标签@为前缀。例如,@@version全局变量由系统定义和维护,我们只能读取它们,无法修改全局变量print“SQL Server版本”+@@VERSIONprint“服务器名称:”+@@SERVERNAMEpr的值

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

MSSQL基本知识后续会慢慢补充第1张

②变量

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

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

MSSQL基本知识后续会慢慢补充第2张

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

免责声明:文章转载自《MSSQL基本知识后续会慢慢补充》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇eNSP——STP配置和选路规则linux系统redhat 8.3 安装R下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

简谈docker-compose内存控制Java问题

最近,我正在整理docker合成内存的问题,并编写了一个模板供您参考。命令:/ceshi/start。Sh#在启动时重新启动脚本:始终#--cpu共享:当cpu资源充足时,设置cpu权重没有意义。只有当容器竞争CPU资源时,#CPU的权重才能使不同容器使用不同数量的CPU。我们可以将其设置为2以获得非常低的权重,但将其设置成0以获得默认值1024。上面写了相...

C# 获取枚举 Enum 变量值的 Description 属性

如何在C#中读取枚举值的描述属性?有以下枚举:123456 public enum enum Langage{[System.ComponentModel.Description]Chinese,English}我们希望得到的是中文中的“Chinese”描述。123456789 publicstringGetEnumDescription{stringstr...

【资料】2021年最网红的FPGA开发板之一——DE10-Nano (SOC FPGA入门推荐!)

DE10 Nano开发板是2021最受欢迎的FPGA开发板之一。除了广泛应用于物联网、边缘计算、硬件加速、AI和EDA教育课程之外,许多爱好者还在网络上日益流行的开源复古游戏项目Mister中使用它。让我们来看看DE10 Nano提供的材料:Youjing官方网站上的材料(中文手册可用!!!23~课程培训材料2018产学合作培训材料基于2018产学协作培训材...

华为交换机堆叠配置

请参考华为交换机的配置堆栈。[Leaf1-stack-port0/1]portinterfaceg0/0/12启用物理接口12加入堆栈组[Leaf1]stackslot0priority255修改优先级255,默认值为100警告:不要频繁修改优先级,因为它会使堆栈分裂。持续...

从零开始制作Galgame——我的Ren'py学习笔记(一)

然后点击“启动工程”点击“开始游戏”效果应该是这样的好了,现在你就制作出了属于自己的第一个游戏角色在一般的Galgame中,不是所有话都是“旁白”说的,一个完整的游戏里面应该有主角那么,怎么在ren'py中定义角色呢我们把刚才的代码更改一下definel=Characterlabelstart:l"HelloWorld!...

安装gulp教程(整理)

所以安装nodejs。...