在Sql Server 中访问数据库一般有2种方式:

1、一种是使用应用程序编程接口API

2、数据库语句

变量:局部变量:以@为前缀,如@Age;全局变量以@@为前缀;(Ps:全局变量以系统定义和维护,只能读取,不能修改其值);

    申明局部变量语法:DECLARE @变量名 数据类型;如:DECLARE @age INT

     赋值:SET @变量名 = 值;或者 SELECT @变量名 = 值;例如:SET @age = 1;或 SELECT @age = stu_age FROM tb_stu Where stu_No = '123';(Ps:必须确保查询只有一条数据)

    全局变量常见有:

    

对于许多应用程序的开发,都是一边在客户端进行程序开发,一边在数据库服务器端进行T-Sql编程;为了确保数据库的完整性,一般需要编写较为复杂的触发器、存储过程、自定义函数、游标、事务等

概述 :逻辑控制语句If...Else;

    循环:While;

    多分支:Case   End    语法:

    Case 

    When  条件1  Then  结果1

    When  条件2 Then  结果2

    Else 其他结果

    End

批处理语句:批处理是包含一个或者多个的Sql语句组,从应用程序一次性的发往Sql Server执行;Sql Server将批处理语句编译成一个可执行单元,此单元叫做“执行计划”执行计划中的语句每次执行一条;如:

 select *  FROM files
select * from finance
update files SET files.id = files.id +1
where files.id = 1
go

Go是批处理的标志,一般是将业务逻辑相关的业务操作语句,放置在同一撇中,由业务需求和代码编写者决定。

SQL Server 规定:建库,建表,存储过程,视图等必须在末尾加上Go批处理标志;

    事务:单个逻辑操作单元,要么全部执行,要么全部都不执行;必须具有ACID属性:

      (1)原子性(Atomicity):事务是一个完整的操作,事务的各步操作不不可分的(原子性),要么都执行,要么都不执行;

      (2)一致性(Consistency):事务完成后,数据必保持一致性;

      (3)隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,表明事务必须是独立的,并应该依赖和影响其他事务;

      (4)永久性(Durability)事务完成后,对数据库的修改永久性的保存,事务日志能够保持事务的永久性。

begin TRANSACTION   //开始事务
COMMIT TRANSACTION //提交事务
ROLLBACK TRANSACTION //回滚事务

PS:当多条sql语句要组装在一起执行时候需要Begin和End起来,Begin和End必须成对出现,并且各占一行:

Begin

<T-SQL 命令或者程序块>

End

-------------------------------------------------

If Else  结构如下:

if(条件)

Begin

<T-SQL 命令或程序块>

End

Else

Begin

<T-SQL 命令或程序块>

End

备注:Else是可选部分

-------------------------------------------------

While 循环语句:

while(条件)

Begin

语句1

Continue

语句2

Break

End

注释:Break表示退出循环 ; Continue表示退出当前循环,继续下一次循环

 use transmate5
DECLARE @sum INT,@i INT
SET @i = 1
SET @sum = 2
WHILE(@sum<=100)
SET @sum = @sum+@i;
SET @i = @i+1
END
print '1-100为'+CONVERT(CHAR(6),@sum)

实例2:

 USE transmate5
DECLARE @sum int,@i INT
set @sum = 1
set @i = 1
while @sum<100
BEGIN
set @i = @i+1
IF(@i%2=0)
CONTINUE
SET @sum = @sum+@i
IF(@i=49)
break
end
print ''

----------------------------------------------

Case  End 多语句分支:

Case <条件判断表达式>

WHEN 条件判断表达式结果1 < WHEN T-SQL命令行或者语句块>

WHEN 条件判断表达式结果2  < WHEN T-SQL命令行或者语句块>

Else < WHEN T-SQL命令行或者语句块>

End

实例代码:

 SELECT
files.id,
files.fileurl,
files.filename = CASE files.id
WHEN 12 THEN
'vb'
WHEN 12 THEN
'vb'
WHEN 12 THEN
'vb'
WHEN 12 THEN
'vb'
WHEN 12 THEN
'vb'
WHEN 12 THEN
'vb'
WHEN 12 THEN
'vb'
ELSE '未知课程'
END
FROM files
 SELECT files.id , files.filename=
case files.id
WHEN 12 THEN 'VB'
WHEN 13 then 'C#'
else '未知课程'
END
files.fileurl,files.IsDown=
case files.IsDown
WHEN 1 THEN '已下载'
ELSE '未下载'
END
from files

goto 语句:goto<标号>

 IF('' not in (select DISTINCT files.id from files))
goto abc
BEGIN
print '学生成绩存在'
select files.id,files.filename,files.filepath,files.fileurl
FROM files WHERE filename=''
end
abc:print '没有学生成绩'

用户自定义函数,基本结构如下:(包括标量值函数,自定义函数、内嵌表值型函数、)

 create FUNCTION <函数名>
([{@参数名 输出参数类型[=默认值]}[,....]])
RETURNS 函数返回值类型
[WITH encryption]
[AS]
BEGIN
函数体
RETURN 函数返回值
end
 CREATE FUNCTION myFunction (@score INT) RETURNS VARCHAR (60) AS
BEGIN
RETURN
CASE @score >= 90 AND @score <= 100 THEN '优秀'
CASE @score >= 80 AND @score <= 90 THEN '良好'
case @score >=70 and @score<=80 THEN '中等'
case @score >=60 AND @score<=70 THEN '及格'
else '不及格'
end
END
SELECT files.id,files.filename,myFunction(score) from files

游标的使用:常常我们队数据的处理是数据行集合,但是有时候我们需要对单个数据行或者单独几行进行处理,这个时候,我们需要使用游标;

游标是以逐行的方式处理数据,可以看做一个指针,

 声明游标:
DECLARE 游标名 CURSOR FOR SELECT 语句
打开游标 使用Open语句填充该游标
读取游标 使用fetch语句,从数据行中检索特定的行
在打开一个游标后,它将被放在游标结果集的首行前,必须使用fetch语句访问该首行
FETCH next from 游标名 into @变量名
关闭游标 使用Close语句关闭
删除游标 使用deallocate 删除游标引用

总结:

T-SQL 包括分支(if...Else和Case),循环(只有While一种,可以带Continue和Break),无条件跳转(goto)返回语句return;还提供了大量的系统函数

T-SQL 高级编程的更多相关文章

  1. Oracle SQL高级编程——分析函数(窗口函数)全面讲解

    Oracle SQL高级编程--分析函数(窗口函数)全面讲解 注:本文来源于:<Oracle SQL高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...

  2. oracle sql 高级编程 历史笔记整理

    20130909 周一 oracle sql 开发指南 第7章 高级查询 1.层次化查询select level,ttt.*,sys_connect_by_path(ttt.col1,',') fro ...

  3. Oracle PL/SQL 高级编程

    1. 复合数据类型--记录类型 Ø        语法格式 type  类型名 is   record ( 字段1  字段1类型 [not null]:=表达式1; 字段2  字段2类型 [not n ...

  4. Atitit. 高级软件工程师and 普通的区别 高级编程的门槛总结

    Atitit.  高级软件工程师and 普通的区别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握常用的概念(ORM,IOC,AOP,event driv ...

  5. python高级编程之选择好名称:完

    由于时间关系,python高级编程不在放在这边进行学习了,如果需要的朋友可以看下面的网盘进行下载 # # -*- coding: utf-8 -*- # # python:2.x # __author ...

  6. C# 6 与 .NET Core 1.0 高级编程 - 37 章 ADO.NET

    译文,个人原创,转载请注明出处,有不对的地方欢迎指出与交流. 英文原文:Professional C# 6 and .NET Core 1.0 - 37 ADO.NET --------------- ...

  7. C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# 6 ...

  8. C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(下)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(下)),不对的地方欢迎指出与交流. 章节出自<Professional C# 6 ...

  9. C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)),不对的地方欢迎指出与交流. 章节出自<Professional C ...

  10. C# 6 与 .NET Core 1.0 高级编程 - 40 ASP.NET Core(下)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 40 章  ASP.NET Core(下)),不对的地方欢迎指出与交流. 章节出自<Professiona ...

随机推荐

  1. 坑爹的Hibernate 映射文件错误提示org.xml.sax.SAXParseException

    今天整整一个上午都在和hibernate做斗争,早上一来,继续昨天的项目开发,发现spring项目不能启动,从错误中看是hibernate错误,多半是hibernate配置有错误,关键是错误提示中显示 ...

  2. Data Structure Binary Tree: Convert a given Binary Tree to Doubly Linked List

    http://www.geeksforgeeks.org/in-place-convert-a-given-binary-tree-to-doubly-linked-list/ #include &l ...

  3. dbgrid,datasoure,ClientDataSet的简单应用

    dbgrid是用来在界面上显示数据的,需要连接源dbgrid1.datasource := datasource1; datasource:作为dbgrid,clientDataset的连接桥梁,需要 ...

  4. 《python基础教程(第二版)》学习笔记 基础部分(第1章)

    <python基础教程(第二版)>学习笔记 基础部分(第1章)python常用的IDE:Windows: IDLE(gui), Eclipse+PyDev; Python(command ...

  5. hive启动时 Terminal initialization failed; falling back to unsupported java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

    错误提示信息如下 [ERROR] Terminal initialization failed; falling back to unsupported java.lang.IncompatibleC ...

  6. ruanjiangongcheng1

    软体工程的方法有很多方面的意义.包括专案管理,分析,设计,程序的编写,测试和质量控制. 软体设计方法可以区别为重量级的方法和轻量级的方法.重量级的方法中产生大量的正式文档. 著名的重量级开发方法包括I ...

  7. Codeforces 479E Riding in a Lift:前缀和/差分优化dp

    题目链接:http://codeforces.com/problemset/problem/479/E 题意: 有一栋n层的房子. 还有一个无聊的人在玩电梯,每次玩电梯都会从某一层坐到另外一层. 他初 ...

  8. Oracle使用hs odbc连接mssql2008

    1.创建odbc 2.在 product\11.2.0\dbhome_1\hs\admin\  下拷贝initdg4odbc,把名字改为initcrmsql(init+所建odbc的名称) HS_FD ...

  9. Execution Context(EC) in ECMAScript

    参考资料 执行环境,作用域理解 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(12):变量对象(Variable Object) 深入理解JavaScr ...

  10. 06 - Django应用第三步

    知识点 1) 编写urls 配合include()的URL查找过程 获取正则抓取的值并命名, 给url取名 2) 模板的编写 for循环的遍历 用点的方式执行函数, 不带括号 3) 视图函数的编写 H ...