第十八章 序列、同义词
创建序列
Create
sequence myseq --创建序列myseq
Start
with 1 --序列开始为1
Increment
by 1 --每次增加1
Order
Cache 20 --oracle缓存20个序列的值
Nocycle; --值不循环,如果循环,则需要设置最大值,当currval达到最大值时,执行nextval后,值将变成start with的值。
NextVal,
CurrVal
Select
myseq.nextval from dual;
Select
myseq.currval from dual;
注意:新创建的序列,必须先调用nextval之后,才有currval。每次调用nextval值自增1。
Cycle,Cache
用了nocycle,就可以确保当该序列用于多张表的时候,ID是唯一的。(待确定)
用cycle,需要设置最大值,当currval达到最大值时,执行nextval后,值将变成start
with的值。
Create sequence
myseq2 start with 1 increment by 1 cycle maxvalue 3 nocache;--达到3之后,重新从1开始
如果指定cache值,oracle就可以预先在内存里面放置一些sequence,这样存取得快些。Cache里面的取完后,oracle自动再取一组到cache。使用cache或许会跳号,比如数据库突然不正常宕掉(shutdown abort),cache中的sequence就会丢失,所以可以在create sequence 的时候用nocache防止这种情况。
修改序列
不能改变当前值,但是可以改变增量inrement
by,最大值maxvalue,是否循环cycle/nocycle,是否缓存cache/nocache
Alter
sequence myseq increment by 3; --修改序列myseq的增量值为3,即每次自增3。
删除序列
Drop
sequence myseq;
同义词
在任何一个用户下,都可以直接访问dual,而不需要加上前缀的用户名如:scott.emp
Select *
from dual;
为什么?因为同义词的存在。
Dual其实是sys用户下的一张表
Select *
from dual;
Select *
from sys.dual;
Select
table_name from user_tables where lower(table_name) = ‘dual’; --需要sys用户登录才能查询到。
Select
table_name from all_tables where lower(table_name) = ‘dual’;
作用:
很方便的操作不同用户下的对象;
能使两个应用程序使用不同的名字指向同一张表;
使用不同的用户指向同一张表。
Create synonym
dept for scott.dept; --创建私有的同义词,只有创建者才有权限用
Drop synonym
dept;
Create public
synonym dept for scott.dept; --创建公有同义词,所有人都可以用
Drop public
synonym dept;
第十九章 PL/SQL
PL/SQL块
PL/SQL块是在SQL语言之上发展起来的一种应用,可以集中的处理各种复杂的SQL操作
语法:
Declare
--声明部分
Begin
--编写主题
Exception
--捕获异常
End
/
简单的PL/SQL块:
Declare
i number;
Begin
i:=30;
DBMS_OUTPUT.putline(“I的内容是:”||i);
End;
/
此时,直接执行程序即可。
注意:执行之后发现没有任何的输出,是因为oracle在系统设置中默认设置了输出不显示,如果要显示的话,输入命令:set serveroutput on
异常处理PL/SQL块:
Declare
I number;
Begin
I:=1/0;
Exception
When ZERO_DIVIDE then
Dbms_output.put_line(‘error’);
End;
/
PL/SQL块还可以接受用户的输入信息,例如:用户输入一个雇员编号,查询出雇员的姓名。
Declare
eno number; --eno emp.empno%TYPE
en varchar2(30);
Begin
eno:=&no; --输入信息保存在eno里
Select ename into en from emp where
empno=eno;--根据eno的值查询ename,并保存到en
Dbms_output.put_line(‘编号为:’||eno||’的雇员的姓名为:’||en);
Exception
When no_data_found then
Dbms_output.put_line(‘没有此雇员’);
End;
/
说明:
Emp.empno%TYPE::表示以emp表中的empno字段的类型定义变量
Dept dept%rottype:表示dept是一行数据,类似于hibernate
的PO对象
e.ename,e.empno
into en,eno:一次可以同时放入多个值
LOOP循环(do…while)
PL/SQL之中也包含了:循环、分支等条件控制语句
语法:
LOOP
--循环语句;
EXIT WHEN 终止条件;
--循环条件值改变;
END LOOP;
循环输入1..10:
Declare
cou number;
Begin
cou:=1;
LOOP
Dbms_output.put_line(‘cou’||cou);
EXIT WHEN cou>10;
cou:=cou + 1;
END
LOOP;
End;
/
此循环式先执行一次之后再判断
While循环
语法:
While(判断循环的条件) loop
--循环的语句;
--循环条件的改变;
End loop;
此语句,是先判断,如果条件满足则执行。
For循环
语法:
For 变量名称 in 变量的初始值..结束值 loop
--循环语句
End loop;
IF语句
语法:
If 条件 then
--执行语句
End if;
IF..ELSE语句
语法:
If 条件 then
--条件成立
Else
--条件不成立
End if;
IF..ELSIF..ELSE语句
语法:
If 条件1 then
--条件1成立
Elsif 条件2 then
--条件2成立
Else
--所有条件都不成立
End if;
GOTO语句
无条件跳转语句
语法:
<<myloop>>
If sal
< 3000 then
Sal := sal + 1000;
Goto myloop;
End if;
张文海
分享到:
相关推荐
本教程旨在帮助你重温或深入学习Oracle数据库的基础知识及高级特性,让你在数据库管理领域更加得心应手。 首先,Oracle数据库的核心概念包括数据模型、SQL语言、数据库架构和事务管理。数据模型是数据库设计的基础...
总的来说,“oracle基础知识回顾与练习.zip”提供了全面的Oracle SQL学习路径,无论你是初学者还是希望重温基础的开发者,都能从中受益。通过系统学习和实践,你可以逐步掌握Oracle数据库的关键技能,为未来的职业...
这是一个关于企业级应用开发的集成环境包,包含了前端框架ZKoss CE6.0、后端框架Spring3.0.5、ORM框架Hibernate3.6,...对于想要了解早期Java开发技术或者重温旧有技术栈的开发者来说,这是一个非常有价值的参考资料。
DBMS还提供了查询分析工具,如Oracle的Explain Plan或SQL Server的Execution Plan,它们能展示每一步的预计成本、实际资源消耗和操作顺序,帮助开发者理解并优化执行计划。 总结来说,"行业-89 再次重温写出各种SQL...
本资料“行业-88 再次重温写出各种SQL语句的时候,会用什么执行计划?(1)”很可能是探讨SQL查询执行计划的一份深入教程,旨在帮助读者掌握如何分析和优化SQL语句的执行流程。 首先,执行计划包括以下几个关键元素...
1. 使用EXPLAIN或EXPLAIN PLAN:在大多数数据库系统(如MySQL、PostgreSQL、Oracle等)中,可以在SQL语句前加上`EXPLAIN`或`EXPLAIN PLAN`关键字来查看执行计划。 2. 查询分析器:某些数据库管理系统(如SQL Server...
Delphi 7是一款由Borland公司开发的集成开发环境(IDE),主要用于Windows...总的来说,Delphi 7是一款经典而强大的开发工具,对于那些想要学习或重温旧版Delphi编程的开发者来说,这个绿色精简版是一个不错的选择。
在实习期间,学员们重温了Java的基础语法、类和对象的概念,以及异常处理等关键知识。 2. **JavaWeb开发**:JavaWeb技术包括Servlet和JSP,它们是构建动态Web应用的重要工具。Servlet是一个Java类,用于扩展服务器...
(2) 工作方法:在编写测试用例的过程中,我重温了编程基础知识,并积极寻求同事的帮助。我认识到,不断积累知识和经验,以及将遇到的问题和解决方案铭记于心,是提升工作效率的关键。 (3) 工作责任:在公司,我视...
本文将深入探讨SQL的多个重要知识点,帮助读者重温或掌握这些基础概念。 1. 数据库基础 - 数据库:是存储和管理数据的系统,如Oracle、MySQL、SQL Server等。 - 关系型数据库:基于关系理论,通过表格形式展示...
2. **Core Java**:从基础的变量、运算符到控制结构,实习生重温了Java的核心概念,这是所有Java开发的基础。 3. **SQL和数据库**:学习了SQL语言,包括基础和优化,以及Oracle数据库开发和PL/SQL,这是处理数据和...
6. **数据库连接**:讲述如何配置数据源,使用ADO、ODBC或OLE DB等方式连接不同的数据库系统,如SQL Server、Oracle、MySQL等。 7. **应用程序部署**:介绍PB应用程序的编译、发布和部署过程,包括生成可执行文件和...
4. **数据库连接性**:PB6.5支持多种数据库系统,如Oracle、MySQL、SQL Server、DB2等,这使得开发者能够轻松地与不同的数据库平台进行交互。 5. **脚本语言**:PB6.5使用的是PBL语言,这是一种基于Sybase的Simple ...
6. **网络与数据库连接**:VFP可以与其他数据库(如SQL Server、Oracle等)进行连接,实现数据交换和处理。 7. **数据可视化**:VFP支持图表和图形的创建,便于数据可视化展示。 8. **脚本语言**:VFP的命令式语言...
再者,MapInfo 4具备数据库集成能力,可以与多种数据库系统无缝对接,如Microsoft Access、Oracle和SQL Server等。这使得用户可以直接在GIS环境中进行数据库操作,实现地理数据与业务数据的结合。 安装过程中,用户...
5. **数据库支持**:Delphi 6内置了对多种数据库的支持,包括InterBase、Oracle、SQL Server等,通过DataSnap和ADO组件,可以轻松实现数据库应用的开发。 二、Delphi 6的企业版特色: 1. **企业级组件**:Delphi 6...
8. **数据库集成**:BC++ Builder提供了与各种数据库系统的良好集成,包括InterBase、Oracle、SQL Server等,通过其DataSnap技术,可以轻松实现客户端和服务器之间的数据交换。 9. **文档和社区支持**:尽管这款...
它是一个高性能的空间数据库引擎,可以与多种关系型数据库管理系统(如Oracle、SQL Server等)无缝集成,实现大规模地理数据的存储、管理和查询。SDE服务器引擎的无限期许可意味着用户可以在不受时间限制的情况下,...
在这个"Java环境jdk_1.6安装包"中,我们主要讨论的是Oracle公司发布的JDK 1.6版本,这是一个针对Windows操作系统的32位版本,但同时也兼容64位系统。 首先,让我们来了解一下JDK 1.6的主要特点和改进。JDK 1.6,也...
不过,随着技术的发展,现代开发更多倾向于使用如SQL Server、Oracle、MySQL等更现代的数据库系统,或者.NET、Java等更强大的开发平台。 总的来说,FOXPRO25是数据库管理和应用开发的一个历史里程碑,它在当时以其...