首页 > 代码库 > 数据库运算符和流程控制if,while,break,continue

数据库运算符和流程控制if,while,break,continue

use new

go

 

--定义变量,@开头

declare @hello  as varchar(20)

--赋值

set @hello =‘销售部‘

--可以将变量作为选择条件的参数值来用

--select *from bumen where name =@hello

--当放到select 和from 中间,作为赋值语句,select不执行查询功能

--select @hello=name from bumen  where code=1

print @hello –打印出‘销售部’

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

--全局变量,系统变量

--返回sqlserver 自上次启动以来的连接次数,包括成功和失败。

print @@connections

--返回执行上一个sql语句时的错误,返回0代表没错

-select from bumen (例)

print @@error

--返回系统当前使用的语言

 print  @@language

 --返回值表示列表中受上一条语句影响的行数

print @@rowcount

--返回安装的SQL的版本

print @@version

update bumen set phone =‘22342432‘

select ‘这一语句影响‘+CAST (@@ROWCOUNT as varchar(20))+‘行‘

--转变数据类型为字符串型。

 

declare @text varchar(20)

set @text =‘123‘‘123‘

print @text    --显示:123‘123

 

---运算符

---       +-*/%,  declare ,set ,print 都要执行,才可以!

 

declare @jia   int -–创建int型变量@jia

set @jia =1+1 -–赋值

set @jia=10%3

print @jia  --打印,输出!

 

 

 

 

---比较运算符  >,<,<=,>=,!=,!>,!<,<>(表示不等于)

select *from bumen where code <>3 

 

--逻辑运算符   and,or,all,any ,between ,in ,like ,not,some ,exists

--表示满足子查询所有列元素数据,配合比较运算符使用

select *from xuesheng where name =any(select name from xuesheng where code<=3)

--any  表示满足任意条件就可以,some 和any 一样!

select *from xuesheng where name >any(select name from xuesheng where code<=3)

--exists表示存在某个条件.

--下面语句表示:在分数表中有分数的人在学生表里的信息.not exists 就表示不存在的信息

insert  into xuesheng values (23,‘sd‘,‘sd‘,‘e‘,2,3,2)

select *from xuesheng where not exists (select *from fenshu where xuesheng .code =fenshu .code )

--not 可以结合in ,like,exists 使用,

--查询二班数学分大于所有一班数学分的信息

 

select *from fenshu where shufen> all(

select shufen from fenshu where code in

(select code from xuesheng where banji=‘1班‘)

)    --第一种法

 

select *from fenshu where shufen >(

select MAX (shufen )from fenshu ,xuesheng

 where fenshu .code =xuesheng .code and banji=‘1班‘

group by banji )    ----第二种法

 

 

select banji, MAX(shufen) from fenshu

join xuesheng on xuesheng.code=fenshu.code

group by banji   ---  --显示按照班级分组,每班的最高分

 

select xuesheng.code ,banji ,fenshu.shufen from xuesheng

join fenshu on xuesheng.code =fenshu.code

 order by banji --学生学号,班级,数学分数 按班级排序

 

 

 

 

 

 

 

------------一元运算符

正号+,负号-(负号使用,一般加括号)

--------优先级

  1.*%/

  2.正负号,加减号

  3.>,<,>=,<>,!=,!<,!>

  4.not

  5.and or between

  6.all any  some   in  like exists

  7. =

 

begin --开始(开始到结束是代表一个整体,方便(区分),就是大括号的概念)

select *from xuesheng

end --结束

 

declare @bianliang  int -- 定义一个int 型变量

set @bianliang =7    --赋值变量要用set

if @bianliang >5

  begin 

     print ‘你好‘

     print ‘谢谢‘

  end   --begin……end 好像是C#中,if后面的{}

else

     print ‘好你‘

 

--数学最高分学生的信息

--第一

select *from xuesheng where code=(select top 1 code from fenshu order by shufen desc )

 

--第二,通过临时变量临时存储,正向思维解决问题

declare @math  decimal(18,2)

select @math =MAX(shufen )from fenshu

declare @sd  int

select @sd =code from fenshu where shufen =@math

select *from xuesheng where code=@sd --要进行下面的执行语句,要先注释这句

declare @sex varchar(20)

select @sex=sex from xuesheng where code=@sd 

if @sex =‘男‘

  print ‘帅哥‘

else

  print ‘美女‘

 

 

 

----while 循环

declare @math int

set @math=80

while @math <95

begin

 print ‘很优秀‘  +cast(@math as varchar(10))  --把int型转化成字符串型

 set @math=@math+1

-- break  --while结束语句!

  if @math =93

  break

  if @math >=85 and @math <=90--if语句后面如果不是begin…end。默认执行一句!

  --  print ‘恭喜发财‘

    begin

    print ‘福如东海长流水‘

    continue--这时候continue 执行的作用是返回while 判断条件!

    --如果不注释‘恭喜发财’,begin……end中的continue是跳出if进行while循环,不进行继续打印‘hhh’

    end

  print ‘hhh‘

end   

 

数据库运算符和流程控制if,while,break,continue