SQL Serever学习13——数据库编程语言
编程基础
注释
注释命名来对一些语句进行说明,便于日后维护或者其他用户理解,注释不会执行。
单行注释
SELECT GETDATE() --查询当前日期

多行注释
/*
注释有助于
理解操作的内容
查询当前日期
*/
SELECT GETDATE()
变量
在T-SQL执行命令时,可以申明变量临时存储各种数据,申明时被初始化为NULL,只能代替数值,不能代替对象或关键字
局部变量
必须先用DECLARE 语句定义,局部变量在名称前加@
SELECT 赋值语句哟啊保证结果不超过一条数据,否则将会把最后一条数据赋予变量
/*申明变量*/
DECLARE @name VARCHAR(10)
/*赋值变量*/
SET @name='LUCAS'
/*输出变量*/
SELECT @name
全局变量
sqlserver系统内部使用的变量,作用范围是整个系统的任何程序,以@@开头,常用的全局变量有:
@@ERROR,最后一个T-SQL错误代码
@@IDENTITY,最后一个插入的标示值
@@LANGUAGE,当前使用的语言
@@ROWCOUNT,受上一个SQL语句影响的行数
@@SERVERNAME,本地服务器名称
@@VERSION,sqlserver版本信息
PRINT @@ERROR
PRINT @@IDENTITY
PRINT @@LANGUAGE
PRINT @@ROWCOUNT
PRINT @@SERVERNAME
PRINT @@VERSION
输出为

输出语句
PRINT 使用中文方式输出
SELECT 使用表格方式输出
批处理语句
批处理是一个T-SQL语句集,集合中的语句一起提交给sqlserver作为一个整体执行。GO就是批处理标志。
sqlserver会将批处理编译成一个可执行单元(执行计划),提高执行效率。
一般情况,一些操作放在同一个批处理命令,但是如果是创建数据库或其他对象的语句,则必须在结尾添加GO,便于与其他命令分开执行。
批处理有3种限制:
- CREATE 语句不能与其他语句组合使用
- 如果批处理命令有改字段名称,则不能在同一个批处理中使用该字段新名称
- 如果EXECUTE 语句是批处理第一句,则可以省略EXECUTE关键字,否则不可以省略
IF...ELSE语句
统计商品平均价格,如果均价在2000元以上输出“总体价格较贵”,并显示最贵商品信息;如果在2000以下,显示“总体价格便宜”,并显示最便宜商品信息。
DECLARE @avgjg FLOAT
--获取均价
SELECT @avgjg=AVG(进价) FROM 商品表
PRINT '所有商品的均价为:'+CONVERT(VARCHAR(5),@avgjg) --进行判断
IF(@avgjg>=2000)
BEGIN
PRINT '总体价格较贵,最贵商品是:'
SELECT TOP 1 * FROM 商品表 ORDER BY 进价 DESC
END
ELSE
BEGIN
PRINT '总体价格便宜,最便宜商品是:'
SELECT TOP 1 * FROM 商品表 ORDER BY 进价
END

注意:如果需要将表格数与文本数据同时显示,需要设置:工具-》选项-》查询结果-》显示结果的默认方式,选择以文本格式显示结果

WHILE语句
将所有销售利润在10%以下商品的销售价格增加10元,如果仍有商品销售利润在10%以下的,在增加10元,直到所有商品价格利润都在10%以上,最后显示增加最多的商品增加的钱数。
PRINT '开始更新销售额偏低商品的价格'
DECLARE @cs INT
SET @cs=0
WHILE ((SELECT COUNT(*) FROM 商品表 WHERE 销售价/进价<1.1)>0)
BEGIN
UPDATE 商品表
SET 销售价=销售价+10
WHERE 销售价/进价<1.1
SET @cs=@cs+10
IF((SELECT COUNT(*) FROM 商品表 WHERE 销售价/进价<1.1)=0)
BREAK
END
PRINT '增加最多的商品,增加了:'+CONVERT(VARCHAR(8),@cs)+'元'
GO

多分支语句CASE
对A牌所有商品分类,进价高于3000元为高价商品,1000-3000元为中价商品,1000以下为低价商品
SELECT 商品名称,型号,进价=
CASE
WHEN 进价>3000 THEN '高价商品'
WHEN 进价 BETWEEN 1000 AND 3000 THEN '中价商品'
WHEN 进价<1000 THEN '低价商品'
END
FROM 商品表

SQL Serever学习13——数据库编程语言的更多相关文章
- SQL Serever学习12——数据库的备份和还原
公司的服务器奔溃了,事先没相应的保护措施,使得公司遭到了较大损失,为了以后不再出现类似事件,在系统中引入备份机制,使得数据库被破坏后损失降到最低. 数据的导出和导入 数据转换服务 数据转换服务DTS( ...
- SQL Serever学习17——数据库的分析和设计
数据库的分析和设计 设计数据库确定一个合适的数据模型,满足3个要求: 符合用户需求,包含用户所需的所有数据 能被数据库管理系统实现,如sqlserver,oracle,db2 具有比较高质量,容易理解 ...
- SQL Serever学习11——数据库的安全管理
公司管理软件设计完成,但是日常工作繁忙,向领导提出增加几个管理员,帮助管理和维护系统,领导同意了,但是要求一定要管理好这几个管理员用户,保证数据库的安全. 修改身份验证模式 数据库验证机制 sqlse ...
- SQL Serever学习5——数据库配置
数据库的主要属性 限制访问 用来设置数据允许用户访问的状态,或者说允许多少客户访问,有3个选项: MULTI_USER(多个),大多数数据库正常状态,允许多个用户同时访问该数据库. SINGLE_US ...
- SQL Serever学习4
SQL Server系统中数据库相关概念 在SQLServer数据库系统中分为2大类,系统数据库和用户数据库. SQLServer安装后系统会自动生成4个系统数据库,他们是Master,Model,M ...
- SQL基础学习_01_数据库和表
SQL语句及其种类 1. SQL语句分为三类: DDL(Data Definition Language): CREATE.DROP.ALTER; DML(Data Manipulat ...
- SQL Serever学习16——索引,触发器,数据库维护
sqlserver2014数据库应用技术 <清华大学出版社> 索引 这是一个很重要的概念,我们知道数据在计算机中其实是分页存储的,就像是单词存在字典中一样 数据库索引可以帮助我们快速定位数 ...
- SQL Serever学习15——进阶
特别说明:在sqlserver2014中,不区分大小写,也就是说,SQL是大小写不敏感的 数据库模型3类: 层次模型 网状模型 关系模型 关系型数据库语言3种: DDL数据定义语言 CREATE(创建 ...
- SQL Serever学习14——存储过程和触发器
存储过程 在数据库中很多查询都是大同小异,编写他们费时费力,将他们保存起来,以后执行就很方便了,把SQL语句“封装”起来. 存储过程的概念 存储过程是一组SQL语句集,经过编译存储,可以”一次编译,多 ...
随机推荐
- cesium编程中级(一)添加示例到Sandcastle
cesium编程中级(一)添加示例到Sandcastle 添加示例到Sandcastle在cesium编程入门(七)3D Tiles,模型旋转中提到过,这里是一份完整的说明 创建例子 开启node服务 ...
- Lambda 表达式浅谈- 01
已经有一段时间没有发布博文了... 今天就写一写lambda的一些简单的使用方法 Lambda 在Msdn 上的描述: Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 ...
- Hibernate继承映射(@Inheritance)
继承映射在 Annotation 中使用 @Inheritance 注解,并且需要使用 strategy 属性指定继承策略,继承策略有 SINGLE_TABLE.TABLE_PER_CLASS 和 J ...
- HBase – 探索HFile索引机制
本文由 网易云发布. 作者: 范欣欣 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 01 HFile索引结构解析 HFile中索引结构根据索引层级的不同分为两种:single-level和m ...
- django系列5.2--ORM数据库的单表操作
单表操作 在views.py中添加对数据库的操作语句 #在逻辑代码中导入你要操作的表 from app import models def add_book(request): ''' 添加表记录 : ...
- 自注意力机制(Self-attention Mechanism)——自然语言处理(NLP)
近年来,注意力(Attention)机制被广泛应用到基于深度学习的自然语言处理(NLP)各个任务中.随着注意力机制的深入研究,各式各样的attention被研究者们提出.在2017年6月google机 ...
- form-inline+form-group 实现表单横排显示(Bootstrap)
运行后的效果如下: 使用时要注意如下: 如果form元素有form-line修饰,那么form-group 所修饰的元素内部只能包含一个元素,否则,不会达到预期效果
- FutureTask与Fork/Join
在学习多线程的过程中,我们形成了一种思维习惯.那就是对于某个耗时操作不再做同步操作,让他分裂成一个线程之后执行下一步,而线程执行耗时操作.并且我们希望在我们需要它返回的时候再去调用它的结果集.好比我们 ...
- python自学之第一章 —— 变量
1.变量的命名(): (1).可以包含数字.字母.下划线‘_’,但只能以字母和下划线‘_’开头,不能以数字开头! (2).变量的命名不能包含空格. (3).不能将python中的关键字(reserve ...
- P5038 [SCOI2012]奇怪的游戏
题目链接 题意分析 首先我们需要求的是统一以后的值\(x\) 并且一般的棋盘操作我们都需要黑白染色 那么对于棋盘格子是偶数的情况的话 答案是存在单调性的 因为如果统一之后 两两搭配还是可以再加一个的 ...