数据库复习⑨

2016年6月19日

12:45

Main 数据库编程

1.介绍Transact-SQL

Transact-SQL是所用应用程序与SQL ServerDBMS进行交互所使用的语言。

Transact-SQL = SQL + 高级编程语言

可以应用Transact-SQL进行数据库编程实现数据处理功能

2.Transact-SQL中的变量

局部变量:

局部变量是用户自定义的变量,它的作用范围仅限于程序内部。

在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。

局部变量必须以@开头,而且必须先用DECLARE 命 令说明后才可使用。其说明形式如下:

DECLARE @变量名 变量类型[,@变量名变量类型…]

在Transact-SQL 中不能像在一般的程序语言 中一样使用“变量=变量值”来给变量赋值, 必须使用SELECT 或SET 命令来设定变量的值。 其语法如下:

SELECT @局部变量= 变量值

SET @局部变量= 变量值

全局变量:

全局变量是SQL Server 系统内部使用的变量,其作用范围并不局限于某一程序,而是任何程序均可 随时调用。

全局变量不是由用户的程序定义的,它们是在服务 器级定义的,只能使用预先说明及定义的全局变量。

引用全局变量时必须以“@@”开头。

局部变量的名称不能与全局变量的名称相同,否则 会在应用中出错

注释符:

1.ANSI 标准的注释符“--”用于单行注释。

2.与C 语言相同的程序注释符号,即 “/*……*/”,/* 用于注释文字的开头,*/ 用于注释文字的结尾,可在程序中标识多行 文字为注释

3.流程控制命令

BEGIN…END 其语法如下:

BEGIN <命令行或程序块块> END

BEGIN…END用来设定一个程序块,将在 BEGIN…END 内的所有程序视为一个单元 执行。

BEGIN…END 经常在条件语句(如 IF…ELSE)中使用。

在BEGIN…END 中可嵌套另外的 BEGIN…END 来定义另一程序块。

IF … ELSE 其语法如下:

IF <条件表达式式>

<命令行或程序块块>

[ELSE [条件表达式式]

<命令行或程序块块>]

说明:

<条件表达式>可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。

ELSE 子句是可选的,最简单的IF 语句没有ELSE 子句部分。

IF…ELSE 用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。

如果不使用程序块,IF 或ELSE 只能执行一条命令。

IF ELSE 可以进行嵌套,在Transact-SQL 中最多可嵌套32 级。

CASE

格式1:

CASE <运算式>

WHEN <运算式>

THEN <运算式>

WHEN <运算式>

THEN <运算式>

[ELSE <运算式>]

END

该语句的执行过程是:

将CASE后面表达式的值与各WHEN子句中的表达式的值进行比较,

如果二者相等,则返回THEN后的表达式的值,然后跳出CASE语句,否则返回ELSE子句中的表达式的值。

ELSE子句是可选项。当CASE语句中不包含ELSE子句时,如果所有比较失败时,CASE语句将返回NULL。

格式2:

CASE

WHEN <条件表达式> THEN <运算式>

WHEN <条件表达式> THEN <运算式>

[ELSE <运算式>]

END

该语句的执行过程是:

首先测试WHEN后的表达式的值

如果其值为真,则返回THEN后面的表达式的值,否则测试下一个WHEN子句中的表达式的值

如果所有WHEN子句后的表达式的值都为假,则返回ELSE后的表达式的值

如果在CASE语句中没有ELSE子句,则CASE表达式返回NULL。

WHILE…CONTINUE…BREAK

其语法如下:

WHILE <条件表达式>

BEGIN

<命令行或程序块>

[BREAK]

[CONTINUE]

[命令行或程序块]

END

WHILE 命令在设定的条件成立时,会重复执行命令行或程序块。

CONTINUE 命令可以让程序跳过CONTINUE 命令之后的语句,回到WHILE 循环的第一行,继续进行下一次循环。

BREAK 命令则让程序完全跳出循环,结束WHILE 命令的执行。

WHILE 语句也可以嵌套。

WAITFOR

其语法如下:

WAITFOR {DELAY <‘时间’> | TIME <‘时间’>

| ERROREXIT | PROCESSEXIT | MIRROREXIT}

WAITFOR 命令用来暂时停止程序执行,直到所设定的等待时间已过或所设定的时间已到才继续往下执行。

其中‘时间’必须为DATETIME(hh:mm:ss) 类型的数据,但不能包括日期。

各关键字含义如下:

1.DELAY:用来设定等待的时间,最多可达24 小时

2.TIME:用来设定等待结束的时间点

3.ERROREXIT:直到处理非正常中断

4.PROCESSEXIT:直到处理正常或非正常中断

5.MIRROREXI: 直到镜像设备失败

GOTO

语法如下:

GOTO 标识符

GOTO 命令用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行再继续往下执行。

作为跳转目标的标识符可为数字与字符的组合。但必须以“:”结尾。

在GOTO 命令行,标识符后不必跟“:”

4.数据库命令

1.BACKUP

BACKUP 命令用于将数据库内容或其事务处理日志备份到存储介质上(软盘、硬盘、磁带等)。

2.CHECKPOINT

CHECKPOINT 命令用于将当前工作的数据库中被更改过的数据页或日志页从数据缓冲器中强制写入硬盘。

3.DBCC

DBCC(Database Base Consistency Checker 数据库一致性检查程序)命令用于验证数据库完整性、查找错误、分析系统使用情况等。

DBCC 命令后必须加上子命令,系统才知道要做什么。

如:DBCC CHECKALLOC 命令检查目前数据库内所有数据页的分配和使用情况。

5.EXECUTE

EXECUTE 命令用来执行存储过程。

6.KILL

KILL 命令用于终止某一过程的执行。

7.PRINT

PRINT 命令向客户端返回一个用户自定义的信息,即显示一个字符串、局部变量或全局变量。

如果变量值不是字符串的话,必须先用数据类型转换函数CONVERT()将其转换为字符串。

8.RAISERROR

RAISERROR 命令用于在SQL Server 系统返回错误信息时,同时返回用户指定的信息。

5.常用函数

6.游标编程

SQL语句以关系为操作对象和操作结果;

例如由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行;

应用程序有时需要遍历关系表,对每行数据进行单独处理。SQL语言不能实现这样的操作要求;

应用程序需要一种机制以便每次处理一行或一部分行。游标就是提供这种机制的对SELECT查询结果集的一种扩展 。

游标作用:

游标提供了一种对表中检索出的数据进行操作的灵活手段。

游标从多数据记录的结果集中每次只提取一条记录。

游标总是与一条select语句相关。

游标由结果集和结果集中指向特定记录的游标位置组成。

使用时必须声明一个指向该结果集的游标。

游标特点:

游标允许应用程序对查询语句返回的行结果集中的每一行进行操作,提供基于游标位置而对表中数据进行删除和更新的功能。

游标主要功能包括:

定位在结果集中的指定行;

从结果集的当前位置检索一行或多行;

可对结果集中当前位置的行进行数据修改;

可以显示其它用户对结果集中的数据库数据进行的数据更改;

提供存储过程和触发器中使用的访问结果集的T-SQL语句。

7.存储过程

时间: 2024-10-13 12:02:36

数据库复习⑨的相关文章

数据库复习7——恢复

数据库复习 CH14 恢复 13.1 恢复的概念 数据库系统中恢复是指让数据库从发生某些"失败"后的不一致的状态恢复到正常的一致状态的行为,恢复的基础是冗余(物理上冗余,非逻辑上) 这些失败包括了: 事务失败:包括逻辑错误(事务不满足某些条件不能执行)和系统错误(DBMS强制终止事务,如事务发生死锁) 系统崩溃:断电.物理硬件损坏.软件系统(如OS)崩溃,本章假设系统崩溃不会改变非易失存储器 磁盘失败:磁盘存储发生错误,本章假设可利用检查和监测磁盘失败 大体上,恢复策略分成两个步骤:

数据库复习5——安全性

数据库复习 CH7 安全性 7.1 数据库安全性介绍 如果说完整性是针对授权用户的数据库保护措施,那么安全性就是针对非授权用户的数据库保护措施 安全性问题涉及的层面很多,非法用户可以从以下各层面对数据库的窃取或篡改: 层面 窃取或篡改行为 应对措施 数据库系统 获取高级用户数据库权限 身份验证,权限和可获取数据对等 操作系统 获取操作系统root权限想干啥就能干啥,不仅仅限于对数据库的操作了 提升操作系统安全级别 网络 通过网络窃听和身份伪装也能窃取线上机密数据 身份验证和加密传输 物理 物理上

数据库复习10——PL/SQL

数据库复习 CH10 PL/SQL 10.1 PL/SQL简介 PL/SQL是Oracle对SQL的过程化的扩展,PL/SQL可以实现SQL相关的过程化程序,并且能够以存储过程和函数的方式让一段SQL业务逻辑驻留在SQL服务器中,以便减少客户机计算任务并减少网络I/O 10.2 PL/SQL编程基础 (1)简介 PL/SQL编程框架为: DECLARE <Variable List> BEGIN <Extented SQL Execution> EXCEPTION <Exce

数据库复习6——事务

数据库复习 CH13 事务 13.1 事务的概念 事务是作为单个逻辑工作单元执行的一系列数据库操作,这些操作可能会修改多个表中的多个元组 事务正常执行的结构是: begin; SQL execution 1 SQL execution 2 ... SQL execution N commit; begin标志开始一个事务,多个SQL语句就是事务逻辑工作单元,commit(提交)是结束当前事务并提交事务内数据变更,让其生效 数据库一致性在事务上表现的比较特殊,具体来说:事务执行的过程中可以让数据库

数据库复习4——视图

数据库复习 CH6 视图 6.1 视图的概念 视图是从一个或多个表(或视图)导出的虚表,DBMS仅在数据字典中存放视图的定义,而视图的数据仍然实际存储于导出它的基表中 Tutorial D中定义视图的基本语句如下: VAR <view_name> VIEW (<relational_condition>) {<property_list>}; 那么视图有什么作用呢? 为hidden data提供安全性,即屏蔽某些不希望外界用户看到的机密数据 提供一种简写的方式,有了视图

数据库复习1——数据库体系结构和关系系统

数据库复习 CH2 数据库体系结构 2.1 数据库体系结构层次 数据库体系结构可以分成3个层次: 外部层次 概念层次 内部层次 外部层次是指每个用户用不同的高级语言来访问数据库所面对的接口,概念层次数据库信息的表示以及模的式定义(包括安全性和完整性约束等等),而内部层次就是的存储表示(非物理记录也非机器相关),数据库的设计需要保证这三个层次之间的独立性: 概念层和内部层之间物理数据的独立性 外部层和概念层之间逻辑数据的独立性 2.2 DBA和DBMS DBA(数据库管理员)必须很好的了解企业的数

数据库复习笔记(一)

为了解决冗余 这个地方一直有问题,不知道是什么原因?敲on primary老是出错 把数据库保存到某个磁盘的某个目录下的某个文件,下次可以用记事本打开这个.sql的文件,要运行则需要将这些内容拷贝到新建的 "新建查询"中 切换数据库using School 在特定的数据库中建表,注意有时需要人为的选择 都没有数据的脚本 生成数据库的脚本 生成表的脚本 在每一段的后面加一个go,是批处理的意思 这是什么意思? 若有重复的行则会自动去除,所以只会增加3行 修改数据类型的两种方法 先删除表,

数据库复习笔记(二)

update语句 备份的两种方法 1.把数据库脱机分离,然后拷贝出来 2 备份完之后需要还原才可以用备份的数据库 具体要做的时候再参考视频资料. 替换语句 即使表中的内容全部删掉,插入的时候还是继续编号 数据库复习笔记(二)

数据库复习2——SQL基础

数据库复习 CH4 SQL SQL(Structured Query Language,结构化查询语言)是通用的关系数据库系统操作语言,下面从几个方面来复习SQL基础 4.1 DDL SQL语句可根据其操作性质分成三类: DDL(Data Definition Language) DCL(Data Constraint Language) DML(Data Manipulation Language) DCL完成完整性和安全性的约束,也可以看作从属于DDL,下面介绍DCL除外的DDL部分SQL语

数据库复习11——关系模式与范式

数据库复习 CH11 关系模式与范式 11.1 关系模式的设计 数据库模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,关系型数据库的模式又叫关系模式,我所理解的关系模式就是数据库中表结构的定义以及多张表之间的逻辑联系 关系模式的设计就是根据一个具体的应用,把现实世界中的关系用表的形式来表示的逻辑设计过程,不规范的关系模式设计会带来以下的问题: 数据冗余 更新异常 插入异常 删除异常 举ppt中例子说明四种问题,如下表中描述了老师信息(一个老师一个地址,可以教多门课,一门课只有一名老