Oracle数据库学习总结

上传人:re****.1 文档编号:503997745 上传时间:2022-09-21 格式:DOC 页数:19 大小:76.50KB
返回 下载 相关 举报
Oracle数据库学习总结_第1页
第1页 / 共19页
Oracle数据库学习总结_第2页
第2页 / 共19页
Oracle数据库学习总结_第3页
第3页 / 共19页
Oracle数据库学习总结_第4页
第4页 / 共19页
Oracle数据库学习总结_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《Oracle数据库学习总结》由会员分享,可在线阅读,更多相关《Oracle数据库学习总结(19页珍藏版)》请在金锄头文库上搜索。

1、Oracle数据库学习总结对于一位程序员来说并不需要完全掌握Oracle的所有知识,毕竟自己不是DBA。在日常开发中也用不到那些命令和工具,但是有些知识点我们还是必须得熟练的掌握它们。比如:一些基本的DDL和DML语句,存储过程,函数,视图,触发器,序列,游标,自定义类型和包。下面我就把这段时间里学习Oracle获得的知识点罗列出来,一是为了方便以后查阅,二是为了和搭档交流学习经验。要适应的一些细节从Sql Server转到Oracle进行数据库编程,第一道门槛就是语法问题。很多很多的问题都是因为语法而产生的,现将它们统统集合起来并将它们一网打尽之。参数赋值Sql ServerSet para

2、meter=5 -加不加分号无所谓,这里是用=号进行赋值的OracleParameter:=5;-必须加分号,并使用加:的=号进行赋值的PL结构。在Sql Server中,采用的是批处理执行任务的方式,所以可以将多条sql语句选中批量执行,而不用顾忌要在专门的地方声明变量,在专门的地方进行逻辑编码。在Oracle中采用的是PL编程方式,必须在专门的地方声明变量,在专门的地方进行流程编码,经典的PL如下:Declare -这里是专门用来定义变量的Begin-这里是专门用来进行程序编码的End;-这里必须加分号If语句If *条件 thenElse if *条件 thenElseEnd if;-这

3、里要加分号Case语句Case When *条件 then When *条件 then When *条件 then ElseEnd Case;-这里要加分号还可以写成:Case 常量 - 一个字符变量 When A then When B then When C then ElseEnd Case;-这里要加分号循环结构,要达到循环在Oracle中有3种方式,各有各的好处,你懂的。它们分别如下:第一种Loop *Exit when 退出条件;End loop;-要加分号第二种While 条件 loop*End loop;-要加分号第三种For I in 1.100 loop *End loop

4、; -要加分号PL结构中的错误处理就像C#中的Try Catch语句块 能捕获错误。写几个例子:HelloWorld级别的错误抛出例子declare stu_info student%rowtype; cursor stu_cursor is select * from student;begin select * into stu_info from student;exception when TOO_MANY_ROWS then dbms_output.put_line(行太多); when others then dbms_output.put_line(未知错误 错误号:|sqlco

5、de|错误信息 |sqlerrm);end;手动抛出错误,类似于c#中的throwdeclare stu_info student%rowtype; cursor stu_cursor is select * from student;beginRaise_Application_Error(-20001,打酱油的错误);-显示抛出错误exception when TOO_MANY_ROWS then dbms_output.put_line(行太多); when others then dbms_output.put_line(未知错误 错误号:|sqlcode|错误信息 |sqlerrm)

6、;end;自定义一个错误,并把它手动抛出declare my_error Exception;pragma Exception_Init(my_error,-29999);-这里很重要哦begin raise my_error;-抛出错误exception when others then dbms_output.put_line(未知错误 错误号:|sqlcode|错误信息 |sqlerrm); end;Record类型Oracle中的Record类型类似于c语言中的结构体,主要用来接收Select语句或游标中返回的数据,下面写个例子: declare type student_record

7、_type is record( stu_nam%type, stu_age student.age%type ); student_record student_record_type;-这里很重要,不能直接在类型上操作 begin select name,age into student_record from student where id=&id; dbms_output.put_line(student_record.stu_name| |student_record.stu_age); end; DDL语句 这里的DDL语言主要是指能完成如下工作的DDL语言:创建表,创建表的主/

8、外 键及级联效果,建表:Create Table student(StuId number(5),StuName varchar2(20),StuAge number(2)Create Table class(StudentId number(5),TeacherId number(5),ClassName varchar2(30)Create Table teacher(tId number(5),tName varchar2(30),tSalary number(5,2)Alter Table classAdd Constraint p_k Primary Key (StudentId,T

9、eacherId)Alter table studentAdd Constraint p_k Primary Key (StuId)Alter Table classAdd Constraint f_k_1 Foreign Key (StudentId) references student(id) on delete cascadeAlter Table classAdd Constraint f_k_2 Foreign Key (TeacherId) references student(tId) on delete cascadeDML语句Select语句。Oracle中的Select语

10、句的使用方法与Sql Server差不多,但还是有些不同之处。赋值方式不同: Sql Server: Select peopleNumber=count(*) from people Oracle: Select count(*) into peopleNumber from people内连接 Sql Server Select s.i from student s inner join class c on s.id=c.studentid where c.classname=* Oracle: Select s.i from student s inner join class c on

11、 s.id=c.studentid where c.classname=* 左连接 Sql Server Select s.i from student s left join class c on s.id=c.studentid where c.classname=* Oracle: Select s.i from student s left outer join class c on s.id=c.studentid where c.classname=*右连接 Sql Server Select s.i from student s right join class c on s.i

12、d=c.studentid where c.classname=* Oracle: Select s.i from student s right outer join class c on s.id=c.studentid where c.classname=*全连接 Sql Server Select s.i from student s full join class c on s.id=c.studentid where c.classname=* Oracle: Select s.i from student s full outer join class c on s.id=c.s

13、tudentid where c.classname=*Insert语句。Oracle中的Insert语句比Sql Server中的强大很多,废话不多说,看例子:单条数据的插入 Insert into student(id,name,age) values(1,张三,22);插入的数据源来自select语句 Insert into student from select id,name,age from tmp_student;根据不同的条件,将数据插入到不同的表中Insert allwhen id between 1 and 3 then into x_testtablewhen id be

14、tween 4 and 6 then into x_testtable2 select id,name from studentDelete语句Update语句。Update student set name=new|name where id=1;Delete语句。和标准的sql标准一致,没多大变化。Delete from student where id=1视图。视图有虚拟视图和物理视图两种,这里不说后者。创建视图的语法如下:简单的视图:Create View View_Student as Select * from Student复杂的视图:Create View Teacher_Student asSelec,count(s.id) 学生数 from student s inner join cla

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号