




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
sybase 基本语法2009-04-07 12:36:06|分类: 默认分类 |标签: |字号大中小订阅 资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。、建表格:create table table_name( column1 datatype not null not null primary key, column2 datatype not null,.)说明:datatype -是资料的格式,详见表。nut null -可不可以允许资料有空的(尚未有资料填入)。primary key -是本表的主键。、更改表格alter table table_name add column column_name datatype 说明:增加一个栏位(没有删除某个栏位的语法。alter table table_nameadd primary key (column_name)说明:更改表得的定义把某个栏位设为主键。alter table table_namedrop primary key (column_name)说明:把主键的定义删除。、建立索引create index index_name on table_name (column_name)说明:对某个表格的栏位建立索引以增加查询时的速度。、删除drop table_namedrop index_name二、的资料形态 datatypessmallint16 位元的整数。interger32 位元的整数。decimal(p,s)p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。 float32位元的实数。double64位元的实数。char(n)n 长度的字串,n不能超过 254。varchar(n)长度不固定且其最大长度为 n 的字串,n不能超过 4000。graphic(n)和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。vargraphic(n)可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。date包含了 年份、月份、日期。time包含了 小时、分钟、秒。timestamp包含了 年、月、日、时、分、秒、千分之一秒。三、资料操作 (data manipulation language)资料定义好之後接下来的就是资料的操作。资料的操作不外乎增加资料(insert)、查询资料(query)、更改资料(update) 、删除资料(delete)四种模式,以下分 别介绍他们的语法:、增加资料:insert into table_name (column1,column2,.)values ( value1,value2, .)说明:1.若没有指定column 系统则会按表格内的栏位顺序填入资料。2.栏位的资料形态和所填入的资料必须吻合。3.table_name 也可以是景观 view_name。insert into table_name (column1,column2,.)select columnx,columny,. from another_table说明:也可以经过一个子查询(subquery)把别的表格的资料填入。、查询资料:基本查询select column1,columns2,.from table_name说明:把table_name 的特定栏位资料全部列出来select *from table_namewhere column1 = * and column2 ; yyy or column3 ; zzz说明:1.*表示全部的栏位都列出来。2.where 之後是接条件式,把符合条件的资料列出来。select column1,column2from table_nameorder by column2 desc说明:order by 是指定以某个栏位做排序,desc是指从大到小排列,若没有指明,则是从小到大排列组合查询组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的表格才能够得到结果的。select *from table1,table2where table1.colum1=table2.column1说明:1.查询两个表格中其中 column1 值相同的资料。2.当然两个表格相互比较的栏位,其资料形态必须相同。3.一个复杂的查询其动用到的表格可能会很多个。整合性的查询:select count (*) from table_namewhere column_name = *说明:查询符合条件的资料共有几笔。select sum(column1)from table_name说明:1.计算出总和,所选的栏位必须是可数的数字形态。2.除此以外还有 avg() 是计算平均、max()、min()计算最大最小值的整合性查询。select column1,avg(column2)from table_namegroup by column1having avg(column2) ; *说明:1.group by: 以column1 为一组计算 column2 的平均值必须和 avg、sum等整合性查询的关键字一起使用。 2.having : 必须和 group by 一起使用作为整合性的限制。复合性的查询select *from table_name1where exists (select *from table_name2where conditions )说明:1.where 的 conditions 可以是另外一个的 query。2.exists 在此是指存在与否。select *from table_name1where column1 in (select column1 from table_name2where conditions )说明:1. in 後面接的是一个集合,表示column1 存在集合里面。2. select 出来的资料形态必须符合 column1。 其他查询select *from table_name1where column1 like x% 说明:like 必须和後面的x% 相呼应表示以 x为开头的字串。select *from table_name1where column1 in (*,yyy,.)说明:in 後面接的是一个集合,表示column1 存在集合里面。select *from table_name1where column1 between xx and yy说明:between 表示 column1 的值介於 xx 和 yy 之间。 、更改资料:update table_nameset column1=*where conditoins说明:1.更改某个栏位设定其值为*。2.conditions 是所要符合的条件、若没有 where 则整个 table 的那个栏位都会全部被更改。、删除资料:delete from table_namewhere conditions说明:删除符合条件的资料。说明:关于where条件后面如果包含有日期的比较,不同数据库有不同的表达式。具体如下:(1)如果是access数据库,则为:where mydate;#2000-01-01# (2)如果是oracle数据库,则为:where mydate;cast(2000-01-01 as date)或:where mydate;to_date(2000-01-01,yyyy-mm-dd)在delphi中写成:thedate=2000-01-01;query1.sql.add(select * from abc where mydate;cast(+thedate+ as date); 如果比较日期时间型,则为:where mydatetime;to_date(2000-01-01 10:00:01,yyyy-mm-dd hh24:mi:ss)存储过程的特点:Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回若干个参数值给调用过程或批处理,为调用者提供动态结果;在远程SQL Server中运行等。 存储过程的性能特点如下: 存储过程是预编译过的,这就意味着它与普通的SQL语句或批处理的SQL语句不同,当首次运行一个存储过程时,SQL Server的查询处理器对其进行分析,在排除了语法错误之后形成存储在系统中的可执行方案。由于查询处理的大部分工作已经完成,所以存储过程执行速度很快。 存储过程和待处理的数据都放在同一台运行SQL Server的计算机上,使用存储过程查询当地的数据,效率自然很高。 存储过程一般多由Client端通过存储过程的名字进行调用,即跨网传送的只是存储过程的名字及少量的参数(如果有的话),而不是构成存储过程的许多SQL语句,因此可以减少网络传输量,加快系统响应速度。 存储过程还有着如同C语言子函数那样的被调用和返回值的方便特性。 所以,存储过程大大增强了SQL语言的功能、效率和灵活性。掌握和应用好存储过程,对进一步发挥Sybase数据库系统的强大功能有着重要的意义。 存储过程的语法规则 建立存储过程的语法规则为: CREATE PROCcedurename;number (parameter_name datatype=defaultOUTput ,parameter_name datatype=defaultOUTput.) WITH RECOMPILE AS SQL_statements 使用存储过程的语法规则为: EXECutereturn-status= cedurename;number parameter_name=value|parameter_name=varialbeOUTput ,parameter_name=value|parameter_name=variableOUTput. WITH RECOMPILE page下面简要介绍这两个命令的常用选项以及建立和使用存储过程的要点,关于选项的更为详细的说明请参考有关手册。 cedure_name:存储过程的名字。 parameter_name datatype=defaultOUTput:形式参数(形参)的名称、类型。df ault是赋予的缺省值(可选),OUTput指定本参数为输出参数(可选)。形参是存储过程中的自变量,可以有多个,名字必须以打头,最长30个字符。 SQL_statements:定义存储过程功能的SQL语句。 return_status:接受存储过程返回状态值的变量。 parameter_name=value:实际参数(实参),parameter_name为实参的名称(可选)。如果某个实参以parameter_name=value提供,那么随后的实参也都要采用这一形式提供。 parameter_name=varialbeOUTput:将变量varialbe中的值作为实参传递给形参parameter_name(可选),如果变量varialbe是用来接受返回的参数值,则选项OUTput不可缺少。 存储过程的建立和使用,我们将通过几个例子进行介绍。 假设有一个用下述语句生成的技能工资表RS-LS-GZ-JiNeng: create table RS_LS_GZ_JiNeng /*技能工资表*/ (GeRen_id char(4), /*个人代码 */ RiQi smalldatetime, /*执行日期 */ YuanYin_id char(1) null, /*变动原因代码 */ JinE smallmoney) /*技能工资金额 */ 该表存储着某单位员工多年来技能工资的历史档案。 例1.如果要查询全体员工的技能工资变动历史,则可先建立一个存储过程p-RsGz-JiNeg-All: create procedure p_RsGz_JiNeng_All as select * from RS_LS_GZ_JiNeng order by GeRenid,RiQi 然后用批处理语句调用存储过程p_RsGz_JiNeng_All进行查询: execute p_RsGz_JiNeng_All 本例只显示查询到的数据,无输入、输出参量,是最简单的一个存储过程。 例2.如果要查询某人技能工资的变动历史,可建立另一个存储过程p_RsGz_JiNeng: create procedure p_RsGz_JiNeng c_GeRenId char(4) as select *from RS_LS_GZ_JiNeng where GeRen_id=c_GeRenId order by RiQi 之后用批处理语句调用存储过程p_Rs_Gz_JiNeng进行查询: declare GeRenId char(4) select GeRenId=0135 /*设要查询员工的个人代码为0135 */ execute p_RsGz_JeNeng c_GeRenId=GeRenId 存储过程p_RsGz_JiNeng中定义了一个形参c_GeRenId,是字符型变量。在调用该过程的批处理中,既可以用具体的值也可以用变量作为实参。用变量作实参(如本例)时,必须用del are语句加以说明。值得注意的是,在批处理的调用过程语句中,c_GeRenId=GeRenId中的 c_GeRenId是存储过程p_RsGz_JiNeng中的形参名,不是批处理中的变量,所以不能将它列入d eclare语句的变量单中。 例3.如果要计算当月工资,就必须从工资历史中查出员工距离当前最近的一次技能工资变动的结果: create procedure p_RsGz_JiNeng_Slt (c_GeRenId char(4),sm_JinE smallmoney output) as select sm_JinE=JinE from RS_LS_GZ_JiNeng where RiQi=(select max(RiQi) from RS_LS_GZ_JiNeng where GeRenid=c-GeRenId)/*找出历史记录中距离当前最近的日期*/ 调用存储过程p_RsGz_JiNeng_Slt进行查询: declare GeRenId char(4),JinE smallmoney select GeRenid=0135/*设要查询员工的个人代码为0135*/ select JinE=0 execute p_RsGz_JiNeng_slt c_GeRenId=GeRenId,sm_JinE= JinE output 这里,变量 JinE用来存储过程形参sm_JinE传回的金额。在调用过程语句中,sm_JiE = JinE output中的output不可省略。否则,变量JinE将得不到形参传回的数值而始终为零(等于初值)。 例4.查到了个人代码为0135员工的技能工资就显示其历史纪录,查不到则显示一条出错信息。 create procedure p_RsGz_JiNeng_Rtn c_GeRenId char(4) as declare ErrCode smallint select ErrCode=0 if exists(select* from RS-LS-GZ-JiNeng where GeRenid=c-GeRenId) begi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第9课 IP地址与DHCP 学习任务单 2025-2026学年七年级上册信息技术浙教版
- 冀教版(2024)数学一年级上册第三单元《认识11-20》单元测试卷(基础卷)(含解析)
- 外阴白斑与氧化损伤-洞察及研究
- 2025年公需科目:专业技术人员人文素养和科学素养的培育考试题(含答案)
- 2025年高压电工考试题库(附答案)
- 2025年高压电工(高压试验技术操作)考试题库与解析
- 2025年高校辅导员考试的综合素质分析试题及答案
- 2025年高级会计师考试试题及答案
- 避险逃生试题及答案
- 教师招聘科目题库及答案
- 衡水志臻小升初数学真题试卷
- 课题2化学实验与科学探究(专项训练)(原卷版)
- 2025小红书情绪营销白皮书
- 2多次支付的等值公式Fi34课件
- 2025新村级后备干部考试题库(附含答案)
- 小微企业供应商管理制度
- 水利水电工程教学课件
- 公共关系学教程 课件全套 胡百精 第1-16讲 现代公共关系的诞生与职业化- 公关伦理与企业社会责任
- GB/T 14451-2025操纵用钢丝绳
- 技工培训机构管理办法
- 氨站培训课件
评论
0/150
提交评论