目录

  • 第1单元    数据库系统导论
    • ● 任务1.1  数据库基本概念
    • ● 任务1.2  设计E—R 图
    • ● 任务1.3   将E-R图转换成关系模型
    • ● 任务1.4   练习与作业
    • ● 教与学参考资源
  • 第2单元   认识SQL SERVER数据库
    • ● 任务2.1 数据库应用场景
    • ● 任务2.3  SQL  Server 数据库安装
    • ● 任务2.4 SQL Server 的管理
    • ● 任务2.5  使用SSMS连接数据库
    • ● 教与学参考资源
  • 第3单元  创建和管理数据库
    • ● 任务3.1 创建数据库
    • ● 任务3.1(2)  命令创建数据库
    • ● 任务3.2 管理数据库
    • ● 任务3.2(2) 查看、收缩数据库
    • ● 教与学参考资源
  • 第4单元 创建和管理数据库表
    • ● 任务4.1 SQL Server常用数据类型
    • ● 任务4.2  创建数据表
    • ● 任务4.3  命令创建表
    • ● 任务4.4 实施完整性约束
    • ● 教与学参考资源
  • 第 5 单元   查询数据表
    • ● 任务5.1 单表数据查询
    • ● 任务5.2 多表数据查询
    • ● 任务5.3 嵌套查询
    • ● 任务5.4 合并查询结果
    • ● 教与学参考资源
  • 第6单元  管理表中数据
    • ● 任务6.1   添加数据
    • ● 任务6.2  修改数据
    • ● 任务6.3  删除数据
    • ● 习题与训练
    • ● 教与学参考资源
  • 第7单元  使用索引和视图
    • ● 任务7.1  使用索引
    • ● 使用T-SQL创建索引
    • ● 任务7.2  使用视图
    • ● 使用T-SQL语句创建视图
    • ● 教与学参考资源
  • 第8单元 Transact-SQL语言编程
    • ● 任务8.1   声明和使用变量
    • ● 任务8.2   流控语句
    • ● 任务8.3   常用系统函数
    • ● 任务8.4   创建自定义函数
    • ● 教与学参考资源
  • 第9单元  事务和锁
    • ● 任务   9.1     事务
    • ● 事务的基本操作
    • ● 任务9.2    锁
    • ● 死锁及避免方法(例)
    • ● 教与学参考资源
  • 第10单元  创建和管理存储过程
    • ● 任务10.1 存储过程及优点
    • ● 任务10.2 创建和执行存储过程
    • ● 任务10.3   存储过程参数和返回值
    • ● 任务10.4 修改、删除、 重新编译存储过程
    • ● 教与学参考资源
  • 第11单元 创建和管理触发器
    • ● 任务1 触发器的作用和分类
    • ● 任务2 触 发器的创建与执行
    • ● 任务3 创建级联触发器
    • ● 任务4 修改、删除触发器
  • 第12单元 创建和使用游标
    • ● 任务1  游标的作用及使用步骤
    • ● 任务2  创建基本游标
    • ● 任务3  使用变量保存游标数据
    • ● 任务4  使用循环环提取游标数据
  • 第13单元 SQL Server用户管理
    • ● 任务1数据库安全管理概述
    • ● 任务2SQL Server 安全机制
    • ● 任务3 账号、角色及权限管理
    • ● 任务4数据库完整性管理
    • ● 任务5 数据库的备份与还原
    • ● 任务6   数据的导入与导出
  • 第14单元  综合应用案例
    • ● 概述
    • ● 需求分析
    • ● 概述设计-逻辑设计- 物理设计
    • ● 编写数据库设计说明书
  • 学生做项目成果展示
    • ● 项目一  设计《我班同学数据库》
    • ● 项目二  设计《(Teaching)教学数据库》
    • ● 项目三  数据库应用系统设计开发项目
    • ● 项目四 《华夏-宿舍管理系统》设计开发
    • ● 项目五   综合实训大作业
    • ● 综合实训团队项目大作业
    • ● 学生完成项目摘录展示
  • 总复习与综合训练
    • ● 总复习
    • ● 综合训练一
    • ● 综合训练二
    • ● 综合训练三
    • ● 综合训练四
    • ● 综合训练五
    • ● 简答综合训练
  • 在线专题测验
    • ● 自检自测一
    • ● 自检自测二
  • 拓展   数据库管理工具平台  Navicat
    • ● 关于Navica
    • ● Navicat 的系统需求
    • ● Navicat 的用户界面
    • ● Navicat 创建数据库对象
    • ● 在Navicat创建的SQL 程序脚本
    • ● 在Navicat创建的SQL  server 脚本(2)
    • ● 综合实训(1)
    • ● 综合实训(2)
  • 技术拓展   (MYSQL)数据库技术与应用
    • ● MYSQL技术
  • 教与学图片剪影
    • ● 教学团队
    • ● 学生学习实训
    • ● 活动与交流
任务8.1   声明和使用变量

—

学习目标:

知识目标:—

了解Transact-SQL语言编程基本方法

知道常用系统函数

—

知道常见流控语句

—

能力目标:


会使用Transact-SQL语言编写程序

—

会使用流控语句

—会创建自定义函数



任务8.1 声明和使用变量

 SQL Server中变量分为全局变量和局部变量两种类型。

  全局变量是由系统定义 。

常用全局变量有:@@SERVERNAME:返回SQL Server本地服务器的名称。@@ROWCOUNT:返回受上一条语句影响的行数。@@ERROR:返回最后执行的Transact-SQL语句的错误代码。 

例: SELECT   @@SERVERNAME     AS   'SQL Server本地服务器的名称'  

例:SELECT  *  FROM   教务数据库.DBO.学生表

SELECT   @@ROWCOUNT   AS  '受上一条语句影响的行数:'

例:SELECT  *  FROMM   教务数据库.DBO.学生表 

SELECT @@ERROR   AS  ‘返回最后执行的Transact-SQL语句的错误代码:        返回最后执行的Transact-SQL语句的错误代码: 102

    

局部变量是用户在程序中自己定义的变量,一次只能保存一个值,它只在定义的程序范围内有效,用于临时存放数据。局部变量以一个@开头,最长为128个字符。

声明局部变量的语法格式如下:

DECLARE @变量名称变量类型(长度)

变量声明之后要进行赋值,赋值语句如下:

SELECT @变量名称=SET @变量名称=

显示和输出变量的值,语句格式如下:

SELECT @变量名称

或 PRINT @变量名称

【例】用赋值语句分别定义两个整型变量xy。使x的值为20y的值为5,计算并显示xy3x +4yxy,和x /y的值。

vT-SQL语句为:

DECLARE @X INT,@Y INT

SET @X=2

0SET @Y=5

SELECT @x,@y,3*@x +4*@y,@x*@y,@x/@y


1.局部变量(SELECT赋值)

*SELECT赋值语句:*

语法:SELECT {@变量名 = 表达式}[,...n]*

说明: *SELECT命令可以一次给多个变量赋值。

*当表达式为表的列名时,可使用子查询功能从表中一次返回多个值,

而赋值给变量的是其返回的最后一个值。


*2*声明一个变长字符型变量@var1,用SELECT赋值语句

为它赋予从[教师表]中查询出编号为'103011'  的教师姓名,

SELECT输出语句输出变量@var1的值。*

代码:

USE [教务数据库]

DECLARE @var1 varchar(8) 

       --声明变长字符型局部变量

SELECT @var1=姓名 FROM 教师表 

   WHERE 教师号='103011'         --将子查询的结果赋值给局部变量

SELECT @var1 AS '教师姓名'      --显示局部变量结果


*2*声明一个变长字符型变量@var1,用SELECT赋值语句

为它赋予从表Reader中查询出编号为'2003216008'的读者姓名,

SELECT输出语句输出变量@var1的值。*

代码:

USE Library

DECLARE @var1 varchar(8)        --声明变长字符型局部变量

SELECT @var1=Rname FROM Reader 

WHERE RID='2003216008'    --将子查询的结果赋值给局部变量

SELECT @var1 AS '读者姓名'     --显示局部变量结果


【练一练】声明两个变量存放姓名和电话,并输出这两个变量的值。


*SET赋值语句:*

语法: SET  @变量名=表达式*

说明:*SET赋值语句只能给一个变量赋值。

*子查询必须是括号括起来的完整SELECT查询语句。

*4SET赋值语句为局部变量@no赋值,

再用SELECT询语句查询出读者表中读者号为@no的读者信息。

*代码:

USE Library

DECLARE @no char(10)        --声明变长字符型局部变量

SET @no='2004060003'       --局部变量赋值

SELECT RID,Rname        --查询语句

FROM Reader  WHERE RID=@no   --查询中引用局部变量



*SET赋值语句将学生表Student统计查询出的学生总

赋值给局部变量@count,并用SELECT语句输出。

*代码:

USE EDUC

GO

DECLARE @count int  --声明整型局部变量

--将子查询的结果赋值给局部变量

SET @count=(SELECT COUNT(*) FROM Student) 

 SELECT @count AS 学生总


局部变量赋值语句比较

*赋值语句比较

SET @count=(SELECT COUNT(*) FROM Student)

SELECT @var1=Rname FROM Reader* 


一般选择约定n当执行一个简单的变量赋值时,使用SET赋值语句。

n当基于查询进行变量赋值时,使用SELECT赋值语句。

输出语句:

(1)PRINT  表达式

(2)SELECT  表达式 [,...n]

—

例:DECLARE @X INT,@Y INT

SET @X=20

SET @Y=5

SELECT @x  AS '@x',@y   AS  '@y',3*@x +4*@y,@x*@y,@x /@y  AS  '@x /@y‘

例:

DECLARE @X INT,@Y INT

SET @X=20

SET @Y=5

PRINT @x+@y

PRINT @x*@y

PRINT 'X+y='+STR(@x+@y,3)

PRINT 'X*y='+STR(@x*@y,8)

例:函数Datepart(yy,‘2004-3-13’) ,yy 取日期的年份,mm取日期的月份,dd取日期的日

PRINT Datepart(yy,‘2004-3-13’)+2      输出结果:2006

PRINT Datepart(mm,‘2004-3-13’)+2    输出结果:5

PRINT Datepart(dd,‘2004-3-13’)+2    输出结果:15



2.全局变量

*全局变量是SQL Server系统提供并赋值的变量。*

用户不能建立全局变量,也不能用SET赋值语句和SELECT赋值语句

修改全局变量的值。*通常可以将全局变量的值赋给局部变量,

以便保存和处理。*全局变量以@@开头,

例如,全局变量@@servername提供服务器名,

全局变量@@version提供SQL Server的版本信息




*:显示SQL Server的版本。*

代码:SELECT @@version*

执行结果(略),可上机试试,


3.注释语句:

注释语句是系统不执行的语句,对程序进行注释可以帮助读者理解程序员的意图,使程序代码易于维护,也可以标识出开发者出于某些原因不想执行的部分。

(1)单行注释  单行注释语句使用两个连字符“--”开头,其后可以是任何可输入的字符。

【例  9】查找学生名册表中的“王”姓学生的信息。

(1)单行注释

  单行注释语句使用两个连字符“--”开头,其后可以是任何可输入的字符。

【例  9】查找学生名册表中的“王”姓学生的信息。

SELECT *  FROM 学生名册 WHERE 姓名 LIKE ’王%’ 

                                --查询所有王姓学生信息  

(2)多行注释

  多行注释语句可以注释跨越多行的代码,用分隔符“/*”开头,用分隔符“ */”结尾,在其中的全部内容均视为注释。

—


4.等待语句


等待语句可以暂停程序执行,直到设定的等待时间已到,或设定的事件发生才继续往下执行。其一般语法格式如下。  

      WAITFOR { DELAY ’时间’ | TIME ’时间’ | ERROREXIT | PROCESSEXIT | MIRROREXIT }

各参数、关键字说明如下。

(1)DELAY:用来设定等待的时间,最多可达24小时。时间必须为DATETIME类型的数据,如“57:12:28”,不能包括日期数据。

(2)TIME:用来设定等待的结束时间。

(3)ERROREXIT:等待处理非正常中断。

(4)PROCESSEXIT:等待处理正常或非正常中断。

(5)MIRROREXIT:等待处理镜像设备失败。

—

【例 】设定0分10秒后执行SELECT语句查询[学生管理]数据库的[学生名册]表。

USE 学生管理

GO

WAITFOR DELAY '00:00:10'

SELECT *  FROM 学生名册


———

5.跳转语句

       跳转语句可以改变程序执行的流程,使程序跳转到有标号的语句行继续往下执行,语法格式如下。

              GOTO 标号

       说明:GOTO语句中的标号后不能有“:”,作为跳转目标的标号可以是数字或数字与字符的组合,但是必须以“:”结尾,例如“5:”或“AB1:”

—

【例 】分行输出偶数数字。

    DECLARE @number int

    SELECT @number = 0

    NUM: PRINT @number

    SELECT @number =@number + 2

    WHILE @number < 10 GOTO NUM

    GO

—


6. 返回语句

       返回语句用于结束当前程序的执行,返回到调用它的程序调用之处,语法格式如下。

       RETURN ([整型表达式])



7. 脚本

      脚本是存储在文件中的一系列SQL语句,即一系列按顺序提交的批处理。SQL脚本中可以包含一个或多个批处理。脚本文件的扩展名为.sql,使用脚本文件可以建立起可重复使用的模块化代码文件。还可以在不同计算机之间传送SQL语句,脚本可以在查询分析器中执行,也可以在ISQL或OSQL实用程序中执行。脚本文件也可以用记事本查看。