`
wenhai_zhang
  • 浏览: 185868 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

重温Oracle(7)

 
阅读更多

第十八章 序列、同义词

 

创建序列

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

 

CycleCache

用了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数据库的基础知识及高级特性,让你在数据库管理领域更加得心应手。 首先,Oracle数据库的核心概念包括数据模型、SQL语言、数据库架构和事务管理。数据模型是数据库设计的基础...

    oracle基础知识回顾与练习.zip

    总的来说,“oracle基础知识回顾与练习.zip”提供了全面的Oracle SQL学习路径,无论你是初学者还是希望重温基础的开发者,都能从中受益。通过系统学习和实践,你可以逐步掌握Oracle数据库的关键技能,为未来的职业...

    zkoss CE6.0+spring3.0.5+hibernate3.6+oracle10g+mysql5最全包

    这是一个关于企业级应用开发的集成环境包,包含了前端框架ZKoss CE6.0、后端框架Spring3.0.5、ORM框架Hibernate3.6,...对于想要了解早期Java开发技术或者重温旧有技术栈的开发者来说,这是一个非常有价值的参考资料。

    行业-89 再次重温写出各种SQL语句的时候,会用什么执行计划?(2).rar

    DBMS还提供了查询分析工具,如Oracle的Explain Plan或SQL Server的Execution Plan,它们能展示每一步的预计成本、实际资源消耗和操作顺序,帮助开发者理解并优化执行计划。 总结来说,"行业-89 再次重温写出各种SQL...

    行业-88 再次重温写出各种SQL语句的时候,会用什么执行计划?(1).rar

    本资料“行业-88 再次重温写出各种SQL语句的时候,会用什么执行计划?(1)”很可能是探讨SQL查询执行计划的一份深入教程,旨在帮助读者掌握如何分析和优化SQL语句的执行流程。 首先,执行计划包括以下几个关键元素...

    行业-90 再次重温写出各种SQL语句的时候,会用什么执行计划?(3).rar

    1. 使用EXPLAIN或EXPLAIN PLAN:在大多数数据库系统(如MySQL、PostgreSQL、Oracle等)中,可以在SQL语句前加上`EXPLAIN`或`EXPLAIN PLAN`关键字来查看执行计划。 2. 查询分析器:某些数据库管理系统(如SQL Server...

    delphi7绿色精简版.rar

    Delphi 7是一款由Borland公司开发的集成开发环境(IDE),主要用于Windows...总的来说,Delphi 7是一款经典而强大的开发工具,对于那些想要学习或重温旧版Delphi编程的开发者来说,这个绿色精简版是一个不错的选择。

    java培训实习总结.doc

    在实习期间,学员们重温了Java的基础语法、类和对象的概念,以及异常处理等关键知识。 2. **JavaWeb开发**:JavaWeb技术包括Servlet和JSP,它们是构建动态Web应用的重要工具。Servlet是一个Java类,用于扩展服务器...

    2020年软件测试顶岗实习报告总结.docx

    (2) 工作方法:在编写测试用例的过程中,我重温了编程基础知识,并积极寻求同事的帮助。我认识到,不断积累知识和经验,以及将遇到的问题和解决方案铭记于心,是提升工作效率的关键。 (3) 工作责任:在公司,我视...

    SQL-4 数据库知识

    本文将深入探讨SQL的多个重要知识点,帮助读者重温或掌握这些基础概念。 1. 数据库基础 - 数据库:是存储和管理数据的系统,如Oracle、MySQL、SQL Server等。 - 关系型数据库:基于关系理论,通过表格形式展示...

    java培训实习报告.docx

    2. **Core Java**:从基础的变量、运算符到控制结构,实习生重温了Java的核心概念,这是所有Java开发的基础。 3. **SQL和数据库**:学习了SQL语言,包括基础和优化,以及Oracle数据库开发和PL/SQL,这是处理数据和...

    PB学习手册附阅读器

    6. **数据库连接**:讲述如何配置数据源,使用ADO、ODBC或OLE DB等方式连接不同的数据库系统,如SQL Server、Oracle、MySQL等。 7. **应用程序部署**:介绍PB应用程序的编译、发布和部署过程,包括生成可执行文件和...

    PB6.5.rar数据库维护软件

    4. **数据库连接性**:PB6.5支持多种数据库系统,如Oracle、MySQL、SQL Server、DB2等,这使得开发者能够轻松地与不同的数据库平台进行交互。 5. **脚本语言**:PB6.5使用的是PBL语言,这是一种基于Sybase的Simple ...

    陆卫康的VFP技术文章和示例

    6. **网络与数据库连接**:VFP可以与其他数据库(如SQL Server、Oracle等)进行连接,实现数据交换和处理。 7. **数据可视化**:VFP支持图表和图形的创建,便于数据可视化展示。 8. **脚本语言**:VFP的命令式语言...

    mapinfo 4 安装程序

    再者,MapInfo 4具备数据库集成能力,可以与多种数据库系统无缝对接,如Microsoft Access、Oracle和SQL Server等。这使得用户可以直接在GIS环境中进行数据库操作,实现地理数据与业务数据的结合。 安装过程中,用户...

    Delphi 6企业版iso

    5. **数据库支持**:Delphi 6内置了对多种数据库的支持,包括InterBase、Oracle、SQL Server等,通过DataSnap和ADO组件,可以轻松实现数据库应用的开发。 二、Delphi 6的企业版特色: 1. **企业级组件**:Delphi 6...

    borland c biulder BC 编程工具

    8. **数据库集成**:BC++ Builder提供了与各种数据库系统的良好集成,包括InterBase、Oracle、SQL Server等,通过其DataSnap技术,可以轻松实现客户端和服务器之间的数据交换。 9. **文档和社区支持**:尽管这款...

    ArcGIS 9.3全套无限期许可文件

    它是一个高性能的空间数据库引擎,可以与多种关系型数据库管理系统(如Oracle、SQL Server等)无缝集成,实现大规模地理数据的存储、管理和查询。SDE服务器引擎的无限期许可意味着用户可以在不受时间限制的情况下,...

    Java环境jdk_1.6安装包

    在这个"Java环境jdk_1.6安装包"中,我们主要讨论的是Oracle公司发布的JDK 1.6版本,这是一个针对Windows操作系统的32位版本,但同时也兼容64位系统。 首先,让我们来了解一下JDK 1.6的主要特点和改进。JDK 1.6,也...

    FOXPRO25

    不过,随着技术的发展,现代开发更多倾向于使用如SQL Server、Oracle、MySQL等更现代的数据库系统,或者.NET、Java等更强大的开发平台。 总的来说,FOXPRO25是数据库管理和应用开发的一个历史里程碑,它在当时以其...

Global site tag (gtag.js) - Google Analytics