Sybase数据库简介(1)

1、Sybase数据库简介 前端

1.版本git

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,应用程序能够访问其它的数据库管理系统。  
2、SYBASE有关概念  

Sybase SQL Server是一个多库数据库系统。这些数据库包括系统数据库和用户数据库。 而不管是系统数据库仍是用户数据库,都创建在数据库设备上。 

1. 数据库设备 

全部的数据库都建立在数据库设备上。所谓数据库设备,不是指一个可识别的物理设备,而是指用于存储数据库和数据库对象的磁盘原始分区或操做系统文件。增长一个新的数据库设备时,必须对这些设备“初始化”。初始化的过程就是将物理磁盘、磁盘分区或操做系统文件变为SYBASE数据库能够识别的设备。初始化数据库设备使用DISK INIT命令:  
DISK INIT  
NAME=设备名,  
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 init  
2>name=“tele114_log01”,  
3>physname=“/dev/rtelelog”  
4>vdevno=4  
5>size=204800 /*2Kbyte*204800=400Mbyte*/  
6>go 

二、段 

数据库设备从逻辑上被划分为数据库段以容许将某一特定的对象放置在指定的段上(建立对象时指定),一数据库设备可拥有多达192个段,一段可以使用255个逻辑设备上的存储空间。当用户建立一个数据库时,SQL SERVER 会自动在该数据库中建立三个段: SYSTEM、LOGSEGMENT 、DEFAULT,这三个段分别用来存储数据库的系统表、事务日志和其余数据库对象 。

在数据库中建立段的步骤是:  
x 先用Disk init 初始化物理设备  
x 经过使用Create database 和alter database 的on 子句,使数据库设备对数据库可用,因而新设备自动增长到数据库的default 和system段。  
一旦数据库设备存在并对数据库可用,使用存储过程Sp_addsegment 定义数据库的段。语法以下:  
Sp_addsegment 段名,数据库名,设备名 

三、 系统数据库 

安装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 model  
2> go  
3> sp_help  
4> go  
Name Owner Object_type  
--------------- --------------- ----------------------  
sysalternates dbo system table  
syscolumns dbo system table  
syscomments dbo system table  
sysconstraints dbo system table  
sysdepends dbo system table  
sysgams dbo system table  
sysindexes dbo system table  
syskeys dbo system table  
syslogs dbo system table  
sysobjects dbo system table  
sysprocedures dbo system table  
sysprotects dbo system table  
sysreferences dbo system table  
sysroles dbo system table  
syssegments dbo system table  
systhresholds dbo system table  
systypes dbo system table  
sysusermessages dbo system table  
sysusers dbo system table 

(3) sybsystemprocs数据库  
库中存储系统过程,当用户执行一存储过程(以sp_开始)时,SQL 服务器首先在用户当前数据库中搜索指定的存储过程,若是没有相应过程,则到系统过程数据库中寻找,若没有,再到MASTER数据库中寻找。  
(4)临时数据库tempdb  
该数据库为临时表和临时工做提供了一个存储区域。临时数据库是SQL Server上全部数据库共享的工做空间。因为这些表都是临时的,因此每当用户退出或系统失败,这些表都将消失。  
(5)安全审核数据库sybsecurity  
数据库中保存系统的安全审核信息,它可跟踪记录每一个用户的操做状况,为维护系统安全提供控制手段。  
(6)示例数据库pubs2  
为用户提供一个学习SYBASE的数据库模型。  
(7)命令语法数据库sybsyntax  
库中保存SYBASE数据库的命令语法及支持的语言库。

四、用户数据库

用户数据库是指用Create database 命令建立的数据库。全部新的用户数据库都要在master数据库中建立,也就是说,不能存取master数据库的用户是无权建立新的数据库的。SA能够将建立数据库的权限授予其余用户。新建数据库中存在一些系统表,在sysusers表中至少有一条记录,既该数据库的建立者。数据库建立时,建立者既为该数据库的 owner, 固然建立者能够将这一地位或这一全部权用系统过程授予别的用户。

五、数据库对象

(1)表(Tables)  
在一个关系数据库中,表是最重要的数据库对象,对应于关系数据库理论中关系,与DBASE或FOXPRO中的DBF文件是相似。一切数据都存放在表中。其它数据库对象都是为了用户很好地操做表中的数据。表都以一张二维表的形式存在。其中,每一列称之为一个字段,或一个域;而每一行称之为一个记录,也就是一项数据。  
有一类表,它们的名字都是以sys开头的,这些表称为系统表,系统表记录着有关SQL Server的信息。在master数据库中的表大部分为系统表,这些表是随着master数据库的建立而创建的。另外,每一个用户数据库在建立时都有一个系统表的子集。  
例如,只有在master数据库中才有的系统表有:sysconfigures、sysdatabases、sysdevices、syslogins等;在用户数据库和系统数据库中都有的系统表有:sysalternates、syscolumns、sysindexs、syslogs、sysobjects、sysusers等。  
例:

1> use master  
2> go  
3> sp_help  
4> go  
Name Owner Object_type  
------------------------------ ----------
spt_committab dbo user table  
spt_datatype_info dbo user table  
spt_datatype_info_ext dbo user table  
spt_monitor dbo user table  
spt_server_info dbo user table  
spt_values dbo user table  
sysalternates dbo system table  
syscharsets dbo system table  
syscolumns dbo system table  
syscomments dbo system table  
sysconfigures dbo system table  
sysconstraints dbo system table  
syscurconfigs dbo system table  
sysdatabases dbo system table  
sysdepends dbo system table  
sysdevices dbo system table  
sysengines dbo system table  
sysgams dbo system table  
sysindexes dbo system table  
syskeys dbo system table  
syslanguages dbo system table  
syslisteners dbo system table  
syslocks dbo system table  
sysloginroles dbo system table  
syslogins dbo system table  
syslogs dbo system table  
sysmessages dbo system table  
sysmonitors dbo system table  
sysobjects dbo system table  
sysprocedures dbo system table  
sysprocesses dbo system table  
sysprotects dbo system table  
sysreferences dbo system table  
sysremotelogins dbo system table  
sysroles dbo system table  
syssegments dbo system table  
sysservers dbo system table  
syssrvroles dbo system table  
systestlog dbo system table  
systhresholds dbo system table  
systypes dbo system table  
sysusages dbo system table  
sysusermessages dbo system table  
sysusers dbo system table  
sp_configure dbo stored procedure  
sp_dboption dbo stored procedure  
sp_getmessage dbo stored procedure  
sp_procxmode dbo stored procedure  
sp_prtsybsysmsgs dbo stored procedure  
sp_validlang dbo stored procedure 

 

说明见附录表1

(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 配置系统参数

例:

1> sp_helpdb  
2> go  
name db_size owner dbid created status  
------------------------------------------------------------- 
master 3.0 MB sa 1 Jan 01, 1900 no options set  
model 2.0 MB sa 3 Jan 01, 1900 no options set  
sybsystemprocs 10.0 MB sa 4 Oct 24, 1997 trunc log on chkpt  
tele114 370.0 MB sa 5 Oct 24, 1997 select into/bulkcopy, trunc log on chkpt  
tempdb 22.0 MB sa 2 May 05, 1998 select into/bulkcopy  
(0 rows affected, return status = 0)  
例:  
1> sp_monitor  
2> go  
last_run current_run seconds  
-------------------------- -------------------------- 
May 5 1998 4:09PM May 5 1998 4:13PM 224  
(0 rows affected)  
cpu_busy io_busy idle  
------------------------- ------------------------- 
17(1)-0% 5(0)-0% 923(223)-99%  
(0 rows affected)  
packets_received packets_sent packet_errors  
------------------------- ------------------------- 

21(9) 51(23) 0(0) 
(0 rows affected) 
total_read total_write total_errors connections 
------------------- ------------------- ------------------- 
947(1) 595(113) 0(0) 3(1) 
(0 rows affected, return status = 0) 


(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