程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> Sybase數據庫介紹

Sybase數據庫介紹

編輯:SyBase教程

一、Sybase數據庫簡介
1.版本
1984年,Mark B. Hiffman和Robert Epstern創建了Sybase公司,並在1987年推出了Sybase數據庫產品。SYBASE主要有三種版本,一是UNIX操作系統下運行的版本,二是Novell Netware環境下運行的版本,三是Windows NT環境下運行的版本。對UNIX操作系統目前廣泛應用的為SYBASE 10 及SYABSE 11 for SCO UNIX。 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 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  
2、段
數據庫設備從邏輯上被劃分為數據庫段以允許將某一特定的對象放置在指定的段上創建對象時指定),一數據庫設備可擁有多達192個段,一段可使用 255個邏輯設備上的存儲空間。當用戶創建一個數據庫時,SQL SERVER 會自動在該數據庫中創建三個段: SYSTEM、 LOGSEGMENT 、DEFAULT,這三個段分別用來存儲數據庫的系統表、事務日志和其他數據庫對象 在數據庫中創建段的步驟是:
先用Disk init 初始化物理設備 通過使用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 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數據庫的命令語法及支持的語言庫。
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 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自動輸入的值。 規則是可以理解為對數據庫、某一列、某用戶數據類型的限制。
三、SQL 查詢語言
SQL不僅包括查詢數據的有關命令,還包括創建數據庫及其對象,增、刪、改數據等功能。分別定義為數據查詢語言,數據定義語言及數據操作語言。這裡先介紹數據查詢語言。其基本句法為: Select select_list from table_list where search_conditions
1、簡單查詢  
A、選擇若干列  
Select expression [,expression]... From table_list  
B、選擇若干行  
查出電話號碼以415到頭的記錄  
Select * from code_1th where tel like '415%'  
查詢中消除值重復的行  
Select distinct tel from code_1th  
對Text 和 char 可用 like ,其中可用通配符‘%’及‘-’,
分別代表多個字符和單個字符。  
其他常用查詢條件有:(出text類型除外)  
大小比較 =、>、<、>=、<=、!=、!>、!<  
范圍確定 between exp1 and exp2 /net between exp1 and exp2  
列表或集合 in (exp1[,exp2,[...]]) not in (...)  
謂詞 like  
多重條件 and or not  
2、連接查詢  
A、等值連接和不等值連接:通過‘=’來比較兩個表之間的數據時,
    稱為等值連接;而通過其他比較符時,稱為不等值連接  
等值連接:  
Select * from publishers, authors where publishers.city=authors.city  
不等值連接:  
B、自然連接: 在連接的目標列中相同名的列只保留一個  
Select publishers.pub_id publishers.pub_name, 
publishers.state, authors.*  
From publishers, authors where 
publishers.city=authors.city  
3、子查詢  
A、表達式子查詢  
Select au_lname, au_fname from authors where city=  
(select city from publishers where pub_name="abcde")  
可以使用一切大小比較操作符;在操作符和子查詢之間可以使用All 或any。  
B、限定謂詞子查詢  
Select pub_name from publishers from publishers  
Where pub_id in  
(select pub_id from titles where type='abcde')  
C、相關查詢  
相關查詢即嵌套查詢依賴於外部父查詢的值,
嵌套查詢要重復執行若干次。  
Select distinct t1.type from titles t1  
Where t1.type in ( select t2.type from titles t2 
                 where t1.pub_id!=t2.pub_id)  
4、集函數、分組與排序  
A、對查詢結果進行聚集處理  
聚集函數: Sum([all|distinct] expression),
avg([all|distinct] exoression) ,  
Count([all|distinct]expression), count(*), 
max(expression), min(expression)  
Select count(*) from titles  
B、用Group by 和 having 子句對查詢結果分組  
Select type ,avg(advance), sum(total_sales) from 
titles group by type  
Select type from titles group by type
 having count(*) >1  
Having 類似於where , 但where 不能用聚集函數。  
C、用Order by 對查詢結果進行排序  
Select type ,avg(price) from titles group by 
type order by avg(price)  
D、Compute 子句  
完成基於每一組中的值的聚集運算,聚集值
作為一個新行出現在查詢結果中。  
Select type ,price advance from titles
 order by type compute sum(price), sum(advance) by type 
 
四、數據庫、數據庫對象的增、刪、改  
1、數據庫  
x 打開數據庫  
Use tele114  
x 創建數據庫。擁有創建數據庫權利的用戶可以創建自己的數據庫。  
CREATE DATABASE tele114  
ON tele114_def01=10,tele114_run01=200,tele114_idx01=200  
LOG ON tele114_log01=80  
x 刪除數據庫  
Drop database tele114  
x 修改數據庫  
Alter database tele114 on tele114_run02=100, tele114_idx02=100  

2、表  
x 建表  
create table spec_code  
(  
No tinyint not null, /*特編號(0--99)*/  
Name varchar(50) null, /*名稱*/  
Addr varchar(50) null, /*地址*/  
Tel varchar(null, /*電話號碼*/  
StaffNo varchar(4) not null /*錄入員工號*/  
)  
on segrun /*將表放在segrun段上*/  
x 刪除表  
Drop tabel tele114_1th  
x 修改表,在表中增加新的列(用這個命令增加的列必須允許null值)  
Alter table friends_etc add country varchar(20  null  x 表級或列級約束  
Create table my_publishers  
(pub_id char(4),  
Pub_name carchar(40).  
Constraint my_chk_constraint  
Check (pub_id in ('1389','0736','0877'))  
Or (pub_name not like 'bad news books'))  
x 指定默認值  
Create table ny_titles  
(title_id char(6t),  
Title varchar(80),  
Price money default null,  
Total_sales int default (0))  
x 指定Unique 和primary key 約束  
Primary key 不允許空值,常用來產生唯一的聚集索引,
unique 允許空值,常用來產生唯一的非聚集索引  
Create table my_sales  
(stor_id char(4),  
Ord_num varchar(20),  
Date datetime,  
Unique clustered(stor_id,ord_num))  
3、索引  
x 建立索引  
create unique clustered index code1thidx1 on code_1th(Code1,Name,UnitNo1,Used)  
on segrun  
Unique: 建立唯一性索引  
Clustered : 建立聚集索引,使得數據行的邏輯順序與物理順序一致,查詢速度較快;
每個表僅允許建立一個唯一性索引。(非聚集索引nonclustered)  
On segrun:將索引放在segrun上  
x 刪除索引: drop index code_1th.code1thidx1  
4、 默認:當用戶沒有顯示地為某一列賦值時,SQL SERVER 為該列插入的值  
x 創建默認值CA,把默認值CA用到friends_etc表中的State列上  
Creat default statedflt  
Go  
Sp_bindefault statedflt, "frends_etc.state"  
go  
x 斷離默認  
Sp_unbindefault "frends_etc.state"  
x 刪除默認  
Drop default statedflt  
5、規則:可以理解為對數據庫、某一列、某用戶數據類型的限制.
規則中的任何變量名必須  
冠以@,不能直接引用列或其他數據庫對象。  
x 創建規則並把他關聯到用戶定義的數據類型P#上  
Create rule phonerule as @phone like 415[0-9][0-9][0-9][0-9]  
Sp_bindrule phonerule ,"p#"  
x 斷離規則  
Sp_unbindrule "p#"  
x 刪除規則  
Drop rule phonerule  
6視圖:視圖是從一個或多個基本表或其他視圖上導出的表,
可以在視圖上進行增、刪、改  
x 創建視圖  
創建視圖的句法為:  
create view view_name  
(column_1,...,column_n)  
as select_statements  
例:在authors表和publishers表上定義一個視圖如下:  
Create view cities (authorname, acity, publishername, pcity)  
As select au_lname,authors.city, pub_name, publishers.city  
From authors, publishers  
x 通過使用Drop view 命令來撤消一個視圖  
Drop view view_name  
7、存儲過程  
x 創建存儲過程  
CREATE PROCEDURE procedure_name [(para1[,para2, ...])]  
As sql_statements  
存儲工程的參數名必須一@開頭,包括@最長為30個字符。  
x 執行存儲過程  
EXEC[UTE] procedure_name [(para1[,para2, ...])]  
存儲過程能夠返回一個整數,用來指示存儲過程執行是完全錯誤還是錯誤。
SQL SERVER 用0指示成功的返回,-1~-99指示不同的錯誤。
當前所用的0及-1~-14的含義如表所示。  
值 含義  
0 過程執行無錯  
-1 丟失對象  
-2 數據類型錯誤  
-3 進程被選作死鎖的犧牲品  
-4 權限錯誤  
-5 語法錯誤  
-6 各種用戶錯誤  
-7 資源錯誤:如空間錯誤  
-8 非嚴重的內部錯誤  
-9 觸及系統限制  
-10 嚴重的內部不一致  
-11 嚴重的內部不一致  
-12 表或索引壞了  
-13 數據庫壞了  
-14 硬件錯誤  
x 更改存儲過程名  
Sp_rename objname newname  
x 刪除存儲過程  
DROP PROCEDURE procedure_name  
8 、觸發器  
x 創建觸發器  
CREATE TRIGGER [owner.]trigger_name  
ON [owner.]table_name  
{FOR INSERT,UPDATE,DELETE}  
AS  
SQL_statements  
或使用IF UPDATE 子句:  
CREATE TRIGGER [owner.]trigger_name  
ON [owner.]table_name  
{FOR INSERT,UPDATE}  
AS  
[IF UPDATE (column_name)  
[{AND|OR} UPDATE (column_name)]...}  
SQL_statments  
[IF UPDATE(column_name)  
[{AND|OR} UPDATE column_name)]...  
SQL_statements]...  
x 觸發器的刪除  
DROP TRIGGER [owner.]trigger_name  

五、批處理和流控制語言  
1、批處理  
SYBASE系統允許用戶將若干條相關的語句組成一個整體,
交給系統同時處理。 一批語  
句的結束以go語句為標志。嚴格地講,
單條SQL語句也是一個批處理。  
例:Select count(*) from titles  
Select count(*) from authors  
Go  
也可以將一組SQL命令放在一個操作系統文件中,
再將這個文件交給isql執行。  
2、流控制語言  
流控制語句  
在批處理中,我們可以加入流程控制語句,
從而達到編程的目的。在T-SQL語言中,  
流控制語句有:  
· if。。。Else。。。  
· begin。。。End。。。  
· while和break。。。Continue  
· declare和局部變量以及全局變量  
· Goto  
· Return  
· Waitfor  
· print和Raiserror  
· 注釋  
例:  
if exists(select * from zyl  
where xm="李軍")  
print "ok"  
else  
print "no this one"  
使用批處理有以下規則:  
x CREATE PROCEDURE、CREATE RULE、 CREATE DEFAULT 、
CREATE TRIGGER 以及 CREATE VIEWE 必須單獨交給SQL SERVER, 
他們不能和別的SQL語句一起作批處理CREATE DATABASE、 CREATE TABLE 
和CREATE INDEX 能和其他語句組成批處理)。  
x 規則和默認值都不能在一組批處理中剛關聯就使用。  
x USE命令必須在引用這個數據庫的對象的語句的前一組批處理中提交。  
x 不能剛刪除DROP)一個數據庫對象又在同一批處理中重新創建他。  
x 用SET語句做的任何選擇設置在批處理尾處發生作用。
可以把SET語句和查詢語句放入一組批處理中,
但SET選擇項不能在這組批處理中使用。  

六、系統的啟動和關閉  
1、啟動SQL Server  
應用SQL Server安裝程序sybinit)創建SQL Server或Backup Server, 
默認文件名為RUN_SYBASE 和RUN_SYB_BACKUP,放在¥SYBASE/INSTALL目錄下。  
Startserver 用來啟動一SQL Server 或Backup Server:  
Startserver -f RUN_SYBASE  
Startserver -f RUN_SYB_BAKUP  
可以通過showserver查看SQL ServerBackup Server是否已經啟動,
在$SYASE/INSTALL下運行showserver 查看SQL Server 是否啟動  
UID PID PPID C STIME TTY TIME CMD  
Backup Server已啟動的信息)  
sybase 831 830 0 17:23:50 ttyp1 00:00:00 
/sybase/bin/backupserver 
 SYB_BACKUP -I/sybase/interfaces -M/sybase/bin/sybmul  
SQL Server已啟動的信息)  
sybase 674 1 0 14:29:11 ttyp0 00:00:45 
/sybase/bin/dataserver -d/sybase/master.dat 
YBASE -e/sybase/install/errorlog  
SQL Server的啟動過程  
master數據庫啟動
2、啟動SQL Server的單用戶模式  
如果要恢復一已被損壞的master數據庫,
則必須要啟動SQL Server的單用戶模式。
單用戶模式下僅允許一個系統管理員向SQL Server注冊。  
Startserver -f RUN_SYBASE -m  
3、關閉服務器  
關閉SQL Server可以在isql中使用T-SQL命令:  
關閉SQL備服務器  
shutdown SYB_BACKUP  
關閉SQL主服務器  
shutdown [with nowait]  

4、Sybase數據庫目錄說明  
/usr/sybase =.. 主目錄  
.. /install 安裝程序  
../bin 執行程序  
../include 庫函數文件  
../lib 宿主語言庫  
../doc 聯機文件  
../scripts SQL 動態描述文件  
../help 幫助信息  
../locales 語言限制文件  
../termdef 終端定義文件  
../charsets 字符集文件  
七、SQL Server的用戶及權限  
Sybase中的用戶分為兩種:SQL服務器用戶登錄帳號)和數據庫用戶。  
安裝完SQL服務器後,系統自動建立一個SQL服務器用戶sa,口令為空,
即系統管理員,他對整個系統有操作權,其他用戶均由系統管理員建立。  
在SQL Server中有三種特殊的用戶:系統管理員、用戶數據庫所有者
建立相應數據庫的數據庫用戶)DBO、一般用戶。系統管理員對整個系統有操作權;
用戶數據庫所有者對他所建立的數據庫具有全部操作權利;
一般用戶對給定的數據庫只有被授權的操作權限。  
數據庫用戶一般可分為用戶組,任一數據庫在建立後即被賦予一個用戶組public。  
1、建立SQL服務器用戶名登錄帳號)  
作為一個用戶,為了使用SQL Server,他必須在SQL Server上有一個SQL服務器用戶名登錄帳號)。
這個帳號是系統管理員通過sp_addlogin來增加的。  
sp_addlogin 登錄名,口令,庫名,語言,全名  
例:建立用戶zhang, 口令為zhangling(最低六位),全名為Zhang ling  
1> sp_addlogin zhang,zhangling,null,null,"Zhang ling"  
2> go  
3> select * from syslogins  
4> go  
2、增加數據庫用戶名  
同樣,為了使用SQL Server上的數據庫,他必須在數據庫中有一個用戶名,
這個用戶名是數據庫所有者通過sp_adduser來增加的。數據庫用戶名不必和
用戶帳戶一樣,而且在不同的數據庫中用戶名可以不同。
多個用戶可以有相同的SQL Server帳戶。同樣,
多個SQL Server帳戶可以有相同的數據庫名。  
sp_adduser 登錄名,別名,組名  
登錄名為用戶的SQL服務器登錄名;別名為用戶在數據庫中的用戶名;
組名為用戶所屬的數據庫用戶組。  
例:用戶zhang增加為tele114的用戶,別名為zhang1,屬於用戶組china  
1>sp_addgroup china  
2>go  
1>sp_adduser zhang,zhang1,china  
2>go  
1> sp_helpuser  
2> go  
*例:刪除別名zhang1,用戶組china,登錄名zhang  
1> use tele114  
2> go  
3> sp_dropuser zhang1  
4> go  
5> sp_helpuser  
6> go  
1>sp_dropgroup china  
2>go  
1> sp_helpgroup  
2> go  
3> use master  
4> go  
5> sp_droplogin zhang  
6> go  
7> select * from syslogins  
8> go  
3、數據庫操作授權  
grant 命令序列 to 用戶名  
A. 系統管理員可以授予其他用戶CREATE DATABASE的權限,
使其他用戶可以成為數據庫所有者。  
B. 數據庫所有者在他所擁有的數據庫中,
可以授予其他用戶的權限有:  
l CREATE TABLE ------------------- 建表  
lCREATE DEFAULT ------------------ 建缺省  
lCREATE RULE ------------------- 建規則  
lCREATE PROCedure ------------------ 建存儲過程  
lCREATE VIEW ------------------- 建視圖  
lDUMP DATABASE ------------------- 備份數據庫  
lDUMP TRANsaction ------------------ 備份日志  
C. 數據庫對象所有者可以授予其他用戶的操作權限有:  
l SELECT  
l UPDATE  
l INSERT  
l EXECute  
l DELETE  
l REFERENCE  
例:授予zhang1在數據庫tele114上建表,建視圖,建存儲過程;
對表students有select,reference權;對name,native字段有update權。  
1> use tele114  
2> go  
3> grant creat table,create procedure ,create view to zhang1  
4> go  
5> grant select,reference on students to zhang1 with grant option  
6> go  
7> grant update on students(name,native) to zhang1  
8> go  
9> sp_helprotect  
10> go  
八、數據庫備份與恢復  
SQL Server提供了兩種不同類型的恢復:
一類是系統自動完成的恢復;另一類是人工完成的恢復。  
1.系統軟件故障恢復  
系統自動恢復是在系統軟件出現故障的情況下
通過重新啟動SQL Server進行恢復。  
自動恢復從master數據庫開始,然後是model數據庫,
再是temporary數據庫,最後是用戶數據庫。在每個數據庫上,
恢復機制觀察事務日志。如果日志寫入比數據庫更近的數據,
則向前恢復數據庫。如果事務尚未完成,則要回退它們。  
所謂事務日志就是一張系統表,syslogs。
在這張表中記錄著對數據庫的更新請求,
例如插入、修改和刪除。查詢操作不記入事務日志中。  
2.介質故障的恢復  
一旦介質發生故障,只有通過以前備份的數據庫和事務日志才能恢復數據庫,
為此我們需要經常備份數據庫和事務日志。
備份數據庫和事務日志我們使用dump命令,而恢復數據庫和事務日志我們使用load命令。  
與創建數據庫需要一個數據庫設備類似,
我們備份數據庫和事務日志也需要一個卸出設備。
增加卸出設備可以通過系統過程sp_addumpdevice來實現。
卸出設備可以是磁盤、磁帶或操作系統文件。  
sp_addumpdevice "type",device_name,physicalname  
例:  
sp_addumpdevice "disk", "db114", "/usr/sybase/zyl114.bak",1  
1) 備份數據庫和事務日志  
備份數據庫的語法為:  
dump database database_name to dump_device  
例如:  
dump database tele114 to db114  
備份事務日志的語法為:  
dump transaction database_name to dump_device  
[with truncate_only | with no_log | with no_truncate]  
前兩項在日志中刪除提交的事務,後一項不刪除。  
在備份數據庫前的所有事務日志備份都是沒有意義的。
我們一般不經常備份數據庫,但我們要經常備份事務日志。
這是因為備份事務日志比備份數據庫需要更少的時間和存儲空間。  
2)恢復用戶數據庫  
要恢復已被破壞的數據庫,可以按如下步驟進行:  
· 用帶no_truncate選項的dump命令卸出用戶數據庫事務日志。  
· 用和被破壞的數據庫的同樣的結構建立一個新的數據庫。  
· 用load命令重新裝入數據庫和事務日志。  
裝入數據庫的語法為:  
load database database_name  
from file_name  
裝入事務日志的語法為:  
load transaction database_name  
from file_name  
例:數據庫備份  
1> dump db_name to file_name  
2> go  
數據庫恢復  
1> load db_name from file_name  
2> go  
日志備份  
1> dump transaction db_name to file_name  
2> go  
日志恢復  
1> load transaction db_name from file_name  
2> go  
日志刪除  
1> dump transaction db_name with truncate_only  
2> Go  
3)master數據庫的恢復  
A、保存系統表的拷貝:sysdatabases、sysdevices、
sysusages、sysloginroles和Syslogins。  
B、轉儲主設備上的用戶數據庫。  
C、關閉SQL Server並使用buildmaster建立新的master數據庫或主設備。  
Buildmaster -m ...僅重建master數據庫  
Buildmaster ...重建主設備  
D、已單用戶模式啟動SQL Server( Master-Recover 
Startserver -f RUN_服務器名 -m  
E、若master數據庫用alter database 命令擴展過,
嚴格重建它在sysusages中的分配。  
F、若Backup Server 的網絡名接口文件中的名字)
不是SYB_BACKUP,在sysservers中改動網絡名。  
Update sysservers set srvnetname="PRODUCTION_BSRV" 
where srvname="SYB_BACKUP"  
G、使用showserver查看,檢查確保Backup Server正運行,
若有必要,重啟Bakup Server  
H、裝載master的備份。  
Load database master from 'master.bak'  
Load database執行成功後,SQL Server 自動關閉。  
I、若自master的上次轉儲以來增加過數據庫設備,
執行disk reinit命令以重建sysdevices。  
J、若執行了disk reinit,或自上次轉儲以來使用過create database
或alter database,執行disk refit 重建sysusages和sysdatabases表,
執行完畢後SQL Server自動關閉。  
K、檢查一致性:比較sysusages和sysdatabases的備份和新的聯機版本,
對每個數據庫執行dbcc checkalloc, 並檢查每個數據庫中重要的表;
若發現錯誤重新執行disk reinit和disk refit。  
L、若恢復了整個主設備,則恢復model數據庫。  
Cd $SYBASE/scripts  
Setenv DSQUERY 服務器名  
Isql -Usa -P口令 -S服務器名 M、重新裝載所有受影響的用戶數據庫。  
N、恢復服務器用戶ID。  
O、以多用戶模式重新啟動SQL Server。  
4)恢復model 數據庫  
Buildmaster -d/設備名 -x  
5)恢復sybsystemproces數據庫  
A、刪除sybsystemproces數據庫若物理磁盤損壞,刪除設備,
使用Disk init 重建設備)  
B、重建數據庫  
Create database sybsystemporces on 設備名=數據庫大小  
C、恢復數據庫  
Cd $SYBASE/scripts  
Setenv DSQUERY 服務器名  
Isql -Usa -P口令 -S服務器名 九、幾個實用程序  
1、bcp  
以用戶指定的形式將數據庫表拷貝到操作系統文件中,
或從操作系統文件中拷貝一個數據庫表。
提供了在數據庫表和操作系統文件之間傳遞數據的一個方便、快速的方法。  
bcp [[database-name.]owner.]table_name {in|out} datafile [各種開關]  
其中,table_name是想要拷貝的數據庫表名;{in/out}為拷貝方向,
in表示從文件到數據庫的拷貝,out表示從數據庫到文件的拷貝;
datafile是操作系統文件的全路徑名。  
常用的開關有:  
-f formatfile----存有上次使用bcp處理同一表時得到的應答文件的全路徑名,
格式文件名的擴展名為.fmt。使用格式文件,省去了再重復回答前面的問題。  
-U username----允許用戶指定一個注冊名。  
-P password----允許用戶指定當前的SQL Server口令。
如果未使用-P選項,bcp將提示輸入一個口令。  
-S Server----允許用戶指定與其相連的SQL Server的名字。  
例:在客戶端備份tele114數據庫中code_1th表,按照code_1th.fmt的格式  
c> bcp tele114..code_1th out code_1th.txt -杅code_1th.fmt 朥sa 朠  
2、 isql  
與SQL Server交互的SQL句法分析器。  
isql [各種開關]  
常用的開關有:  
-U username----允許用戶指定一個注冊名。  
-P password----允許用戶指定當前的SQL Server的口令。  
-S Server----允許用戶指定與其連接的SQL Server的名稱。  
-i輸入文件  
-o輸出文件  
終止一條命令:go  
清除查詢緩沖:reset  
調用編輯器:vi  
執行一條操作系統命令:!!命令  
退出isql:quit或exit  
3、showserver  
顯示當前在本機上正在運行的SQL Server。  
showserver  
4、startserver  
啟動SQL Server。  
startserver [各種開關]  
常用的開關有:  
-f runserverfile----指定一個運行服務器文件名,
每次重啟SQL Server時,以這個文件為參考。在我們的實際機器上,
這個文件名為RUN_SYBASE或RUN_SYB_BACKUP。  
-m ----以單用戶的方式啟動SQL Server。這個方式用於恢復master數據庫。  
5、syman  
顯示聯機的庫例程,系統過程及實用程序手冊。  
syman [keyword]  
syman實用程序的聯機文本文件存放在$SYBASE下的doc子目錄中。  
6、dbcc 數據庫一致性檢查  
Dbcc 用來檢查一個數據庫的邏輯一致性和
物理一致性。通常在下面的情況下使用dbcc:  
x 常規數據庫維護  
x 確定當一個系統錯誤後可能損壞的范圍  
x 在備份數據庫之前  
x 懷疑數據庫受到損壞。  
dbcc有兩個主要功能:可檢查分配表結構
命令checkalloc、tablealloc和Indexalloc);可檢查頁鏈接和頁級、
行級上的數據指針。  
只有表屬主可以用checktable、fix-text和reindex選項執行dbcc命令。
只有數據庫屬主可以使用checkdb、 checkalloc、checkcatalog、
indexalloc和tablealloc選項。只有系統管理員可以使用dbrepair選項  
dbcc命令的完整語法格式如下:  
Dbcc  
{checktable({表明|表標識}[,Skip_ncindex])|  
Checkdb [(數據庫名[,skip_ncindex])]|  
Checkalloc [(數據庫名[,fix|nofix])]|  
Talbealloc {表明|表標識}[,
{full|optimized|fast|null}[,fix|nofix]]))|  
Indexalloc {表明|表標識},索引標識[,
{full|optimized|fast|null}[,fix|nofix]]))|  
Checkcatalog [數據庫名)]  
Dbrepair (數據庫名,dropdb)|  
Reindex ({表明|表標識})|  
fix_text({表明|表標識})}  

十 、SQL客戶端軟件  
1. DOS狀態下SQL客戶端軟件  
軟件位於c:\sqlbin  
運行步驟:  
運行TCPIP協議程序tcp.bat  
c:\nwclient\lsl /c:\nwclient\net.cfg  
c:\nwclient\ne2000  
c:\nwclient\tcpip  
(2) ping 129.6.114.201 (服務器地址)  
返回129.6.114.201 is alive 正常  
返回No response from 129.6.114.201 為異常  
3)運行sybclenv.bat------------------ 
Sybase的DOS接口啟動程序,內容如下:  
set path=c:\sqlbin\binr;%path% -------------
Sybase的DOS接口程序所在目錄  
set dsquery=129.6.114.201,4114-------------
連接服務器IP地址和端口號  
c:\sqlbin\binr\dbnovtcp  
C:\sqlbin\binr\rmineti  
dbping 129.6.114.201------------
檢查是否連通SYBASE服務器  
連接成功出現“Successfully 
opened network connection"  
(5) isql 朥sa 朠  
1> sp_help  
2> go  
十一、附錄  
附錄1:只有在master數據庫中才能有的系統表  
系統表名 表中的內容  
Sysconfigures 一行記錄了用戶可設置的配置參數  
Syscurconfigs 有關SQL Server當前正使用的配置參數情況  
Sysdatabases 一行記錄了SQL Server中的一個數據庫  
Sysdevices 一行記錄了數據庫的每一磁帶轉儲設備,
磁盤轉儲設備,數據庫設備和磁盤分區 
設備和磁盤分區  
Syslocks 有關動態鎖的情況  
Syslogins 一行記錄了每一有效的SQL Server的用戶帳號  
Sysmessages 一行記錄了每一系統錯誤或警告  
Sysprocesses 有關Server進程的情況  
Sysremotelogins 一行記錄了一個遠程用戶  
Sysservers 一行記錄了一個遠程SQL Server  

附錄2:Sysusages 一行記錄了
分配給一個數據庫的每一個磁盤分析  

系統表名 表中的內容  
Sysalternates 一行記錄了SQL Server用戶在當前數據庫中的標識  
syscoumns 一行記錄了一個表或視圖的每一列,一個存儲過程的每一參數  
syscomments 一行或多行記錄了每一視圖、規則、缺省值、觸發器和存儲過程  
sysdepends 一行記錄了由一個過程、視圖或觸發器所參照的每一過程,視圖或表  
Syskeys 一行記錄了每一主碼,外碼或公用碼  
Syslogs  
sysobjects 一行記錄了每一表、視圖、存儲過程、日志、規則、
          缺省值、觸發器和臨時表僅在tempdb中)  
sysprocedures 一行記錄了每一視圖、規則、缺省、觸發器和過程  
syprotects 記錄用戶的權限信息  
sysegments 一行記錄了每一片段命名的的磁盤分片匯集)  
systypes 一行記錄了每一由系統提供的和用戶定義的數據類型  
sysusers 一行記錄了一個數據庫的合法用戶,或用戶組  

附錄3: 由SQL Server提供的系統過程功能和執行權  
過程名 功能 執行權限  
sp_addalias 把數據庫中的一個用戶映象到另一個用戶數據庫所有者  
sp_addgroup 向數據庫增加分組,
在授權和撤權命令中分組被用作聚合名字 數據庫所有者  
sp_addlanguage 為服務器定義可替換語言,
並把它增加到master,dbo,syslanguages中。  
sp_addlogin 通過向master.dbo,syslogins
中增加表項授權新的SQL Server用戶 系統管理員  
sp_addremotelogin 通過向master,bo,sysremotelogins
增添表項授權新的遠程服務器用戶 
sp_addsegment 在指定的數據庫設備上創建一個段 數據庫所有者系統管理員  
sp_addserver 定義遠程服務器,或定義本地服務器名字 數據庫所有者系統管理員  
sp_addtype 創建用戶定義的數據類型 Public  
sp_addumpdervce 向SQL Server增加轉儲設備 系統管理員  
sp_adduser 向當前數據庫添加新的用戶 數據庫所有者  
sp_bindefault 為一列或用戶下義的數據類型定義缺省值 目標對象)所有者  
sp_bindrule 向一列或用戶定義的數據類型賦一規則 目標汽有者  
sp_changedbowner 改變數據庫的所有者 數據庫所有者  
sp_changegroup 改變用戶所屬的分組 數據庫所有者  
sp_checknames 檢查當前數據庫在7位ASCII碼集之外的字符的名字 public  
sp_commonkey 在兩個表或視圖之間定義一
公共鍵--經常被連接的列 兩表或視圖)的所有者  
sp_configure 顯示或改變配置變量 沒有參數或只有第一個參數
的執行權屬於public,否則屬於系統管理員  
sp_dboption 顯示或改變數據庫選項 不帶參數屬於public,
帶參數時屬於數據庫所有者  
sp_defaultdb 改變一用戶的缺省數據庫 
系統管理員但每個用戶都可以改變他自己的缺省語言)  
sp_depends 顯示數據庫目標相關性的信息 public  
sp_diskdefault 設備數據庫設備的狀態為defaulton或defaultoff
表明一數據設備是否能用於數據庫的豈省存儲) 系統管理員  
sp_dropalias 刪除用sp_addalias建立的用戶名別名標識 數據庫所有者  
sp_dropdevice 刪除一SQL Server數據庫設備或轉儲設備 系統管理員  
sp_dropgroup 從數據庫中刪除一分組 數據庫所有者  
sp_droplanguage 從服務器中刪除可替換語言,
並從master.dbo.syslanguages中刪掉相應的行 系統管理員  
sp_droplogin 通過刪掉用戶在master,dbo,syslogins中的表項刪除SQL Server用戶  
sp_dropremotelogin 刪除遠程用戶注冊 系統管理員  
sp_dropsegment 從數據庫中刪除一個段或從
特定數據庫設備上卸掉一個段的映象 數據庫所有者  
sp_dropserver 刪除遠程服務器 系統管理員  
sp_droptype 刪除用戶定義的數據類型 數據庫所有者數據類型所有者  
sp_dropuser 從當前是數據庫中刪除一用戶 數據庫屬主  
sp_extendsegment 把段的區域擴充到另一個數據庫設備或
在當前數據庫設備上進行擴充 數據庫屬主  
sp_foreignkey 在當前數據庫的表或視圖上定義一外部鍵 表的屬主  
sp_help 報告目標或SQL Server提供的或用戶定義的數據庫類型的信息 public  
sp_helpdb 報告--指定數據庫或所有數據庫的信息 public  
sp_helpdevice 報告--指定設備或所有SQL 
Server數據庫設備轉儲設備的信息 public  
sp_helpgroup 報告--特定組或當前數據庫的所有組的信息 public  
sp_helpinde 報告--表中的索引信息 public  
sp_helpjoins 列出可連接兩個表或視圖的列 public  
sp_helpkey 報告某個特定表或視圖的一主鍵,
外部鍵或公共鍵或者當前數據庫中所有鍵的信息 public  
sp_helplanguage 報告一特替換語言或所有語言的信息 public  
sp_helplog 報告包括日志第一頁的設備名 public  
sp_helpremotelogin 報告一特定遠程服務器或所有遠程服務器的注冊信息 public  
sp_helprotect 報告一數據庫對象或用戶權限,且由用戶選擇對象 public  
sp_helpsegment 報告當前數據庫中一特定段或所有段的信息 public  
sp_helpserver 報告一特定遠程服務器或所有遠程服務器的信息 public  
sp_helpsort 顯示SQL Server的缺省排列順序以及字符集 public  
sp_helptext 打印一系統過程、觸發器、視圖、缺省或規則的定義文本 public  
sp_helpuser 報告當前數據庫中一個用戶或所有用戶的信息 public  
sp_lock 報告當前上鎖的進程的信息 public  
sp_logdevice 將系統表syslogs其中包括事務日志)
放在一個分設的數據庫設備中 數據庫屬主  
sp_monitor 顯示SQL Server的統計數字 系統管理員  
sp_password 增加或改變SQL Server注冊的口令 對自己的口令,
權限屬於public,系統管理員有權修改所有用戶口令  
sp_placeobject 為一特定中某個表或索引放置將來的空間分配 
表屬主,數據庫屬主系統管理員  
sp_primarykey 定義一表或視圖上的主鍵主碼) 表的所有者  
sp_recompile 使生個使用被指定表的存儲過程、觸發器在下次運行時重新編譯 public  
sp_remoteoption 顯示或改變遠程注冊選項 顯示選項時屬 public改變選項時屬系統管理員  
sp_rename 改變當前數據庫中一用戶建立目標的名稱 特定目標,
權限屬目標屬主對數據庫所有對象,權限屬數據庫所有者  
sp_renamedb 改變數據庫名 系統管理員  
sp_serveroption 顯示或改變服務器選項 顯示選項,權限,
權限屬 public改變選項,權限屬系統管理員  
sp_setlangalian 分配或改變一替換語言的別名 系統管理員  
sp_spaceused 顯示行數、數據頁數以及當前數據庫中由某個
目標或所有目標所占用的空間 public  
sp_unbindefault 從一列或用戶定義的數據類型中解除一規則 目標屬主所有者)  
sp_who 報告特定用戶或SQL Server所有當前用戶和進程的信息 public  

附錄4:常用SQL命令 表4  
1.load isql -Usa -P --進入ISQL環境  
quit ----退出ISQL環境  
2.shutdown (server_name) --關閉SYBASE服務器  
ex. shutdown SYB_BACKUP  
3.use (database_name) --打開數據庫  
ex. use tele114  
4.set rowcount (number) -- 設置顯示記錄條數  
ex. set rowcount 10 (為0則取消設置)  
5.select (select_list) from (table_name) where 
(search_conditions)  
--查看符合要求的內容  
ex. select max(UnitNo1) from code_1th  
6.update (table_name) set (column_name1)=(value1),
column_name2)=value2)  
where (search_conditions) --重新賦值  
ex.update code_1th set Password='12345',  
RevCode1=substring(RevCode1,1,
datalength(rtrim(RevCode1))-1)  
where substring(Code1,1,1)='v' and 
substring(Code1,2,1)!=' '  
7.select (select_list) into (table_name1) from (table_name2)  
where (search_conditions)  
--將符合要求的table_name2中的內容存在table_name1中  
ex.select * into sample from code_1th where
substring(Code1,1, 1)='V'  
8.truncate table (table_name) --刪去表  
ex.truncate table sample  
delete (table_name) where (search_conditions)
 -- 刪去表的一部分  
ex. delete example where County='5'  
9.sp_addumpdevice 'disk',(logicalname),
(physicalname) --定義轉儲設備  
ex.sp_addumpdevice 'disk','nbdump_1',
'vol1:\nbdump\nbdump.dat'  
10.sp_dropdevice (device_name) --刪去轉儲設備  
ex.sp_dropdevice nbdump_1  
11.dump tran (database_name) with truncate_only --刪去日志  
ex.dump tran tele114 with truncate_only  
12.sp_configure (config_name),(config_value) --更改設置值  
ex.sp_configure 'allow updates',1  
13.reconfigure with override --使更改設置值有效  
14.sp_who --使用數據庫用戶列表  
15.kill (spid) --刪去無效的數據庫用戶  
ex.kill 9 --刪去spid為9的數據庫用戶  
16.sp_helpindex (tabel_name) --查看索引情況  
ex. sp_helpindex code_2th  
17.sp_helpdb (database_name) --查看數據庫占用空間情況  
ex. sp_helpdb tele114  
附錄5:SYBASE實用安裝、  
Sybase 10.0.1 For SCO UNIX3.0.x的安裝  
(一)安裝前准備  
1. SCO UNIX需兩張補丁盤  
a. UOD381異步I/O盤一張  
b. aet382網絡盤一張  
重啟UNIX後進入維護模式,用custom命令裝入此兩張補丁盤  
2. 在UNIX系統中增加sybase用戶  
3. 在工作站上通過TCP/IP將SYB_SCO拷入 /usr/sybase中在工作站上運行  
LSL  
NE2000  
TCPIP  
FTP 129.18.114.99 (129.18.114.99為服務器的網絡地址)  
用sybase用戶登錄  
bi  
put SYB_SCO (SYB_SCO在C盤當前目錄中)  
4. 用cpio 展開安裝程序  
以root登錄  
cd/usr/sybase  
Cpio 杋dvC 5. 配置UNIX內核  
a. 以root登錄  
b. 設置環境變量,用vi 編輯 /.profile加入以下兩行  
SYBASE=/usr/sybase  
export sybase  
c. 用vi編輯/etc/conf/cf.d/mtune  
修改參數為  
NSTREAM 700  
NAIOHBUF 400  
d. cd/usr/sybase/install  
sh sco_kernal sybase  
重新 relink 後reboot  
(二)安裝  
1)以sybase 登錄  
2)cd/usr/syabsw/install  
3)sybinit  
4)選3  
SYBINIT  
1. Rrlease Directory: /sur/u/sybasw-100  
2. Edit /View interfaces File  
3. Configure a server product  
4. Configure an Open Coient/Server Product  
5. Configure a Front End Product  
5)選1  
CONFIGURE SERVER PRODUCTS  
1. Configure a mew SQL Server  
2. Configure an existing SQL Server  
3. Upgrad an existing SQL Server  
7)ADD NEW SQL SERVER  
1. SQL Server name: lyg114  
a. 選1,輸入服務器名如:lyg114  
b. 按Ctrl-a  
SQL SERVER VONFIGURATION  
1. CONFIGURE SERVER'S INTERFACES FILE ENTRY Incomplete  
2. MASTER DEVICE CONFIGURATION Incomplete  
3. SYBSYSTEMPROCS DATABASE CONFIGURATION Incomplete  
4. SET ERRORLOG LOCATION Incomplete  
5. CONFIGURE DEFAULT BACKUP SERVER Incomplete  
6. CONFIGURE LANGUAGES Incomplete  
7. CONFIGURE CHARACTER SETS Incomplete  
8. CONFIGURE SORT ORDER Incomplete  
9. ACTIVATE VUDITING Incomplete  
分別選1,2,3,---9配置參數,使各項Incmplete----->complete  
參數配置如下:例)  
a. SERVER INTERFACES FILE ENTERY SCREEN  
Server name : lyg114  
1. Retry Count: 10  
2. Retry Delay: 10  
Listener services available:  
Protocol Address Port Name Alias  
rcp scosysv 4114  
注意:Port=4114,此參數為1024--65535為間的4個或5個數字  
Address=scosysv,此參數為UNIX服務器主機名  
b. MASTER DRVICE CONFIGURATION  
1. Master Device: /usr /sybase/madter.bay  
2. size (Meg) : 30  
c. SYBSYSTEMPROCS DATABASE CONFIGURATION  
1.sybsytemprocs database size (Meg) : 10  
2. sybsystemprocs logical device name: sysprocsdev  
3. create new device for the sybsystemprocs database : yes  
4. physical name of new device: /usr /sybase/sybtemp.dat  
5. size of the new device (Meg) : 10  
d. SET ERRORLOG LOCATION  
1. SQL Server errorlog: /usr/sybase/errorlog  
e. SET THE SQL ERVER'S BACKUP SERVER  
1.SQL Server backup Server mname: SYB-BACKUP  
注意:此備份服務器名一定要與後面配置的備份服務器名一致  
f. SONFIGURE LANGUAGES  
選 1. us-english  
g.CONFIGURE CHARACTER SETS  
選 1. SACII, fro use with unsp 及4.ISO 8859-1 (latin-1)-w (4.為缺省)  
h. CONFIGURE SORT ORDER  
選 1. Binary ordering ,for the ISO 8859/1 or Latin-1 Charact  
i. ACTIVATE AVDITING  
1. Install auiting: yes  
2. sybsecurity database size (Meg): 5  
3. sybsecuyty logical device name : sybsecurity  
4. dreate new device for the sybsecurity database : yes  
5. sybsecurity physical device name : /usr/sybase/sybsecur.dat  
6. size of the new device (Meg): 5  
9) 參數配置完後,按Ctrl-a  
Execute the SQL Server Configuration now? y  
10)看到下面的信息表示SQL Server 安裝成功  
Configuration completed successfully.  
Press to continue.(回車)  
11) 按Ctrl-x 退出安裝程序  
12) 要$提示符下運行  
startserver-fRUN-lyg114 啟動SQL Server  
13) 要$提示符下運行  
isql-Usa -P- Slyg114  
屏幕出現:1>  
安裝完畢  
Sybase 11.0.2 For SCO UNIX 5.02C的安裝  
一)首先建立sybase組,
組號可設為100;再建立sybase用戶,
然後修改/usr/sybase/.profile文件,
加入一句:SYBASE=“/usr/sybase”;
export SYBASE。  
二)調整系統核心參數  
a. 共享內存:  
# cd /etc/conf/cf.d  
# ./configure選16,shared data  
SHMMAX,輸入新值,如83886080
越大越好,系統啟動後省下的全部內存)  
退出。  
b. 激活異步I/O:  
# cd /etc/conf/sdevice.d;進入此目錄  
# Vi aio將“N”改為“Y”;編輯aio文件  
# Vi suds將“N”改為“Y”;編輯suds文件  
# Vi /etc/rc2 在最後加入下面一行:  
/etc/suds_ctrl -a  
c. 重建內核:  
# /etc/conf/cf.d/link_unix  
d. 重新啟動openserver  
三)安裝sybase  
a. 以sybase登錄:  
$ ./sybload -D  
依輸入y 、l,  
然後執行”./sybimage“  
b. 依提示輸入序列號,解完包後:  
Vi /usr/sybase/locales/locales.dat  
在[SCO]中,加入:  
C_C.C.,us-English,ico_1  
然後進入Install,配置SYBASE服務器。  
※SYBASE 11.0.2 For SCO UNIX 5.0.2安裝補充說明  
目前SCO UNIX 5.0有多種版本,
針對5.0.2,SYBASE 11.0.2的安裝需安裝Kernel Patch:  
a. OSS437a-streams lock timeout and protocal Data  
b. OSS441a-SUDS aio supplement  
c. OSS446a-tape drive unload for nonrewinding devices  
在SCO UNIX 5.0.4C上不需安裝補丁盤。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved