一、Sybase数据库简介
1.版本
1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。SYBASE主要有三种版本,一是UNIX操作系统下运行的版本,二是Novell Netware环境下运行的版本,三是Windows NT环境下运行的版本。现在最新版本已经是 12.5,在各主流Unix操作系统中均有广泛应用。IBM AIX,HP unix,Digital Unix,Sun solaris等等。
2.Sybase数据库的特点
(1)它是基于客户/服务器体系结构的数据库
一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。 而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。客户/服务器模型的好处是:
● 它支持共享资源且在多台设备间平衡负载● 允许容纳多个主机的环境,充分利用了企业已有的各种系统
(2)它是真正开放的数据库
由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其它语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。
(3)它是一种高性能的数据库
Sybase真正吸引人的地方还是它的高性能。体现在以下几方面:
● 可编程数据库
通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。
● 事件驱动的触发器
触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。
● 多线索化
Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。
3.Sybase数据库的组成
Sybase数据库主要由三部分组成:
(1) 进行数据库管理和维护的一个联机的关系数据库管理系统Sybase SQL Server;
Sybase SQL Server是个可编程的数据库管理系统,它是整个Sybase产品的核心软件,起着数据管理、高速缓冲管理、事务管理的作用。
(2) 支持数据库应用系统的建立与开发的一组前端工具Sybase SQL Toolset;
ISQL是与SQL Server进行交互的一种SQL句法分析器。ISQL接收用户发出的SQL语言,将其发送给SQL Server,并将结果以形式化的方式显示在用户的标准输出上。
DWB是数据工作台,是Sybase SQL Toolset的一个主要组成部分,它的作用在于使用户能够设置和管理SQL Server上的数据库,并且为用户提供一种对数据库的信息执行添加、更新和检索等操作的简便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜单的,因此操作比ISQL简单,是一种方便实用的数据库管理工具。
APT是Sybase客户软件部分的主要产品之一,也是从事实际应用开发的主要环境。APT工作台是用于建立应用程序的工具集,可以创建从非常简单到非常复杂的应用程序,它主要用于开发基于表格(Form)的应用。其用户界面采用窗口和菜单驱动方式,通过一系列的选择完成表格(Form)、菜单和处理的开发。
(3) 可把异构环境下其它厂商的应用软件和任何类型的数据连接在一起的接口Sybase Open Client/Open Server。
通过Open Client的DB-LIB库,应用程序可以访问SQL Server。而通过Open Server的SERVER-LIB,应用程序可以访问其它的数据库管理系统。
二、SYBASE有关概念
Sybase SQL Server是一个多库数据库系统。这些数据库包括系统数据库和用户数据库。 而不论是系统数据库还是用户数据库,都建立在数据库设备上。
1.数据库设备
所有的数据库都创建在数据库设备上。所谓数据库设备,不是指一个可识别的物理设备,而是指用于存储数据库和数据库对象的磁盘原始分区或操作系统文件。增加一个新的数据库设备时,必须对这些设备“初始化。初始化的过程就是将物理磁盘、磁盘分区或操作系统文件变为SYBASE数据库可以识别的设备。初始化数据库设备使用DISK INIT命令:
DISK INITNAME=设备名,PHYSNAME=物理设备名,VDEVNO=虚拟设备号,SIZE=块数
其中,NAME指数据库设备名,此名将用于CREATE DATABASE和ALTER DATABASE命令。PHYSNAME是原始磁盘分区或操作系统文件名。VDEVNO是数据库设备的标识号,在SQL Server中,它必须是唯一的。SIZE的单位是2K的块,对于新创建的数据库,最小的SIZE是model数据库的尺寸,即1024个2K的块(2M)。
例如:/*将/dev目录下400M的物理设备初始化为SYBASE的数据库设备tele114_log01*/
1>disk init2>name=“tele114_log01,3>physname=“/dev/rtelelog4>vdevno=45>size=204800 /*2Kbyte*204800=400Mbyte*/6>go
2、段
数据库设备从逻辑上被划分为数据库段以允许将某一特定的对象放置在指定的段上(创建对象时指定),一数据库设备可拥有多达192个段,一段可使用255个逻辑设备上的存储空间。当用户创建一个数据库时,SQL SERVER 会自动在该数据库中创建三个段: SYSTEM、LOGSEGMENT 、DEFAULT,这三个段分别用来存储数据库的系统表、事务日志和其他数据库对象 。
在数据库中创建段的步骤是:
x 先用Disk init 初始化物理设备x 通过使用Create database 和alter database 的on 子句,使数据库设备对数据库可用,于是新设备自动增加到数据库的default 和system段。
一旦数据库设备存在并对数据库可用,使用存储过程Sp_addsegment 定义数据库的段。语法如下:
Sp_addsegment 段名,数据库名,设备名
3、系统数据库
安装Sybase数据库时自动生成的下列系统数据库:
● 主数据库master;● 模型数据库model;● 系统过程数据库sybsystemprocs;● 临时数据库tempdb。
也可选择下列数据库:
● 安全审核数据库sybsecurity;● 示例数据库pubs2; ● 命令语法数据库sybsyntax。(1) master数据库
包含许多系统表和系统过程,从总体上控制用户数据库和SQL Server的操作,构成了SYBASE系统的数据字典。MASTER数据库主要记录信息为:
● 登录帐号(SQL服务器用户名);syslogins,sysremolelogins ● 正在执行的过程;sysprocesses ● 可修改的环境变量;sysconfigures ● 系统错误信息;sysmessages ● SQL服务器上每个数据库的信息;sysdatabases ● 每个数据库占用的存储空间;sysusages ● 系统上安装的磁带及磁带信息;sysdevices ● 活动锁信息;syslocks
(2) model数据库
提供了新用户数据库的初型。当我们每次用CREATE DATABASE命令 时,SQL Server都产生一个model数据库的拷贝,然后把它扩展到命令要求的尺寸。如果我们修改了model数据库,那么以后新创建的数据库都将随它而改变。下面是几个通常用到的对model数据库的改变:
● 增加用户数据库类型、规则或缺省;● 可存取SQL Server上所有数据库的用户用sp_adduser增加到model数据库上; ● 缺省权限(特别是guest帐号)可在model中建立; ● 诸如select into/bulkcopy那样的数据库选项可在model中设置。这些设置反映到所有新创建的数据库中。它们在model中最原始的值是关(off)。
在一般情况下,大多数用户无权修改model数据库,又没被授权读取。因为model中所有内容已拷贝到新数据库中,授权读model没什么意义。
1>use model2>go3>sp_help4>go Name Owner Object_type
(3) sybsystemprocs数据库
库中存储系统过程,当用户执行一存储过程(以sp_开始)时,SQL 服务器首先在用户当前数据库中搜索指定的存储过程,如果没有相应过程,则到系统过程数据库中寻找,若没有,再到MASTER数据库中寻找。
(4)临时数据库tempdb
该数据库为临时表和临时工作提供了一个存储区域。临时数据库是SQL Server上所有数据库共享的工作空间。由于这些表都是临时的,所以每当用户退出或系统失败,这些表都将消失。
(5)安全审核数据库sybsecurity
数据库中保存系统的安全审核信息,它可跟踪记录每个用户的操作情况,为维护系统安全提供控制手段。
(6)示例数据库pubs2
为用户提供一个学习SYBASE的数据库模型。
(7)命令语法数据库sybsyntax
库中保存SYBASE数据库的命令语法及支持的语言库。
4、用户数据库
用户数据库是指用Create database 命令创建的数据库。所有新的用户数据库都要在master数据库中创建,也就是说,不能存取master数据库的用户是无权创建新的数据库的。SA可以将创建数据库的权限授予其他用户。新建数据库中存在一些系统表,在sysusers表中至少有一条记录,既该数据库的创建者。数据库创建时,创建者既为该数据库的 owner, 当然创建者可以将这一地位或这一所有权用系统过程授予别的用户。
5、数据库对象
(1)表(Tables)
在一个关系数据库中,表是最重要的数据库对象,对应于关系数据库理论中关系,与DBASE或FOXPRO中的DBF文件是类似。一切数据都存放在表中。其它数据库对象都是为了用户很好地操作表中的数据。表都以一张二维表的形式存在。其中,每一列称之为一个字段,或一个域;而每一行称之为一个记录,也就是一项数据。
有一类表,它们的名字都是以sys开头的,这些表称为系统表,系统表记录着有关SQL Server的信息。在master数据库中的表大部分为系统表,这些表是随着master数据库的创建而建立的。另外,每个用户数据库在创建时都有一个系统表的子集。
例如,只有在master数据库中才有的系统表有:sysconfigures、sysdatabases、sysdevices、syslogins等;在用户数据库和系统数据库中都有的系统表有:sysalternates、syscolumns、sysindexs、syslogs、sysobjects、sysusers等。
例:
1>use master2>go3>sp_help4>go Name Owner Object_type
(2)视图(Views)
视图是查看一张或几张表中的数据的一种方式。通过将一张或几张表中的一部分数据进行组合得到视图。视图看上去与表非常相象,但与表还是有着本质的区别。通过视图看到的数据实际上都是存放在表中的,在数据库中仅存在视图的定义。
使用视图的好处是:
● 操作方便
● 安全性
(3)索引(Index)
索引是对字段生成的,用于加快数据的检索。在Sybase数据库中,索引是由系统自动管理的,也就是说,Sybase的索引操作对用户是透明的。表的索引一旦建立,系统会自动对其进行更新维护以使它与相应表对应一致;操作时,用户无须指定索引,系统会自动确定是否使用索引进行操作。
Sybase支持三种不同类型的索引,一是复合索引,即包含几个列的索引;二是唯一性索引,即任意两行中的索引列不能有相同的取值;三是簇类索引(Clustered indexes)和非簇类索引(Nonclustered indexs),簇类索引使SQL服务器不断重排表行的物理顺序以使其与逻辑索引顺序相一致,非簇类索引则不需要表行的物理顺序与逻辑顺序一致。每个表最多只能建立一个簇类索引,非簇类索引则可建立多个。与非簇类索引相比,簇类索引的检索速度要快。应当在建立任何非簇类索引以前建立簇类索引。
(4)存储过程(Stored procedures)
存储过程是用T-SQL语言编写成的SQL子例程,它存储于SQL服务器上供用户调用执行。与一般的SQL语句和批处理语句不同的是,存储过程是经过预编译的。当首次运行一个存储过程时,SQL Server的查询处理器将对其分析,并产生最终的执行方案。由于查询处理的大部分工作已经完成,所以以后执行存储过程时速度将会很快。执行存储过程时可带参数并可调用其他存储过程,执行完毕后返回信息以指示是否成功完成相应操作。存储过程有两种:一种是SQL服务器安装时自动建立的系统存储过程(系统过程),另一种是用户自己创建的存储过程。
系统过程是用于系统管理,并且为用户提供了从事数据库管理的一种途径。这些系统过程都是以sp_开头的,它们都放在master数据库中且隶属于sa(系统管理员) 。也有很多可以在任一个数据库中运行的系统过程。
常见的系统过程有:
Sp_addgroup 在当前数据库中建立一个数据库用户组 Sp_addlogin 建立一个SQL服务器用户Sp_adduser 在当前数据库中增加一个用户 sp_changegroup 改变数据库用户组 Sp_dboption 查询或改变数据库系统设置 Sp_dropdevice 删除设备 Sp_dropgroup 删除组 Sp_droplogin 删除帐号Sp_help 查询数据库对象及所有数据库信息Sp_helpdb 查询数据库信息Sp_helpdevice 查询设备信息 Sp_helpgroup 查询组信息 Sp_helpindex 查询给定表信息 Sp_helpuser 查询用户信息 Sp_lock 查询当前加锁信息 Sp_monitor 查询SQL服务器统计信息 Sp_password 改变登录帐号口令 Sp_spaceused 查询表中的行数、数据页数及空间大小 Sp_who 查询当前用户及过程信息 Sp_syntax 查询操作语法 Sp_configure 配置系统参数
(5)触发器(Triggers)
触发器是一种特殊的存储过程,用来维护不同表中的相关数据的一致性。当在一张表中插入、删除和修改数据时,触发器就会触发另一个存储过程,从而保持数据的一致性。
(6)缺省与规则(Defaults and rules)
缺省是在数据录入时,若用户没有输入数据,SQL Server自动输入的值。 规则是可以理解为对数据库、某一列、某用户数据类型的限制。
附录:只有在master数据库中才能有的系统表
系统表名 表中的内容
Sysconfigures 一行记录了用户可设置的配置参数 Syscurconfigs 有关SQL Server当前正使用的配置参数情况 Sysdatabases 一行记录了SQL Server中的一个数据库 Sysdevices 一行记录了数据库的每一磁带转储设备,磁盘转储设备,数据库设备和磁盘分区 Syslocks 有关动态锁的情况 Syslogins 一行记录了每一有效的SQL Server的用户帐号 Sysmessages 一行记录了每一系统错误或警告 Sysprocesses 有关Server进程的情况 Sysremotelogins 一行记录了一个远程用户 Sysservers 一行记录了一个远程SQL Server