1、前言
-》此T-SQL编程是基于sql server开发环境
-》关键字:T-SQL编程;游标;视图和索引

2、T-SQL编程基础
-》标识符:常规标识符必须以汉字、字母、下划线_、@ 或 #开头,不能使用SqlServer关键字
-》变量
·声明格式:declare @变量名 数据类型
注:声明局部变量后,该变量被初始化为NULL
例:declare @CurrentDateTime char(30)
·设置(set语句)格式: set|select @变量名 = 值
注:赋予的值必须与声明的值相符
例:select @CurrentDateTime = Getdate()
·输出格式:print|select @变量名
·全局变量: @@ 变量名
注:系统提供且预先声明
例: @@version ——数据库版本
@@identify ——进行插入后调用,返回最近的标识符
@@servername ——服务器名称
@@erro ——返回上一个执行T-SQL的错误号
@@rowcount ——返回上一执行语句的影响行数

3、运算符
-》算术运算符:+、-、*、/、%
-》赋值运算符:=
-》位运算符:
·按位与(&):均为1取1,否则取0;
·按位或(|):一个为1取1,否则取0;
·按位异或(^):不同取1,否则取0.
-》比较运算符:用于判断,其结果位逻辑值:ture、false及unknown
等于(=),大于(>),小于(<)
不等于(<>或!=),不小于(!<),不大于(!>)
大于等于(>=),小于等于(<=)
-》逻辑运算符:all、and或&&、any或some、between、exists、in、like、not或!、or或||
-》字符串连接运算符:@ 变量名 =' ' + ' ' + ··· + ' '
-》一元运算符
-》运算符的优先级

4、流程控制语句
-》begin···end语句:将多个语句组合成一个语句块,并将它们视为一个单元处理,相当于(···)
·格式:begin
语句1
···
end
-》if···else语句:
·格式:if 条件表达式
语句1
else
语句2
-》case语句
·格式一:case 输入表达式
when 表达式1 then 结果表达式 /*如果 输入表达式=表达式1 为ture,则 结果表达式 有效*/
···
[else 表达式]
end
·格式二:case
when 布尔表达式 then 表达式
···
[else 表达式]
end

-》while语句
·格式:while 条件表达式
begin
语句1 [break] /*跳出循环*/
[语句2] [continue] /*跳过continue之后的语句*/
[语句3]
end
-》goto语句:
·格式:标签名:
语句1
···
if 条件表达式
goto 标签名
-》异常处理语句
·格式:begin try
···
end try
begin catch
···
end catch

5、函数
-》系统内置函数
·数学函数
floor(数) 求小于实数的整数
round(数,0) 四舍五入
power(x,y) 求x的y次方
·日期时间函数
getdate() 返回系统当前的日期和时间
day(date_expression) 返回日期表达式中的日
month(date_expression) 返回日期表达式中的月
year(date_expression) 返回日期表达式中的年
·聚合函数
在数据库查询章节
·字符串函数
ascII(char_expression) 返回表达式中最左边一个字符的ascII码值
char(integer_expression) 返回ascII码值对应的字符
lower(char_expression) 大写转为小写字符 upper(char_expression) 小写转为大写
-》用户自定义函数
·标量函数:返回一个确定类型的标量值
--格式:create function 函数名(形参) /* 函数名及形参定义部分,形参格式: @变量名 数据类型 */
returns 数据类型 /*返回参数的类型*/
[as] begin
函数体
return 值
end
·内嵌值表函数:返回值为表的形式
--格式:create function 函数名(形参)
returns table
[as] return select语句
·多语句表值函数:可以看成上面两个函数的结合
--格式:create function 函数名(形参) returns @返回变量名 table
[as] begin
函数体
return
end

6、游标
-》概念
·从包括多条数据记录的结果集中每次提取一条记录的机制
·对查询语句返回的结果集中每一行进行操作,而不是对整个结果集。
-》三种类型:T-SQL游标、API游标、客户游标
-》声明游标
·SQL-92语法格式:
DECLARE 游标名 [ INSENSITIVE ] [ SCROLL ] CURSOR
FOR sql-statement
[for {read only | update [of 列名[,···n]]}]
·参数说明:insensitive表明游标定义所选取的记录存放在临时表中
scroll 表明所有的读取操作(next | prior | first | last | absolute )都可用,不必关闭游再重开游标
read only 表明不允许数据被更新
·例: Declare MyCursor Cursor
FOR Select * FROM tbMyData
-》打开游标
·语法格式: open [global] 游标名 /*global定义游标为全局游标*/
·例:open MyCursor
go
-》读取游标
·语法格式: fetch [next | prior | first | last | absolute{n | @nvar} | relative{n | @var}]
from 游标名
·参数说明:next:返回结果集中当前行的下一行,并增加当前行数为返回行行数;
·例:fetch next from MyCursor
-》关闭游标
·语法格式: open [global] 游标名
go
·参数说明:
·例:close MyCursor
go
-》释放游标:游标不再需要时
·语法格式: deallocate [global] 游标名
go
·参数说明:
·例:deallocate MyCursor
go

7、视图(也称虚拟表)
-》创建视图
·语法格式:create view 视图名 [列名(,···n)]
with 视图属性
as sql语句块
go
-》修改视图
·语法格式:alter view 视图名 [列名(,···n)]
with 视图属性
as sql语句块
go
-》使用视图:
·查询:
例: select * from 视图名
·修改:
例: insert into 视图名 values('0110301','张三','男',20)
-》删除视图: drop view 视图名

8、索引
-》目的:提高系统性能,加快数据的查询速度和减少系统的响应时间
-》索引类型
·聚集索引:对表和视图进行物理排序(表和视图至多1个索引)
·非聚集索引:目录纯粹是目录,正文纯粹是正文的排序
-》创建索引
·语法格式: create [unique][clustered | nonclustered] index 索引名
on 表名或视图名 (列名[asc | desc][,···n])
-》间接创建索引:创建表时,定义主键约束和唯一性约束
-》创建索引视图
·例:创建一个“女学生”视图,并为该视图按“学号”升序创建一个具有唯一性的聚集索引
--创建视图: use 教学库
go
create view 女学生
with schemabinding
as
select 学号,姓名,性别,专业 from dbo.学生表
where 性别='女'
--创建索引:
create unique clustered index 女生索引 on 女学生(学号)
-》查看索引信息:
exec sp_helpindex 表名
或 exec sp_help 表名
-》删除索引:
drop index 表名.索引名

第四章 T-SQL编程的更多相关文章

  1. 20190827 On Java8 第十四章 流式编程

    第十四章 流式编程 流的一个核心好处是,它使得程序更加短小并且更易理解.当 Lambda 表达式和方法引用(method references)和流一起使用的时候会让人感觉自成一体.流使得 Java ...

  2. 数据库系统原理(第四章:SQL与关系数据库基本操作 )

    一.SQL概述 sql是结构化查询语言(Structured Query Language,SQL)是专门用来与数 据库通信的语言,它可以帮助用户操作关系数据库. SQL的特点: SQL不是某个特定数 ...

  3. 第三章 PL/SQL编程

    3.1 PL/SQL基础知识    3.1.1 什么是PL/SQL?        PL/SQL是结合Oracle过程语言和结构化查询语言的一种扩展语言        3.1.1.1 PL/SQL体系 ...

  4. 第四章 Java并发编程基础

    线程简介 什么是线程? 现代操作系统在一个运行程序时,会为其创建一个进程.例如,启动一个Java程序,操作系统就会创建一个Java进程.现代操作系统调度的最小单元是线程,也叫轻量进程(Light We ...

  5. C Primer Plus_第四章_字符串和格式化输入输出_编程练习

    Practice 1.输入名字和姓氏,以"名字,姓氏"的格式输出打印. #include int main(void) { char name[20]; char family[2 ...

  6. [转]Windows Shell 编程 第四章 【来源 http://blog.csdn.net/wangqiulin123456/article/details/7987933】

    第四章 文件的本质 以前,所有文件和目录都有一个确定的属性集:时间,日期,尺寸,以及表示‘只读的’,‘隐藏的,‘存档的’,或‘系统的’状态标志.然而,Windos95(及后来的WindowsNT4.0 ...

  7. java并发编程的艺术——第四章总结

    第四章并发编程基础 4.1线程简介 4.2启动与终止线程 4.3线程间通信 4.4线程应用实例 java语言是内置对多线程支持的. 为什么使用多线程: 首先线程是操作系统最小的调度单元,多核心.多个线 ...

  8. C#语言和SQL Server第十三 十四章笔记

    十三章  使用ADO.NET访问数据库 十四章使用ADO.NET查询和操作数据库 十三章:                                                       ...

  9. 《OpenCL异构并行编程实战》补充笔记散点,第一至四章

    ▶ 总体印象:适合 OpenCL 入门的书,有丰富的代码和说明,例子较为简单.先把 OpenCL 代码的基本结构(平台 → 设备 → 上下文 → 命令队列 → 创建缓冲区 → 读写缓冲区 → 编译代码 ...

  10. MyBatis 3(中文版) 第四章 使用注解配置SQL映射器

    本章将涵盖以下话题: l 在映射器Mapper接口上使用注解 l 映射语句 @Insert,@Update,@Delete,@SeelctStatements l 结果映射 一对一映射 一对多映射 l ...

随机推荐

  1. Redis学习笔记(2)—— Redis的安装和使用

    一.CentOS安装Redis 1.1 安装环境 redis是C语言开发的,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境.如果没有gcc环境,需要安装gcc: yum instal ...

  2. hdu6440 Dream 2018CCPC网络赛C 费马小定理+构造

    题目传送门 题目大意: 给定一个素数p,让你重载加法运算和乘法运算,使(m+n)p=mp+np,并且 存在一个小于p的q,使集合{qk|0<k<p,k∈Z} 等于集合{k|0<k&l ...

  3. 机器学习值KNN

  4. SpringBoot2.0.3整合Quartz2.3.0实现定时任务

    转载:https://www.cnblogs.com/ealenxie/p/9134602.html 关于别人写的quartz学习的地址:https://blog.csdn.net/lkl_csdn/ ...

  5. Java学习笔记day04_数组

    1.switch case switch语句中表达式的数据类型是有要求的: JDK 1.0 ~ 1.4 , 数据类型接受byte, short, int, char JDK 1.5 , 数据类型接受b ...

  6. my23_pxc其中一个节点重建记录

    PXC报废了一个节点,时间大概在周五,而此时故障的数据库节点比较多,警告信息也成百上千,此信息混合于已有的故障节点信息中,没有被及时发现:然后周六.周日各报废一个,在周一的时候,业务已经没有节点可以写 ...

  7. 27-----BBS论坛

    BBS论坛(二十七) 27.首页帖子列表布局完成 (1)apps/models.py 把帖子跟用户关联起来 class PostModel(db.Model): __tablename__ = 'po ...

  8. 网页console console.log 用法 Chrome F12

    #########sample 0 https://www.cnblogs.com/xiaozong/p/4961929.html https://blog.csdn.net/shanliangliu ...

  9. strchr和strstr函数

    二者都属于c的库函数   包含在<string.h>函数中 不同的是 : strchr是查找单个字符在串中出现的位置 strstr查找的是字符串在串中出现的位置 看代码: //strchr ...

  10. Java基本语法_循环练习系列(二)——万年历

    写万年历大致可以分为以下几个步骤: 1.根据用户输入的年份判断该年是否是闰年. 2.根据用户输入的月份计算该月的天数. 3.计算输入的年份之前的总天数. 4.计算输入的月份之前的天数. 5.计算该月的 ...