输出,变量的使用,子查询,逻辑语句,循环,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 ...
随机推荐
- JavaScript中null和undefined的总结
先说null,它表示一个特殊值,常用来描述“空值”.对null执行typeof运算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”(感觉怪怪的).实际 ...
- 谈话Java在ThreadLocal理解类
我们必须先了解:ThreadLocal不超过一个线程类,或者它应该被称为线程局部变量.这从ThreadLocal的JDK我们可以看到的定义 public class ThreadLocal<T& ...
- HDU 5281 Senior's Gun (贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5281 贪心题目,但是看看我的博客里边相关贪心的题解实在是少的可怜,这里就写出来供大家一起探讨. 题意还 ...
- linux_apt-get 使用详解
安装应用从互联网上下载查询时 用到,今天安装个 mysql 简化流程如下: apt-cache search mysql-server sudo apt-get install mysql-serve ...
- XSS Overview
什么是XSS? 跨站脚本攻击(Cross Site Scripting):攻击者往Web页面里插入恶意脚本,当用户浏览该页面时,嵌入页面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的.恶意的内容通 ...
- Java多线程的~~~Lock接口和ReentrantLock使用
在多线程开发.除了synchronized这个keyword外,我们还通过Lock接口来实现这样的效果.由Lock接口来实现 这样的多线程加锁效果的优点是非常的灵活,我们不在须要对整个函数加锁,并且能 ...
- 【百度地图API】自定义可编辑的交通路线
原文:[百度地图API]自定义可编辑的交通路线 任务描述: 我想自己绘制一条从地铁站出口到天安门的道路,而且还需要根据我的喜好来改变这条路线. 如何实现: 鼠标左击地图,绘制路线:双击后,绘制结束:绘 ...
- 抄360于Launcher浮动窗口的屏幕显示内存使用情况(改进版)
MainActivity例如下列: package cc.cc; import android.os.Bundle; import android.view.View; import android. ...
- 观察者模式的程序实例C++
一.什么是观察者模式 Observer模式也叫观察者模式,是由GoF提出的23种软件设计模式的一种.Observer模式是行为模式之中的一个,它的作用是当一个对象的状态发生变化时,可以自己主动通知其它 ...
- 08. 删除重复&海量数据
原文:08. 删除重复&海量数据 重复数据,通常有两种:一是完全重复的记录,也就是所有字段的值都一样:二是部分字段值重复的记录. 一. 删除完全重复的记录完全重复的数据,通常是由于没有设置主键 ...