sybase数据库简单操作命令和部分sql命令.docx
《sybase数据库简单操作命令和部分sql命令.docx》由会员分享,可在线阅读,更多相关《sybase数据库简单操作命令和部分sql命令.docx(19页珍藏版)》请在冰点文库上搜索。
sybase数据库简单操作命令和部分sql命令
sybase数据库简单操作命令和部分sql命令
1、备份数据库
dumpdatabasedatabase_nametodump_device
说明:
database_name是要卸出的数据库名称,dump_device是卸出设备的名称。
用系统过程sp_helpdevice可以获得设备的信息。
2、备份事务日志
dumptransactiondatabase_name[todump_device][withtruncate_only|withno_log|withno_truncate]
说明:
其中database_name是要备份事务的数据库名称,dump_device是备份设备名称,仅当包含了withtruncate_only或withno_log子句时,才可以备份到设备。
假设总是用dumpdatebase〔备份数据库及其日志,而不用dumptran,事务日志将不会刷新,而变得非常庞大。
对于master数据库和小型数据库每次运行dumpdatebase之后应当运行dumptransaction。
二、万一系统失败时恢复数据库系统
假设用户数据库存储的设备失效,从而数据库被破坏或不可存取,通过装入最新的数据库备份以及后来的事务日志备份可以恢复数据库。
假设当前的事务日志存在于一个并没有毁坏的设备上,带着withno_truncatedumptransaction命令卸出它。
要恢复数据库按如下步骤去做
1、假设日志存在于一个别离的设备上,用带着no_truncatedumptransaction命令卸出被毁坏的或者不可存取的用户数据库事务日志。
2、用下面的查询检查设备分配已毁坏数据库的设备使用情况。
必须为同一目的赋同样的空间块。
下面的查询显示了分配给数据库mydb设备使用和尺寸情况
selectsegmap,sizefromsysusageswheredbid=〔selectdbidfromsysdatabaseswherename="mydb"〕
3、检查查询的输出。
在segmap列的'3'代表数据分配,'4'代表日志分配。
size列代表2k数据块的数目。
注意此信息的次序、使用和尺寸部分。
例如,输出为
Segmapsize4、用dropdatabase命令删除毁坏设备上的数据库。
假设,用dbccdbrepair命令的dropdb5、删除数据库后,用sp_dropdevice删除毁坏了的设备。
6、用diskinit初始化新的数据库设备。
7、重建数据库。
用createdatabase命令从老的sysusages表拷贝所有的行,并包含第一逻辑设备。
对上例,命令为
createdatabasemydbondatadev1=20,datadev2=10logonlogdev1=108、用alterdatabase命令重建其余入口。
在此例中,在datadev1上分配更多的空间,命令为
alterdatabasemydbondatadev1=29、用loaddatabase重新装入数据库,然后用loadtran装入前面卸出的日志。
loaddatabase命令语法是
loaddatabasedatabase_namefromdump_deviceloadtransaction命令的语法是
loadtransactiondatabase_namefromdump_device
卸出数据库和事务日志的缺省权限归数据库所有者,且可以传递给其他用户;装载数据库和事务的权限也归数据库所有者,但不能传递。
四、保证系统数据平安,周期更改用户口令;
为保证系统数据的平安,系统管理员必须根据系统的实际情况,执行一系列的平安保障措施。
其中,周期性的更改用户口令是比较常用且非常有效的措施。
更改用户口令是通过调用系统过程sp_password来实现的。
sp_password的语法为
sp_passwordcaller_password,new_password[,loginame]
其中caller_password是登录口令老口令,new_password是新口令,loginame是登录名称。
删除数据库表格
在SQL语言中使用droptable命令删除某个表格以及该表格中的所有记录。
Droptable命令的使用格式为:
droptabletablename;
例如:
droptableemployee;
假设用户希望将某个数据库表格完全删除,只需要在droptable命令后输入希望删除的表格名称即可。
Droptable命令的作用与删除表格中的所有记录不同。
删除表格中的全部记录之后,该表格仍然存在,而且表格中列的信息不会改变。
而使用droptable命令那么会将整个数据库表格的所有信息全部删除。
假设用户希望一次查询多个字段,可以将所要查询的字段名称依次参加SELECT关键字之后,中间用","隔开即可。
DISTINCTSELECT关键字支持用户查询数据表中指定字段的所有数据,但是这样有时就会不可防止的出现重复信息。
假设用户希望只查询那些具有不同记录值的信息的话,可以使用SQLDISTINCT关键字。
语法格式如下:
SELECTDISTINCT"column_name"FROM"table_name"
例如,我们可以使用以下命令查询Store_Information数据表具有不同记录值的所有记录。
SELECTDISTINCTStore_NameFROMStore_Information
查询结果如下:
Store_NameLosAngelesSanDiegoBostonSQL功能与特性其实,在前面的文章中,已经提及SQL命令的一些根本功能,然而,通过SQL命令,程序设计师或数据库管理员〔DBA〕可以:
〔一〕建立数据库的表格。
〔包括设置表格所可以使用之空间〕〔二〕改变数据库系统环境设置。
〔三〕针对某个数据库或表格,授予用户存取权限。
〔四〕对数据库表格建立索引值。
〔五〕修改数据库表格构造。
〔新建、删除或是修改表格字段〕〔六〕对数据库进展数据的新建。
〔七〕对数据库进展数据的删除。
〔八〕对数据库进展数据的修改。
〔九〕对数据库进展数据的查询。
这几项便是通过SQL命令可以完成的事情,看起来是不是比起"查询"两个字所代表的功能要多的多了呢?
SQL语法的分类
其实SQL命令并不是非常多,可是要把SQL用到出神入化,却也只需要短短几个命令便够,因为SQL命令是针对关系型数据库所建立出来的语法表达,所以SQL在这类数据库中所发挥的功能非常的强,以下将针对在VB中常用的SQL语法根本命令加以分类介绍。
在说明SQL的命令以及使用语法之前,以下将SQL做了的分类,在致上SQL语法所使用到的类型,可以说都已包含在这些类别当中。
第一类、属性词〔Predicates在SQL命令中用来指明所要选择的记录的方式。
如ALL、TOP与DISTINCT等等。
第二类、声明〔Declaration
针对SQLParameter或ParameterQuery的名称与数据类型做声明,如PARAMETERS的声明等等。
第三类、条件子句〔Clause
在SQL的查询中,利用一些表达式定义出查询的条件,以缩小寻找的范围,如WHERE。
第四类、运算符〔Operator〕与操作数〔Operation
在SQL的查询中,与Operation共同组成表达式〔Expression〕,如BETWEEN.AND运算符与INNERJOIN操作数。
第五类、函数〔Function
一些SQL常见的函数,像是AVG〔〕是求算数平均数的函数。
第六类、SQL语句〔StatementSQL的语句,可以说是SQL语法的主体,用来对某一个特定的数据库发出指示,并返回相关的数据,而SQL的语法构造,根本上可以利用下面的式子来表示:
命令+条件子句例如:
SELECT*FROMTABWHERETAB.NAME='A'
其中的"FROM.WHERE"便是一个条件子句,其实SQL的语法并不难,您只需记住这样的一个规那么,相信可以很快的理解SQL用法。
SQL语法与命令
SELECT语句
SELECT[predicate]{*|table.*|[table.]field[,[table.]field2[,.]]}[ASalias1[,alias2[,.]]]FROMtableexpression[,.][INexternaldatabase][WHERE.][GROUPBY.][HAVING.]
[ORDERBY.][WITHOWNERACCESSOPTION]
SELECT语句包括下面几个部分
Predicate
如前面所述,包括了ALL,DISTINCT,DISTINCTROW,与TOP我们可以利用这样的语句去限制查询后所得的结果。
从指定表格中指定所有的字段。
Table
针对被选择出的记录的字段,所指定表格的名称。
Field1,field2
想要读取数据的字段名称,假设包含了一个以上的字段,会按照列出的顺序来读取数据alias1,alias2
用来替代在表格实际字段名称的化名。
Tableexpression
表格名称或包含我们所想要的数据的表格。
Externaldatabase
假设使用到不是目前的数据库那么将其名字定义在externaldatabase当中。
ALL,DISTINCT,DISTINCTROW,TOP属性词用法
SELECT[ALL|DISTINCT|DISTINCTROW|[TOPn[PERCENT]]]FROMtableALL
假设是您不指定任何的字段数据,那么MicrosoftJet数据库引擎〔databaseengine〕将会选择所有的字段,并根据所定的条件查询出需求数据集。
例如下面这两个例子将会具有一样的效果,都会从职员表格中返回所有字段的数据。
例如:
假设是我们要查询出职员表格中的所有记录,可以通过下面的语句来完成。
SELECTALL*FROM职员表格;DISTINCT
对某个表格所选择的字段数据,略过重复的情况,也就是说,针对某个字段查询出来的记录结果是唯一的。
例如有许多存放在职员表格的职员数据,也许会具有一样的姓名,所以假设是我们用SQL语句中的SELECTDISTINCT,那么查询出来的结果将会针对不一样的姓名加以挑选。
假设是您把DISTINCT加以省略,那么这样的查询会显示所有的记录。
DISTINCTROW
将整条记录重复的记录忽略掉,而不是只有针对某一个字段的数据。
Table
指定查询记录所需要的表格。
例如:
SELECTDISTINCTROW公司名称FROM顾客表格INNERJOIN订单表格ON顾客表格.顾客ID=订单表格.顾客IDORDERBY公司名称;
假设您忽略DISTINCTROW那么会对每个公司产生一行以下的订单数据。
此外,假设是DISTINCTROW只有用在一个表格当中,那么会被省略掉。
TOP
从第一条或最后一条开场〔利用ORDERBY条件子句〕,返回特定条数的数据。
例如:
当您想要知道在2000年,班上前25名的学生姓名数据时,您可以输入这样的语句:
SELECTTOP25学生姓名FORM学生表格WHERE毕业年份=1994ORDERBY毕业成绩平均分数DESC;
假设您没有加上ORDERBY这行条件的话,您所得到的数据,将会随机的数据。
此外,在TOP语句之后,除了可以加上数字以外,还可以利用保存字PERCENT来查询。
例如:
SELECTTOP10PERCENT学生姓名FROM学生表格WHERE毕业年份=1994ORDERBY毕业成绩平均DESC;
PARAMETERS〔参数〕声明的用法对于参数型的查询语法中,对参数的名称以及数据类型作声明的操作。
PARAMETERSnamedatatype[,namedatatype[,.]]namePARAMETERS的名称。
您可以把参数名称当作字符串来使用,假设是名称中包含了空字符串,可以利用中括号来处理,例如:
"VBeden"。
Datatype
输入参数的数据类型。
例如:
假设是您在查询时,需要机动的输入姓名,可以利用以下的方式完成:
PARAMETERS"输入姓名"Text;
SELECT*FROM职员表格WHERE="输入姓名:
";
ORDERBY条件语句
此条件子句,通常与SELECT语句合并使用目的是将查询的结果,按照指定字段加以排序SELECTfieldlistFROMtableWHEREselectcriteriaORDERBYfield[ASC|DESC][,field2[ASC|DESC][,.]]fieldlist
欲查询的字段名称。
其中可以与ALL,DISTINCT,DISINCTROW,或TOP一起来使用。
table欲查询的表格名称。
selectcriteria查询的标准设置。
field1指定要按照那个字段作为排序的根据,假设是你没有加上ORDERBY查询出的数据集将不会作排序的操作。
ASC递增顺序类别。
默认值〕DESC递减顺序类别。
例如:
或是我们要将输出数据根据出生的先后次序排列,可以利用下面的命令。
SELECT姓名,生日FROM职员表格ORDERBY生日
SELECTLastName,FirstNameFROMEmployeesORDERBYLastNameASC;
IN条件子句
指定要速胜哪一个外部数据库的表格。
必须是MicrosoftJet数据库引擎所可以连接的数据库,如dBase,Paradox等等
SELECT|INSERT]INTOdestinationIN{path|["path""type"]|[""[type;DATABASE=path]]}
FROMtableexpressionIN{path|["path""type"]|[""[type;DATABASE=path]]}
destination欲插入数据的外部表格名称。
tableexpression表格名称或是被读取数据的表格名称。
这个参数可以是一个单一的表格名称,或是一段已经被存储的SQL查询等。
path包含该表格的完好途径名称。
type数据库的类型名称,通常是当数据库部属于Jetdatabase时才会使用。
例如:
dBASEIII,dBASEIV,Paradox3.x,Paradox4.x,或Btrieve〕
例如:
下面这两段的意义一样
PartA.FROMTableIN""[dBASEIV;DATABASE=C:
\DBASE\DATA\SALES;];
PartB.FROMTableIN"C:
\DBASE\DATA\SALES""dBASEIV;"
例如:
MicrosoftJetdatabaseSELECT顾客编号FROM顾客表格INCUSTOMER.MDBWHERE顾客编号Like"A*";
其中CUSTOMER.MDBO为Jetdatabase的数据库名称,其中包含了顾客表格。
例如:
dBASEIIIorIVSELECT顾客编号FROM顾客表格IN"C:
\DBASE\DATA\SALES""dBASEIV;"WHERE顾客编号Like"A*";
所以当我们使用不同于ACCESS的数据库时,必须指明该数据库的类型名称。
HAVING条件子句
指定一特定的分组记录,并满足HAVING所指定的条件或状态,但条件是针对分组的条件设置。
SELECTfieldlistFROMtableWHEREselectcriteriaGROUPBYgroupfieldlistHAVINGgroupcriteriaFieldlist显示被查询的字段名称。
可与ALL,DISTINCT,DISTINCTROW,或TOP相结合〕table欲查询数据的表格名称。
selectcriteria选取标准。
groupfieldlist分组记录的字段名称,到多10个字段。
而这些字段的顺序决定最高到最低的分组阶层。
groupcriteria决定什么样的分组记录要被显示。
HAVING跟WHERE的用法相当类似,不同之处在于HAVING必须用于GROUP之后的分组数据上。
例如:
SELECT,Sum〔库存数量〕FROM产品表格GROUPBY分类编号HAVINGSum〔库存数量〕100AND产品名称LIKE"*纸";
GROUPBY条件子句
根据指定的字段,将具有一样数值的记录合并成一条。
SELECTfieldlistFROMtableWHEREcriteriaGROUPBYgroupfieldlistfieldlist欲读取的字段名称。
可与ALL,DISTINCT,DISTINCTROW,或TOP合并使用
table被查询的表格名称。
groupfieldlist分组记录的字段名称,到多10个字段,而这些字段的顺序决定最高到最低的分组层次。
例如:
SELECT,Count〔〕AS职员姓名FROM职员表格WHERE部门名称='业务部'GROUPBYFROM条件子句
指定表格名称或是查询,其中包含列在SELECT语句的字段数据。
SELECTfieldlistFROMtableexpression[INexternaldatabase]
fieldlist表格中的字段名称。
可与ALL,DISTINCT,DISTINCTROW,或TOP相结合
tableexpression表格名称,或多个表格的算式。
externaldatabase假设该表格参考到外部的数据库时,将其完好的途径名称记下。
例如:
从职员表格下,查询出所有姓名字段的数据只有姓名字段被查询,其他那么不显示。
SELECTFROM职员表格;
WHERE条件子句
指定查询的条件与限制。
SELECTfieldlistFROMtableexpressionWHEREcriteriafieldlist字段名称。
可与ALL,DISTINCT,DISTINCTROW,或TOP相结合〕tableexpression表格名称,或多个表格的算式。
criteria查询的结果,必须按照这一限制标准。
例如:
要查询出职员表格中,所有姓氏是李的数据,可以用下面的语句。
SELECTFROM职员表格WHERE姓氏='李';
BETWEEN.AND运算符
决定某一人数值是否介于特定的范围之内,此运算符只可以用在SQL的语句中。
expr[Not]BETWEENvalue1ANDvalue2expr指定要加以计算的字段与表达式的组合。
value1,value2所指明的数值范围。
例如:
假设是要从职员表格查询出所有年龄介于25-30岁的员工,可以利用下面的程序来做。
SELECT,年龄BETWEEN25AND30FROM职员表格;
LIKE操作数
用来将一字符串与另一特定字符串款式〔pattern〕比较,并将符合该字符串款式的记录过滤出来。
expressionLIKE"pattern"
expression使用在WHERE条件子句,SQL表达式。
pattern用以比较的字符串款式。
例如:
假设是你要查询出所有以"李"为首的姓氏,可以利用下面的式子。
Like"李*"LIKE操作数的多种范例:
1
〔1〕"a*a"可挑选:
"aa","aBa","aBBBa",不能挑选:
"aBC"
〔2〕"*ab*"可挑选:
"abc","AABB","Xab",不能挑选:
"aZb","bac"
2、特殊字符:
"a"*"a"可挑选:
"a*a",不能挑选:
"aaa"
3、单一字符:
"a?
a"可挑选:
"aaa","a3a","aBa",不能挑选:
"aBBBa"4、单一数字:
"a#a"可挑选:
"a0a","a1a","a2a",不能挑选:
"aaa","a10a"
5、字符范围:
""a-z""可挑选:
"f","p","j",不能挑选:
"2","&"
6、指定字符以外部范围:
""!
a-z""
7、指定非数字:
""!
0-9""可挑选:
"A","a","&","~",不能挑选:
"0","1","9"
8、组合式构造:
"a"!
b-m"#"可挑选:
"An9","az0","a99",不能挑选:
"abc","aj0"
SQL数字函数
1、AVG:
算数平均数
AVG〔expr〕
expr字段名称或表达式。
例如:
假设要计算职员身高超过165厘米的职员平均身高,可以利用下面的SQL语句来完成。
SELECTAvg〔身高〕AS平均身高FROM职员表格WHERE身高165;
2、COUNT:
计算记录条数
COUNT〔expr〕
expr字段名称或表达式。
例如:
假设是要统计出业务部门的职员人数,并查询出职员的姓名,可以利用下面的程序。
SELECTCount〔〕AS职员姓名FROM职员表格WHERE部门名称='业务部';
3、FIRST与LAST:
返回某字段的第一条数据与最后一条数据。
FIRST〔expr〕LAST〔expr〕
expr字段名称或表达式。
例如:
假设是要找出货品数量字段的第一条数据与货品价格字段的最后一条数据时,可以利用下面的查询方式。
SELECTFIRST〔货品数量,LAST〔货品价格〕FROM订单表格
4、MAX,与MIN:
返回某字段的最大值与最小值。
用法同FIRST与LAST。
5、SUM:
返回某特定字段或是运算的总和数值。
SUM〔expr〕
expr字段名称或表达式。
例如:
要计算出货品总价,可使用下面的程序。
SELECTSum〔单位价格*货品数量〕AS货品总价FROM订单表格
多层SQL查询
顾名思义,多层的SQL查询的便在于:
"在一个SQL语句中可以包含另一个SQL查询语句,形成内部嵌套的查询类型。
"
comparison[ANY|ALL|SOME]〔sqlstatement〕expression[NOT]IN〔sqlstatement〕
[NOT]EXISTS〔sqlstatement〕
comparison将表达式与内层查询的结果比较的操作。
expression对内层查询的结果作搜索的表达式。
sqlstatement为SELECT语句构成的SQL查询,必须用将该语句括起来。
例如:
我们先从订单表格当中,查询出所有的单位,再将产品表格中的单位与的一一比照,查询出所有高于订单表格的单位价格的记录。
SELECT*FROM产品表格WHERE单位价格ANY〔SELECT单位价格FROM订单表格WHERE折扣=.25〕;
SQL与数据库的维护
表格的建立
将SQL中的根本语法作了一番介绍以后,但大多是偏向于数据库数据的查询与过滤,但实际上,我们通过SQL命令所可以做的事还有很多,接下来要介绍的便是如何利用SQL的语法命令来建立一个数据库中的表格。
CREATETABLE语句
我们可以利用这个命令,来建立一个全新的表格,但前提那么是:
数据库必须已经存在。
CREATETABLEtable〔field1type[〔size〕][index1][,field2type[〔size〕][index2][,.]][,nultifieldindex[,.]]〕
table欲建立的新的表格名称。
field1,field2在新表格中的新的字段名称,到少要一