sybase_sybase iq - CSDN
精华内容
参与话题
  • sybase基础知识(新手必看)

    万次阅读 2011-09-21 09:03:56
    第一讲 Sybase基础知识 一、客户/服务器体系结构 Sybase是一种建立在客户/服务器体系结构上的数据库管理系统。 ●什么是客户/服务器体系结构? 从硬件角度看,客户/服务器体系结构是指将某项任务在两台或多台...
     
    

    第一讲  Sybase基础知识

    一、客户/服务器体系结构
    Sybase是一种建立在客户/服务器体系结构上的数据库管理系统
    ●什么是客户/服务器体系结构?
    从硬件角度看,客户/服务器体系结构是指将某项任务在两台或多台机器之间进行分配,其中客户机

    (Client)用来运行提供用户接口和前端处理的应用程序,服务器机(Server)提供客户机使用的各种

    资源和服务。从软件角度看,客户/服务器体系结构是把某项应用或软件系统按逻辑功能划分为客户软件

    部分和服务器软件部分。客户软件部分一般负责数据的表示和应用,处理用户界面,用以接收用户的数

    据处理请求并将之转换为对服务器的请求,要求服务器为其提供数据的存储和检索服务;服务器端软件

    负责接收客户端软件发来的请求并提供相应服务。客户/服务器融合了大型机的强大功能和中央控制以及

    PC机的低成本和较好的处理平衡。客户/服务器为任务的集中/局部分布提供了一种新的方法,这种体系

    能够使用户对数据完整性、管理和安全性进行集中控制。在缓解网络交通和主机负荷以及满足用户需要

    方面,客户/服务器体系提供了良好的解决方案。
    总之,客户/服务器的工作模式是:客户与服务器之间采用网络协议(如TCP/IP、IPX/SPX)进行连接

    和通讯,由客户端向服务器发出请求,服务器端响应请求,并进行相应服务。
    数据库应用的客户/服务器模式如下图所示:


    二、访问Sybase服务器的基本过程
    1.建立客户与服务器之间的连接,包括网络连接、客户进程与服务器进程之间的连接;
    2.客户端通过网络发送SQL语句给服务器,用来查询或操作服务器中的数据或数据库对象;
    3.服务器接收到SQL语句后,对其进行语法分析、优化和编译后执行;
    4.如果执行的语句产生一个结果集,服务器通过网络把结果集返回给客户;
    5.客户端对收到的结果作相应的处理。
    在客户/服务器体系,有两种数据库引擎结构,即多进程数据库引擎和单进程、多线程引擎结构。
    多进程结构即多个可执行程序同时运行。每当用户登录到数据库系统时实际上都启动了数据库引擎

    的一个独立实例。存在起协调作用的进程协调进行之间的通讯以保证当多用户访问相同数据时数据的

    完整性。多进程数据库引擎一般用在大型机数据库上。
    单进程多线程数据库引擎在原理上和多进程数据库引擎类似,不同的是多线程数据库引擎自己负责调

    度各应用程序占用CPU的时间,而不依赖于操作系统。这样,多线程数据库引擎自我保护的能力更强。
    Oracle Server是一个真正的多进程数据库引擎,Sybase数据库管理系统采用的是单进程多线程的引擎结构。
    三、Sybase产品概述
    1.Sybase软件的组成
    Sybase软件可划分为三个部分:一是进行数据管理与维护的联机关系数据库管理系统Sybase SQL

     Server;二是支持数据库应用系统的建立和开发的一组前端工具软件Sybase SQL Tools;三是可把异

    构环境下其他厂商的应用软件和任何类型的数据连接在一起的接口软件Open Client/Open Server。
    SQL Server是个可编程的数据库管理系统(DBMS),它是整个Sybase产品的核心软件,起着数据管

    理、高速缓冲区管理、事务管理的作用。
    2.SQL Server的基本特征
    SQL Server是个关系数据库管理系统,它具有如下一些基本特征:
    a.SQL Server可以放在若干个磁盘设备上,初始安装时所需的磁盘空间至少要17MB。
    b.SQL Server支持多库结构,也就是说Sybase系统中可以有多个数据库。Sybase可以管理多个数据库。
    c.SQL Server可以编译和运行T-SQL语句,并可返回客户程序所要求的结果。T-SQL语句是标准SQL

    的扩充,它除了有数据定义语句、数据操纵语句和数据控制语句之外,主要增加了流程控制语句。
    d.SQL Server可以管理多个用户并具有较高的事务吞吐量和较低的事务响应时间。
    客户的应用程序可以存取Server中某一个或几个数据库的数据。
    四、SQL Server的主要内容
    Sybase SQL Server是一个多库结构的RDBMS,体系结构大致如下:

    1.数据库
    服务器自身所使用的数据库,也可以说是管理服务器和用户数据库的数据库。Sybase在安装时,自动

    创建了四个系统数据库:
    master、model、tempdb、sybsystemprocs
    (1) master数据库
    它是管理和控制用户数据库以及维护服务器正常运行的核心数据库,它保存了大量的系统信息,如服务

    器配置、用户、设备等。
    在master数据库中不允许普通用户在其中创建数据库对象,否则会使得master数据库的事务日志很快变

    满。如果事务日志用尽,就无法使用dump transaction命令释放master数据库中的空间。
    (2)model数据库
    它是为创建用户数据库而提供的模板。每当创建新的数据库时,SQL Server自动建立model数据库的一

    份拷贝,并把它扩充到用户所要求的大小,以此作为新用户数据库。Model数据库中包含每个用户数据库

    所要求的系统表。Model数据库可以被修改以便定制新创建的。
    (3)tempdb数据库
    它是个临时数据库,为服务器运行与处理提供一个共享的存储区域,如group by和order by的中间结果

    就存放在这里。Tempdb的空间为服务器中所有数据库的所有用户所共享。
    每次重启SQL Server,服务器的一个自动进程都拷贝model数据库到tempdb数据库,并清除tempdb中

    原来的内容。因此tempdb中的用户表都是临时的。临时表分为两类:可共享的和不可共享的。不可共

    享的临时表在由create table中将符号#置于表名之前创立;可共享的临时表通过create table中指定表

    名前缀tempdb..而创立。不可共享的临时表SQL Server自动为其添加数字后缀名,且它只存在于当前会话中。
    (4)sybsystemprocs数据库master数据库
    它是专门用来保存系统命令(存储过程)的数据库,如sp_help、sp_configure、sp_helpdevice等。当

    任一数据库用户运行以sp_开头的存储过程时,SQL Server按照以下顺序查找:当前数据库、

    sybsystemprocs数据库、master数据库。
    2.用户数据库
    用户数据库是我们使用Sybase服务器的真正目的。要管理用户数据,必须在Sybase中创建自己

    的数据库,它是指用create database命令创建的数据库。不能存取master数据库的用户是无权创

    建新的数据库的。
    数据库中的主要内容——数据库对象:
    表、视图、临时表
    索引、主键、外键
    缺省值、规则
    存储过程、触发器等
    五、Sybase的安装与配置
    1.服务器端的安装
    安装建立SQL Server以后,要建立放置数据库、日志和索引的逻辑磁盘设备。数据库、日志和索

    引的配置应注意以下原则;
    a.不要把任何用户对象安装在master数据库中。
    b.日志应该保存在与数据库分离的磁盘上。
    c.可以通过跨越多个设备分配工作优化I/O性能。
    2.客户端的安装
    3.需要立即更改的内容
    (1)更改sa的登录口令;(2)命名服务器;(3)修改文件名(保证Sybase Central正常启动);

    (4)更改缺省设备;(5)增加tempdb的空间。
    4.创建用户数据库
    以下通过一个建立数据库的脚本说明建立数据库的过程:
    //创建数据库设备,设备大小以页(2K)为单位
    disk init
    name=”test_dbdev”,
    physname=”c:\test\test_dbdev.dat”,
    vdevno=10,
    size=10240
    go
    disk init
    name=”test_logdev”,
    phyname=”c:\test\test_logdev.dat”,
    vdevno=11,
    size=5120
    go
    //创建数据库TEST_DB,其大小为20M,日志大小为10M
    create database TEST_DB
    on test_dbdev=20
    log on test_logdev=10
    go
    //打开数据库
    use TEST_DB
    go
    5.系统管理的主要内容
    a.物理资源的管理
    b.用户及其权限管理
    c.数据库的备份与恢复
    6.SQL Server的配置参数
    服务器配置是系统管理员的职责,正确的配置对系统性能有重大的影响。有两个系统表存储

    配置信息:sysconfigures和syscurconfigs;sysconfigures是永久性的,一旦系统运行,sysconfigures

    的信息就拷贝到syscurconfigs中。显示配置和改变配置使用系统过程sp_configure。
    有两种配置值:动态的和静态的,动态值一旦改变立即生效,静态值要在系统重启动后才起作用。


    第二讲  数据库设备与存储空间管理

    一、概述
    1.安装初始化
    初始安装SQL Server时,安装程序和脚本初始化主设备,并建立master、model、tempdb和

    sybsystemprocs数据库。系统数据库、预定义设备和段按下列默认方式组织:
    a.master、model、tempdb数据库安装在主设备master上;
    b.sybsystemprocs数据库安装在安装时选择的设备上(sysprocsdev);
    c.为每个数据库创建三个预定义段:system、default和logsegment;
    d.所有用户创建数据库的默认设备是master设备;
    e.如果选择安装了审计数据库sybsecurity,它位于自己的设备上。
    2.设备与存储管理考虑的主要问题
    (1)恢复
    物理磁盘崩溃时,磁盘镜像或在单独的物理设备上保存日志为数据库恢复提供了两种机制。
    (2)性能
    磁盘读写速度是I/O操作的瓶颈,正确地把数据库对象放置到物理设备上有利于改进性能;
    把日志和数据库对象置于单独的设备上可以提高系统性能;
    把表放在一个硬盘上而把索引放在另一个硬盘上,由于把工作分置于两个硬盘驱动器上,所以

    可以确保物理读写速度加快;
    磁盘镜像会降低磁盘写的速度。
    二、设备(Device)
    Sybase将数据库中的所有数据存放在设备上。
    1.设备的概念
    设备是Sybase预先配置的专门存放数据库的一块连续的磁盘空间,并且它被映射到一操作系统

    文件或一原始磁盘分区上。它有两个对应的名称:逻辑名和物理名。NT仅支持设备映射到文件。
    设备与数据库之间的关系:多对多关系。一个数据库可以被创建或扩充到多个设备上,一个设备

    也可以被用来存放多个数据库。不同的设备操作系统可以对其并行地读写,因此我们可以人为地

    将一个数据库放置到多个数据库设备上。
    设备的分类:Database Device和Dump Device。数据库设备存放数据库和事务日志,转储设备用

    来存放数据库或日志的备份。
    2.设备的创建
    命令语法:
    DISK INIT
    Name=’device_name’,
    Physname=’physical_name’,
    Vdevno=virtual_device_number
    Size=number_of_pages
    […….]
    举例说明:
    DISK INIT
    Name=’My_Device’,
    Physname=’D:\database\My_device.dat’,
    Vdevno=3
    Size=5000
    注释:逻辑名、物理名、设备虚拟号、设备大小

    创建转储设备:
    sp_addumpdevice{‘disk’|’tape’}
    Logical_Name,
    Physical_Name,
    TapeSize

    3.默认设备
    在没有指定设备的情况下,用户创建的任何数据对象自动存放在默认设备上。
    初始安装后,系统的主设备master被预指定为默认设备,因此要尽快创建自己的默认设备。确保以下

    设备不是默认设备:系统主设备、指定仅被日志使用的设备。
    Sp_diskdefault 设备名[,DefaultOn|DefaultOff]

    4.磁盘镜像
    磁盘镜像是出于数据库安全性的考虑,当介质失败时,磁盘镜像能提供不间断恢复。磁盘镜像是磁盘

    上的数据的绝对拷贝。如果某一硬盘事故发生,则该被损坏的拷贝就自动变成离线状态,因而所有的

    读写都被引向未被损坏的拷贝。
    Sybase的磁盘镜像是在设备级上进行的,因此磁盘镜像实质上是设备镜像。当对某一设备进行镜像操

    作时,Sybase自动创建一个附加设备,由镜像处理程序将原设备上的所有数据拷贝到镜像设备上。
    如果要使某一数据库成为镜像,被分配给该数据库的每一设备都必须成镜像。Master设备在服务器中

    地位特殊,如果它损坏了,SQL Server将崩溃。因此,如果有可能总是要镜像Master设备(在另一磁盘上)。
    镜像命令语法:
    Disk Mirror
    Name=’device_name’,//被镜像的设备
    Mirror=’physical_name’
    [,writes=serial|noserial]
    5.删除设备
    sp_dropdevice logical_name[,delfile]
    含有数据库的设备不允许删除。
    三、创建与使用段
        段(Segment)是数据库设备上磁盘空间的逻辑组合,它可以看作是指向一个或多个数据库设备

    的标签。利用段可以控制数据库对象的存放位置,可以将数据库对象分类存放到不同的段上。
    设备与段之间的关系:多对多关系。一个设备上可以创建多个段,一个段也可以覆盖多个设备。
    1.使用段的优点
    a. 控制空间的使用:放在一个段上的数据库对象不会在段外增长;
    b. 提高性能:处于不同磁盘设备上的段可以并行地读写;
    d.处理大表:利用段,可以将一个大表分段放在独立的物理设备上,如将一个表的文本或图象数据

    存储另外的一个段上。
    2.创建段
    sp_addsegment 段名,数据库名,设备名
    说明:在指定设备上为某个数据库创建一个段。
    ●扩展段的范围
      sp_exetendsegment 段名,数据库名,设备名
    说明:设备在数据库中必须可用,否则需要扩展数据库到新的设备上;指定的段、数据库、设备必

    须存在。
    ●缩小段的范围:
      sp_dropsegment 段名,数据库名,设备名
    说明:带第三个参数时,该命令并不删除段,只是段的范围缩小了。若某个段包含了别的段要独占

    的设备,就需要缩小该段的范围。
    3.使用段
    ●两个数据库放在同一设备的不同段上,它们不会相互影响;
    ●当数据库增加空间时,增加的空间会自动分配到它的每一个段上;
    例如:alter database my_db
          on data_dev=50
    在data_dev设备上为my_db增加50M空间,这50M空间被自动分配到数据库的每一个段中。注意:

    如果data_dev对于数据库是新的,system和default段会自动扩展到该设备上。
    可以使用alter database命令的log on选项分配附加的日志空间。
    (1)在段中创建新对象
    create table 表名(列名 数据类型)[on 段名]
    create [clusterd|non clusterd]index 索引名 on 表名(列名)[on 段名]
    注意:按照定义,聚集索引总是与表放在同一段上。
    (2)在段上放置现有对象
    sp_placeobject 段名,对象名
    注意:该命令并不把对象从一个数据库设备移动到另一设备上,它只影响未来的空间分配。
    可以将某个大表的text字段或image字段放置到一个单独的设备段上。
    Sp_placeobject 段名,“表名.字段名”
    (3)在段上创建聚集索引
    按照定义,聚集索引总是与表放在同一段上。如果在一个段上创建表,而在另一个段上创建聚集

    索引,则其表与其索引一起移动,整个表将离开创建表的段而迁移到创建聚集索引的段中。通过

    这种方法,可以快速而方便地把指定表移动到指定的设备上。
    (4)系统预定义段
    当用户创建一个数据库时,Sybase自动创建三个预定义的段:
    system段:存放系统表(包括所有用户对象的定义)
    default段:存放用户创建的各种对象,除非它们明显地指定到不同的段上。
    Logsegment段:存放数据库的事务日志。
    (5)删除段
    删除段是缩小段范围的一个特例:
    sp_dropsegment 段名,数据库名
    4.使用阈值管理


    阈值(Threshold)管理是一种自动监控数据库自由空间的机制,Sybase的阈值管理允许用户为数

    据库的某个段上的自由空间设置阈值并定义相应的存储过程。当该段上的自由空间低于所置头阈值

    时,Sybase自动运行相应的存储过程。
    在一个实际运行的数据库中,日志的增长速度一般要高于数据的增长,一旦日志段的自由空间用尽

    ,SQL Server在默认情况下会挂起所有数据操纵事务,客户端应用程序停止执行。
    在每个分离的段上存储其事务日志的数据库均自动设置有最后机会阈值(Last Chance Threshold),

    其阈值是备份事务日志所需的自由空间的估计值。当该段上的自由空间低于所置阈值时,Sybase自动

    运行名为sp_thresholdaction的存储过程。该过程的名称及参数由系统预定义,内容由用户编写。下

    面是一个简单示例。
    CREATE PROCEDURE dbo.sp_thresholdaction
    /*本过程参数通过位置传递,名称可以改变,但其定义及顺序不能变*/
    @db_name varchar(30),/*数据库名*/
    @seg_name varchar(30),/*段名*/
    @space_lefe int,/*剩余自由空间*/
    @status int/*最后机会阈值,其值为1,其它阈值,其值为0*/
    AS
    BEGIN
    /*用户编写过程内容*/
    dump transaction @db_name
    with truncate_only



    第三讲  数据库与事务日志

    一、创建用户数据库
    Create Database 数据库名
      On 设备_1=Size_1,//单位:M
         设备_2=Size_2,
    ……
    log on 日志设备=Log_Size
    [With Override]//在同一设备上创建数据库和事务日志时使用该选项
    [For Load]    //禁止用户访问直到数据库的装入或恢复操作完成为止
    举例:
        Create Database test_db
        On data_dev=100,//单位:M
           Index_dev=50
        Log on log_dev=30
    说明:
    (1)将日志放在单独的设备上,有利于数据库性能的提高;
    (2)图示:
    Data_dev        Index_dev        log_dev
    (3)如果将数据库和日志放在同一设备上,就不能实现增量备份;
    (4)通常将System和Default段缩减范围到一个设备上,如删除设备Index_dev上的System段和

    Default段,创建新的段,用来存放专门的数据库对象。
    二、更改数据库
    1.改变数据库属主
    通常用户数据库有系统管理员创建,它的默认属主是dbo。系统过程sp_changeddbowner可改变数

    据库的属主关系,它必须由数据库管理员在要改变属主关系的数据库中执行。语法如下:
    sp_changeddbowner login_name[,True]
    其中参数True用于将权限一半传递给新属主。
    2.扩展数据库
    (1)扩展数据库空间
    alter database 数据库名
             on 设备名=扩展空间  //单位:M
             如果扩展的设备对于数据库是新的,System和Default段会自动扩展到该设备上。
    (2)扩展事务日志到新的设备上
      sp_logdevice 数据库名,设备名
    举例:将数据库另外扩充5M,用于存储日志
         alter database my_db
                on my_dev=5
         go
         sp_logdevice my_db,my_dev
         go

    3.删除数据库
      drop database 数据库名
    删除设备前必须删除其上的所有数据库,删除设备的命令是:sp_dropdevice
    三、事务日志
       日志文件是用来记录数据库每一次修改活动的文件。SQL Server中的每一个数据库都有自己

    的日志文件,即系统表syslogs,也称为事务日志。事务日志是撤消事务和出现故障时恢复事务的依据。
    在某些情况下,事务日志比数据本身更为重要。
    什么是事务?
    数据库的修改是以事务为单位进行的。一个事务就是一个操作序列,这些操作要么全做,要么全

    不做,它是一个不可分割的工作单位。任何一个事务具备如下特征。
    (1)执行的原子性(Atomic);
    (2)保持数据的一致性(Consistency);
    (3)彼此的隔离性(Isolation);
    (4)作用的持久性(Durability)。
    上述事务的四个特征被称为事务的ACID准则。
    事务在运行过程中,SQL Server把事务开始、事务结束以及对数据库的插入、删除和更新等每一

    个操作作为一个日志记录存放到事务日志中。事务中的更新操作首先在数据库缓冲区(内存)中进

    行,缓冲区分别有用来记录操作活动的数据页(data page)和日志页(log page)。当运行到

    commit tran时,日志页首先从缓冲区写到磁盘上,而后数据页从缓冲区写到磁盘上,即遵循“先与日志

    (write_ahead log)”的原则,这样保证出现故障的情况下,通过日志能够得到最大限度的恢复。恢复

    必须撤消发生故障时还未提交的事务,已完成的事务若仍有未从缓冲区写到数据库设备中,还要重新

    运行该事务。
    附:创建与装载数据库实例
    use master

    decl are @vedvno int
    select @vdevno=max(convert(tinyint,substring(convert(binary(4),d.low),v.low,1)))+1
    from master.dbo.sysdevices d,master.dbo.spt_values v
    where v.type=’E’and v.number=3
    declare @v_str char(2)
    select @v_str=convert(char(2),@vdevno)
    print @v_str

    disk init
        name=”YDDATA”,
        physname=”D:\Syb_Data\YDDATA.dat”,
        vdevno=@vdevno+1,
        size=153600
    disk init
        name=”YDINDEX”,
        physname=”D:\Syb_Data\YDINDEX.dat”,
        vdevno=@vdevno+2,
        size=102400
    disk init
        name=”YDLOG”,
        physname=”D:\Syb_Data\YDLOG.dat”,
        vdevno=@vdevno+3,
        size=76800

    create database YDMISDB
    on YDDATA=300,YDINDEX=200
    log on YDLOG=150

    use YDMISDB

    execute sp_addsegment indexdev,YTMISDB,YTINDEX
    execute sp_dropsegment “default”,YTMISDB,YTINDEX
    execute sp_dropsegment system,YTMISDB,YTINDEX

    use master

    load database YDMISDB from ‘d:\yd_dump\ydmis_backup.dmp’

    online database YDMISDB


    第四讲  数据库安全性与用户管理

    一、安全管理概述
    数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。

    SQL Server的安全管理是一种基于角色(role)的管理方法,位于不同权限层次(或角色)的用户

    具有不同的用户权限。
    规定用户权限有三个因素:用户、数据对象和操作,即什么用户在哪些数据对象上可以执行什么操作。
    访问SQL Server中数据的四道屏障:
    (1)操作系统——操作系统登录
    (2)Sybase服务器——服务器登录
    (3)Sybase数据库——数据库用户登录
    (4)数据库对象——对象授权
    二、理解数据库角色
    角色是权限的集合。
    1.系统预定义角色
    一个真正的数据库管理员应该是整个服务器及其数据库的拥有者,具有管理服务器及其数据库的所

    有权限。在一个大的系统中,数据库管理员往往不只由一人承担,而是将管理任务进行功能划分,每

    人提当不同的责任。系统预定义角色就是为适应这种要求而设计的。
    ●系统管理员(sa_role)
    sa_role角色拥有执行与数据库具体应用无关的管理权限:
    ◇安装与更新SQL Server
    ◇管理服务器的物理存储
    ◇配置系统设置参数;
    ◇创建用户数据库;
    ◇授予SQL Server用户权限
    ◇┅┅
    ●系统安全管理员(sso_role)
    sso_role用来实施安全上敏感的操作,执行有关安全性的任务:
    ◇建立服务器登录帐户;
    ◇管理口令;
    ◇授予除sa_role之外的任何角色;
    ◇管理审计系统;
    ◇┅┅
    ●操作员(oper_role)
    oper_role执行全服务器范围的数据库操作,如备份与恢复任意数据库等:
    ◇转储数据库与日志
    ◇转载数据库与日志
    ◇┅┅
    2.创建与使用自定义角色
    (1)创建新的角色:create role
    (2)赋予角色权限:grant
    (3)设置登录帐户的角色权限:sp_role
      格式:sp_role “grant”|”revoke”,角色名,登录帐号名
    这里的“grant”|”revoke”是指对角色权限是授予还是撤消。
    三、服务器的帐户管理
    要想成为Sybase系统的一个用户,首先必须拥有自己的登录帐户。通过这一帐户连同自己

    的口令向服务器注册后,才能使用Sybase系统中的一些资源,每一个这样的登录帐户在系统

    中被赋予Server级的标识SUID。
    1.添加登录
    sp_addlogin 登录名,口令[,缺省的数据库]
    如果不指定缺省的数据库,则该帐户的缺省数据库为master库。
    2.更改登录属性
    ◇更改口令;
    ◇锁定帐户;
    ◇期限设置;
    ◇赋予角色。Sybase
    四、数据库用户管理
    通过某一个帐户注册到服务器后,要想使用某一个数据库,必须成为该数据库的一个用户。通过

    建立登录与用户之间的联系来管理对数据库的访问。
    1.组的概念
    组(group)是数据库用户的集合。属于某个组的用户,他自动获得该组所拥有的权限。
    Sp_addgroup 组名
    ◇将一个用户加入某个组:(1)改变用户属性;(2)创建新用户时指定。
    ◇所有用户自动属于public组,即使这个用户已经属于其他组了。
    2.创建新的用户
    sp_adduser 登录名,用户名[,组名]
    3.别名用户
    Sybase的别名机制可以使得多个帐户对应于同一个数据库用户,这样使不同的登录在数据库

    中拥有同样的权限。这在审计系统中是一种控制责任的一种手段。
    Sp_addalias 登录名,数据库中的用户名
    别名——相当于给某个用户配一把别人的钥匙(登录)。
    五、用户的权限管理
    控制用户对数据库对象的访问,有两类权限:命令权限和对象权限。
    1.命令权限
    Create Database
    Create Table
    Create View
    Create Procedure
    Create Rule
    Create default
    命令权限授权与收权:
    Grant 命令权限组合 to 组名|用户名|角色
    Revoke 命令权限组合 from 组名|用户名|角色
    2.对象权限
    Select
    Update
    Insert
    Delete
    Reference
    Execute
    对象权限授权与收权:
    Grant 对象权限组合 on 数据库对象 to public|组名|用户名|角色
    [With Grant Option]

    Revoke 对象权限组合 on 数据库对象 to public|组名|用户名|角色
    From public public|组名|用户名|角色
    [Cascade]
    授权与收权举例:
    ◇Grant Insert,Delete on Employee
      to user_1,Group_1
    ◇Grant Execute on Pro_culculate
      to public
    ◇Grant Select on Employee(emp_id,emp_name)
      to user_3
    ◇Grant All on Employee
      to user_4
    ◇Revoke update on Employee(emp_id,emp_name)
      from user_5
    ◇Revoke Create Table,Create Rule
          from user_6


    第五讲  数据库的备份与恢复

    数据库的备份与恢复是SQL Server保障数据安全的一种重要手段,为防止意外,数据库管理

    员必须定期和经常制作数据库的备份。一旦系统出现故障,数据能够得到及时的恢复。
    一、基本概念
        1.事务处理及其日志
    SQL Server使用事务来跟踪所有数据库变化。事务是SQL Server的工作单元。一个事务包含一条

    或多条作为整体成功或失败的T_SQL语句。每个数据库都有自己的事务日志,即系统表syslogs,

    事务日志自动记录每个用户发出的每个事务,它饮食了每个事务足够多的信息,以确保数据能够被恢复。
    2.检查点(CheckPoint)
    服务器在何时更新数据?
    ——在检查点。在服务器发出一个检查点时:(1)更新数据;(2)在日志中记录下执行检查点

    的标记。
    检查点可把所有“脏页”写到数据库设备上,“脏页”是指从上一次检查点以来,在内存中修改、但没有

    在磁盘上修改的页。SQL Server的自动检查点机制保证了被完成的事务修改的数据页有规律地从内

    存中的缓冲区写到数据库设备上。
    二、数据库备份
    若硬件介质出现故障(如磁盘损坏),当且仅当事先已对数据库及其事务日志作了备份,才

    能恢复数据库。
    注意:绝对不要使用操作系统的拷贝数据库设备,把这样一个拷贝装入SQL Server将导致大

    量数据库受损。
    备份的类型:
    完全备份()
    增量备份——备份事务处理日志
    说明:
    (1)只有把事务日志放在单独的设备上,才能进行增量备份;
    (2)备份事务日志会截断日志,因此备份的内容是自上次备份以来的事务处理。
    (3)备份之前要启动备份服务器,并最好创建转储设备。
    命令语法:
      dump database 数据库名
        to 转储设备名/物理文件名

      dump transaction 数据库名
       {with {truncate_only|no_log}
        to 转储设备名/物理文件名
        [with No_truncate]
    Truncate_only与no_log选项用于删除事务处理而不作拷贝。Truncate_only截断日志;在事

    务处理日志完全满时用no_log,它不为数据库建立检查点。两个选项都会丢掉日志。当使用

    了这两个参数后,应及时备份整个数据库。
    No_truncate拷贝日志但不截断日志,在出现介质错误时使用该选项。

    图形界面的选项与命令参数的对应关系:
    (1)dump transaction   (2)dump transaction……  with no_truncate
    (3)dump transaction……  with truncate_only
    (4)dump transaction……  with no_log
    三、数据库的恢复
    使用load database加载备份到现有数据库,数据库可以是用于创建转储的数据库,也可以

    不是。语法为:
    load database 数据库名 from 转储设备名/物理文件名
    load transaction数据库名 from 转储设备名/物理文件名
    ●利用备份恢复数据库举例:
    某数据库数据和日志分别存储在两个独立的磁盘上,正常运转时的执行的备份计划如下,每天

    的17:00执行整个数据库的备份,每天的10:00、12:00、14:00、16:00点执行增量备份:

    周一17:00磁带1(100M)周二10:00磁带2(30M)周二12:00磁带3(30M)周二14:00磁带4(30M)

    周二16:00磁带5(30M)周二17:00磁带6(30M)


    DumpdatabaseDumptransactionDumptransactionDumptransactionDumptransactionDumpdatabase

    若数据磁盘在周二的下午六点损坏,可以采用如下步骤恢复数据库:
    (1)使用dump transaction with no_truncate获得当前的事务日志转储,磁带7;
    (2)使用load database转载最新的数据库转储,磁带6;(offline)
    (3)使用load transaction提交最新的事务日志转储,磁带7;
    (4)使用online database把数据库状态设置为online。
    若数据磁盘在周二的下午4:50损坏,恢复过程如下:
    (1)使用dump transaction with no_truncate获得当前的事务日志转储,磁带7;
    (2)使用load database转载最新的数据库转储,磁带6;(offline)
    (3)使用load transaction依次装载磁带2、3、4、5上的事务日志;
    (4)使用load transaction提交最新的事务日志转储,磁带7;
    (5)使用online database把数据库状态设置为online。
    四、制定备份与恢复的策略
       由于事务日志在恢复数据库中的特殊作用,应定期备份数据库及其事务日志,而且事务日志

    的备份要更频繁一些。如:数据库每周备份一次,事务日志每天备份一次。


    第六讲  数据库与T-SQL语言

    一、关系模型的基本概念
    关系数据库以关系模型为基础,它有以下三部分组成:
    ●数据结构——模型所操作的对象、类型的集合
    ●完整性规则——保证数据有效、正确的约束条件
    ●数据操作——对模型对象所允许执行的操作方式
    关系(Relation)是一个由行和列组成的二维表格,表中的每一行是一条记录(Record),每

    一列是记录的一个字段(Field)。表中的每一条记录必须是互斥的,字段的值必须具有原子性。
    二、SQL语言概述
      SQL(结构化查询语言)是关系数据库语言的一种国际标准,它是一种非过程化的语言。通过

    编写SQL,我们可以实现对关系数据库的全部操作。
    ●数据定义语言(DDL)——建立和管理数据库对象
    ●数据操纵语言(DML)——用来查询与更新数据
    ●数据控制语言(DCL)——控制数据的安全性
    T-SQL语言是Sybase对SQL92标准的一种扩展,主要在它的基础上增加了三个方面的功能:自己

    的数据类型/特有的SQL函数/流程控制功能
    T-SQL中的标识符使用说明:
    (1)标识符由1-30个字符或数字构成,但首字符必须为字母。临时表的表名以#开头,长度不能

    超过13个字符。
    (2)数据库对象的标识方法举例
    database.owner.tablename.columnname
    执行远程存储过程:
    EXEC server.db.owner.proc_name
    当执行语句在批处理的句首时,EXEC可以省略。
    三、Sybase的数据类型
        在创建表或声明局部变量时,必须使用Sybase系统预定义类型。
    1.字符类型
    Char(n)   VarChar(n)
    2.数值类型
    整数类型——Integer  SmallInt  TinyInt
    浮点类型——Real  Float  Number[P,S]  Decimal[P,S]
    货币类型——Money  SmallMoney
    3.日期/时间类型
    Datetime  SmallDatetime
    两者时间部分的精度不同,前者精确到分,后者精确到1/30秒。
    4.文本和图像类型
    Text  Image
    5.二进制数据类型
    Binary(n)  VarBinary(n)
    四、数据定义语言
    用来定义数据库对象。数据库对象是Sybase用来存储数据的逻辑实体,主要有:
    表(Table)、视图(View)、临时表(Temp Table);
    主键(Primary Key)、外键(Foreign Key)、索引(Index)、规则(Rule)、默认值(Default);
    存储过程(Stored Procedure)、触发器(Trigger)
    ●基本语法
    下面给出创建主要数据库对象的语法:
    1.表
    创建表的基本语法是:
    Create table[database.[owner].]table_name
    (column_name datatype [default {constant_expression|user|null}]
    {[{identity|null|not null}]|[[constraint constraint_name]
    {{unique|primary key}[clustered|nonclustered]
    [with{fillfactor|max_rows_per_page}=x]
    [on segment_name]
    |references[[database.]owner.]ref_table
    [(ref_column)]
    |check(search_condition)}]}…

    在建立大型的数据库时,可以考虑将创建表乃至其它数据库对象的过程写到一个文本里,当数据库

    系统出现问题时,在最坏的情况下,重建过程可以得到简化,也能比较好的对数据库的建设过

    程进行监视。
    创建表的过程完成下列活动:
    ·定义表的每一列;
    ·定义列名和列的数据类型并指定列是否处理空值;
    ·指定列是否具有IDENTITY属性;
    ·定义列级的完整性约束和表级的完整性约束
    上述过程可见,创建表的过程可以设定填充因子,将列置于段上,设计索引,外键等等。
    2.索引
    索引对查询性能的影响很大,要引起重视。
    索引加速了数据检索,Adaptive Server有三类索引:
    ·复合索引——索引包含多列;当两列或多列由于它们的逻辑关系而作为整体被查询时可建立这种索引;
    ·唯一索引——索引列的值不允许重复;
    ·簇聚索引和非簇聚索引——簇聚索引强迫Server不断地对表中数据排序或重排序以保证表中数

    据的物理顺序和逻辑顺序的一致性,簇聚索引对范围查询性能影响极大;非簇索引没有这样的要

    求,非簇聚索引对修改操作有利。

    何时建索引?
    ·如果手动插入identity列,则创建唯一索引以保证不插入已经存在的值;
    ·经常被排序访问的列,即被列在order by子句中的列,最好对其建立索引以便Adaptive Server能

    充分利用索引顺序的优点;
    ·如果列经常用手连接,则可对列建立索引,这样系统能更快地执行连接;
    ·包含主键的列一般都有簇聚索引,尤其是当它频繁地和其它表的列相关联;

    ·经常被范围查询的列最好为其建立簇聚索引,一旦查询范围内的第一个值被发现,则随后的值

    在物理上一定相近。簇聚索引对单值查询并没有什么优点。
    创建索引的基本语法:
    Create [unique][clustered|nonclustered]index index_name
    On [[database.]owner.]table_name
    (column_name[,column_name]…)
    [on segment_name][with consumers=x]

    上述语法包含了这样的暗示:将簇聚索引和它的基表分离在不同的段上;段是逻辑概念,但段

    可以位于不同的物理设备上,也即将簇聚索引和基表物理上分开。 这是不允许的,我们将在

    后面讨论设备、数据库、段、表分区时作详细讨论。
    3.键(key)
    理解键是理解关联的关键。
    键和索引往往是一回事。键的意义在概念上,键用于参照完整性约束。
    主键是表的单值列的集合,主键通过在放置它们的表上创建一个单值索引来实现其单值性的。

    实际上主键是作为标志表的标志符而存在的,一旦主键确定,则由该主键就确定了的表也就确定了。
    外键是和其它表中的主键相关的列,主键和外键的关系确定了外键的值域,该值域即为相应主

    键的取值范围。这样就从理论上强制实现了表与表之间的参照完整性。
    前面创建表的语法里包含了创建键的成分。也可以通过其它途径创建主键和外键。
    ◇Unique约束和Primary key约束的区别
    Unique约束和Primary key约束用来保证同一表中指定的列上没有重复值,这两个约束都产生

    唯一索引确保数据一致性,默认情况下,Unique约束产生唯一的非聚集索引,Primary key约束

    产生唯一的聚集索引。Primary key约束比Unique约束严格:Primary key列不允许有空值,

    Unique列允许有空值。
    4.视图
    视图是查看多表中数据的方法,视图从基表派生,它并非物理存在,而是逻辑表;视图也系统

    提供管理表的一种安全机制。视图使得用户集中精力在感兴趣的数据集上。
    创建视图的语法:
    create view [[database.]owner.]view_name
    [(column_name[,column_name]…)]
    as select [distinct] select_statement
    [with check option]
    有distinct关键字的视图不能更新。当视图涉及关联时,定义视图要小心,这时是对多表操作

    ,完整性显得很重要。
    五、数据操纵语言
    1.Select语句
    基本语法:
    SELECT[all|distinct]字段列表
    [into表名]
    [from表名]
    [where条件表达式]
    [group by [all]字段列表]
    [having筛选表达式]
    [order by 字段列表[asc|desc]]
    [compute聚集函数列表[by字段列表]]
    注意:Select语句中的子句必须按照上述顺序使用。也就是说,若该语句包括一个group by子句

    和一个order by子句where,group by子句必须放在order by子句之前。
    Having子句类似于where子句,不同之处有两点:(1)Having子句必须结合group by子句使用;

    (2)where子句不能用聚集函数,而Having子句可以。
    下面通过实例来对Select的通常用法加以介绍。
    例1:选择所有的列,语法为select * from table_list
    如:select * from publishers
    例2:选择指定的列,语法为
    select column_name[,column_name]…
    from table_name
          如:select pub_id,pub_name from publishers
    例3:重命名查询结果中的列,语法为
         select column_heading= column_name
         from table_name
         如:select Publisher=pub_name,pub_id
    from publishers
    例4:select列表中的计算值,可以对select列表中的数值数据进行计算,下面列出了算术运算符。

    符号运算
    +加
    -减
    /除
    *乘
    %取模
    如select title_id,total_sales,total_sales*2 from titles
    例5:使用distinct消除重复的查询结果
    可选的关键词消除select语句的结果中的重复行。若不指定distinct,缺省值为all,将检索出

    包含重复行的所有行数据。
    如:select distinct au_id from titleauthor
    例6:选择行——where语句
    select语句中的确切指定要检索哪些行的准则,其一般格式为:
    select select_list from table_list where search_conditions
    where子句中的搜索条件(或称限制)包括:
    ·比较运算符(=,<,>,!=等=
    如:where advance*2>total_sales*price
    ·范围(between和not between)
      如:where total_sales between 5000 and 10000
    ·列表(in和not in)
      如:where state in(“CA”,”IN”,”MD”)
    ·匹配字符(like和not like)
      如:where phone like “0535%”
    ·未知值(is null和is not null)
      如:where advance is null
    ·以上各项的组合(and, or)
      如:where advance<5000 or total_sales between 500 and 1000
    例7:用集合函数小结查询结果
    集合函数用特定列的数据来计算小结值。
    集合函数结  果
    Sum([all|distinct]expression)数值列中(不重复)值的总和
    Avg([all|distinct]expression)数值列中(不重复)值的平均
    count([all|distinct]expression)列中(不重复)非空值的数目
    Count(*)选定的行数
    Max(expression)Expression的最大值
    Min(expression)Expression的最小值
    如:select avg(advance),sum(total_sales)
    from titles
    where type=”as”
    select count(*) from titles
    select avg(distinct price) from titles
    select max(price) from books
    例8:分组组织查询结果——group by 子句
          group by 子句用在select语句中将一张表分成若干组。
    如:select type, advance from titles group by type
    例9:选择分组数据——having子句
          having为group by 子句设置条件,与where为select语句设置条件一样。Having搜索条

    件与where相同,但having可包括集合函数,而where不能包括。
    下列语句使用带集合函数having子句的例子。它把title表中的行按类型分组,但去掉了那只包

    含一本书的分组。
    Select type from titles group by type having count(*)>;1
    下面是一个不带集合函数的having子句的例子。它把title表中的行按类型分组,但去掉了那些不

    以字母“p”开头的类型。
    Select type from titles group by type having type like “p%”
    例10:查询结果排序——order by子句
    Order by子句允许按一列或多列对查询结果排序。每个排序可以是升序的(asc)或降序的

    (desc)。若不特别指明,则按升序进行。下列查询返回按pub_id排序的结果:
    Select pub_id,type,title_id from titles order by pub_id
    例11:连接——从多张表中检索数据
    连接两张或两张以上的表是这样一个过程:比较指定字段中的数据,根据比较结果用符合条

    件的行组成一张新表。
    举例:
    select publishers.pub_id,publishers.pub_name,authors.*
    from publishers,authors
    where publishers.city=authors.city
    例12:分组计算子句
    Compute是Sybase对SQL标准中Group子句的扩充,可以将其看作带聚集计算的Group子句。例如:
    Select type,price,advance
    From titles
    Order by type
    Compute sum(price),sum(advance) by type
    2.Insert语句
    用Insert命令向数据库中添加行有两种方法:使用关键词values或使用select语句。
    Insert语句的基本语法为:
    Insert[into]表名[(字段列表)]
    {values(值列表)|select_statement}
    举例:insert into publishers
          values(‘1622’,’Jardin,Inc.’,’Camden’,’NJ’)
          Insert into publishers(pub_id,pub_name)
    values(‘1756’,’The Health Center’)
              Insert authors select * from newauthors
              Insert authors(au_id,address,au_lname,au_fname)
    Select * from newauthors
    3.Delect语句
    Delect可以对一行或多行进行操作。
    Delect语句的基本语法为:
    Delect 表名
    [from 表名列表]
    [where条件表达式]
    举例:Delect publishers
            where pub_name=”Jardin,Inc.”
          Delect titles
            From authors, titles
            Where titles.title_id=authors.title_id
    4.Update语句
    可以使用Update命令来改动表中的单个行、一组行或所有行。
    Update语句的基本语法为:
    Update表名
      Set column_name1={expression1|null|(select_statement)}
       [,column_name2={expression2|null|(select_statement)}]
       [……]
       [from 表名列表]
       [where 条件表达式]
    举例:
    update authors set_au_lname=”Health”,aufname=”Goodbody”
      where au_lname=”Bloth”
    update titles
      set total_sales=total_sales + qty
      from titles,sales
      where titles.title_id=sales.title_id
    六、Sybase预定义函数
    1.聚集函数
    sum([all|distinct]表达式)
    avg([all|distinct]表达式)
    count([all|distinct]表达式)
    count(*)
    max(表达式)
    min(表达式)
    2.字符串函数
    upper(字符表达式)
    lower(字符表达式)
    char(整型表达式)
    char_length(字符表达式)
    ltrim(字符表达式)
    rtrim(字符表达式)
    ……
    3.数学函数
    abs(精确小数型表达式)
    floor(精确小数型表达式)求小于或等于给定表达式值的最大整数(取底)
    rand([整数型]
    round(精确小数型表达式,整数)
    sign(精确小数型表达式)
    power(精确小数型表达式,整数幂)
    ……
    4.日期函数
    getdate()
    datepart(日期部分,日期)
    datediff(日期部分,日期1,日期2)
    dateadd(日期部分,数值表达式,日期)
    5.类型转换函数
    convert(数据类型,表达式[,格式])
    6.系统函数
    db_name([数据库ID])
    host_name()
    isnull(表达式1,表达式2)
    ……
    七、数据控制语言
    用来控制数据的安全性,如权限控制语句GRANT和REVOKE等。


    第七讲  数据库编程基础

    一、批处理
    SQL Server可以处理作为一批而提交的多个SQL语句,既可以是交互式的,也可以是

    一个文件。批处理SQL语句由批结束标志终止,该标志指示SQL Server从前面开始执

    行该批处理语句,对于独立的SQL实用程序isql而言,其批结束标志为单独占一行的“go”。
    举例:选择表title及表authors的行数
    select count(*) from titles
    select count(*) from authors
    go
    二、流程控制语言
    1.变量声明与赋值
    全局变量由系统预定义,以符号@@打头。
    局部变量声明使用Declare语句,这个变量必须以符号@开头,后跟一个标识符。
    Declare @变量名  数据类型[,@变量名  数据类型,……]
    变量赋值使用Select语句,未赋值的变量其值为Null。
    举例:
    Declare @msg char(50)
    Select @msg=’How are you?’
    Select @msg=emp_name from employee
       Where emp_id=12345678
    2.SQL语句块
    Begin
    Statement Block/*多个顺序执行的SQL 语句*/
    End
    3.条件语句
    If 条件表达式
      语句(块)
    Else
      语句(块)
    举例:
    if(select max(id) from sysobjects)<50
      print ‘数据库里没有用户创建的对象‘
    else
      select name,type,id from sysobjects where id>;50
    4.循环语句
    While 条件表达式
        语句(块)
    ●两个特殊的循环控制语句:
      Continue 执行下一次循环
      Break    退出当前循环
    举例:
    While(select avg(price) from titles)>;$20
      Begin
       Update titles set price=price/2
       If(select avg(price) from titles)<$40
         Break
       Else
         Continue
    End
    5.其它控制语句
    ◇Return语句——无条件结束当前过程,并可返回给调用者的一个状态值:Return[整数表达式]
    ◇Print语句
    ◇RaiseError语句
    ◇Waitfor语句
    三、存储过程
        存储过程是存储在服务器端的一类数据库对象,它实质上是一段用SQL语言编写的程序,

    它在服务器端预先经过编译,并确定出执行计划,因此与同样功能的批处理语句相比,它的

    执行速度较快。
    基本语法:
    Create Procedure[owner.]过程名
    [@参数名  数据类型[=默认值][Output]]
    [,@参数名  数据类型[=默认值][Output]]
    [……]
    AS
    Begin
      SQL语句(块)
    End
    存储过程是数据库对象,和表、索引是一个级别的;是SQL语句和控制流语言的集合,存储

    过程在首次运行时被编译,并驻留在过程高速缓存的内存中,所以存储过程的招待非常快。

    存储过程可以带参数,可以调用其他过程,返回状态值,返回参数值,并且可以在远程SQL Server

    执行。可以在远程SQL Server执行对数据库设计有特别重要的意义。SQL Server提供的存储过程

    称为系统过程。

    存储过程大大增强了SQL的能力、效率和灵活性,经过编译的存储过程极大地改善SQL语句和批

    处理的性能。
    存储过程有很多优点:
    ●存储过程在第一次执行时编译,并存储在过程高速缓存的内存中。编译时系统对其进行优化,以

    选择最佳的路径来访问数据集中的数据,这种优化考虑了数据集的实际数据结构。因此存储过程

    大大提高了系统的性能。
    ●存储过程可以跨服务器运行。这一点是通过触发器来实现的,当然,首先存储过程要能登录到

    该远程服务器。
    ●应用程序也能执行存储过程,从而实现服务器和客户之间的协同作业。
    ●存储过程减少了网络的交通。这是因为存储过程的文本存储在数据库里,调用存储过程时通过

    网络的只是存储过程的过程名。
    ●利用存储过程可以提供一个附加的安全层。
    如(该例子取自pubs2数据库):
    Create proc titleid_proc(@title_id varchar(80))
    As
    Begin
          Select @title_id=lower(@title_id)+”%”
      Select title,title_id,price
        Form titles
        Where lower(title_id) like @title_id
    Return @@rowcount
    End
        注意例子中的黑体部分,这实际上是一条赋值语句。该存储过程有返回值。
    存储过程可以变得非常复杂。我们认为,创建存储过程还是要遵循“最简单就是最好”的原则。

    建议在创建存储过程时采用缩进风格,否则创建的存储过程三天之后连自己都看不懂。
    需要对存储过程作些说明:
    ●Create procedure 语句不能和其他语句在同一个批命令里。
    ●Create procedure 语句不能包括下列语句:
      use
      Create View
      Create default
      Create rule
      Create trigger
      Create procedure
    不能使用use语句好理解,存储过程是针对数据库的,不能在一个数据库里访问另外的数据库。

    如果在存储过程里访问另外的数据库,则数据库表的参照完整性难于得到保障。
    从另外几条语句看,在存储过程里一般不能创建新的数据库对象。但可以创建表和索引,

    以及和表相关联的键,表是临时表,在存储过程结束后不能看见创建的临时表;否则的话

    每运行一次存储过程就创建一个表,结果可想而知。
    存储过程里不能创建一个对象,删除它;然后又在同一存储过程里用相同的名字创建新的对象。

    实际上,SQL Server在存储过程运行时而不是在编译时创建对象的。
    ●如果存储过程调用另外的存储过程,则第二个存储过程可以调用在第一个存储过程里创建的对象。
    ●存储过程包含的最多参数为255个,对存储过程里的局部和全局变量没有限制。
    最后讨论一下系统存储过程。系统存储过程以sp_开头,当然用户创建的存储过程也可以以sp_开头

    ;系统过程保存在sybsystemprocs数据库里。系统过程的使用有权限,如果打入系统过程名但

    没有出现预期的结果,要么是命令名错,要么是使用者没有该过程的权限。一般可通过系统

    管理员或数据库所有者对系统过程的execute授权。
    系统过程繁多,大致有几类:
    a. 用户标志和授权。这一类的过程主要由于:增加、删除或报告在SQL Server上的登录,

    增加、删除或报告某数据库的用户、分组或别名等。这类过程有sp_addlogin,sp_adduser,

    sp_helpgroup,sp_dropuser等。
    b. 远程过程的调用。这类过程用于:增加、删除或报告能存取本SQL Server的远程服务器;

    增加能从远程服务器上存取本SQL Server的用户名。这类过程有:sp_addremotelogin,sp_addserver,

    sp_dropserver等。
    c. 数据定义和数据库对象。这类存储过程用于:连接和定义规则和缺省值,增加、删除或

    报告主码、外码和公共码;增加、删除或报告用户定义的数据类型。这类存储过程有:

    sp_bindfault, sp_bindrule, sp_help, sp_helpdb, sp_foreignkey, sp_helptext等。
    d. 系统管理。这类存储过程用于:增加、删除或报告数据库及转储设备;报告锁;设置的数据库

    选择及用户正进行的进程;修改及报告配置变量;监控SQL Server的活动。这类过程有:

    sp_addumpdevice,sp_dropdevice, sp_helpdevice等。
    四、触发器
    触发器是一种用来保障参照完整性的特殊的存储过程,它维护不同表中数据间关系的有关规则。

    当对指定的表进行某种特定操作(如:Insert,Delete或Update)时,触发器产生作用。

    触发器可以调用存储过程。
    创建触发器的语法:
    Create Trigger[owner.]触发器名
    On [owner.]表名
    For {insert,update,delete}
    As
    Begin
      SQL语句(块)
    End
    定义一个好的触发器对简化数据的管理,保证数据库的安全都有重要的影响。

    触发器是针对表一级的,这就意味着,只有表的所有者有权创建表的触发器。
    举例:
    插入一个新行,必须保证外键与主键相匹配,触发器应该首先检查被插入行与主键表的连接。
    以下的触发器对inserted表和titles表的title_id进行比较,这里假设正在给外键输入数据,

    没有插入空值,若连接失败,事务被回退。insert,update,delete
    Create trigger forinsertrigl
      On salesdetail
      For insert
      As
      If(select count(*)
      From title,inserted
      Where titles.title_id=inserted.title_id)!=@@rowcount
        Begin
          Rollback transaction
          Print “No,some title_id does not exist in titles.”
        End
      Else
         Print “Added! All the title_id is exist in titles.”
    在本例中,@@rowcount代表添加到salesdetail表的行数,这也是添加到inserted

    表中的行数。通过连接表titles和表inserted来检测所有添加到salesdetail的title_id是否

    在titles中存在。若所连接的行数(count(*))与@@rowcount不同,由有一个或多个插

    入不正确,整个事务被取消。
    触发器的限制:
    ●一个表最多只能有三个触发器,insert,update,delete
    ●每个触发器只能用于一个表
    ●不能对视图、临时表创建触发器
    ●Truncate table能删除表,但不能触发触发器
    ●不能将触发器用于系统表
    合理地使用触发器对性能的影响是正面的。在设计和使用触发器时,经常地用sp_depends

    命令了解对象所关联的触发器是有好处的,该命令能列出触发器影响的所有对象、表和视等。
    在定义几类数据库对象的时候,对存储过程、索引和触发器要给予特别的注意,尤其存储过程,

    它设计的好坏对数据库性能的影响很大。
    说明:Sybase触发器使用的两个测试表:Deleted表和Inserted表,它们都是临时表,

    其结构与触发器的基表结构相同,用来存放与修改相关的数据行。
    五、游标
        1.游标的概念
    游标是指向查询结果集的一个指针,它是一个通过定义语句与一条Select语句相关联

    的一组SQL语句。游标包含两方面的内容:
    ●游标结果集:执行其中的Select语句所得到的结果集;
    ●游标位置:一个指向游标结果集内的某一条记录的指针
    利用游标可以单独操纵结果集中的每一行。游标在定义以后存在两种状态:关闭和打开。

    当游标关闭时,其查询结果集不存在;只有当游标打开时,才能按行读取或修改结果集中的数据。
    2.使用游标
    一个应用程序可以使用两种类型的游标:前端(客户)游标和后端(服务器)游标,

    它们是两个不同的概念。
    无论使用哪一种游标,都需要经过如下几个步骤:
    ●定义游标
    ●打开游标
    ●从游标中操作数据
    ●关闭游标
    下面讲述的是后端(服务器)游标。
    (1)定义游标
    在使用游标之前必须声明它。声明指定定义游标结果集的查询。通过使用for update或

    for read only关键词将游标显式定义成可更新的或只读的。
    Declare cursor语法为:
    For select_statement
    [for{read only|update[of colum_name_list]}]
    举例:
    declare pubs_crsr cursor
    for select pub_name,city,state
    from publishers
    for update of city,state
    (2)打开游标
    open的语法为:
        open  游标名
    在声明游标后,必须打开它以便用fetch,update,delete读取、修改、删除行。在打开一个

    游标后,它将被放在游标结果集的首行前,必须用fetch语句访问该首行。
    (3)从游标中读取数据
    在声明并打开一个游标后,可用fetch命令从游标结果集中获取数据行。
    Fetch的语法为:
    Fetch 游标名[into 变量列表]
    举例:fetch pub_crsr into @name,@city,@state
    SQL Server在每次读取后返回一个状态值。可用@@sqlstatus访问该值,下表给出了

    可能的@@sqlstatus值及其意义。
    值意  义
    0Fetch语句成功
    1Fetch语句导致一错误
    2结果集没有更多的数据,当前位置位于结果集最后一行,而客户对该游标仍发出Fetch语句时。
    若游标是可更新的,可用update和delete语句来更新和删除行。
    删除游标当前行的语法为:
    delete[from]表名
    where current of 游标名
    举例:delete from authors where current of authors_crsr
    当游标删除一行后,SQL Server将游标置于被删除行的前一行上。
    更新游标当前行的语法为:
    update 表名
      set column_name1={expression1|NULL|(select_statement)}
      [,column_name2={expression2|NULL|(select_statement)}
    [……]
    where current of 游标名
    举例:
    update publishers
    set city=”Pasadena”,state=”CA”
      where current of pubs_crsr
    (4)关闭游标
    当结束一个游标结果集时,可用close关闭。该语法为:
    close 游标名
    关闭游标并不改变其定义,可用open再次打开。若想放弃游标,必须使用deallocate

    释放它,deallocater的语法为:
    deallocater cursor 游标名
    deallocater语句通知SQL Server释放Declare语句使用的共享内存,不再允许

    另一进程在其上执行Open操作。
    六、事务——维持数据一致性和恢复
        1.事务的定义
    事务提供了一种将T-SQL语句分组的方法,从而使它们能够被当成一个单元来处理:

    组中所有语句或都执行,或都不执行。
    事务是确保一个或多个SQL语句的集合不被当成单一工作单元处理的机制,SQL Server自动

    将所有数据修改命令,包括单步改变请求,作为事务处理,缺省时,每个insert、update、

    delete语句被当成一个事务处理。
    2.事务的作用
    事务使SQL Server能保证:
    ·一致性——同时发生的查询或改变请求彼此不冲突,用户不能对正处于改变过程的数据

    进行查看或操作。
    ·恢复——在系统失效时,数据库的恢复是完全的和自动的。
    3.使用事务
    a. 开始和确认事务
    begin transaction和commit transaction可将任意数目的SQL语句封装起来,这两名的简单语法为:
    begin transaction
    commit transaction
    b. 回退事务
    在commit transaction命令提交前任何时候可取消或回退事务,该命令的简单语法为:
    rollback transaction
    4.检查事务状态
    全局变量@@transtate记录了事务当前的状态。在执行一个语句后SQL Server通过记录所有

    事务变化来确定返回何种状态。
    @@transtate可包含下列值:
    值意  义
    0事务进行中:一个显式或隐式事务有效;上一语句执行成功
    1事务完成:事务完成并提交其变化
    2语句异常中止:上一语句异常终止;对事务无影响
    3事务异常中止:事务异常中止并回退所有变化
    举例:在事务中,可在一个语句(如insert)后使用@@transtate确定该语句成功或失败

    对事务的影响。commit transaction
    Begin transaction
      Insert into publishers(pub_id)values(‘9999’)
      (1 row affected)
      select @@transtate
    …………………
        0
       commit transaction
      select @@transtate
    …………………
        0
    (1 row affected)

     

    出处:http://bbs.chinaunix.net/viewthread.php?tid=15733


    展开全文
  • Sybase的安装、配置及使用(一)

    万次阅读 2012-11-29 22:14:26
    数据库 Sybase 12.5.3。 1.解压ase1252_de_win.zip 2.进入目录ase1252_de_win,点击setup.exe 4.国别选择People’s Republic of China(RPC),点击“Next”: 5.点击“Next”: 7.选择Custom,点击Next: 8 ....

     

    第一章 数据库安装

    系统环境:操作系统:win7。数据库 Sybase 12.5.3。

    1.解压ase1252_de_win.zip

    2.进入目录ase1252_de_win,点击setup.exe

    4.国别选择People’s Republic of China(RPC),点击“Next”:

    5.点击“Next”:

    7.选择Custom,点击Next:

    8 .选择ODBC,OLEDB,默认选项没有中文,需要选择中文组件,点击Next:

    10.安装程序开始安装。11安装完毕后,点击Next:

    11.点击Next:

    13.点击Next:

    14.点击Next

    15.点击Finish重启完成安装。

     

     

    第二章  Create Adaptive Server

    第三章  Sybase adaptive server配置

    第四章  安装数据库示例

    第五章  Sybase数据库的常用工具说明

     

    展开全文
  • sybase数据库

    2020-07-23 23:33:57
    sybase可视化工具,方便快捷 解压即可用 简单值得拥有
  • Sybase数据库介绍

    万次阅读 2005-11-03 20:34:00
    一、Sybase数据库简介1.版本 1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。SYBASE主要有三种版本,一是UNIX操作系统下运行的版本,二是Novell Netware环境下运行...
    一、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上不需安装补丁盘。 
    展开全文
  • Sybase简介

    千次阅读 2018-11-09 18:26:37
    刚开始Sybase的数据库一般叫作Sybase SQL Server,你没仔细瞧还以为是微软的SQL Server呢.实际上两者是有很大关联的.SQL Server最初是由Microsoft ,Sybase与Ashton-Tate三有公司共同研发的.到最后大家合不来就散伙了...

    八卦一下   

    刚开始Sybase的数据库一般叫作Sybase SQL Server,你没仔细瞧还以为是微软的SQL Server呢.实际上两者是有很大关联的.SQL Server最初是由Microsoft ,Sybase与Ashton-Tate三有公司共同研发的.到最后大家合不来就散伙了啊.微软自己单独整去了,而由于它的名气大,整出的数据库使用也广.所以现在说到SQL Server就是指的微软家的了,实际上完整的说法是MSSQLServer.而Sybase现在流行使用的改进的SQL Server新版本Adaptive Server Enterprise,简称ASE.

       现在都是流行大鱼吃小鱼啊.经常听闻大企业收购小企业,如果不是有垄断法的一些限制.估计很容易就出现一家独大,任意的制定各种游戏规则,软件消费家等着被宰的局面啊.MySQL先是被Sun收购,Sun后面又被Oracle收购了.而Sybase则被ERP界的老大SAP给收购了.

     

    Sybase客户端

    话说MS SQL Server有个图形界面的客户端管理工具Management Studio,Sybase ASE也有一个叫Sybase Central的图形界面工具.

    连接数据库

    在连接页面输入User name, password. .Host name是server所在机器的IP地址或机器名,port是端口号,默认是5000. Server name随便取个啥名都行.如果要方便连接,可以事先配置好连接信息.

    在安装目录的ini文件夹下打开sql.ini文件,添加如下内容:

    [YourServerName]
    master=NLWNSCK,10.30.40.50,5000
    query=NLWNSCK,10.30.40.50,5000

    这表示配置一个server ip为10.30.40.50, 端口为5000的数据库,YourServerName是随便取的名字,配置好后在connect页面中的Server Nameg下拉列表中选择即可.

     

    连接成功后我们会在左边看到一个树形结构的列表.其中Databases下面有master,model.另外还有Logins,Roles.用习惯了SQL Server的人看着肯定会非常的顺眼的.

    如果要输入SQL则需要选中一个Databases,然后右击Open Interactive SQL,打开SQL 编辑页面.

    展开全文
  • sybase数据库下载

    千次阅读 2013-12-01 15:15:29
    ************************************************************** ...http://www.sybase.com/detail?id=1030941 EBF: http://downloads.sybase.com/swd/base.do?client=support ********************************
  • sybase数据库环境搭建的过程

    万次阅读 2018-08-13 18:01:45
    本案例为centos6.5操作系统,sybase数据库版本为15.7。安装操作系统不做详解 装完之后在root下 配置IP,改为动态获取,使其能链接网络 vi /etc/sysconfig/network-scripts/ifcfg-eth0 重启服务 service network ...
  • Windows环境下Sybase12.5 图文安装教程

    万次阅读 2016-12-08 09:37:23
    Windows环境下Sybase12.5 图文安装教程 由于项目中需用到Sybase数据库,因此安装数据库是必不可少的动作了。之前根本没接触过这东西,用过之后才知道确实很垃圾!预言:2年后被数据库领域淘汰出局!玩笑话!~...
  • linux 启动sybase命令

    万次阅读 2007-03-08 17:31:00
    ybase@CHQWEB:/sybase/ASE-12_5/install> ./startserver -f RUN_CHQWEB 
  • Sybase ASE 查询当前版本和所有数据库

    万次阅读 2015-07-27 14:17:23
    Sybase ASE 查询当前版本和所有数据库
  • 查看Sybase数据库的字符集

    万次阅读 2006-08-22 10:42:00
    如何查看服务器端、客户端字符集 查看服务器端字符集: 在isql环境中执行: 1>; sp_helpsort 2>; go 查看客户端字符集: 在isql环境中执行: 1>; select @@client_csname 2>; go 
  • sybase中查询前n条记录

    万次阅读 2012-11-23 10:39:56
    sybase中查询前n条记录 1.sybase中查询前n条记录,比如现在n = 100 sql 语句: 方法1:  SELECT TOP 10 * FROM tableName 方法2: set rowcount 2 select * from tableName 注意:如果想取消rowcount 的...
  • Sybase中字符串替换函数:STR_REPLACE

    万次阅读 2012-07-16 14:14:38
    用法: SELECT STR_REPLACE("abc99922defg121212hicde","a","")   不过,好像不支持正则表达式,如下则得不到想要的结果:去掉所有非数字字符: SELECT STR_REPLACE("abc99922defg121212hicde","[^0-9]","") ...
  • SYBASE修改表的列名(字段名)

    千次阅读 2013-05-10 10:00:18
    当你想把表tiger中的字段F7换成F6的时候,可以使用以下命令   sp_rename ‘tiger.F7' ,'F6','column'   tiger表中有数据也不影响。
  • 如何查看sybase存储过程的内容?

    万次阅读 2012-11-21 14:54:02
    如何查看sybase存储过程的内容? 1 在isql(或SQL Advantage)中执行:  sp_helptext 存储过程名 可以查看存储过程的内容。 2 在 SQL CENTRAL里连接你的服务器用sa登录,点击你的用户数据库,展开树就有 ...
  • SELECT STR_REPLACE(CONVERT(VARCHAR, GETDATE(), 111) ,'/','-');
  • Sybase的安装、配置及使用(五)

    万次阅读 2012-11-29 22:17:46
    第五章 Sybase数据库的常用工具说明 Sybase的数据库安装目录中提供了我们常用的几种工具,依次打开开始->程序->Sybase,这里只说明我们常用的几种工具。如下图: 1.Dsedit Utility 这个工具是设置Sybase的...
  • sybase数据库JDBC连接方式

    千次阅读 2016-03-28 10:54:32
    定义一个工具类Conn,用来连接sybase数据库 /* * 获取JDBC连接,得到Connection对象 */ public static Connection getConnection(){ String Driver = "com.sybase.jdbc3.jdbc.SybDriver"; //数据库驱动
  • sybase 查看执行计划

    千次阅读 2010-11-18 09:20:00
    查看语句的执行计划: set showplan on set noexec on go select .......... go ...set showplan off ...go     查看存储过程执行计划: set ...
  • sybase查询数据库所有表的语句

    千次阅读 2012-06-13 09:23:49
    SELECT a.name,b.colid,b.name,c.name,b.usertype,b.length, CASE WHEN b.status=0 THEN 'NOT NULL' WHEN b.status=8 THEN 'NULL' END status, d.text FROM sysobjects a,syscolumns b,systypes c,syscomments
1 2 3 4 5 ... 20
收藏数 59,224
精华内容 23,689
关键字:

sybase