--------------输出----------------
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. vs2013 ADO联系SQL server2012数据库

    平时,给定ADO例如使用以下过程数据源中的数据的数据库应用程序 (1) 创建一个Connection 物.定义的连接字符串信息.它包含了数据源名称.用户ID.密码.连接超时 . 默认数据库的位置和光标 ...

  2. DWR入门的例子(一个)

    DWR(Direct Web Remoting)是WEB远程调用框架.使用这种框架使AJAX发展至今已成为非常easy.使用DWR能client利用JavaScript直接调用服务端的Java方法并返 ...

  3. Java中间(三十五)-----Java详细设置(一个):请指定初始容量设置

    集合是我们在Java编程中使用很广泛的,它就像大海,海纳百川,像万能容器,盛装万物.并且这个大海,万能容器还能够无限变大(假设条件同意). 当这个海.容器的量变得很大的时候,它的初始容量就会显得很重要 ...

  4. MVC客户管理(添加、修改、查询、分页)

    ASP.NET MVC搭建项目后台UI框架—6.客户管理(添加.修改.查询.分页)   目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2 ...

  5. 在vc正在使用xtremetoolkit接口库-----使用简单的控制

    首先,我们需要在StdAfx.h增加头文件: #include "XTToolkitPro.h" #include "XTPResource.h" 在test. ...

  6. 当<script>中的type等于text/html的妙用

    我们可以在<script>片断中定义一个被JS调用的代码,但代码又不在页面上显示,这时,我们可以使用下面的方法: <script id="commentTemplate&q ...

  7. Cocos2d-x学习笔记(两)Cocos2d-x总体框架

    原创文章.转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38680123 前言 上一节我们简单分析了HelloWorldproje ...

  8. 【译】使用requestIdleCallback

    原文地址:http://galen-yip.com/2015/10/07/%E3%80%90%E8%AF%91%E3%80%91%E4%BD%BF%E7%94%A8requestIdleCallbac ...

  9. python_小爬虫

    import urllib.request as request import urllib.parse as parse import string print(""" ...

  10. 【MySQL案件】mysql登录-S失败

    1.1.1. mysql登录mysql时间,-S参数失效 [环境的叙述性说明] mysql5.5.14 [问题叙述性说明] 配置多个实例 实例1 实例2 datadir /home/mysql_330 ...