第七章 SQL Server2000简介及应用
7.1 SQL Server2000概述7.1.1 SQL Server2000的结构和版本
1.SQL Server的结构
2.SQL Server2000的版本
7.1.2 SQL Server2000的环境介绍
1.系统目录用途介绍
2.自动创建的数据库
在安装SQL Server2000时,安装程序会自动创建4个系统数据库(Master、Model、Msdb、Tempdb)和两个范例数据库(Northwind、Pubs),系统数据库由系统自动维护。
(1)Master数据库:记录了所有SQL Server2000的系统信息、登录账号、系统配置设置、系统中所有数据库及其系统信息以及存储介质信息。
(2)Model数据库:是SQL Server2000为用户创建数据库提供的模板数据库,每个新建的数据库都是在一个Model数据库的副本上扩展而成的,所以对Model数据库的修改一定要小心。
(3)Msdb数据库:主要用于SQL Server2000存储任务计划信息、事件处理信息、备份恢复信息以及异常报告等。
(4)Tempdb数据库:存放所有临时表和临时的存储程序,并且供SQL Server2000存放目前使用中的表,它是一个全局的资源,临时表和存储程序可供所有用户使用。每次SQL Server2000启动时她会自动重建并且重设为默认大小,使用中它会依需求自动增长。
3.SQL Server2000提供的服务
7.1.3 工具介绍
1.SQL Server2000的主要工具
2.服务管理器
3.查询分析器
7.2 企业管理器
7.2.1 数据库的操作
1.创建数据库
2.修改数据库
3.删除数据库
4.收缩数据库
5.更改数据库名称
exec sp_renamedb '原数据库名','新数据库名'
7.2.2 表的操作
1.创建数据表
2.修改表
3.删除表
4.数据的查看和修改
7.2.3 索引
7.2.4 视图
7.2.5 存储过程
存储过程的有点主要有提供了安全机制、改进了执行性能、减少了网络流量和增强了代码的重用性。
1.创建存储过程
2.修改存储过程
3.删除存储过程
4.带参数的存储过程
7.2.6 触发器
1.触发器的基本知识
触发器是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程。触发器不能直接执行,它们只能为表上的Insert、Update、Delete事件所触发。此外触发器也不能传递或接受参数。
在SQL Server中,触发器只对每一个DML操作触发一次,无论一个DML操作一共影响了多少行。
2.创建触发器
3.修改和删除触发器
7.2.7 用户自定义函数
用户自定义函数可以分为三类:
(1)返回单值的标量函数:可以返回单个数据值。
(2)返回可更新数据表的内嵌表值函数:包含单个Select语句,且该语句可更新,返回可更新的数据表。
(3)返回不可更新数据表的多语句表值函数:包含多个Select语句,或包含一个不可更新的Select语句,返回不可更新的数据表。
1.创建返回单值的标量函数
CREATE FUNCTION func1 ( @lname varchar(50) , @fname varchar(50) )
RETURNS varchar(100) AS
BEGIN
declare @tname varchar(100)
set @tname=@fname+' '+@lname
return @tname
END
select au_id,dbo.func1(au_lname,au_fname) as name
from authors
2.创建返回可更新数据表的内嵌表值函数
内嵌表值函数返回的师表,它非常类似于视图,都包含有一条存储的select语句。但是内嵌表值函数还具有视图所没有的两个优点:预先编译和可以使用函数。
create function func2(@state varchar(10))
returns table as
return ( select * from authors where state=@state )
select * from dbo.func2('CA')
3.创建返回不可更新数据表的多表值函数
多语句表值函数既可以像标量函数那样包含复杂的代码,也可以像内嵌表值函数那样返回一个结果集。这类函数会创建一个表变量,并使用代码对它进行填充,最后返回这个表变量。多语句表值函数的主要优点是:可以用代码产生复杂的结果集,然后方便地在Select语句中使用它。因此可以使用这些函数来替代返回结果集的存储过程。
create function func3()
returns @id_zip table (id varchar(11),zip char(5))
begin
insert into @id_zip(id,zip) select au_id,zip from authors
return
end
select * from dbo.func3()
7.2.8 备份恢复与导入导出
1.备份设备
2.备份数据库
3.还原数据库
4.导入导出
7.2.9 安全管理
SQL Server的安全性是基于用户、角色、对象和权限概念的。一个用户要访问SQL Server数据库中的数据,他必须要经过三个认证过程。第一个认证过程是身份验证,使用登录账号来表示用户,身份验证只验证用户连接到SQL Server数据库服务器的资格,即验证该用户师父具有连接到数据库服务器的“连接权”。第二个认证过程是当用户访问数据库时,他必须具有对具体数据库的访问权,即验证用户是否是改数据库的合法用户。第三个认证是当用户操作数据库中的数据或对象时,他必须具有所要进行操作的操作权。
1.SQL Server的验证模式
SQL Server具有两种身份验证模式:Windows身份验证模式和混合验证模式。
2.登录账号
3.角色
7.3 T-SQL语言
7.3.1 T-SQL批处理
批处理由一条或多条T-SQL语句构成,前端应用程序会将所有这些语句作为单个代码单元发送给SQL Server。
默认的批处理分隔符是go,它只能放在单独的一行,否则不起作用。在结束一个批处理时,将会释放所有由该批处理所创建的局部变量、临时表和游标。
使用批处理要注意下面两点:
(1)CREATE DEFAULT、CREATE PROCEDURE、CREATE RULE、CREATE TRIGGER、CREATE VIEW语句不能再批处理中与其他语句组合使用。批处理必须以CREATE语句开始。所有跟在该批处理后的其他语句将被解释为第一个CREATE语句定义的一部分。
(2)不能在同一个批处理中更改表,然后引用新列。
7.3.2 变量
T-SQL语言中,变量分为局部变量和全局变量。局部变量由用户定义和维护,名称以单个@字符开头;全局变量由系统定义和维护,以两个@字符开头,用户不能定义全局变量。
声明变量时使用Declare命令,并且要指定声明的变量名及其数据类型。
局部变量的作用域(即可以使用变量的应用程序和变量的声明周期)只能是当前的批处理。新声明的变量的默认值为空值,在表达式中使用它们之前必须为它们赋初值。
为变量赋值可以使用Set命令和Select命令。它们之间的主要区别在于:Select可以从表、子查询或者视图中检索数据,并且也可以包含其他的Select子句;而Set命令则只能从表达式中获取数据。在Set和Select命令中都可以使用函数。
7.3.3 流程控制
1.If…Else语句
If…Else语句是条件判断语句,根据表达式的真假,选择执行某个语句或者语句块。
2.Begin…End
使用Begin…End语句可以将多条SQL语句封装起来,形成一个语句块,使这些语句作为一个整体执行。
3.While语句
While语句可以重复执行一个语句块,直到条件为假为止。
在While语句的循环体中可以使用Break和Continue语句。
4.Goto
T-SQL中的Goto语句可以使SQL语句的执行流程无条件地转移到指定的标签处,但是该标签只能在同一个批处理或过程中。
7.3.4 临时表和表变量
1.局部临时表
创建临时表的方法与创建用户定义表的方式基本相同,只是在创建局部临时表时必须使用由符合“#”开头的表名。实际上,临时表是创建并保存在Tempdb数据库中的。
2.全局临时表
全局临时表与局部临时表类似,区别在于作用域更广泛,所有用户都可以引用全局临时表,直到最后一个引用它的会话结束后它才会被删除。
创建全局临时表需要使用两个“#”符号开头的表名。
3.表变量
表变量类似于临时表,它的有点在于它存在于内存中。表变量与变量具有同样的作用域和生命周期
<!--EndFragment-->
页:
[1]