输出,变量的使用,子查询,逻辑语句,循环,case..when..then..end多分支语句,Exists(判断存在)
--------------输出----------------
print 'hello world'--以文本形式输出
select 'hello world'--以网格形式输出,也可以设置成以文本形式输出
print 'abc'+'cde'
print 3+5
print 'ab'+5--出错,'ab'不能转换为int
print 'ab'+convert(varchar,5)--输出ab5
print '2'+5--输出7,因为'2'能自动转换为整型数据2
----------------局部变量-------------------
--声明局部变量
declare @age int
---set赋值(set一次只能给一个局部变量赋值)
set @age=22
set @age=@age+5
print @age
--select赋值(select一次可以给多个局部变量赋值)
declare @stuAge int
declare @stuName nvarchar(20)
select @stuName=stuName,@stuAge=stuAge from stuInfo where stuNo='s25302'
print '姓名是:'+@stuName+' 年龄是:'+convert(varchar,@stuAge)
--注意:在使用select赋值时,查出来的数据行最好是一行,如果查出来多行,会以最后一行的值来进行赋值
----------------全局变量------------------
print @@version--版本信息
print @@servername--本地服务器名称
insert into stuInfo values('张三','s25305','男',23,'汕头')
print @@error --最后一个T-sql语句的错误号(如果最后一个T-sql语句执行失败,@@error的值会大于0,执行成功,@@error的值会等于0)
print @@identity--获取最后一个插入行的标识列的值
update stuInfo set stuAge=32 where stuAge=22
print @@rowcount--受上一个sql语句影响的行数
---------------IF-ELSE分支结构---------------------
use NetBarDB
declare @pcid int--计算机号
set @pcid=3
declare @pcuse int --计算机状态
select @pcuse=PCUse from PCInfo where PCId=@pcid
if(@pcuse>0)
begin
print convert(varchar,@pcid)+'号是使用状态!'
end
else
begin
print convert(varchar,@pcid)+'号是空闲状态!'
end
------------while循环语句--------------
--完成:网吧回馈业务
use NetBarDB
declare @count int--存储余额小于20的用户数
update cardInfo set CardBalance=CardBalance+50 where DATEDIFF(DAY,TransactTime,GETDATE())>=365
update cardInfo set CardBalance=CardBalance+10 where DATEDIFF(DAY,TransactTime,GETDATE())<365
while(1=1)
begin
select @count=COUNT(*) from cardInfo where CardBalance<20--查出余额不足20元的行数
if(@count>0)
begin
update cardInfo set CardBalance=CardBalance+1
end
else
begin
break
end
end
go
---------case..when..then..end多分支语句-----------
--完成:计算机状态问题
--方法一:union
select *,'空闲' as 状态 from PCInfo where PCUse=0
union
select *,'使用' as 状态 from PCInfo where PCUse=1
--方法二:case..when..then..end
select *,
状态=case
when PCUse=0 then '空闲'
when PCUse=1 then '使用'
else '错误状态'
end
from PCInfo
--------------子查询------------------
--完成:年龄比'李斯文'大的学员信息
--方法一:普通T-SQL
use stuDB
declare @age int
select @age=stuAge from stuInfo where stuName='李斯文' --先拿到'李斯文'的年龄
select * from stuInfo where stuAge>@age --再以'李斯文'的年龄作为筛选条件
--方法二:子查询
select * from stuInfo where stuAge>
(select stuAge from stuInfo where stuName='李斯文')
--特别注意:子查询与<、>、<=、>=...等关系运算符一起使用时,一定要确保子查询返回的值不多于一个,否则报错
--完成:笔试成绩刚好60分的学员信息
--方法一:表连接
select stuName from stuInfo join stuMarks
on stuInfo.stuNo=stuMarks.stuNo
where stuMarks.writtenExam=60
--方法二:子查询
select stuName from stuInfo where stuNo in
(select stuNo from stuMarks where writtenExam=60)
--完成:查询有参加考试的学员名单
select stuName from stuInfo where stuNo in
(select stuNo from stuMarks)
--上面的sql语句相当于: select stuName from stuInfo where stuNo in ('s25303','s25302','s25301')
--完成:查询没参加考试的学员名单
select stuName from stuInfo where stuNo not in
(select stuNo from stuMarks)
--------------Exists的使用-----------------------
--语法: Exists(子查询)
--返回值:当子查询能查到数据,返回true,如果子查询查不到数据,返回false
use stuDB
if exists(select * from stuMarks where writtenExam>80)--判断是否有笔试超过80分的
begin
update stuMarks set writtenExam=writtenExam+2
end
else
begin
update stuMarks set writtenExam=writtenExam+5
end
--------------not Exists的使用-----------------------
--语法: not Exists(子查询)
--返回值:当子查询能查到数据,返回false,如果子查询查不到数据,返回true
use stuDB
if not exists(select * from stuMarks where writtenExam>60 and LabExam>60)
begin
update stuMarks set writtenExam=writtenExam+3,LabExam=LabExam+3
end
else
begin
update stuMarks set writtenExam=writtenExam+1,LabExam=LabExam+1
end
go
输出,变量的使用,子查询,逻辑语句,循环,case..when..then..end多分支语句,Exists(判断存在)的更多相关文章
- MYSQL优化派生表(子查询)在From语句中的
Mysql 在5.6.3中,优化器更有效率地处理派生表(在from语句中的子查询): 优化器推迟物化子查询在from语句中的子查询,知道子查询的内容在查询正真执行需要时,才开始物化.这一举措提高了性能 ...
- 在 SQL Server 数据库的 WHERE 语句中使用子查询
这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Serv ...
- 子查询在UPDATE 语句中的应用
在UPDATE语句中可以在更新列表中以及WHERE语句使用子查询.下面演示一个将图书的出版日期全部更新为所有图书中的最新出版日期,SQL语句如下: UPDATE T_Book SET FYearPub ...
- Oracle 子查询(复杂select语句)
在执行数据操作时,如果某个操作需要依赖于另外一个 select语句的查询结果,那么就可以把 select 语句迁入到该操作语句中,这样就形成了一个子查询.实际应用中,表与表之间相互关联,相互依存,这样 ...
- SQL Server进阶(五)子查询
概述 子查询的概念: 当一个查询是另一个查询的条件时,称之为子查询.子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 外面的 ...
- sql server 子查询 和exists使用
概述 子查询的概念: 当一个查询是另一个查询的条件时,称之为子查询.子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 外面的 ...
- 【SqlServer系列】子查询
1 概述 1.1 已发布[SqlServer系列]文章 [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [Sq ...
- SQL——嵌套查询与子查询
前言 sql的嵌套查询可以说是sql语句中比较复杂的一部分,但是掌握好了的话就可以提高查询效率.下面将介绍带in的子查询.带比较运算符的子查询.带any/all的子查询.带exists的子查询以及基于 ...
- Oracle DB 使用子查询来解决查询
• 定义子查询 • 描述子查询可以解决的问题类型 • 列出子查询的类型 • 编写单行和多行子查询 • 子查询:类型.语法和准则 • 单行子查询: – 子查询中的组函数 – 带有子查询的HAVING ...
随机推荐
- MyEclipse中将项目导出jar包,以及转化成EXE文件
1.对于项目如何导出jar文件,和生成exe,解答目录如下: 首先生成jar文件,单击项目名称CF-users(这是我的协同过滤项目文件名称)右击--->Export如下图: 单击下一步 Sel ...
- HDU 4085 Steiner树模板称号
Dig The Wells Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 手游client思考框架
手游新公司新项目client我不太同意框架.虽然我也终于让步,当他居然问老板,使这个幼稚的行为而悔恨. 然而,就在最近我写了一些代码视图,我更坚定了自己的想法和思想.和思路不一定适合其它人,所以我并不 ...
- shell 监控局域网的主机是否up(转)
#!/bin/bash for ((i=30;i<60;i++)) ;do ping -c 3 172.31.0.$i>/dev/null #ping -c 172.31.0.30 ~17 ...
- 自己的包poi操作Excel工具
在前面的文章<使用poi读写Excel>中分享了一下poi操作Excel的简单演示样例.这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完毕的功能是:读取Excel.汇总E ...
- 使用reserve要再次避免不必要的分配
关于STL容器,最了不起的一点是,它们会自己主动增长以便容纳下你放入当中的数据,仅仅要没有超出它们的最大限制就能够.对于vector和string,增长过程是这样来实现的:每当须要很多其它空间时 ...
- Android Loader使用,屏幕解锁,重复荷载
正在使用AsyncTaskLoader时间.当手机被解锁,重复加载数据,码,如以下: static class CouponShopQueryLoader extends AsyncTaskLoade ...
- c++指针存储应用程序和释放内存的问题
C++中指针在new和delete操作的时候对内存堆都做了些什么呢.下面解: 1.指针的new操作: 指针在new之后,会在内存堆中分配一个空间.而指针中存放的是这个空间的地址.如: void mai ...
- UML九种图汇总
UML视频读,该文件开始起草.我不知道如何下手啊!我想先UML九图和总结的关系,然后开始用它的文件. 首先在地图上. UML的九种图各自是:用例图.类图.对象图.状态图.活动图.协作图.序列图.组件图 ...
- iOS8开发~UI布局(二)storyboard中autolayout和size class的使用具体解释
一.概要:前一篇初步的描写叙述了size class的概念,那么实际中怎样使用呢,以下两个问题是我们一定会遇到的: 1.Xcode6中添加了size class,在storyboard中怎样使用? 2 ...