SQL - SERVER2000教程(7)

2019-01-12 13:42

格式:Create [Unique][Clustered|Nonclustered] Index IndexName On Table_Name(Column1,Column2..)

例1:在authors表上创立一个关于title_id列的聚集索引。 Create clustered Index cdx_title_id on authors(title_id) 例2:在titles表上的title_id列创立非聚集的唯一性索引。

Create Unique Nonclustered Index ucdx_title_id on titles(title_id) 例3:在auhtors表频繁访问的city 列和state列上创立组合非聚集索引。 Create Index ucdx_cityAndState on authors(city,state) 1.4 索引的删除

格式:Drop Index Databasename.tablename.Index_name 例:Drop Index authors.ucdx_cityAndState 1.5 索引的统计和更新 A:索引的统计

DBCC Show_Statistics(dbname.dbo.Table_name,Index_Name) 如:DBCC Show_Statistics(authors,cdx_title_id) B:索引的更新:

Update Statistics(dbname.dbo.tablename,index_name) 如:Update Statistics(pubs.dbo.authors,cdx_title_id)

第二节 视图

A.概述:虚拟的表或存储查询。 B.功能:通过视图可以实现 (1)将用户限定在特定的行上; (2)将用户限定在特定的列上;

(3)将多个表的列联接起来构成一个“表”; (4)聚合信息而非提供详细信息;

(5)可以使用视图更新表的数据,但关联表之间一般不可以; 2.1 创建视图

格式:Create view 视图名 [(列名)][with encryption] As select 语句 [with check option] 说明:A、with encryption :加密syscomments系统表项,该表项包含有Create view语句文本。 B、with check option:强制所有对视图进行的数据修改语句都要遵守select语句对视图设置的条件。

注意:(a) 定义视图的查询不可以包含Order by,Compute或Compute by 子句或者into关键字; (b) 不能在临时表上创建视图; 例1

/*在单个表上创立视图*/ Create view vw_student As

Select stuno,sname,entrancedate From student

Where entrancedate>'2002-01-01' Go

注:每个字段可以定义一个别名,表或其他对象也可创建别名 例2 创建一个视图用以显示学生的学号,姓名和所学的课程名称

Create view Vw_studentinfo As

Select a.StuNo as '学生学号',a.SName as '学生姓名',c.SourceName as '课程名称' From Student as a Join score as b On (a.StuNo=b.StuNo) Join source as c

On (b.SourceNo=c.SourceNo)

注:Join用来连接两个或多个表,on 参数指定连接条件 2.2 删除视图

Drop view vw_student 2.3 修改视图 例:

Alter view vw_studentinfo As

Select a.Sname as ?学生名称?,c.SourceName as ?课程名称?From Student as a Join Score as b On (a.StuNo=b.StuNo) Joio Source as c On(b.SourceNo=c.SourceNo) 2.4 通过视图修改数据 可以将视图看作表输入数据 例如

Create view vw_Source As

Select SourceNo as ?课程号?,SourceName as ?课程名?,SourceDesc as ?课程详细? From Source

Insert into vw_Source values(?102?,?VB?,?第二学期的重点课程?)

第七章Transact-SQL编程

第一节 变量

(1)局部变量

A.TSQL局部变量:是可以保存特定类型的单个数据值的对象。一般说来在一个批处理中被声明、定义,在这

个批处理(也可能是存储过程或触发器)中用SQL语言对这个变量赋值,或使用这个变量已经被赋予的值。

当批处理结束后,这个局部变量的生命周期就结束了。

作用:作为计数器在循环中使用;作为返回值;保存临时数据等; B.声明局部变量:

格式: Declare @变量名1 数据类型,@变量名2 数据类型…… 说明:Declare的使用:

(1)指派名称:第一个字符必为@+变量名; (2)指派系统提供或用户定义的数据类型和长度; (3)将值设置为NULL;

示例:Declare @myCount int C.给变量赋值:

Set 语句:如Set @myCount=100

Select语句:如 Select @myCount=100 综合示例 User Pubs Go

Declare @find varchar(30) Set @find=?Ring%?

Select au_lname,au_fname,phone From authors

Where au_lname like @find (2)全局变量

A)全局变量:变量名前用@@表示;在SQLServer7.0及以后的版本中,全局变量作为函数据形式被使用; B)一共30多个对于一般的用户来说,一般不用全局变量; C)SQLServer提供的系统全局变量不用声明直接使用 使用:也可声明自定义的全局变量(类似局部变量); 常用全局变量如下

@@CONNECTIONS : 返回自上次启动SQL Server以来连接或试图连接的次数,用其可让管理人员方便地了解今天所有试图连接服务器的次数。

@@DATEFIRST : 返回使用SET DATEFIRST命令而被赋值的DATAFIRST参数值。SET DATEFIRST命令用来指定每周的第一天是星期几。

@@SERVICENAME : 返回SQL Server正运行于哪种服务状态之下:如 MS SQLServer、MSDTC、SQLServerAgent。

@@TEXTSIZE : 返回SET语句的TEXTSIZE选项值SET语句定义了SELECT语句中text或image。数据类型的最大长度基本单位为字节。

@@ROWCOUNT : 返回受上一语句影响的行数,任何不返回行的语句将这一变量设置为0。 @@IDLE : 返回自SQL Server最近一次启动以来CPU处于空闭状态的时间长短,单位为毫秒。 @@IO_BUSY : 返回自SQL Server最后一次启动以来CPU执行输入输出操作所花费的时间(毫秒)。 @@CPU_BUSY : 返回自SQL Server最近一次启动以来CPU的工作时间其单位为毫秒。 @@DBTS : 返回当前数据库的时间戳值必须保证数据库中时间戳的值是惟一的。 @@CURSOR_ROWS : 返回最后连接上并打开的游标中当前存在的合格行的数量。 @@REMSERVER : 返回登录记录中记载的远程SQL Server服务器的名称。 @@VERSION : 返回SQL Server当前安装的日期、版本和处理器类型。 @@MAX_CONNECTIONS : 返回允许连接到SQL Server的最大连接数目。 @@PACK_RECEIVED : 返回SQL Server通过网络读取的输入包的数目。 @@NESTLEVEL : 返回当前执行的存储过程的嵌套级数,初始值为0。 @@LOCK_TIMEOUT: 返回当前会话等待锁的时间长短其单位为毫秒。 @@MAX_PRECISION : 返回decimal 和 numeric数据类型的精确度。 @@SERVERNAME: 返回运行SQL Server 2000本地服务器的名称。 @@PACK_SENT : 返回SQL Server写给网络的输出包的数目。 @@ERROR : 返回最后执行的Transact-SQL语句的错误代码。 @@TRANCOUNT : 返回当前连接中处于激活状态的事务数目。 @@FETCH_STATUS : 返回上一次FETCH语句的状态值。 @@SPID : 返回当前用户处理的服务器处理ID值。 @@IDENTITY : 返回最后插入行的标识列的列值。 @@PACKET_ERRORS : 返回网络包的错误数目。

@@TOTAL_ERRORS : 返回磁盘读写错误数目。 @@TOTAL_WRITE : 返回磁盘写操作的数目。 @@LANGID : 返回当前所使用的语言ID值。 @@LANGUAGE : 返回当前使用的语言名称。 @@TOTAL_READ : 返回磁盘读操作的数目。 @@TIMETICKS : 返回每一时钟的微秒数。 @@OPTIONS : 返回当前SET选项的信息。 @@PROCID : 返回当前存储过程的ID值。

第二节 流程控制命令

1) 块结构:Begin----End 2)If-else- 条件分支: 如: Use Pubs

Go --这是批处理标识符,表示上面的代码交给服务器编译

If (select avg(price) from titles where type=?mod_cook?)<15 --判断表中有此记录 Begin

Print ?下列书是优秀的烹调书籍?

Select substring(title,1,35) as title From titles Where type=?mod_book? End Else

Print ?这是价格较为昂贵的烹调书籍? 3). waitfor

Waitfor delay ?时间? 延迟多长时间 Waitfor time ?时间? 具体某个时间执行 例1:

waitfor delay ?00:00:03? --将在3秒钟之后执行select语句 select * from student 例2:

waitfor time ?22:30:02? --将在22:30:02s时执行select语句 select * from student1 4) While(条件语句)条件循环 示例:

Create table test(id int,name char(3)) Go Declare @fcount int set @fcount=0 while (@fcount<6) Begin

--向字段id编号及name添加字符 并转换为ASCII码对应的字符 Insert into Test values(@Fcount,CHAR(@Fcount+ASCII(?a?))) Set @Fcount=@Fcount+1 End

5) Goto

说明:用来改变程序执行的流程,使程序跳到标有标识和程序继续执行; 语法:Goto 标识符 示例 :分行打印字符1至5 Declare @Fcount int Begin

Select @Fcount=1 Label:

Print Cast (@Fcount as varchar) Select @Fcount=@Fcount+1 While @Fcount<6 Goto Label End

6) Return语句

说明:无条件终止查询、存储过程或批处理处理。存储过程或批处理中Return语句后面的语句都不执行;当在存储过程中使用Return语句时,此

语句可以指定返回给调用的应用程序、批处理或过程的整数值。如Return未指定值,则存储过程返回0。大多数存储过程按常规使用返回代码表示

存储过程的成功或失败。没有发生错误时存储过程返回0。任何非零值表示有错误发生。 语法:Return [integer_expression] (注:此处到讲解存储过程时再介绍) 7)Break 退出while循环 8)Continue 结束本次循环 9)Case表达式

格式:case 判断表达式(变量)/选择条件表达式 when 表达式/条件 then 语句 ………………

when 表达式 then 语句 end 例:

select name,chengji= case

when price<60 then ?不及格? when price>60 then ?及格? end

from student 10)批处理语句 Go

第三节 存储过程

1.存储过程的概述

存储过程是SQL语句的预编译集合,它存储在数据库内,可由应用程序通过一个调用执行,而且充许用户声明

变量、有条件执行以及其它强大的功能。使用存储过程可以使程序模块化,可以在服务器端更快的执行,可


SQL - SERVER2000教程(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:[最新推荐]大学生暑假兼职打工的心得体会-范文模板(3页)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: