--------------输出----------------
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(判断存在)的更多相关文章

  1. MYSQL优化派生表(子查询)在From语句中的

    Mysql 在5.6.3中,优化器更有效率地处理派生表(在from语句中的子查询): 优化器推迟物化子查询在from语句中的子查询,知道子查询的内容在查询正真执行需要时,才开始物化.这一举措提高了性能 ...

  2. 在 SQL Server 数据库的 WHERE 语句中使用子查询

    这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Serv ...

  3. 子查询在UPDATE 语句中的应用

    在UPDATE语句中可以在更新列表中以及WHERE语句使用子查询.下面演示一个将图书的出版日期全部更新为所有图书中的最新出版日期,SQL语句如下: UPDATE T_Book SET FYearPub ...

  4. Oracle 子查询(复杂select语句)

    在执行数据操作时,如果某个操作需要依赖于另外一个 select语句的查询结果,那么就可以把 select 语句迁入到该操作语句中,这样就形成了一个子查询.实际应用中,表与表之间相互关联,相互依存,这样 ...

  5. SQL Server进阶(五)子查询

    概述 子查询的概念: 当一个查询是另一个查询的条件时,称之为子查询.子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 外面的 ...

  6. sql server 子查询 和exists使用

    概述 子查询的概念: 当一个查询是另一个查询的条件时,称之为子查询.子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 外面的 ...

  7. 【SqlServer系列】子查询

    1   概述 1.1  已发布[SqlServer系列]文章 [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [Sq ...

  8. SQL——嵌套查询与子查询

    前言 sql的嵌套查询可以说是sql语句中比较复杂的一部分,但是掌握好了的话就可以提高查询效率.下面将介绍带in的子查询.带比较运算符的子查询.带any/all的子查询.带exists的子查询以及基于 ...

  9. Oracle DB 使用子查询来解决查询

    • 定义子查询 • 描述子查询可以解决的问题类型 • 列出子查询的类型 • 编写单行和多行子查询   • 子查询:类型.语法和准则 • 单行子查询: – 子查询中的组函数 – 带有子查询的HAVING ...

随机推荐

  1. COM-TEAM

  2. IP地址和子网掩码

    A分类IP住址 在第一个领域值规模:0-127  默认子网掩码:255.0.0.0 B分类IP就拿地址的第一个字段值范围:128-191  默认的子网掩码255.255.0.0 C类IP地址的第一个字 ...

  3. IT互联网行业中相关职能的缩写

    RD – Research & Develop 研发FE – Front End 前端QA – Quality Assurance 测试DBA – Database Administrator ...

  4. 编程算法基础-数字数码管-隐藏password

    作业 数字数码管 个数码管) @@@@         0     @          @       1   2     @          @         3        @@@@    ...

  5. 解决RecyclerView无法onItemClick问题

    供RecyclerView采用.会员可以查看将替代ListView的RecyclerView 的使用(一),单单从代码结构来说RecyclerView确实比ListView优化了非常多.也简化了我们编 ...

  6. springMVC3得知(五岁以下儿童)--MultiActionController

    Spring为了提供一个多动作控制器,您可以使用它的几个行动统一到一个控制器,这可以放在一起功能. 多动作控制器存在在一个单独的包中--org.springframework.web.mvc.mult ...

  7. 房间计费系统改造E-R图纸设计

    简单的学习过程:     这几天忙得太混乱了,用了近一个星期才设计好.我在这段时间遇到的困难,就积极找师哥师姐指点迷津,如今多少总算是有些拿得出手的成果. 学习成果: Entity Relations ...

  8. javascript权威指南(2)

    JavaScript预定义了一系列全局变量和函数,在自定义变量和函数式要避免使用这些预定义的名称: arguments encodeURI  Infinity  Number  RegExp Arra ...

  9. 算法 & 分析 (收集)

    算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

  10. sql server 查看表的行数

    SELECT  a.name ,        b.[rows]FROM    dbo.sysobjects AS a        LEFT JOIN sysindexes AS b ON a.id ...