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 

相關文章
相關標籤/搜索