Sybase数据库系统常用操作Word下载.docx
《Sybase数据库系统常用操作Word下载.docx》由会员分享,可在线阅读,更多相关《Sybase数据库系统常用操作Word下载.docx(19页珍藏版)》请在冰点文库上搜索。
所有的SQL查询语言和系统存储过程都必须在isql下执行,并可在屏幕上显示返回的结果信息。
1.启动isql
[简要说明]
在Unix操作系统的命令行下可以启动isql。
[命令格式]
isql[选项]
[选项说明]
-Uusername允许用户访问SQLServer的一个登录帐号
-Ppassword允许用户访问当前SQLServer的口令
-SServer允许用户指定与其连接的SQLServer的名称
-iinputfile输入文件
-ooutputfile输出文件
-wcolumn_width为输出设置屏幕列宽
[使用实例]
以sa为用户名启动isql,访问当前SQLServer的口令为1234:
$isql-Usa-P1234
1>
或:
$isql-Usa
Password:
密码不回显
说明:
上例中,-U和-P后的用户名和密码不用空格也可以。
例如:
isql-Usa-P1234。
当正常启动isql后,isql也会像操作系统一样,提供一个isql工具环境提示符“1>
”。
此处的“1”表示即将输入的为一个命令的第一行,当命令分为多行输入时,只要没有提交Sybase数据库系统执行,将会出现“2>
”、“3>
”等提示符。
当一个命令输入完毕,需要用命令go来结束输入,此时Sybase数据库系统开始执行该命令并显示输出结果或将结果输出到指定的输出文件中。
命令执行完毕后,isql工具环境提示符自动复位为“1>
若在输入时输错了命令,也可以用命令reset清除查询缓冲,回退到“1>
”的环境提示符状态。
能够正常启动isql,也表明Sybase数据库服务器正常启动。
当然,导致isql不能正常启动的原因是多方面的,一方面可能是Sybase服务器未启动,另一方面可能是用户名与密码不符。
2.退出isql
退出isql,只需在isql环境提示符下输入命令quit或exit即可。
quit(或者exit)
退出isql环境:
quit
$
exit
D.1.2bcp
批拷贝命令bcp以用户指定的形式,将数据库表拷贝到操作系统文件中,或从操作系统文件中拷贝一个数据库表,该命令提供了在数据库表和操作系统文件之间传递数据的一种快速的方法。
bcp[[数据库.]所有者.]数据库表{拷贝方向in|out}数据文件[选项]
-fformatfile表明用户存有一个上次使用bcp处理同一表时得到的格式文件(扩展名为.fmt),并提供完整的路径名
-Uusername允许用户连接服务器时指定一个注册名(缺省值是由用户环境标识的用户名)
-Ppassword允许用户指定登录当前SQLServer的口令(若未使用此选项,系统将提示输入一个口令)
-SServer允许用户指定与其相连的SQLServer的名称(若没有提供服务器名,该选项使用$DSQUERY值;
若$DSQUERY值不存在,则使用SYBASE)
-c文件类型(如c-char、t-text、i-int等)
[参数说明]
数据库表所在的数据库
所有者欲拷贝的数据库表的所有者
数据库表欲拷贝的数据库表
拷贝方向in|out拷贝方向(in表示从文件到数据库表的拷贝;
out表示从数据库表到文件的拷贝)
数据文件源数据文件或目标数据文件(由拷贝方向是in或out来决定),包含完整的路径名和文件说明
将数据库warn中的表history备份成history.dat文件,文件类型为char:
$bcpwarn..historyouthistory.dat-Usa-P1234-c
Startingcopy...
注意:
若将上述命令中的拷贝方向out改为in,则表示恢复数据库表。
命令bcp主要用于备份与恢复数据库中某一个表,后面我们将介绍使用命令dump与命令load来对数据库进行备份与恢复操作。
D.1.3showserver
showserver可显示当前本机上正在运行的SQLServer,查看其是否启动,但要注意的是该用户必须是Sybase用户。
showserver
显示当前本机上正在运行的SQLServer:
$showserver
UIDPIDPPIDCSTIMETTYTIMECMD
sybase2042031Feb19?
944:
19/home1/sybase/bin/dataserver-ssybserver-d/dev/rdsk/c0t0d0s4-e/home1/sybase/i
sybase2082060Feb19?
0:
00/home1/sybase/bin/backupserver-Ssybserver_back-e/home1/sybase/install/sybserv
如上内容显示主备数据库服务器均已启动。
若SQLServer已启动,运行该命令后,系统将打印如上有关SQLServer的信息;
若SQLServer没有启动,则只打印标题信息。
D.1.4startserver
startserver用于启动SQLServer。
startserver[选项]
-frun_serverfile指定一个运行服务器文件(每次重启SQLServer时,以此文件为参考,在实际机器上该文件名为RUN_sybserver或RUN_sybserver_back)
-m以单用户方式启动SQLServer,用于恢复master数据库
D.1.5shutdown
系统管理员可用命令shutdown关闭SQLServer或BackupServer,此命令在isql环境下使用。
(1)
关闭SQLServer
shutdown[选项]
(2)
关闭BackupServer
shutdown备份服务器[选项]
with{wait|nowait}系统是否立即关闭(若为withnowait则跳过checkpoint操作,立即关闭系统,此时重启服务器的自动恢复工作量将大大加大;
否则相反)
备份服务器BackupServer名称
关闭数据库服务器时,必须注意关闭顺序,即必须先关闭备份服务器,然后再关闭主服务器。
shutdown后若没有给出服务器名称时,将关闭正在使用的SQLServer。
当发出shutdown命令时,SQLServer会执行如下操作:
禁止登录,系统管理员除外。
对每个数据库执行checkpoint操作,将改动过的页从内存刷新到磁盘。
等待当前正在执行的SQLServer语句或过程完成。
以此种方法关闭SQLServer,会使重新启动SQLServer时必须做的自动恢复工作量减到最小。
关闭BackupServer时,选项缺省为withwait,因此在BackupServer进程终止之前,进行中的任何转储或装载都将完成。
系统一旦发出shutdown命令,将不能再在BackupServer上进行新的转储或装载会话。
D.2T-SQL语言
T-SQL(Transact-SQL)是一种增强性型的标准结构化查询语言SQL(StructuredQueryLanguage)语言,它不仅与IBM的SQL语言以及其它绝大多数的SQL语言兼容,而且还在SQL语言的基础进行了扩展,增加了许多新的功能,最大限度的降低了用户对编程语言的依赖性。
标准的SQL语言最初被认为是一种查询和执行语言,而不是发展成熟的编程语言。
T-SQL对SQL进行了扩展,增加了程序流控制结构、局部变量和允许DBA创建存储过程、触发器等功能。
标准的SQL语言包括数据定义语句(DDL),数据操作语句(DML)和数据控制语句(DCL)。
本节内容主要介绍数据定义语句(DDL)和数据操作语句(DML)。
D.2.1数据定义语句(DDL)
数据定义语句DDL(DataDefinitionLanguage)主要用来创建、更改和删除数据库对象。
1.创建对象——create
这里只介绍表和索引的创建。
创建表
createtabletable_name(column_1datatype,…,column_ndatatype)
创建名为teachers的一张表,该表包括三个字段,分别为teacher_name(字符型,长度为18)、phone(字符型,长度为12)和salary(浮点型)。
createtableteachers(teacher_nameCHAR(18),phoneCHAR(12),salaryFLOAT)
2>
go
创建索引
createindexindex_nameontable_name(column_1,…,column_n)
创建表teachers中teacher_name字段的索引文件names。
createindexnamesonteahers(teacher_name)
2.删除对象——drop
这里只介绍表和索引的删除。
删除表
droptabletable_name
删除上述新建表teachers。
droptableteachers
删除索引
dropindextable_name.index_name
删除上述新建表teachers的索引文件names。
dropindexteachers.names
3.清空表内容——truncate
命令truncate只是清空表内容,但保留表结构。
注意与命令drop相区别。
truncatetabletable_name
D.2.2数据操作语句(DML)
数据操作语句DML(DataManipulationLanguage)包括对数据的查询、插入、修改和删除等操作。
下面分别对上述操作依次进行介绍。
1.查询记录——select
用命令select可以查询数据库中的表记录,此命令在isql下执行。
查询数据库warn中表history的记录信息。
usewarn
select*fromhistory
2.增加新记录——insert
用命令insert可以向数据库的表中增加新的数据(记录),此命令在isql下执行。
向表teachers中增加一个新记录。
insertintoteachers(teacher_name,phone,salary)values('
wangjie'
'
3340546'
3000)
3.更新记录——update
用命令update可以更新数据库的表中已有记录的指定字段的值,此命令在isql下执行。
将表teachers中zhanglin的电话号码更新为3356789。
updateteacherssetphone='
3356789'
whereteacher_name='
zhanglin'
4.删除记录——delete
用命令delete可以删除数据库的表中的指定记录,此命令在isql下执行。
删除表teachers中wangjie的记录。
deleteteacherswhereteacher_name='
where条件子句在上述命令中作用很大,例如要在students表中查询年龄不到20岁的女生姓名可以使用如下命令:
SELECTnameFROMstudentsWHEREage<
20ANDsex=F
go
D.2.3数据控制语言(DCL)
数据控制语言DCL(DataControlLanguage)主要对数据库进行监视、管理、控制访问权限等操作,用于数据库系统中权限的授予和收回。
数据库系统中,可以授予和收回的权限包括:
系统管理员
系统管理员可以授予其他用户createdatabase的权限,使其他用户可以成为数据库所有者(DBO)。
用户数据库所有者DBO
用户数据库所有者(DBO)在其所拥有的数据库中,可以授予其他用户的操作权限如表D-1所示。
表D-1DBO可授予其他用户的操作权限
可授予权限
含义
createtable
创建表
createdefault
创建缺省
createrule
创建规则
createprocedure
创建存储过程
createview
创建视图
dumpdatabase
备份数据库
dumptransaction
备份日志
(3)
数据库对象所有者
数据库对象所有者可以授予其他用户的操作权限如表D-2所示。
表D-2数据库对象所有者可授予其他用户的操作权限
select
查询记录
insert
增加记录
update
更新记录
delete
删除记录
1.授权——grant
用户授权操作分为两种:
一种是对数据库对象的操作进行授权,这些操作包括select、insert、update、delete、execute和reference;
另一种是对命令操作进行授权,这些命令包括createdatabase、createprocedure、createrule、createview、dumpdatabase和dumptransaction等。
下面分别进行介绍。
对数据库对象操作的授权格式如下:
grant{all|permission_list}
on{table_name[(column_list)]|
view_name[(column_list)]|
stored_procedure_list}
to{pubic|name_list}
[withgrantoption]
在上述命令中,选择参数all时,将把所有权限都赋予指定的用户或用户组;
参数permission_list可以是数据库对象允许的操作的任意组合(各操作命令间用逗号隔开)。
on子句用于指定具体的授权数据库对象,可以是表、视图或列以及存储过程等。
对不同的数据库对象允许进行的操作授权如表D-3所示。
表D-3不同数据库对象允许进行的操作授权
数据库对象
可授权的操作
表(table)
select,update,insert,delete,reference
视图(view)
select,update,insert,delete
列(column)
select,update
存储过程(storedprocedure)
execute
to子句后选择参数public时,将把相应的权限赋予public组中的所有用户;
而选择参数name_list时,指定的既可以是组名,也可以是用户名。
选择参数withgrantoption时,允许被授权用户将相应授权再转授给其他用户。
对命令操作的授权格式如下:
grant{all|command_list}
to{public|name_list}
在上述命令中,参数command_list可以是下列数据库所有者允许的操作的任意组合(各命令间用逗号隔开)。
createdatabase
createprocedure
createrule
createview
dumpdatabase
dumptransaction
因为只有系统管理员才可对命令createdatabase进行授权,所以只有系统管理员才可选择参数all。
授予用户bob,john在数据库表teachers上读取的权限。
grantselectonteacherstobob,john
2.收回授权——revoke
收回授权与授权操作是相互对应的,也分为收回数据库对象操作授权和收回命令操作授权两种,下面分别进行介绍。
收回对数据库对象操作的授权的格式如下:
revoke[grantoptionfor]
{all|permission_list}
on{table_name[(column_list)]|
from{pubic|name_list}
[cascade]
在上述命令中,参数grantoptionfor用于收回授权用户转授的相应操作权,如果用户已将授权转授其他用户,则还应选择参数cascade,这时系统把转授的权限同时收回。
收回对命令操作的授权的格式如下:
revoke{all|command_list}
from{public|name_list}
收回用户组public在数据库表teachers上的所有权限。
revokeall
onteachers
3>
frompublic
4>
D.3Sybase数据库的备份与恢复
Sybase数据库提供了两种不同类型的数据库恢复功能:
一种是系统自动完成的恢复;
另一种是人工完成的恢复。
系统自动恢复功能是防止系统失败的一种保护措施,每次SQLServer重启时,都要运行自动恢复机制。
自动恢复机制确保在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退(删除)。
人工恢复功能是通过备份命令(dump)和恢复命令(load),从其它地方装入数据库完成的。
在Sybase数据库中,备份通常称为转储,恢复通常称为加载,这是由备份与恢复的命令名得来的。
在Sybase中进行数据库的备份和恢复操作,必须保证备份服务器处于运行状态。
D.3.1系统软件故障恢复
系统自动恢复功能是指在系统软件出现故障的情况下,通过重新启动SQLServer而进行的数据库恢复操作。
系统自动恢复首先从master数据库开始,然后是model数据库,再是temporary数据库,最后是用户数据库。
在每个数据库上,恢复机制都要观察事务日志。
如果事务日志已写入比数据库更近的数据,恢复机制则向前恢复数据库,以使它与日志保持一致;
如果事务日志尚未完成,则要回退(删除)。
问:
什么是事务日志?
答:
对任一数据库的每次修改,都可被自动记录于一个系统表中,这个系统表就叫做事务日志(Transactionlog)。
事务日志记录更新(update)、插入(insert)和删除(delete)等语句操作。
任何修改总是先记录日志,然后才做实际的修改。
事务日志保证了在系统软件出现故障时可以将数据恢复到出错前的状态。
D.3.2备份数据库及其事务日志
备份是保证数据库可以恢复的最简单容易的方法,不进行备份可能会导致重要数据的丢失,而进行备份可以防止表或数据库的损坏、介质故障和用户错误等情况而产生的数据丢失。
为了得到有效的数据,应根据需要尽量频繁地进行备份操作。
备份操作建议在系统比较空闲的时候进行,这样容易保证备份数据的正确性和可用性。
备份数据库的命令格式如下:
dumpdatabasedatabase_nametofilename|device
将数据库aaa直接备份到操作系统中的文件aaabak中。
dumpdatabaseaaatoaaabak
备份事务日志(增量备份)的命令格式如下:
dumptransactiondatabase_nametofilename|device[withtruncate_only|withno_log|withno_truncate]
参数withtruncate_only和withno_log都表示删除事务日志,其作用是相同的;
参数withno_truncate表示