欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Oracle 教程 有大用 有大大用 有大大大用

1) Oracle 快速入门

Oracle 快速入门


本节教程将针对那些没有使用过Oracle数据库或任何其他关系数据库系统(RDBMS)的用户,从最基础的入手,让用户从以下步骤来快速了解安装配置Oracle学习所需的环境:

1、首先,我们需要了解Oracle数据库到底是什么

2、接下来,当对Oracle数据库有了很好的了解之后,应该将其安装在本地计算机或服务器上。 安装Oracle教程将引导完成设置Oracle Database 12c的步骤。

3、安装好Oracle后,我们需要了解如何创建或者加载示例数据库到Oracle数据库服务器中,请查看如何创建和加载示例数据库教程

4、最后,演示如何使用SQL * plus和SQL Developer工具连接到Oracle数据库服务器。选择这些工具是因为在安装Oracle数据库服务器软件时可以免费使用这些工具。

如果您已经完成了以上所有步骤,那么恭喜您,离掌握Oracle数据库就更近了一步。

来自 https://www.w3cschool.cn/oraclejc/oraclejc-eswu2qqq.html

1.1)Oracle 简介

Oracle数据库是什么?

2021-08-31 14:24 更新

Oracle数据库是什么?

Oracle Database,又名 Oracle RDBMS,简称 Oracle。Oracle 数据库系统是美国 Oracle 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(client/server)或B/S体系结构的数据库之一,比如 SilverStream 就是基于数据库的一种中间件。Oracle 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系型数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能,但它的所有知识,只要在一种机型上学习了 Oracle 知识,便能在各种类型的机器上使用它。


       

数据文件(dbf)        

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中,而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

         

表空间        

表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据库文件(datafile)。一个数据文件只能属于一个表空间。


       

 

 

用户        

用户是在实例下建立的。不同实例中可以建相同名字的用户。注:表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于 Oracle 的数据库不是普通的概念,oracle 是由用户和表空间对数据进行管理和存放的。但是表不是由表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!


       

SCOTT 和 HR(用户)

scott 与 hr 就是初始的普通用户,这些用户下面都默认存在了表结构


       


       

 

DDL:数据库定义语言:create、drop

DML:数据库的操作语言:insert、update、delete

DQL:数据库的查询语言:select

DCL:数据库的控制语言:grant、revoke

ORACLE 数据库系统能够在业内独占鳌头并不是空穴来风,下面我们来细数一下 ORACLE 数据库的优势所在:
       

  1. 完整的数据管理功能:

  • 数据的大量性

  • 数据的保存的持久性

  • 数据的共享性

  • 数据的可靠性

  • 完备关系的产品:

    • 信息准则---关系型 DBMS 的所有信息都应在逻辑上用一种方法,即表中的值显式地表示

    • 保证访问的准则

    • 视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化

    • 数据物理性和逻辑性独立准则

  • 分布式处理功能:

    ORACLE 数据库自第5版起提供了分布式处理能力,到第7版有比较完善的分布式数据库功能了,一个ORACLE 分布式数据库由 oraclerdbms、sql*Net、SQL*CONNECT 和其他非 ORACLE 的关系型产品构成。

  • 用 ORACLE 能轻松的实现数据仓库的操作

    以上是 Oracle 数据库的优势,从这些优势中不难看出这是一款功能强大的数据库系统。


  •        

    数据库和实例 

    Oracle 数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例则是管理数据库文件的内存结构。此外,数据库是由后台进程组成。

    数据库和实例是紧密相连的,所以我们一般说的 Oracle 数据库,通常指的就是实例和数据库。

    下图说明了 Oracle 数据库服务器体系结构:

    1
           

    在这种体系结构中,Oracle 数据库服务器包括两个主要部分:文件(Oracle 数据库)和内存(Oracle 实例)。

    1.Oracle数据库

    Oracle 数据库的一个基本任务是存储数据,以下部分简要地介绍 Oracle 数据库的物理和逻辑存储结构。

    1.1.物理存储结构

    物理存储结构是存储数据的纯文件。当执行一个 CREATE DATABASE 语句来创建一个新的数据库时,将创建下列文件:

       ● 数据文件:数据文件包含真实数据,例如销售订单和客户等。逻辑数据库结构(如表和索引)的数据被物理存储在数据文件中。

       ● 控制文件:每个 Oracle 数据库都有一个包含元数据的控制文件。元数据用来描述包括数据库名称和数据文件位置的数据库物理结构。

       ● 联机重做日志文件:每个 Oracle 数据库都有一个联机重做日志,里面包含两个或多个联机重做日志文件。联机重做日志由重做条目组成,能够记录下所有对数据所做的更改。

    除这些文件外,Oracle 数据库还包括如参数文件、网络文件、备份文件以及用于备份和恢复的归档重做日志文件等重要文件。

    1.2.逻辑存储结构

    Oracle 数据库使用逻辑存储结构对磁盘空间使用情况进行精细控制。以下是 Oracle 数据库中的逻辑存储结构:

       ● 数据块(Data blocks):Oracle 将数据存储在数据块中。数据块也被称为逻辑块,Oracle 块或页,对应于磁盘上的字节数。

       ● 范围(Extents):范围是用于存储特定类型信息的逻辑连续数据块的具体数量。

       ● 段(Segments):段是分配用于存储用户对象(例如表或索引)的一组范围。

       ● 表空间(Tablespaces):数据库被分成称为表空间的逻辑存储单元。 表空间是段的逻辑容器。 每个表空间至少包含一个数据文件。

    下图说明了表空间中的段,范围和数据块:

    2
           

    下图显示了逻辑和物理存储结构之间的关系:

    3
           

    2.Oracle实例

    Oracle 实例是客户端应用程序(用户)和数据库之间的接口。Oracle 实例由三个主要部分组成:系统全局区 (SGA),程序全局区 (PGA) 和后台进程。如下图所示 :

    4
           

    SGA 是实例启动时分配的共享内存结构,关闭时释放。 SGA 是一组包含一个数据库实例的数据和控制信息的共享内存结构。

    不同于所有进程都可用的 SGA,PGA 是会话开始时为每个会话分配的私有内存区,当会话结束时释放。

    主要的Oracle数据库的后台进程

    以下是 Oracle 实例的主要后台进程:

       ● PMON 是 Oracle 数据库中最活跃的一个进程,是调节所有其他进程的进程监视器。PMON 能够清理异常连接的数据库连接,并自动向侦听器进程注册数据库实例。

       ● SMON 是执行系统级清理操作的系统监视进程。它有两个主要职责,包括在发生故障的情况下自动恢复实例,例如断电和清理临时文件。

       ● DBWn 是数据库编写器。Oracle 在内存中执行每个操作而不是磁盘。因为在内存中的处理速度比在磁盘上快。DBWn 进程从磁盘读取数据并将其写回到磁盘。 一个 Oracle 实例有许多数据库编写器,如:DBW0DBW1DBW2等等。

       ● CKPT 是检查点进程。 在 Oracle 中,磁盘上的数据称为块,内存中的数据称为缓冲区。 当该块写入缓冲区并更改时,缓冲区变脏,需要将其写入磁盘。CKPT 进程使用检查点信息更新控制和数据文件头,并向脏盘写入脏缓冲区的信号。 请注意,Oracle 12c 允许全面和增量检查点。

    5
           

       ● LGWR 是日志写入过程,是可恢复架构的关键。 在数据库中发生的每一个变化都被写出到一个名为 redo 日志文件中用于恢复目的。 而这些变化是由 LGWR 进程编写和记录的。 LGWR 进程首先将更改写入内存,然后将磁盘写入重做日志,然后将其用于恢复。

       ● ARCn 是归档进程,它将重做日志的内容复制到归档重做日志文件。存档程序进程可以有多个进程,如:ARC0ARC1 和 ARC3,允许存档程序写入多个目标,如 D:驱动器,E:驱动器或其他存储。

       ● MMON 是收集性能指标的可管理性监控流程。

       ● MMAN 是自动管理 Oracle 数据库内存的内存管理器。

       ● LREG 是监听器注册过程,它使用 Oracle Net Listener 在数据库实例和调度程序进程上注册信息。

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-dxgu2qqt.html


    1.2)Oracle 11g安装

    Oracle 11g安装教程

    2020-10-12 09:53 更新

    在本章节中,我们将为大家介绍如何下载 Oracle 11g 数据库,并且在 Windows 10 64 位电脑上进行安装演示。

    Oracle 11g下载

    首先,需要到 Oracle 官方网站下载Oracle数据库。
           

    Oracle 11g 官网下载地址:点击下载        

    下载的时候注意选对版本,因为我们是要在 Windows 10 64 位电脑上进行安装,所以选择 Windows X64 的版本,如下图:
           

    QQ截图20180602153935
           


           


           

    Oracle 11g安装步骤

    Oracle 11g下载完成后,解压到一个空的文件夹,然后双击setup.exe文件,就可以开始安装Oracle数据库了。
           

    1
           

    执行安装程序后会出现如下的命令提示行。

           

        
           

           


           

    等待片刻之后就会出现启动画。

           

    第1步:

    在此步骤中,可以提供您的电子邮件,以获取有关 Oracle 安全问题的更新信息。但为了方便,这里我们不提供电子邮件。

    2
           

    确认不提供电子邮件,点击 【是(Y)】继续。
           

    3
           

    第2步:

    此步骤中有三个选项,如下图所示。选择第一个【创建和配置数据库】,然后单击【下一步】按钮。

    4
           

    第3步:

    如果要在笔记本电脑或桌面上安装 Oracle 数据库,请选择第一个选项【桌面类】,否则选择第二个选项,然后单击【下一步】按钮。

    5
           

    第4步:

    此步骤允许要求输入完整的数据库安装文件夹。可以更改 Oracle 基本文件夹,其他文件夹将相应更改。填写上管理员密码,之后单击【下一步】按钮进入下一步。

    6
           

    第5步:

    在此步骤中,Oracle 将在安装 Oracle 数据库组件之前执行先决条件检查。

    7
           

    第6步:

    此步骤将显示上一步骤检查的摘要信息,单击【完成】按钮开始安装 Oracle 数据库。

    8
           

    第7步:

    此步骤将文件复制到相应的文件夹并安装 Oracle 组件和服务。完成所需的时间需要几分钟,请耐心等待

    9
           

    完成后,安装程序将显示“数据库配置助理”对话框 

    10
           

    单击【口令管理】按钮设置不同用户的密码,这里我们将 SYS,SYSTEM 和 HR 用户解锁并设置相应的密码 ,完成后,点击【确定】。

    11
           

    第8步:

    安装过程完成后,单击【关闭】按钮来关闭安装程序。到此,Oracle 11g 已经成功安装好了。

    12
           

    验证安装情况

    如果上面安装步骤正常通过,在【开始】->【所有应用】将看到 Oracle 文件夹如下:

    582150924_16192
           

    首先,启动 SQL Plus,它是一个可用于与 Oracle 数据库交互的命令行界面工具。

    然后,在命令提示符中输入用户和登录密码,如提示连接成功,证明我们的Oracle11g安装完

    01
           


           

    安装时遇到oracle安装最后一步出错Ora

    20180521235923672
           

    20180521235935216
           


           


           

    至此,Oracle 数据库就正式安装完毕了。在安装过程中,如果没有完全成功,请仔细查看每个步骤,并在必要时进行适当的更正。


           

    Oracle11g 卸载        

     

    1.关闭oracle所有的服务。

    Window7用户可以在windows的任务管理器-->服务内关闭以oracle开头的所有服务;xp用户可以在我的电脑右击-->管理-->服务和应用程序-->服务,找到所有以oracle开头的服务,右击,关闭。

     2.打开注册表:regedit

    打开路径:   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\    删除该路径下的所有以oracle开始的服务名称,这个键是标识Oracle在windows下注册的各种服务!

     

     3.找到路径:  HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

      删除该oracle目录,该目录下注册着Oracle数据库的软件安装信息。

     

      4.删除注册的oracle事件日志,打开注册表  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application

      删除注册表的以oracle开头的所有项目。

     

      5.删除环境变量path中关于oracle的内容。(这一步好像不做也可以。)

      鼠标右键右单击“我的电脑-->属性-->高级-->环境变量-->PATH 变量。

      删除Oracle在该值中的内容。注意:path中记录着一堆操作系统的目录,在windows中各个目录之间使用分号(;  )隔开的,删除时注意。

      建议:删除PATH环境变量中关于Oracle的值时,将该值全部拷贝到文本编辑器中,找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到PATH环境变量中,这样相对而言比较安全。

     

     6.重新启动操作系统。

        以上1~5个步骤操作完毕后,重新启动操作系统。

     

     7.重启操作系统后各种Oracle相关的进程都不会加载了。

    删除oracle的安装目录,在这里就体现到了上面新建一个单独目录的好处了。可以直接把自定义的那个oracle文件夹直接删除。(数据库的东西好像删除起来也是很慢的)。

      如果没有按照自定义的话,找到默认的那个安装目录,删除之。

     8.删除开始菜单中的oracle项。   

      至此,Windows平台下Oracle就彻底卸载了。

     

     

    补充:

    你安过ORACLE了吧,应该是上次安装成功,或者卸载的时候没有卸载彻底,看看什么地方没有删的文件删了就行。度的别人的完全卸载Oracle方法:软件环境:1、Windows XP + Oracle 10g2、Oracle安装路径为:d:\Oracle1、如果数据库配置了自动存储管理(ASM),应该先删除聚集同步服务CSS(cluster Synchronization Services).删除CSS服务的方法是在DOS命令行中执行如下命令: localconfig delete2、在“服务”窗口中停止Oracle的所有服务。3、在“开始”菜单中依次选择“程序”/“Oracle-OraDb10g_home1"/"Oracle Installation Products”/"Universal Installer",打开Oracle Universal Installer(OUI)窗口4、单击“卸载产品”按钮,打开“产品清单”窗口,选中要删除的Oracle产品,单击“删除”按钮,打开“确认删除”对话框。5、在“确认删除”对话框中单击“是”按钮,开始删除选择的Oracle产品。6、删除自动存储管理(ASM),在DOS命令行中执行如下命令:oracle -delete -asmsid +asm7、运行regedit命令,打开注册表窗口。删除注册表中与Oracle相关的内容,具体如下:1、删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目录。2、删除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中所有以oracle或OraWeb为开头的键。3、删除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application中所有以oracle开头的键。4、删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。5、删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 开头的键。6、删除HKDY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。其中有些注册表项可能已经在卸载Oracle产品时被删除。8、删除环境变量中的PATHT CLASSPATH中包含Oracle的值。9、删除“开始”/“程序”中所有Oracle的组和图标。10、删除所有与Oracle相关的目录,包括:1、c:\Program file\Oracle目录。2、ORACLE_BASE目录。3、c:\Documents and Settings\系统用户名、LocalSettings\Temp目录下的临时文件。

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-41xa2qqv.html


    1.3)Oracle 12C安装


    Oracle 12C安装教程

    Oracle 12c,全称Oracle Database 12c,是Oracle 11g的升级版,新增了很多新的特性。本章节就为大家介绍Oracle 12c的下载和安装步骤。

    Oracle 12c下载

    打开Oracle的官方中文网站,选择相应的版本即可。

    下载地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html        

    注意:下载时,根据电脑系统选择相应的版本,如下图,因为我用的是WIN 10 64位系统,因此选择第一个下载。

    1
           

    将下载下来的压缩包解压,得到以下文件:

    2
           

    双击 setup.exe 文件,就可以进行安装了。

    Oracle 12c安装步骤

    第1步:

    安装程序要求提供您的电子邮件地址以获取最新的安全问题和更新。您可以单击下一步按钮跳过。

    3        

    第2步

    在这一步中,Oracle 安装程序会询问您是要创建和配置数据库,仅安装数据库软件还是仅升级现有数据库。因为首次安装 Oracle 数据库,请选择第一个选项 ( Create and configure a database ),然后单击下一步按钮。

    4        

    第3步

    安装程序允许您选择系统类型。因为我们是在桌面计算机上安装Oracle,而不是服务器,因此,这里选择第一个选项:桌面类 ( Desktop class ),然后单击下一步按钮。

    5        

    第4步

    在这一步骤中,允许指定要安装和配置 Oracle Home 以增强安全性的 Windows 用户帐户。选择第三个选项:“使用 Windows 内置帐户( Use Windows Built-in Account )”。

    6        

    第5步

    在此步骤中,选择要安装 Oracle 数据库的文件夹,全局数据库名称和密码,可插拔数据库名称。

    8        

    第6步

    安装程序执行前提条件检查。

    9        

    第7步

    安装程序会显示信息的摘要,例如全局设置,数据库信息等。如果一切正常,可查看信息并单击安装按钮。

    10        

    确认安装?

    11        

    即将要安装的信息概述 :

    12        

    第8步

    安装程序开始安装 Oracle 数据库。安装速度取决于您的计算机性能,需要几分钟的时间才能完成。

    13        

    14        

    第9步

    安装成功完成后,安装程序会通知提示安装完成,如下面截图所示。单击关闭按钮关闭窗口。

    15        

    连接到Oracle数据库

    第一步,启动由 Oracle 数据库提供的 SQL developer 应用程序。

    16        

    第二步,右键单击连接节点,然后选择“新建连接…(New Connection …)”菜单项以创建 新连接。

    17        

    第三步,输入您在安装过程中提供的信息,如以下屏幕截图所示。单击连接按钮连接到 Oracle 数据库。

    18        

    SQL developer 将显示所有对象,如下所示:

    19        

    至此,恭喜,您已成功安装 Oracle 数据库 12c 了。

    来自  https://www.w3cschool.cn/oraclejc/oraclejc-vuqx2qqu.html



    1.4) Oracle 数据库创建导入

    Oracle 数据库创建导入

    2020-10-29 14:16 更新

    在本章教程中,将教大家如何在 Oracle 中创建导入数据库。

    注意:本教程中的有些命令您可能并不熟悉,但没关系,只需按照说明一步一步创建示例数据库即可。在之后的教程中,会详细介绍每个命令。

    1.创建新用户并授予权限

    1.1.打开

    首先,启动 SQL plus 程序的命令行:

    sqlplus


    如下所示:

    1

    或者从开始菜单的安装目录打开 SQL Plus:

    2

    1.2.登录

    当 SQL Plus 启动后,它会提示您输入用户名和密码。继续使用在安装 Oracle 数据库服务器期间输入的密码以 sys 用户身份登录:

    C:\Users\Administrator>sqlplus
    
    SQL*Plus: Release 11.2.0.1.0 Production on 星期五 1110 04:32:17 2017
    Copyright (c) 1982, 2010, Oracle.  All rights reserved.
    
    请输入用户名:  sys as sysdba
    输入口令:


    1.3.创建新用户

    使用以下 CREATE USER 语句创建一个新用户:ot,用于在可插入数据库中创建示例

    ot 可为任意名字

    数据库:

    SQL> CREATE USER OT IDENTIFIED BY Orcl1234;
    
    User created.


    上面的语句创建了一个名为:OT 的新用户,并在 IDENTIFIED BY 子句之后指定了一个密码,在这个示例中,创建的用户:OT 对应的密码为:Orcl1234 。

    1.4.授权

    通过使用以下 GRANT 语句授予 OT 用户权限:

    SQL> GRANT CONNECT, RESOURCE, DBA TO OT;
    
    Grant succeeded.


    2.登录新账号

    使用OT用户帐户连接到数据库(ORCL)。 当 SQL Plus 提示输入用户名和密码时,输入:OT 和 Orcl1234。

    对于 Oracle 11g/12c,使用如下命令:

    SQL> CONNECT ot@orcl
    输入口令:
    已连接。


    注意,OT 用户仅存在于 ORCL 数据库中,因此,必须在 CONNECT 命令中明确指定用户名为 ot@orcl

    3.创建数据库表

    要为示例数据库创建表,需要从 SQL plus 执行 ot_schema.sql 文件中的语句,

    在 SQL plus 的文件中执行 SQL 语句,可以使用下面的命令(语法):

    SQL> @path_to_sql_file


    假设 ot_schema.sql 文件位于 F:\website\oraok\ot 目录中,则执行下面的语句 :

    SQL>@F:\website\oraok\ot\11g\ot_schema.sql


    当执行语句完成后,可以通过列出 OT 用户拥有的表来验证表是否成功创建。以下是这样做的声明:

    SQL> SELECT table_name FROM user_tables ORDER BY Table_name;
    
    TABLE_NAME
    ------------------------------
    CONTACTS
    COUNTRIES
    CUSTOMERS
    EMPLOYEES
    INVENTORIES
    LOCATIONS
    ORDERS
    ORDER_ITEMS
    PRODUCTS
    PRODUCT_CATEGORIES
    REGIONS
    
    TABLE_NAME
    ------------------------------
    WAREHOUSES
    
    已选择12行。
    
    SQL>


    在这个语句中,我们从 user_tables 表中选择了 table_name 列中的值,并按字母顺序排列了表名。如上结果中所见,有12个表名按预期方式返回。

    接下来,我们可以将数据加载/导入到这些表中。

    4.将数据加载到表中

    要将数据加载到表中,请按如下所示执行 ot_data.sql 文件中的语句:

    SQL>@F:\website\oraok\ot\11g\ot_data.sql


    如果没有看到任何错误消息,则意味着数据已成功加载导入。

    还可以使用 SELECT 语句验证数据是否已成功加载导入。 例如,要获取 contacts 表中的行数,请使用以下语句:

    SQL> SELECT COUNT(*) FROM contacts;
    
      COUNT(*)
    ----------
           319
    
    SQL> SELECT COUNT(*) FROM countries;
    
      COUNT(*)
    ----------
            25
    
    SQL> SELECT COUNT(*) FROM customers;
    
      COUNT(*)
    ----------
           319
    
    SQL> SELECT COUNT(*) FROM employees;
    
      COUNT(*)
    ----------
           107
    
    SQL> SELECT COUNT(*) FROM inventories;
    
      COUNT(*)
    ----------
          1112
    
    SQL> SELECT COUNT(*) FROM locations;
    
      COUNT(*)
    ----------
            23
    
    SQL> SELECT COUNT(*) FROM orders;
    
      COUNT(*)
    ----------
           105
    
    SQL> SELECT COUNT(*) FROM order_items;
    
      COUNT(*)
    ----------
           665
    
    SQL> SELECT COUNT(*) FROM product_categories;
    
      COUNT(*)
    ----------
             5
    
    SQL> SELECT COUNT(*) FROM products;
    
      COUNT(*)
    ----------
           288
    
    SQL> SELECT COUNT(*) FROM regions;
    
      COUNT(*)
    ----------
             4
    
    SQL> SELECT COUNT(*) FROM warehouses;
    
      COUNT(*)
    ----------
             9


    查询返回319表示 contacts 表有319行。通过用另一个表替换表名(联系人),可以检查所有表中的数据。如果这是您第一次使用数据库系统,这对您来说是一个很好的练习。

    要删除上面模式中的表,请执行:

    SQL>@F:\website\oraok\ot\11g\ot_drop.sql


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-gpa52qqy.html


    1.5)  Oracle 数据库连接


    如何连接到Oracle数据库?

    经过前几章的介绍,我们已经了解了什么是Oracle数据库以及其安装方法,那么本章节,将和大家说说如何使用SQL * plus和SQL Developer 工具连接到Oracle数据库服务器。

    使用SQL * Plus连接Oracle数据库服务器

    SQL * Plus 是交互式查询工具,我们在安装 Oracle 数据库服务器或客户端时会自动安装。SQL * Plus 有一个命令行界面,允许您连接到 Oracle 数据库服务器并交互执行语句。

    注意:如果有使用过 MySQL 或 PostgreSQL,SQL * plus 与 MySQL 中的 mysql 程序或 PostgreSQL 中的 psql 类似。

    我们可以在终端输入 sqlplu s命令,以此来在 Linux 或 Window 中启动 SQL * Plus。

    sqlplus


    以 Windows 10 系统为例,在 Windows 的“开始”菜单的“程序”文件夹中找到 SQL * Plus 程序,如下所示:

    1

    启动 SQLPlus 图标时,会提示输入用户名和密码。输入在安装Oracle数据库服务器期间设置的用户名和密码。如果不知道要使用哪个帐户,请询问安装数据库的管理员。

    假设要使用 sys 帐户连接到本地 Oracle 数据库服务器,请输入以下信息:

    2

    按下 Enter 后,您应该看到一条消息,后面跟着SQL>命令行,如下所示:

    3

    如上图所示,您已成功连接到 Oracle 数据库服务器。


    在 Oracle 12c 中,当连接到数据库服务器时,默认数据库是名为 CDB$ROOT 的 ROOT 容器数据库。 要显示数据库名称,请使用 SHOW 命令:

    SQL> SHOW con_name;
    
    CON_NAME
    ------------------------------
    CDB$ROOT


    如果要切换到可插拔数据库,请使用ALTER SESSION语句将当前数据库设置为可插入数据库,例如:PDBORDL,如下所示:

    SQL> ALTER SESSION SET CONTAINER = PDBORDL;
    
    Session altered.


    现在,您连接到 PDBORCL 数据库。

    要断开用户与 Oracle 数据库服务器的连接,请使用 EXIT 命令:

    SQL> EXIT


    要将OT用户连接到位于PDBORCL可插拔数据库中的示例数据库,请输入以下命令:

    sqlplus OT@PDBORCL


    SQL Plus 会提示输入 OT 用户的密码。输入密码,您将连接到 Oracle 数据库服务器中的 PDBORCL* 数据库。

    使用 SQL Developer 连接到 Oracle 数据库服务器

    SQL Developer 是一个用于在 Oracle 数据库中使用 SQL 的免费 GUI 工具。与 SQL * Plus 程序一样,SQL Developer 在安装 Oracle 数据库服务器或客户端时自动安装。

    要启动 SQL Developer 程序,请单击开始菜单中Oracle程序文件夹中的SQL Developer图标,如下图所示:

    安装 Oracle 11g 会自带一个叫做 SQL Developer 的工具,它的功能非常强大,以前一直不知道,还用着 plsqldev 和 navicat 来连接数据库,其实这个工具拥有前面两个软件的所有功能(如果说的太绝对请指正)。首先我们打开 SQL Developer,如下图所示:

    SQL Developer 不能用于创建 Oracle 数据库,只能用来连接已创建的数据库,我们一般都是使用 Database Configuration Assistant(简称 DBCA)来创建数据库,如下图所示:

    打开 DBCA 以后按照向导来创建数据库,非常简单,这里不再赘述。

    在 SQL Developer 中我们新建一个连接,点击左上角的“绿色加号”如下图所示:

    创建数据库连接,如下图所示:



    填写完配置以后可以点击“Test”来测试数据库连接是否正确,如上图所示,左下角有“Status:Success”则表明数据库连接正确。

    2.创建新用户

    接着为 ORCL 这个数据库创建新用户,如下图所示

    填写用户名和密码,以及为用户指定表空间。如下图所示:

    为用户分配权限

     查看创建用户和分配权限所对应的 sql 代码,如下图所示。

     3.使用新用户创建数据库连接

    使用新账户创建数据库连接的方法和第一步类似,这里不再赘述。


    代码连接

    1. 先写好驱动字符串,连接字符串,用户名和密码字符串。

    localhost 是本地地址

    1521 是Oracle 默认端口

    orcl 是Oracle 默认名称

    uname 和 pwd 是 Oracle的用户名和密码

    2. 加载驱动 Class.forName(driverStr);

    3. 获取连接 conn=DriverManager.getConnection(orclStr,uname,pwd);

    4. 然后就可以进行数据库的操作。

    5. 关闭数据库,一定要记住反序关闭,先内后外。

    6. 这样就连接到数据库并成功对数据库进行了一次操作。



    来自 https://www.w3cschool.cn/oraclejc/oraclejc-elp62qqx.html


    2)Oracle 基础知识

    Oracle 基础知识

    本节教程涵盖了Oracle的数据库的基础知识,其目的是帮助用户构建强大的Oracle数据库基础。在完成本节教程后,用户将能够编写复杂的SQL语句来查询数据和管理数据库对象。

    本节知识注重实践,因此需要访问Oracle Database 12c环境进行动手练习和概念验证,所以还没安装Oracle 12C的用户,请先安装,以便学习。

    Oracle 12C的安装教程,可以参考:https://www.w3cschool.cn/oraclejc/oraclejc-vuqx2qqu.html
           

    查询数据

    本节将学习如何从Oracle数据库中查询数据。

       ● Select语句 - 演示如何查询单个表中的数据。

    排序数据

       ● ORDER BY语句 - 按升序或降序对查询的结果集进行排序。

    过滤数据

       ● DISTINCT - 介绍如何消除查询输出中的重复行。

       ● WHERE - 演示如何为查询返回结果集中的行记录指定过滤条件。

       ● AND - 组合两个或两个以上的布尔表达式,如果所有表达式都为true,则返回true。

       ● OR - 组合两个或两个以上的布尔表达式,如果其中一个表达式为true,则返回true。

       ● FETCH - 演示如何使用行限制子句限制查询返回的行数。

       ● IN - 确定值是否与列表或子查询中的任何值相匹配。

       ● BETWEEN - 基于一系列值(区间值)过滤数据。

       ● LIKE - 根据特定模式执行匹配。

    连接表

       ● INNER JOIN - 演示如何从表中查询具有与其他表匹配的行记录。

       ● LEFT JOIN - 介绍左连接概念,并学习如何使用它选择左表中具有,但右表中不具有的行记录。

       ● RIGHT JOIN - 解释右连接概念,并演示如何从右表查询具有,但左表中不具有的行记录。

       ● CROSS JOIN –介绍如何从多个表中构建笛卡尔乘积。

       ● Self Join - 演示如何将表连接到自身以查询分层数据或比较同一个表中的行记录。

    分组数据

       ● GROUP BY - 演示如何将行分组为子组,并为每个分组应用聚合函数。

       ● HAVING - 演示如何过滤分组中的行记录。

    子查询

       ● 子查询 - 介绍子查询的概念以及如何使用子查询来执行高级数据选择技术。

       ● 相关子查询 - 了解相关的子查询,它是一个依赖于外部查询返回的值的子查询。

       ● EXISTS和NOT EXISTS - 检查子查询返回的行是否存在。

       ● ANY,SOME和ALL - 将值与列表或子查询进行比较。

    设置操作符

    本节介绍使用集合运算符合并两个或多个独立查询的结果集的步骤。

       ● UNION - 演示如何将两个查询的结果合并为一个结果。

       ● INTERSECT - 演示如何实现两个独立查询的结果的交集。

       ● MINUS - 学习如何从一个结果集中减去另一个结果(也就是求差集)。

    修改数据

    在本节中,将学习如何更改Oracle数据库的数据内容。用于修改数据的SQL命令被称为数据操纵语言(DML)。

       ● INSERT - 学习如何在表中插入一行。

       ● INSERT INTO SELECT - 从查询结果中将数据插入到表中。

       ● INSERT ALL - 讨论多重插入语句,将多行插入到一个或多个表中。

       ● UPDATE - 演示如何更新表的存在的数据值。

       ● DELETE - 演示如何从表中删除一行或多行。

       ● MERGE - 使用单个语句逐步完成插入,更新和删除操作。

    数据定义

    本节介绍如何管理数据库和表的最重要的数据库对象。

       ● CREATE TABLE - 演示如何在数据库中创建新表。

       ● IDENTITY列 - 了解如何使用IDENTITY子句来定义表的标识列。

       ● ALTER TABLE - 演示如何改变表的结构。

       ● ALTER TABLE ADD列 - 显示如何将一个或多个列添加到现有表

       ● ALTER TABLE MODIFY列 - 演示如何更改表中现有列的定义。

       ● DROP COLUMN - 了解如何使用各种语句从表中删除一列或多列。

       ● DROP TABLE - 演示如何从数据库中删除表。

       ● TRUNCATE TABLE - 更快,更有效地删除表中的所有数据。

       ● RENAME TABLE - 学习如何重命名表和处理其依赖对象的过程。

    Oracle数据类型

       ● Oracle数据类型 - 内置Oracle数据类型的概述。

       ● NUMBER - 介绍数字数据类型,并展示如何使用它为表定义数字列。

       ● FLOAT - 通过实例来解释Oracle中的浮点数据类型。

       ● CHAR - 了解固定长度的字符串类型。

       ● NCHAR - 演示如何存储固定长度的Unicode字符数据,并解释CHAR和NCHAR数据类型之间的区别

       ● VARCHAR2 - 向您介绍可变长度字符,并向您展示如何在表中定义可变长度字符列。

       ● NVARCHAR2 - 了解如何在数据库中存储可变长度的Unicode字符。

       ● DATE - 讨论日期和时间数据类型,并说明如何有效地处理日期时间数据。

       ● TIMESTAMP - 介绍如何以小数秒精度存储日期和时间。

       ● INTERVAL - 介绍区间数据类型,主要用来存储时间段。

       ● TIMESTAMP WITH TIME ZONE - 了解如何使用时区数据存储日期时间。

    约束

       ● 主键 - 解释主键概念,并演示如何使用主键约束来管理表的主键。

       ● 外键 - 解释介绍外键概念,并演示如何使用外键约束来强制表之间的关系。

       ● NOT NULL约束 - 演示如何确保列不接受NULL值。

       ● UNIQUE约束 - 讨论如何确保存储在一列或一组列中的数据在整个表内的行之间是唯一的。

       ● CHECK约束 - 在将数据存储到表中之前添加用于检查数据的逻辑的过程。

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-21an2qtd.html


    2.1)  Oracle Select语句

    Oracle Select语句

    Oracle Select语句的作用是在表单中查询数据,本文将为大家带来Select语句的详细用法介绍。

    SELECT语句使用方法

    在Oracle中,表是由列和行组成。 例如,示例数据库中的customers表具有以下列:customer_id,name,address,website和credit_limit。customers表中这些列中也有对应的数据。

    1

    要从表的一个或多个列(column_1,column_2,...,column_n)中检索数据,请使用以下语法的SELECT语句:

    SELECT
      column_1, 
      column_2, 
      ...
    FROM
      table_name;


    在这个SELECT语句中:

       ● 首先,需要指定要查询数据的表名。

       ● 其次,指定想要返回数据的列。 如果需要返回多个列,则需要用逗号(,)将这些列分隔。

    注意,SELECT语句非常复杂,由许多子句组成,如ORDER BY,GROUP BY,HAVING,JOIN。 为了简单起见,在本教程中,我们只关注SELECT和FROM子句的用法。

    Oracle SELECT示例

    为了方便大家更加了解和掌握Oracle Select语句,下面为大家带来一些示例代码。

    1. 查询单个列的数据

    要从客户(customers)表中获取客户名称(name)列,请使用以下语句:


    SELECT
      name
    FROM
      customers;


    执行上面语句,返回部分结果如下:


    NAME
    ------------------------------------------------------------------------
    Aetna
    AIG
    Intel
    Pfizer
    FedEx
    New York Life Insurance
    Ingram Micro
    American Airlines Group
    Johnson Controls
    Goldman Sachs Group
    Oracle
    
    已选择319行。


    2. 查询多个列的数据

    要从多个列查询数据,请指定一个以逗号分隔的列名称列表。

    以下示例显示如何从客户(customers)表的customer_id,name和credit_limit列中查询数据。

    SELECT
        customer_id,
        name,
        credit_limit
    FROM
        customers;


    执行上面示例代码,得到以结果:

    2

    3. 查询表中所有列的数据

    以下示例将检索customers表的所有列中的数据,列出所有列的名称,如下所示:

    SELECT
        customer_id,
        name,
        address,
        website,
        credit_limit
    FROM
        customers;


    执行上面示例代码,得到以下结果:

    3

    为了方便起见,查看所有列可以使用简写星号(*)来指示Oracle从表中返回所有列的数据,如下所示:

    SELECT
        *
    FROM
        customers;


    执行上面示例代码,得到以下结果:

    4

    请注意,应尽量避免使用星号(*)进行测试。 在实践中,即使想要从表的所有列中检索数据,也应该明确指定要从中查询数据的列。

    这是因为业务变化,表格未来可能会有更多或更少的列。 如果在应用程序代码中使用星号(*),并假定该表有一组固定的列,但应用程序可能不处理其他不相关的列或访问已删除的列。


    以上就是Oracle Select语句用法的详细介绍了,下一章我们将为大家带来Oracle Order By子句的使用教程,不要错过哦。

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-e2ua2qu5.html


    2.2) Oracle Order By子句

    Oracle Order By用法详解

    在Oracle中,ORDER BY子句可以用来对一列或多列的结果集按升序或降序进行排序。本文,将为大家带来ORDER BY子句的具体用法。

    Oracle ORDER BY子句基本用法

    在Oracle中,表中是以非指定顺序存储行数据记录的,它不管行插入数据库的顺序如何。要按列以升序或降序查询行记录,必须明确指示Oracle数据库要如何去排序。

    例如,您可能希望按名称的字母顺序列出所有客户,或者按照从最低到最高信用限额的顺序显示所有客户。

    要对数据进行排序,我们可以将ORDER BY子句添加到SELECT语句中,参考以下语法:

    SELECT
        column_1,
        column_2,
        column_3,
        ...
    FROM
        table_name
    ORDER BY
        column_1 [ASC | DESC] [NULLS FIRST | NULLS LAST],
        column_1 [ASC | DESC] [NULLS FIRST | NULLS LAST],


    要按列排序结果集,可以在ORDER BY子句之后列出该列。

    按照列名是一个排序顺序,可以是:

    • ASC表示按升序排序

    • DESC表示按降序排序

    默认情况下,无论是否指定ASC,ORDER BY子句都按升序对行进行排序。如果要按降序对行进行排序,请明确使用DESC。

    NULLS FIRST在非NULL值之前放置NULL值,NULLS LAST在非NULL值之后放置NULL值。

    ORDER BY子句可以按多列对数据进行排序,每列可能有不同的排序顺序。

    请注意,ORDER BY子句总是SELECT语句中的最后一个子句。

    Oracle ORDER BY用法示例:

    下面将使用示例数据库中的customers表进行演示。

    1

    以下语句从客户(customers)表中检索客户的:name, address 和 credit limit :

    SELECT name, address, credit_limit FROM customers;


    执行上面查询语句,得到以下结果:

    2

    1. 按列排序行示例

    要按照字母顺序按升序排列客户名称,请使用以下语句:

    SELECT name,address,credit_limit
    FROM customers
    ORDER BY name ASC;


    执行上面示例代码,得到以下结果:

    4

    ASC指示Oracle按升序对行进行排序。但是ASC是可选的,如果省略,则在默认情况下,ORDER BY子句按指定的列按升序对行进行排序。

    因此,下面的表达式:

    ORDER BY name ASC


    等效于

    ORDER BY name


    要按字母顺序降序排列客户名称,请在ORDER BY子句中的列名之后显式使用DESC,如下所示:

    SELECT name, address, credit_limit
    FROM customers
    ORDER BY name DESC;


    执行上面查询语句,得到以下结果:

    5

    2. 按多个列排序行示例

    要对多列进行排序,可以用逗号分隔ORDER BY子句中的每列。

    请参阅示例数据库中的以下联系人(contacts)表。

    例如,要按first_name进行按升序排序,并按降序对last_name列进行排序,请使用以下语句:

    SELECT first_name, last_name
    FROM contacts
    ORDER BY first_name, last_name DESC;


    执行上面示例代码,可以看到如下结果:

    6

    从上面截图中可以看到,contact_id为91和311这两条记录的first_name的值相同,last_name的值是以降序来排列的。

    在这个例子中,Oracle首先按first_name升序对行进行排序,以创建初始结果集。 然后Oracle按降序对last_name排序初始结果集。

    看到类似下面的结果如下:

    7

    在上面的这个结果中:

    • 首先,按first_name升序排序。

    • 其次,如果两个名字相同,按last_name降序排列,如Daniel Glass和Daniel Costner,Dianne Sen和Dianne Derek,Doretha Tyler和Dorotha Wong。

    3. 按列位置排序行示例

    不需要指定用于排序数据的列名称。如果您愿意,可以使用ORDER BY子句中列的位置。

    请参考下语句:

    SELECT name, credit_limit,address
    FROM customers
    ORDER BY 2 DESC, 1;


    在这个例子中,name列的位置是1,credit_limit列的位置是2。相当于以下查询语句:

    SELECT name, credit_limit,address
    FROM customers
    ORDER BY credit_limit DESC, name;
    SQL


    在ORDER BY子句中,使用这些列位置来指示Oracle对行进行排序。

    4.用NULL值排序行的示例

    请参阅示例数据库中的以下地区(locations)表:

    8

    以下语句按城市(city)和州(state)检索位置并对其进行排序:

    SELECT country_id, city, state
    FROM locations 
    ORDER BY state DESC;
    SQL


    执行上面查询语句,得到以下结果:

    9

    state列有NULL值,这意味着state数据与某些城市(例如:Beijing, Hiroshima 和 London)无关。

    当使用非NULL值对混合NULL进行排序时,Oracle允许指定哪个应该首先出现。

    例如,以下语句按升序对state列进行排序,并首先将NULL值放置在前面。

    SELECT country_id, city, state
    FROM
        locations
    ORDER BY
        state ASC NULLS FIRST;
    SQL


    要放置NULL值在后面,可以使用NULLS LAST,如下面的语句所示:

    SELECT country_id, city, state
    FROM
        locations
    ORDER BY
        state ASC NULLS LAST;
    SQL


    执行上面示例查询语句,得到以下结果:

    10

    5. 按函数或表达式排序数据

    ORDER BY子句可在一列上应用一个函数,例如字符串函数,数学函数等,并按函数的结果对数据进行排序。

    例如,以下语句使用ORDER BY子句中的UPPER()函数来区分客户名称的大小写:

    SELECT customer_id, name
    FROM customers
    ORDER BY UPPER( name );
    SQL


    执行上面查询语句,得到以下结果:

    11


    以上内容是否对您有帮助


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-xzfk2qv3.html


    2.3)Oracle Distinct子句

    Oracle Distinct用法

    SELECT DISTINCT可以用来过滤结果集中的重复行,确保SELECT子句中返回指定的一列或多列的值是唯一的。本文将为大家带来SELECT DISTINCT的具体用法。

    Oracle SELECT DISTINCT用法

    SELECT DISTINCT语句的语法如下:

    SELECT DISTINCT
        column_1
            FROM
        table_name;


    在上面语法中,table_name表的column_1列中的值将进行比较以过滤重复项。

    要根据多列检索唯一数据,只需要在SELECT子句中指定列的列表,如下所示:

    SELECT DISTINCT column_1,    column_2,
            ...
            FROM
        table_name;


    在此语法中,column_1,column_2和column_n中的值的组合用于确定数据的唯一性。

    DISTINCT子句只能在SELECT语句中使用。

    请注意,在Oracle中DISTINCT和UNIQUE没有区别,二者为同义词,DISTINCT遵循ANSI标准,UNIQUE是Oracle特定的用法,从移植角度考虑,使用遵循ANSI标准的DISTINCT是一个更好的选择。

    Oracle DISTINCT示例

    下面来看看如何使用SELECT DISTINCT来看看它是如何工作的一些例子。

    1. Oracle DISTINCT简单的例子

    以下是一个table表

    字段1     字段2
     id       name
     1         a
     2         b
     3         c
     4         c
     5         b
    


    如果想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。所以首先输入:

    select *, countdistinct namefrom table group by name


    然后我们再输入:

    id name count(distinct name)


    得到结果:

    1 a 1
    
    2 b 1
    
    3 c 1


    2. Oracle DISTINCT在一列上应用的例子

    以下示例检索所有联系人的名字:

    SELECT first_name
    FROM contacts
    ORDER BY first_name;


    执行上面查询语句,得到以下结果:

    1

    该查询返回了319行,表示联系人(contacts)表有319行。

    要获得唯一的联系人名字,可以将DISTINCT关键字添加到上面的SELECT语句中,如下所示:

    2

    该查询返回了302行,表示联系人(contacts)表有17行是重复的,它们已经被过滤了。

    2. Oracle DISTINCT应用多列示例

    看下面的order_items表,表的结构如下:

    3

    以下语句从order_items表中选择不同的产品ID和数量:

    SELECT
        DISTINCT product_id,
        quantity
    FROM
        ORDER_ITEMS
    ORDER BY product_id;


    执行上面查询语句,得到以下结果

    5

    在此示例中,product_id和quantity列的值都用于评估结果集中行的唯一性。

    3. Oracle DISTINCT和NULL

    DISTINCT将NULL值视为重复值。如果使用SELECT DISTINCT语句从具有多个NULL值的列中查询数据,则结果集只包含一个NULL值。

    请参阅示例数据库中的locations表,结构如下所示:

    11

    以下语句从state列中检索具有多个NULL值的数据:

    SELECT DISTINCT state
    FROM locations
    ORDER BY state NULLS FIRST;


    执行上面示例代码,得到以下结果:

    12

    正如上图所看到的,只返回一个NULL值。


    以上内容是否对您有帮助


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-jhpr2qvb.html


    2.4) Oracle Where子句


    Oracle Where子句用法

    Where是Oracle中的条件查询子句,本教程,将学习如何使用Oracle Where子句来指定过滤的条件返回符合查询条件的行记录。

    Oracle WHERE子句简介

    WHERE子句指定SELECT语句返回符合搜索条件的行记录。下面说明了WHERE子句的语法:

    SELECT
        column_1,
        column_2,
        ...
    FROM
        table_name
    WHERE
        search_condition
    ORDER BY
        column_1,
        column_2;


    WHERE子句出现在FROM子句之后但在ORDER BY子句之前。在WHERE关键字之后是search_condition - 它定义了返回行记录必须满足的条件。

    除了SELECT语句之外,还可以使用DELETE或UPDATE语句中的WHERE子句来指定要更新或删除的行记录。

    Oracle WHERE示例

    参阅示例数据库中的以下产品(products)表,其表结构如下:

    1

    1. 通过使用简单的相等运算符来查询行记录

    以下示例仅返回名称为“Kingston”的产品:

    SELECT
        product_name,
        description,
        list_price,
        category_id
    FROM
        products
    WHERE
        product_name = 'Kingston';


    执行上面示例中的查询语句,得到以下结果:

    2

    在这个例子中,Oracle按以下顺序评估子句:FROM WHERE和SELECT

    • 首先,FROM子句指定查询数据的表。

    • 其次,WHERE子句基于条件(例如product_name ='Kingston'过滤行记录)。

    • 第三,SELECT子句选择了应该返回的列。

    2. 使用比较运算符选择行记录

    除了等于(=)运算符之外,Oracle还提供了下表中所示的许多其他比较运算符:

    编号运算符描述
    1=            等于
    2!=,<>            不等于
    3>            大于
    4<            小于
    5>=            大于等于
    6<=            小于等于
    7IN等于值列表中的任何值
    8ANY/SOME/ALL将值与列表或子查询进行比较。它必须以另一个运算符(例如:=><)作为前缀。
    9NOT IN不等于值列表中的任何值
    10[NOT] BETWEEN n AND m相当于[Not] >= n 且 <= m
    11[NOT] EXISTS如果子查询返回至少一行,则返回true            
    12IS [NOT] NULL            测试NULL的值

    例如,要获取标价大于500的产品,请使用以下语句:

    SELECT
        product_name,
        list_price
    FROM
        products
    WHERE
        list_price > 500;


    执行上面查询语句,得到以下结果:

    3

    3. 选择符合某些条件的行

    要组合条件,可以使用AND,OR和NOT逻辑运算符。

    例如,要获取属于类别编号是4且标价大于500的所有主板,请使用以下语句:

    SELECT
        product_name,
        list_price
    FROM
        products
    WHERE
        list_price > 500
        AND category_id = 4;


    执行上面示例代码,得到以下结果:

    4

    4. 选择在两个值之间的值的行记录

    要查找具有两个值之间的值的行,请在WHERE子句中使用BETWEEN运算符。

    例如,要获取标价在650到680之间(650 <= list_price <= 680)的产品,请使用以下语句:

    SELECT
        product_name,
        list_price
    FROM
        products
    WHERE
        list_price BETWEEN 650 AND 680
    ORDER BY
        list_price;


    执行上面查询语句,得到以下结果:

    5

    请注意,以下表达式是等效的:

    SELECT
        product_name,
        list_price
    FROM
        products
    WHERE
        list_price >= 650 AND list_price <= 680
    ORDER BY
        list_price;


    5. 选择符合值列表中的行记录

    要查询值列表中的行记录,可以使用IN运算符,如下所示:

    SELECT
        product_name,
        category_id
    FROM
        products
    WHERE
        category_id IN(1, 4)
    ORDER BY
        product_name;


    执行上面查询语句,得到以下结果:

    6

    表达方式:

    category_id IN (1, 4)


    等效于 -

    category_id = 1 OR category_id = 4


    6. 选择包含值的行作为字符串的一部分

    以下语句检索名称以Asus开头的产品:

    SELECT
       product_name,
       list_price
    FROM
       products
    WHERE
       product_name LIKE 'Asus%'
    ORDER BY
       list_price;


    在这个例子中,我们使用LIKE运算符来根据指定的模式来匹配行记录。

    7

    以上内容是否对您有帮助



    来自 https://www.w3cschool.cn/oraclejc/oraclejc-932p2qvx.html



    2.5) Oracle And子句

    Oracle And子句

    Oracle AND是一个逻辑运算符,可以用来组合两个或更多的布尔表达式。本文就将为大家带来Oracle AND的使用方法。

    Oracle AND运算符语法

    AND运算符是一个逻辑运算符,它组合了布尔表达式,如果两个表达式都为真,则返回true。 如果其中一个表达式为假,则AND运算符返回false。

    AND运算符的语法如下所示:

    expression_1 AND expression_2


    下表说明了使用AND运算符合并true,false和NULL值时的结果:

    TRUEFALSENULL
    TRUETRUEFALSENULL
    FALSEFALSEFALSEFALSE
    NULLNULLFALSENULL

    通常,在SELECT,DELETE和UPDATE语句的WHERE子句中使用AND来形成匹配数据的条件。 另外,在JOIN子句的谓词中使用AND运算符来形成连接条件。

    在声明中使用多个逻辑运算符时,Oracle始终首先评估AND运算符。 但是,可以使用括号来更改评估的顺序。

    Oracle AND算符实例

    以以下数据库中的订单(orders)表为例:

    1

    1. Oracle AND结合两个布尔表达式的例子

    以下示例查找具有客户编号为2的那些状态为挂起(Pending)的订单:

    SELECT order_id, customer_id, status, TO_CHAR(order_date,'YYYY-MM-DD') AS order_date
    FROM orders
    WHERE  status = 'Pending'  AND customer_id = 2
    ORDER BY order_date;


    在这个例子中,查询返回了满足两个表达式的所有订单信息,即:

    status = 'Pending'


    customer_id = 2


    执行上面的代码可以得到以下结果:

    2

    2. Oracle AND结合两个以上的布尔表达式的例子

    可以使用多个AND运算符来组合布尔表达式。

    例如,以下语句检索满足以下所有条件的订单:

    • 在2017年放置。

    • 负责售货员编号为60。

    • 有发货状态。

    参考以下查询语句:

    SELECT
        order_id,
        customer_id,
        status,
        TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
    FROM
        orders
    WHERE
        status = 'Shipped'
        AND salesman_id = 60
        AND EXTRACT(YEAR FROM order_date) = 2017
    ORDER BY
        order_date;


    执行上面的代码可以得到以下结果:

    3

    3. Oracle AND与OR运算符结合示例

    可以将AND运算符与其他逻辑运算符(如OR和NOT)组合,以形成一个条件。

    例如,以下查询查找客户ID为44的订单,并且状态已取消(Canceled) 或 待定(Pending)。参考以下实现语句:

    SELECT
        order_id,
        customer_id,
        status,
        salesman_id,
        TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
    FROM
        orders
    WHERE
        (status = 'Canceled' OR status = 'Pending')
        AND customer_id = 44
    ORDER BY
        order_date;


    执行上面的代码可以得到以下结果:

    4


    以上内容是否对您有帮助


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-4gxo2qyi.html



    2.6) Oracle Or子句

    Oracle Or子句

    OR是Oracle中的逻辑运算符,本教程,将来学习如何使用OR运算符来组合两个或更多的布尔表达式。

    Oracle OR运算符语法

    OR运算符组合了布尔表达式,如果其中一个表达式为真(true),则返回true。

    以下是OR运算符的语法:

    expression_1 OR expression_2


    下表显示了OR运算符在true,false和NULL值之间的结果。

    TRUEFALSENULL
    TRUETRUETRUETRUE
    FALSETRUEFALSENULL
    NULLTRUENULLNULL

    我们经常在SELECT,DELETE和UPDATE语句的WHERE子句中使用OR运算符来形成过滤数据的条件。

    如果在语句中使用多个逻辑运算符,则Oracle会在评估NOT和AND运算符之后评估OR运算符。 但是,可以使用括号更改评估的顺序。

    Oracle OR运算符使用实例

    我们将使用以下的orders表进行演示:

    1

    1. Oracle OR运算符组合两个布尔表达式的例子

    以下示例查找状态为挂起(Pending)或取消(Canceled)的订单,参考以下查询语句:

    SELECT
        order_id,
        customer_id,
        status,
        TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
    FROM
        orders
    WHERE
        status = 'Pending'
        OR status = 'Canceled'
    ORDER BY
        order_date DESC;


    在这个例子中,语句返回了满足下列表达式之一的所有订单:

    status = 'Pending' 
    -- 或
    status = 'Canceled'


    执行上面的代码可以得到以下结果:

    2

    2. Oracle OR运算符结合两个以上的布尔表达式的例子

    我们经常使用OR运算符来组合两个以上的布尔表达式。 例如,以下语句检索负责以下销售员ID是60,61或62的订单:

    SELECT
        order_id, 
        customer_id, 
        status, 
        salesman_id,
        TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
    FROM
        orders
    WHERE
        salesman_id = 60 
        OR salesman_id = 61 
        OR salesman_id = 62
    ORDER BY
        order_date DESC;


    执行上面的代码可以得到以下结果:

    3

    可以使用IN运算符来代替使用多个OR运算符,如下例所示:

    SELECT
        order_id,
        customer_id,
        status,
        salesman_id,
        TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
    FROM
        orders
    WHERE
        salesman_id IN(60, 61, 62)
    ORDER BY
        order_date DESC;


    该查询返回的结果与使用上面的OR运算符返回的结果相同。

    3. Oracle OR运算符与AND运算符结合使用的示例

    可以将OR运算符与其他逻辑运算符(如AND和NOT)结合起来,形成一个条件。 例如,以下查询将返回属于客户ID为44并且已取消(Canceled)或挂起(Pending)状态的订单。参考以下查询语句:

    SELECT
        order_id,
        customer_id,
        status,
        salesman_id,
        TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
    FROM
        orders
    WHERE
        ( status = 'Canceled' OR status = 'Pending')
        AND customer_id = 44
    ORDER BY
        order_date;


    执行上面的代码可以得到以下结果:

    4


    以上内容是否对您有帮助


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-kd9u2qyp.html


    2.7) Oracle Fetch子句

    Oracle Fetch子句

    Oracle Fetch 子句

    FETCH 子句在 Oracle 中可以用来限制查询返回的行数,本教程将教大家如何使用 FETCH 子句。

    Oracle FETCH 子句语法

    以下说明了行限制子句的语法:

    [ OFFSET offset ROWS]
     FETCH  NEXT [  row_count | percent PERCENT  ] ROWS  [ ONLY | WITH TIES ]


    OFFSET 子句

    OFFSET 子句指定在行限制开始之前要跳过行数。OFFSET 子句是可选的。 如果跳过它,则偏移量为 0,行限制从第一行开始计算。

    偏移量必须是一个数字或一个表达式,其值为一个数字。偏移量遵守以下规则:

    • 如果偏移量是负值,则将其视为 0。

    • 如果偏移量为 NULL 或大于查询返回的行数,则不返回任何行。

    • 如果偏移量包含一个分数,则分数部分被截断。

    FETCH 子句

    FETCH 子句指定要返回的行数或百分比。

    为了语义清晰的目的,您可以使用关键字 ROW 而不是 ROWS,FIRST 而不是 NEXT。 例如,以下子句的行为和产生的结果相同:

    FETCH NEXT 1 ROWS
    FETCH FIRST 1 ROW



    ONLY | WITH TIES 选项

    仅返回 FETCH NEXT (或 FIRST) 后的行数或行数的百分比。

    WITH TIES 返回与最后一行相同的排序键。请注意,如果使用 WITH TIES,则必须在查询中指定一个 ORDER BY 子句。如果不这样做,查询将不会返回额外的行。

    Oracle FETCH 子句实例

    1. 获取前 N 行记录的示例

    以下语句返回库存量最高的前 5 个产品:

    -- 以下查询语句仅能在Oracle 12c以上版本执行
    SELECT
        product_name,
        quantity
    FROM
        inventories
    INNER JOIN products
            USING(product_id)
    ORDER BY
        quantity DESC 
    FETCH NEXT 5 ROWS ONLY;


    得到结果如下

       

    2. WITH TIES 示例

    以下查询使用 WITH TIES 选项的行限制子句:

    -- 以下查询语句仅能在Oracle 12c以上版本执行
    SELECT
     product_name,
     quantity
    FROM
     inventories
    INNER JOIN products
     USING(product_id)
    ORDER BY
     quantity DESC 
    FETCH NEXT 10 ROWS WITH TIES;



    即使查询请求了 10 行数据,因为它具有 WITH TIES 选项,查询还返回了另外两行。 

    请注意,这两个附加行在 quantity 列的值与第 10 行 quantity 列的值相同。

    3. 以百分比限制返回行的示例

    以下查询返回库存量最高的前 1% 的产品:

    -- 以下查询语句仅能在Oracle 12c以上版本执行
    SELECT
        product_name,
        quantity
    FROM
        inventories
    INNER JOIN products
            USING(product_id)
    ORDER BY
        quantity DESC 
    FETCH FIRST 1 PERCENT ROWS ONLY;
    


    SQL

    执行上面示例查询语句,得到以下结果 :

    库存 (inventories) 表总共有 1112 行,因此,1112 中的 1% 是 11.1,所以提取 12 (行)。

    4. OFFSET 示例

    以下查询将跳过库存量最高的前 10 个产品,并返回接下来的 10 个产品:

    -- 以下查询语句仅能在Oracle 12c以上版本执行
    SELECT
     product_name,
     quantity
    FROM
     inventories
    INNER JOIN products
     USING(product_id)
    ORDER BY
     quantity DESC 
    OFFSET 10 ROWS 
    FETCH NEXT 10 ROWS ONLY;
    


    得到以下结果 –


    SQL

    注意:这个功能可以用于分页的实现


    以上内容是否对您有帮助


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-ldr72qz5.html


    2.8)Oracle In子句


    Oracle In子句

    Oracle IN 运算符可以用来确定值是否与列表或子查询中的任何值相匹配,本文就将为大家带来 Oracle IN 运算符的具体用法。

    Oracle IN语法: 

    确定表达式是否与值列表匹配的 Oracle IN 运算符的语法如下所示:

    expression [NOT] IN (v1,v2,...)


    并且表达式的语法与子查询匹配:

    expression [NOT] IN (subquery)


    参数

    在上面语法中,这里将介绍每个参数含义:

    • expression - 该表达式(expression)是任何有效的表达式,它可以是要匹配的表的列。

    • v1, v2, v3.. - IN 运算符后面是逗号分隔值列表,用于测试匹配。所有值必须与表达式具有相同的数据类型。

    • subquery - 子查询返回一列的结果集以测试匹配。该列还必须具有与表达式相同的数据类型。

    返回值

    如果表达式(expression)的值等于值列表中的任何值或由子查询返回的结果集,则 IN 运算符返回 true。 否则,它返回 false。

    NOT 运算符否定 IN 运算符的结果。

    Oracle IN实例

    以下面的这两种表为例:

    1

    1. Oracle IN 示例

    以下语句查找所有销售员 ID 为54,55和56所负责的订单:

    SELECT
        order_id,customer_id,status,salesman_id
    FROM
        orders
    WHERE
        salesman_id IN (54,55,56)
    ORDER BY
        order_id;


    执行以上代码可以得到以下结果:

    2

    如上图中所示,查询结果集返回了 salesman_id 列中值为54,55或56的所有订单。同样,以下示例将检索状态(status)列的值为"Pending"或"Canceled"的销售订单信息:

    SELECT
        order_id, customer_id, status, salesman_id
    FROM
        orders
    WHERE
        status IN('Pending','Canceled')
    ORDER BY
        order_id;


    执行上面查询语句返回状态(status)列的值为"Pending"或"Canceled"的销售订单信息,如下所示:

    3

    2. Oracle NOT IN示例

    这个示例演示如何查找状态(status)不是"Shipped"或"Canceled"的订单:

    SELECT
        order_id, customer_id, status, salesman_id
    FROM
        orders
    WHERE
        status NOT IN( 'Shipped', 'Canceled')
    ORDER BY
        order_id;


    执行上面查询语句返回状态(status)列的值不是"Shipped"或"Canceled"的销售订单信息,如下所示:

    4

    3. Oracle IN 子查询示例

    以下示例返回负责订单状态为取消(Canceled)的销售员的ID,名字和姓氏,参考以下查询语句

    SELECT employee_id, first_name, last_name
    FROM employees
    WHERE
        employee_id IN(
            SELECT
                DISTINCT salesman_id
            FROM
                orders
            WHERE
                status = 'Canceled'
        )
    ORDER BY first_Name;


    执行上面查询语句,得到以下结果:

    5

    在这个例子中,子查询首先执行并返回一个销售员ID列表:

    SELECT
        DISTINCT salesman_id
    FROM
        orders
    WHERE
        status = 'Canceled'


    执行上面查询语句,得到以下结果 

    6

    这些销售人员id用于外部查询,查找所有员工的ID与销售员ID列表中的任何id相同。


    以上内容是否对您有帮助


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-okdx2r0q.html


    2.9)Oracle Between子句

    Oracle Between子句

    BETWEEN运算符可以用来在Oracle中选择值在一个范围内的行数据,本教程将为大家介绍BETWEEN运算符的具体使用方法。

    Oracle BETWEEN运算符语法

    BETWEEN运算符允许指定要测试的范围。当使用BETWEEN运算符为SELECT语句返回的行形成搜索条件时,只返回其值在指定范围内的行。

    以下说明BETWEEN运算符的语法:

    expression [ NOT ] BETWEEN low AND high


    在上面的语法中:

    • low 和high - low和hight指定要测试的范围的下限值和上限值。low和hight值可以是文字或表达式。

    • expression - 是low和hight定义的范围内测试的表达式。 为了能够比较,expression,low和hight的数据类型必须是相同的。

    • AND - AND运算符充当占位符来分隔low和hight的值。

    如果表达式(expression)的值大于或等于low的值,小于或等于hight的值,则BETWEEN运算符返回true。

    value >= low AND value <= high


    NOT BETWEEN运算符否定BETWEEN运算符的结果。

    Oracle BETWEEN示例

    下面来看看使用Oracle BETWEEN运算符的一些使用示例。

    1. Oracle BETWEEN数值示例

    以下方的products表为例:

    1

    以下语句返回标准成本在500到600之间的所有产品:

    SELECT
        product_name,
        standard_cost
    FROM
        products
    WHERE
        standard_cost BETWEEN 500 AND 600
    ORDER BY
        standard_cost;


    在此示例中,我们将标准成本(standard_cost)列中的值在500到600之间的范围进行比较筛选。该查询仅返回标准成本在以下范围之间的产品:

    2

    要查询标准成本不在500和600之间的产品,请按如下方式将NOT运算符添加到上述查询中:

    SELECT
        product_name,
        standard_cost
    FROM
        products
    WHERE
        standard_cost NOT BETWEEN 500 AND 600
    ORDER BY
        product_name;


    2. Oracle BETWEEN日期示例

    以下方的orders表为例进行演示:

    3

    要查询2016年12月1日至2016年12月31日期间客户的订单,可以使用以下语句:

    SELECT
        order_id, customer_id, status, order_date
    FROM
        orders
    WHERE
        order_date BETWEEN DATE '2016-12-01' AND DATE '2016-12-31'
    ORDER BY
        order_date;


    执行语句后,可以得到以下结果:

    4

    以上就是W3Cschool为大家带来Oracle Between子句的用法介绍,希望对大家有所帮助。


    以上内容是否对您有帮助

    来自:  https://www.w3cschool.cn/oraclejc/oraclejc-6py42qz7.html


    2.10)Oracle Like子句


    Oracle Like子句

    LIKE运算符在Oracle可以用来测试列中的值是否与指定的模式匹配,本教程将教大家LIKE运算符的正确用法。

    Oracle LIKE运算符语法:

    有时候,想根据指定的模式来查询数据。 例如,您可能希望查找姓氏以 St 开头或姓氏以 er 结尾的联系人。在这种情况下,可使用 Oracle LIKE 运算符。

    Oracle LIKE 运算符的语法如下所示:

    expresion [NOT] LIKE pattern [ ESCAPE escape_characters ]


    在上面的语法中,

    • expression:该表达式是一个列名称或一个表达式,要针对该模式 (pattern) 进行测试。

    • pattern:该模式是在表达式中搜索的字符串。此模式包含以下通配符:

      • %(百分号)匹配零个或多个字符的任何字符串。

      • _(下划线)匹配任何单个字符。

    • escape_character:escape_character 是出现在通配符前面的字符,用于指定通配符不应被解释为通配符而是常规字符。

    escape_character (如果指定)必须是一个字符,并且没有默认值。

    如果表达式匹配模式,LIKE 运算符返回 true。 否则,它返回 false。

    NOT 运算符(如果指定)可以否定 LIKE 运算符的结果。

    Oracle LIKE 示例

    下面举一些使用 Oracle LIKE 运算符的例子来看看它是如何工作的,以 contacts 表为例进行演示:

    1

    1. % 通配符的例子

    以下示例使用 % 通配符查找姓氏以St开头的联系人的电话号码:

    SELECT
        first_name,
        last_name,
        phone
    FROM
        contacts
    WHERE
        last_name LIKE 'St%'
    ORDER BY
        last_name;


    查询结果如下:

    2

    在这个例子中,使用了这个模式:

    'St%'


    LIKE 运算符匹配任何以“St”开头的字符串,后跟任意数量的字符,例如 Stokes,Stein 或 Steele 等。

    要查找姓氏以字符串“er”结尾的联系人的电话号码,请使用以下语句:

    SELECT
        first_name,
        last_name,
        phone
    FROM
        contacts
    WHERE
        last_name LIKE '%er'
    ORDER BY
        last_name;


    查询结果如下:

    3

    匹配的模式 

    %er


    匹配任何以“er”字符串结尾的字符串。

    要执行不区分大小写的匹配,可以使用 LOWER() 或 UPPER() 函数,如下所示:

    UPPER( last_name ) LIKE 'ST%'
    
    LOWER(last_name LIKE 'st%'


    例如,以下语句查找名字以 CH 开头的联系人的电子邮件:

    SELECT
        first_name,
        last_name,
        email
    FROM
        contacts
    WHERE
        UPPER( first_name ) LIKE 'CH%'
    ORDER BY
        first_name;


    执行上放代码,得到以下结果:

    4

    以下示例使用 NOT LIKE 运算符来查找电话号码不以“+1”开头的联系人:

    SELECT
      first_name, last_name, phone
    FROM
      contacts
    WHERE
      phone NOT LIKE '+1%'
    ORDER BY
      first_name;


    执行上面查询语句,得到以下结果:

    5

    2、_ 通配符的例子

    以下示例查找名字具有以下模式“Je_i”的联系人的电话号码和电子邮件:

    SELECT
        first_name,
        last_name,
        email,
        phone
    FROM
        contacts
    WHERE
        first_name LIKE 'Je_i'
    ORDER BY 
        first_name;


    查询结果如下:

    6

    模式 'Je_i' 匹配任何以'Je'开头的字符串,然后是一个字符,最后是 'i',例如 Jeri 或Jeni,但不是 Jenni。

    3. 混合通配符字符的例子

    可以在模式中混合通配符。例如,以下语句查找名字以 Je 开头,后跟一个字符,然后是任意数量字符的联系人。换句话说,它将匹配以 Je 开头并且至少有 3 个字符的任何姓氏(first_name):

    SELECT
        first_name,
        last_name,
        email,
        phone
    FROM
        contacts
    WHERE
        first_name LIKE 'Je_%';


    结果如下:

    7


    以上内容是否对您有帮助


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-h37o2r0u.html


    3)Oracle 事务

    Oracle 事务

    事务是什么        

    事务在数据库中是工作的逻辑单元,单个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制,可以确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不执行。

    事务特性

    SQL92标准对数据库事务的特点进行如下定义:

    原子性(Atomicity):一个事务里面所有包含的SQL语句都是一个整体,是不可分割的,要么不做,要么都做。
    一致性(Consistency):事务开始时,数据库中的数据是一致的,事务结束时,数据库的数据也应该是一致的。
    隔离性(Isolation):数据库允许多个并发事务同时对其中的数据进行读写和修改的能力,隔离性可以防止事务在并发执行时,由于他们的操作命令交叉执行而导致的数据不一致状态。
    持久性 (Durability) : 当事务结束后,它对数据库中的影响是永久的,即便系统遇到故障的情况下,数据也不会丢失。
    一组SQL语句操作要成为事务,数据库管理系统必须保证这组操作的原子性(Atomicity)、一致性(consistency)、隔离性(Isolation)和持久性(Durability),这就是ACID特性。

    以下是解释如何在Oracle 中使用事务的主题列表:


           

    以上内容是否对您有帮助    


       

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-ub942r0w.html    


       

    3.1) Oracle COMMIT语句    

       

    Oracle COMMIT语句(提交事务)

    在 Oracle 中,COMMIT 语句可以用来提交当前事务的所有更改。提交后,其他用户将能够看到您的更改。本文要为大家带来的就是 COMMIT 语句的用法。

    COMMIT语句语法:

    Oracle / PLSQL 中 COMMIT 语句的语法是:

    COMMIT [ WORK ] [ COMMENT clause ] [ WRITE clause ] [ FORCE clause ];
       

    参数

    • WORK:可选的。它被 Oracle 添加为符合 SQL 标准。使用或不使用 WORK 参数来执行 COMMIT 将产生相同的结果。

    • COMMENT clause:可选的。 它用于指定与当前事务关联的注释。 该注释最多可以包含在单引号中的 255 个字节的文本中。 如果出现问题,它将与事务ID一起存储在名为 DBA_2PC_PENDING 的系统视图中。

    • WRITE clause:可选的。 它用于指定将已提交事务的重做信息写入重做日志的优先级。 用这个子句,有两个参数可以指定:

      • WAIT 或 NOWAIT (如果省略,WAIT是默认值)

      • IMMEDIATE 或 BATCH(IMMEDIATE是省略时的默认值)

    • FORCE clause:可选的。 它用于强制提交可能已损坏或有疑问的事务。 有了这个子句,可以用3种方式指定FORCE:

      • FORCE'string',[integer]或FORCE CORRUPT_XID'string' 或 FORCE CORRUPT_XID_ALL

    注意

    • 必须拥有 DBA 权限才能访问系统视图 - DBA_2PC_PENDING和V$CORRUPT_XID_LIST。

    • 必须拥有 DBA 权限才能指定COMMIT语句的某些功能。

    COMMIT语句示例

    我们来看一个示例,演示如何使用 COMMIT 语句在 Oracle 中发出提交。

    COMMIT;
       

    此 COMMIT 示例将执行与以下相同的操作:

    COMMIT WORK WRITE WAIT IMMEDIATE;
       

    在此示例中,隐含了 WORK 关键字,并且省略 WRITE 子句将缺省为 WRITE WAIT IMMEDIATE,因此它与前面的 COMMIT 语句是等效的。

    添加备注

    我们来看一个显示如何使用 COMMENT 子句的 COMMIT 示例:

    例如,您可以通过两种方式使用注释编写 COMMIT:

    COMMIT COMMENT 'This is the comment for the transaction';
    SQL
       

    或者 -

    COMMIT WORK COMMENT 'This is the comment for the transaction';
       

    由于始终隐含 WORK 关键字,因此这两个 COMMIT 示例都是等效的。 如果事务出错或存在疑问,COMMIT 会将包含在引号中的注释与事务 ID 一起存储在 DBA_2PC_PENDING 系统视图中。


       

    强制

    最后,看一下显示如何使用 FORCE 子句的 COMMIT 示例。

    例如,可以通过两种方式编写可疑事务的 COMMIT:

    COMMIT FORCE '22.14.67';
    
       

    或者 -

    COMMIT WORK FORCE '22.14.67';
    
       

    由于始终隐含 WORK 关键字,因此这两个 COMMIT 示例都会强制执行由事务 ID “22.14.67”标识的已损坏或疑问事务。


       

    以上内容是否对您有帮助:    

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-grjn2r0x.html    


       


    3.2)Oracle ROLLBACK语句    


       

    Oracle ROLLBACK语句(回滚事务)

    2020-11-25 09:40 更新

    在 Oracle 中,ROLLBACK 语句可以用来撤销当前事务或有问题的事务。本教程就将教大家如何使用 ROLLBACK 语句。 

    ROLLBACK语法

    ROLLBACK [ WORK ] [ TO [SAVEPOINT] savepoint_name  | FORCE 'string' ];
       

    参数

    • WORK:可选的。 它被 Oracle 添加为符合 SQL 标准。 使用或不使用 WORK 参数来发出 ROLLBACK 会导致相同的结果。

    • TO SAVEPOINT savepoint_name:可选的。 ROLLBACK语句撤消当前会话的所有更改,直到由 savepoint_name 指定的保存点。 如果省略该子句,则所有更改都将被撤消。

    • FORCE ‘string’:可选的。它用于强制回滚可能已损坏或有问题的事务。 使用此子句,可以将单引号中的事务ID指定为字符串。 可以在系统视图中找到名为 DBA_2PC_PENDING 的事务标识。

    • 必须拥有 DBA 权限才能访问系统视图:DBA_2PC_PENDING 和 V$CORRUPT_XID_LIST。

    • 您无法将有问题的事务回滚到保存点。

    ROLLBACK语语法示例

    我们来看一个示例,演示如何使用 ROLLBACK 语句在 Oracle 中发出回滚。

    例如:

    ROLLBACK;
       

    此 ROLLBACK 示例执行与以下操作相同:

    ROLLBACK WORK;
       

    在这个例子中,隐含了 WORK 关键字,所以前面2个 ROLLBACK 语句是等价的。 这些示例将回滚当前事务。

    Savepoint    

    可以通过两种方式将 ROLLBACK 写入保存点:

    ROLLBACK TO SAVEPOINT savepoint1;
       

    或者

    ROLLBACK WORK TO SAVEPOINT savepoint1;
       

    由于始终隐含着 WORK 关键字,因此这两个 ROLLBACK 示例都会将当前事务回滚到名为 savepoint1 的保存点。

    Force    

    最后,看看 ROLLBACK 的一个例子,它显示了如何强制回滚一个有问题的事务。

    例如,您可以通过两种方式编写有问题事务的 ROLLBACK:

    ROLLBACK FORCE '22.14.67';
       

    或者

    ROLLBACK WORK FORCE '22.14.67';
       

    由于始终隐含着 WORK 关键字,因此这两个 ROLLBACK 示例都将强制回滚由事务 ID “22.14.67”标识的损坏或有问题的事务。


       

    以上内容是否对您有帮助    

    来自      

       

    来自  https://www.w3cschool.cn/oraclejc/oraclejc-3kmd2r13.html    


       

    3.2)Oracle ROLLBACK语句    


       

    Oracle ROLLBACK语句(回滚事务)

    2020-11-25 09:40 更新

    在 Oracle 中,ROLLBACK 语句可以用来撤销当前事务或有问题的事务。本教程就将教大家如何使用 ROLLBACK 语句。 

    ROLLBACK语法

    ROLLBACK [ WORK ] [ TO [SAVEPOINT] savepoint_name  | FORCE 'string' ];
       

    参数

    • WORK:可选的。 它被 Oracle 添加为符合 SQL 标准。 使用或不使用 WORK 参数来发出 ROLLBACK 会导致相同的结果。

    • TO SAVEPOINT savepoint_name:可选的。 ROLLBACK语句撤消当前会话的所有更改,直到由 savepoint_name 指定的保存点。 如果省略该子句,则所有更改都将被撤消。

    • FORCE ‘string’:可选的。它用于强制回滚可能已损坏或有问题的事务。 使用此子句,可以将单引号中的事务ID指定为字符串。 可以在系统视图中找到名为 DBA_2PC_PENDING 的事务标识。

    • 必须拥有 DBA 权限才能访问系统视图:DBA_2PC_PENDING 和 V$CORRUPT_XID_LIST。

    • 您无法将有问题的事务回滚到保存点。

    ROLLBACK语语法示例

    我们来看一个示例,演示如何使用 ROLLBACK 语句在 Oracle 中发出回滚。

    例如:

    ROLLBACK;
       

    此 ROLLBACK 示例执行与以下操作相同:

    ROLLBACK WORK;
       

    在这个例子中,隐含了 WORK 关键字,所以前面2个 ROLLBACK 语句是等价的。 这些示例将回滚当前事务。

    Savepoint    

    可以通过两种方式将 ROLLBACK 写入保存点:

    ROLLBACK TO SAVEPOINT savepoint1;
       

    或者

    ROLLBACK WORK TO SAVEPOINT savepoint1;
       

    由于始终隐含着 WORK 关键字,因此这两个 ROLLBACK 示例都会将当前事务回滚到名为 savepoint1 的保存点。

    Force    

    最后,看看 ROLLBACK 的一个例子,它显示了如何强制回滚一个有问题的事务。

    例如,您可以通过两种方式编写有问题事务的 ROLLBACK:

    ROLLBACK FORCE '22.14.67';
       

    或者

    ROLLBACK WORK FORCE '22.14.67';
       

    由于始终隐含着 WORK 关键字,因此这两个 ROLLBACK 示例都将强制回滚由事务 ID “22.14.67”标识的损坏或有问题的事务。


       

    以上内容是否对您有帮助:
       

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-3kmd2r13.html    


       

    3.3) SET TRANSACTION语句    

    Oracle SET TRANSACTION语句(设置事务)

    2020-09-29 16:02 更新

    在 Oracle 中,SET TRANSACTION 语句可以用来设置事务的各种状态,比如只读、读/写、隔离级别,为事务分配名称或将事务分配回滚段等等。本教程要为大家带来的就是 SET TRANSACTION 语句的语法以及示例,教大家如何正确使用该语句。

    SET TRANSACTION语法

    Oracle中SET TRANSACTION语句的语法是:

    SET TRANSACTION [ READ ONLY | READ WRITE ]
                    [ ISOLATION LEVEL [ SERIALIZE | READ COMMITED ]
                    [ USE ROLLBACK SEGMENT 'segment_name' ]
                    [ NAME 'transaction_name' ];
       

    参考    

       ● READ ONLY:可以将事务设置为只读事务。

       ● READ WRITE:可以将事务设置为读/写事务。

       ● ISOLATION LEVEL: 如果指定,它有两个选项:

            1.ISOLATION LEVEL SERIALIZE:如果事务尝试更新由另一个事务更新并未提交的资源,则事务将失败。

            2.ISOLATION LEVEL READ COMMITTED:如果事务需要另一个事务持有的行锁,则事务将等待,直到行锁被释放。

       ● USE ROLLBACK SEGMENT:可选的。 如果指定,它将事务分配给由 'segment_name' 标识的回退段,该段是用引号括起来的段名称。

       ● NAME:为 'transaction_name' 标识的事务分配一个名称,该事务用引号括起来。

    SET TRANSACTION 示例

    下面我们来看一个演示如何在 Oracle 中使用 SET TRANSACTION 语句的示例。

    只读

    首先,下面来看看看如何使用SET TRANSACTION语句将事务设置为只读。

    SET TRANSACTION READ ONLY NAME 'RO_example';
       

    此示例会将事务设置为只读,并为其分配“RO_example”的名称。

    读写

    下面是如何使用 SET TRANSACTION 语句将事务设置为读/写的示例:

    SET TRANSACTION READ WRITE NAME 'RW_example';
       

    use rollback segment 实例

    一般在做报表查询的时候,可以先设置该查询事务为一个只读事务,以避免出现写操作。

    DECLARE
      l_name VARCHAR2(100);
      l_age  NUMBER;
      l_sex  VARCHAR2(2);
    BEGIN
      -- 为保证set transaction是事务的第一条语句,先使用commit或rollback来结束掉前面可能存在的事务
      COMMIT;
      -- 使用name给事务命名
      SET TRANSACTION READ ONLY NAME '查询报表';
      SELECT NAME
        INTO l_name
        FROM student
       WHERE student_id = 1001;
      SELECT age
        INTO l_age
        FROM student
       WHERE student_id = 1001;
      SELECT sex
        INTO l_sex
        FROM student
       WHERE student_id = 1001;
      -- 终止只读事务
      COMMIT;
      dbms_output.put_line('输出:' || l_name || l_age || l_sex);
    END;
       

    以上就是 W3Cschool 为大家带来的 Oracle 中 SET TRANSACTION 语句的详细用法介绍,希望对各位学习 Oracle 的用户有所帮助。


       

    以上内容是否对您有帮助:    

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-1xpv2r2k.html    


       

    3.4)LOCK TABLE语句    

    Oracle LOCK TABLE语句(锁表)

    2020-08-14 16:43 更新

    在 Oracle 中,LOCK TABLE 语句可以用来锁定表、表分区或表子分区。本教程将和大家一起学习 LOCK TABLE 语句的详细用法。

    LOCK TABLE语法

    LOCK TABLE 语句的语法是:

    LOCK TABLE tables IN lock_mode MODE [ WAIT [, integer] | NOWAIT ];
       

    参数    

    • tables:用逗号分隔的表格列表。

    • lock_mode:它是以下值之一:

                                                   lock_mode                                                      描述
    ROW SHARE允许同时访问表,但阻止用户锁定整个表以进行独占访问。
    ROW EXCLUSIVE允许对表进行并发访问,但阻止用户以独占访问方式锁定整个表并以共享方式锁定表。
    SHARE UPDATE允许同时访问表,但阻止用户锁定整个表以进行独占访问。
    SHARE允许并发查询,但用户无法更新锁定的表。
    SHARE ROW EXCLUSIVE用户可以查看表中的记录,但是无法更新表或锁定SHARE表中的表。
    EXCLUSIVE允许查询锁定的表格,但不能进行其他活动。
    • WAIT:它指定数据库将等待(达到指定整数的特定秒数)以获取 DML 锁定。

    • NOWAIT:它指定数据库不应该等待释放锁。

    LOCK TABLE示例

    下面是一个如何在 Oracle 中使用 LOCK TABLE 语句的例子:

    LOCK TABLE suppliers IN SHARE MODE NOWAIT;
       

    这个例子会锁定 suppliers 表在共享模式,而不是等待锁定被释放。


       

    以上内容是否对您有帮助:    

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-vxaw2r2n.html    


       

    4) Oracle 外键        

    Oracle 外键

    2018-06-11 10:28 更新

    外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性,本节教程将为大家带来Oracle中如何使用外键的方法。 

    外键创建

    外键删除

    外键的禁用/启用

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-512y2r2p.html                


                   

    4.1)Oracle 外键创建                

    Oracle 外键创建

    在Oracle数据库中,外键是强制实施参照完整性的一种方式,使用外键就意味着一个表中的值在另一个表中也必须出现。

    被引用的表称为父表,而带有外键的表称为子表。子表中的外键通常会引用父表中的主键。

    外键的创建

    1、使用CREATE TABLE语句创建

    使用CREATE TABLE语句创建外键的语法是:

    CREATE TABLE table_name
    (
      column1 datatype null/not null,
      column2 datatype null/not null,
      ...
    
      CONSTRAINT fk_column
        FOREIGN KEY (column1, column2, ... column_n)
        REFERENCES parent_table (column1, column2, ... column_n)
    );
                   

    示例:                

    CREATE TABLE supplier
    ( supplier_id numeric(10) not null,
      supplier_name varchar2(50) not null,
      contact_name varchar2(50),
      CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
    );
    
    CREATE TABLE products
    ( product_id numeric(10) not null,
      supplier_id numeric(10) not null,
      CONSTRAINT fk_supplier
        FOREIGN KEY (supplier_id)
        REFERENCES supplier(supplier_id)
    );
                   

    在这个例子中,我们在supplier表上创建了一个名为supplier_pk的主键。 它只包含一个字段 - supplier_id字段。 然后,在products表上创建了一个名为fk_supplier的外键,该表根据supplier_id字段引用supplier表。

    也可以创建一个具有多个字段的外键,如下例所示:

    CREATE TABLE supplier
    ( supplier_id numeric(10) not null,
      supplier_name varchar2(50) not null,
      contact_name varchar2(50),
      CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)
    );
    
    CREATE TABLE products
    ( product_id numeric(10) not null,
      supplier_id numeric(10) not null,
      supplier_name varchar2(50) not null,
      CONSTRAINT fk_supplier_comp
        FOREIGN KEY (supplier_id, supplier_name)
        REFERENCES supplier(supplier_id, supplier_name)
    );
                   

    在这个例子中,外键称为fk_foreign_comp基于两个字段 - supplier_id和supplier_name字段引用供应商表。

    2、使用ALTER TABLE语句创建

    在ALTER TABLE语句中创建外键的语法是:

    ALTER TABLE table_name
    ADD CONSTRAINT constraint_name
       FOREIGN KEY (column1, column2, ... column_n)
       REFERENCES parent_table (column1, column2, ... column_n);
                   

    示例:

    ALTER TABLE products
    ADD CONSTRAINT fk_supplier
      FOREIGN KEY (supplier_id)
      REFERENCES supplier(supplier_id);
                   

    在这个例子中,我们创建了一个名为fk_supplier的外键,它根据supplier_id字段引用supplier表的supplier_id字段。

    我们也可以创建一个具有多个字段的外键,如下例所示:

    ALTER TABLE products
    ADD CONSTRAINT fk_supplier
      FOREIGN KEY (supplier_id, supplier_name)
      REFERENCES supplier(supplier_id, supplier_name);
                   

    以上内容是否对您有帮助:                

    来自 https://www.w3cschool.cn/oraclejc/oraclejc-ogcp2r2q.html  

    4.2)Oracle 级联删除外键        

           

    Oracle 级联删除外键

    所谓的级联删除是指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除。本教程将教大家如何在Oracle中使用级联删除外键。

    使用CREATE TABLE语句定义级联删除

    以下是使用CREATE TABLE语句定义级联删除的语法:

    CREATE TABLE table_name
    (
      column1 datatype null/not null,
      column2 datatype null/not null,
      ...
    
      CONSTRAINT fk_column
         FOREIGN KEY (column1, column2, ... column_n)
         REFERENCES parent_table (column1, column2, ... column_n)
         ON DELETE CASCADE
    );
           

    示例:        

    CREATE TABLE supplier
    ( supplier_id numeric(10) not null,
      supplier_name varchar2(50) not null,
      contact_name varchar2(50),
      CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
    );
    
    CREATE TABLE products
    ( product_id numeric(10) not null,
      supplier_id numeric(10) not null,
      CONSTRAINT fk_supplier
        FOREIGN KEY (supplier_id)
        REFERENCES supplier(supplier_id)
        ON DELETE CASCADE
    );
           

    以上示例中,我们在supplier表创建了一个名为supplier_pk的主键,这个主键只包含supplier_id字段。

    然后在products表上创建了一个名为fk_supplier的外键,该表根据supplier_id字段引用supplier表的supplier_pk字段。

    由于级联删除,当supplier表中的记录被删除时,products表中相应的所有记录也将被删除,因为这些记录具有相同的supplier_id值。

    此外,我们也可以创建一个具有多个字段的外键(带级联删除),如下例所示:

    CREATE TABLE supplier
    ( supplier_id numeric(10) not null,
      supplier_name varchar2(50) not null,
      contact_name varchar2(50),
      CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)
    );
    
    CREATE TABLE products
    ( product_id numeric(10) not null,
      supplier_id numeric(10) not null,
      supplier_name varchar2(50) not null,
      CONSTRAINT fk_supplier_comp
        FOREIGN KEY (supplier_id, supplier_name)
        REFERENCES supplier(supplier_id, supplier_name)
        ON DELETE CASCADE
    );
           

    在这个例子中,fk_foreign_comp外键基于两个字段:supplier_id和supplier_name字段引用supplier表。

    根据supplier_id和supplier_name删除supplier表中的记录时,外键fk_foreign_comp上的级联删除会导致products表中的所有对应记录也会被级联删除。

    使用ALTER TABLE语句定义级联删除
           

    除了CREATE TABLE语句外,我们还可以用ALTER TABLE语句定义级联删除,具体语法如下:

    ALTER TABLE table_name
    ADD CONSTRAINT constraint_name
       FOREIGN KEY (column1, column2, ... column_n)
       REFERENCES parent_table (column1, column2, ... column_n)
       ON DELETE CASCADE;
           

    示例:        

    ALTER TABLE products
    ADD CONSTRAINT fk_supplier
      FOREIGN KEY (supplier_id)
      REFERENCES supplier(supplier_id)
      ON DELETE CASCADE;
           

    在本例中,我们创建了一个名为fk_supplier的外键(带级联删除),该外键基于supplier_id字段引用supplier表。

    此外,我们也可以创建一个具有多个字段的外键(带级联删除),如下例所示:

    ALTER TABLE products
    ADD CONSTRAINT fk_supplier
      FOREIGN KEY (supplier_id, supplier_name)
      REFERENCES supplier(supplier_id, supplier_name)
      ON DELETE CASCADE;
           


           

    以上内容是否对您有帮助:        


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-23ea2r2v.html        


           

    4.3)Oracle 怎么删除外键        

           

    Oracle 怎么删除外键

    在Oracle中,如何去删除自己创建的外键呢?本教程就为大家介绍Oracle中删除外键的方法。

    在Oracle中,我们可以使用ALTER TABLE语句来对外键进行删除。

    语法

    alter table  "表名" drop constraint "主键名"        

    alter table  "表名" drop primary key        

           

    示例        

    我们先使用下方的代码创建一个外键:

    CREATE TABLE supplier
    (
        supplier_id numeric(10) not null,
        supplier_name varchar2(50) not null,
        contact_name varchar2(50),
        CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
    );
    
    CREATE TABLE products
    ( 
        product_id numeric(10) not null,
        supplier_id numeric(10) not null,
        CONSTRAINT fk_supplier
        FOREIGN KEY (supplier_id)
        REFERENCES supplier(supplier_id)
    );
           

    通过以上代码,我们在 supplier 表上创建了一个名为 supplier_pk 的主键。然后再在 products 表上创建了一个名为 fk_supplier 的外键。

    如果我们想要删除这个新创建的外键,我们可以执行以下的代码:

    ALTER TABLE products 
    DROP CONSTRAINT fk_supplier
           

    这样,我们就成功的删除了这个新建的fk_supplier外键。


           

    以上内容是否对您有帮助:        


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-imnk2r31.html        


           

    4.4)Oracle 禁用外键        

    Oracle 怎么禁用外键

    我们创建外键后,可能有时会遇到要禁用外键的情况,那么在Oracle中,我们如何对外键进行禁用呢?

    语法

    在Oracle中,我们要禁用外键可以使用以下语法:

    ALTER TABLE table_name
    DISABLE CONSTRAINT constraint_name;
           

    示例:        

    我们先通过以下代码创建一个名为fk_supplier的外键:

    CREATE TABLE supplier
    ( supplier_id numeric(10) not null,
      supplier_name varchar2(50) not null,
      contact_name varchar2(50),
      CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
    );
    
    CREATE TABLE products
    ( product_id numeric(10) not null,
      supplier_id numeric(10) not null,
      CONSTRAINT fk_supplier
        FOREIGN KEY (supplier_id)
        REFERENCES supplier(supplier_id)
           

    在这个例子中,在supplier表上创建了一个名为supplier_pk的主键。 它只包含一个字段 - supplier_id字段。 然后,我们在products表上创建了一个名为fk_supplier的外键,products表的supplier_id字段引用supplier表的supplier_id字段。

    如果想禁用这个外键,可以执行以下命令:

    ALTER TABLE products
    DISABLE CONSTRAINT fk_supplier;
           


           

    以上内容是否对您有帮助:        

       来自  https://www.w3cschool.cn/oraclejc/oraclejc-qzuw2r6d.html

     

    4.5)Oracle 启用外键

    Oracle 启用外键

    在Oracle中,面对已经被禁用的外键,我们该如何将它重新启用呢?本教程就为大家带来Oracle外键启用方法。

    外键启用语法

    ALTER TABLE table_name
    ENABLE CONSTRAINT constraint_name;

    示例:

    我们可以先创建一个名为fk_supplier的外键,如何创建外键,可参考《Oracle 外键创建

    然后对这个外键进行禁用,禁用方法可参考:《Oracle 禁用外键

    现在,我们将重新启用这个被禁用的fk_supplier外键,可以执行以下命令:

    ALTER TABLE products
    ENABLE CONSTRAINT fk_supplier;

    这样,原先被禁用的外链就被重新启用了,非常简单。

    以上内容是否对您有帮助:


    来自 https://www.w3cschool.cn/oraclejc/oraclejc-abmq2r6e.html


    5)Oracle 字符串函数

    Oracle 字符串函数


                      来自  https://www.w3cschool.cn/oraclejc/oraclejc-f8h32r6k.html


                      5.1)Oracle Ascii()函数

                      Oracle Ascii()函数

                      在Oracle中,Ascii()函数可以返回代表指定字符的数字值代码,那么Ascii()函数具体该如何实用呢?

                      Ascii()函数语法

                      ASCII( single_character )

                      参数

                      single_character:指定的字符来检索NUMBER代码。 如果输入多个字符,则ASCII函数将返回第一个字符的值,并忽略第一个字符后的所有字符。

                      返回值

                      ASCII函数返回一个数值。

                      适用于

                      ASCII函数可用于以下版本的Oracle:

                      Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i、Oracle 8i

                      Ascii()函数示例

                      下面是一些Oracle ASCII函数的使用示例:

                      ASCII('t')
                      Result: 116
                      
                      ASCII('T')
                      Result: 84
                      
                      ASCII('T2')
                      Result: 84


                      以上内容是否对您有帮助:

                      来自 https://www.w3cschool.cn/oraclejc/oraclejc-16hq2r6l.html


                      5.2)Oracle Asciistr()函数

                      Oracle Asciistr()函数

                      在Oracle中,Asciistr()函数可以使用数据库字符集将任何字符集中的字符串转换为ASCII字符串。下面,就为大家介绍Asciistr()函数的语法及使用方法。

                      Asciistr()函数语法

                      ASCIISTR( string )

                      参数

                      string:任何字符集中的字符串,希望将其转换为数据库字符集中的ASCII字符串。

                      返回值

                      返回一个字符串值。

                      适用于

                      ASCIISTR()函数可用于以下版本的Oracle :

                      Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i

                      示例

                      下面是一些Oracle ASCIISTR()函数的使用示例:

                      ASCIISTR('A B C Ä Ê')
                      Result: 'A B C 0C4 0CA'
                      
                      ASCIISTR('A B C Õ Ø')
                      Result: 'A B C 0D5 0D8'
                      
                      ASCIISTR('A B C Ä Ê Í Õ Ø')
                      Result: 'A B C 0C4 0CA 0CD 0D5 0D8'


                      以上内容是否对您有帮助:

                      来自  https://www.w3cschool.cn/oraclejc/oraclejc-ngpq2r6n.html


                      5.3)Oracle Chr()函数

                      Oracle Chr()函数

                      Oracle Chr()函数可以根据数字代码返回字符,其功能和ASCII函数相反。本教程将为大家带来Chr()函数的语法和示例。

                      Chr()函数语法

                      CHR( number_code )

                      参数

                      number_code:用于检索对应字符的NUMBER代码。

                      返回值

                      返回一个字符串值。

                      适用于

                      CHR()函数可用于以下版本的Oracle:

                      Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i

                      示例

                      下面是Oracle CHR()函数的使用示例:

                      CHR(116)
                      Result: 't'
                      
                      CHR(84)
                      Result: 'T'


                      以上内容是否对您有帮助:

                      来自 https://www.w3cschool.cn/oraclejc/oraclejc-ruyk2r6p.html


                      5.4)  Oracle Compose()函数

                      Oracle Compose()函数

                      在Oracle中,使用Compose()函数可以返回一个Unicode字符串。本教程,将为大家带来Compose()函数的语法及使用示例。

                      Compose()函数语法

                      COMPOSE( string )

                      string:用于创建Unicode字符串的输入值。 它可以是char,varchar2,nchar,nvarchar2,clob或nclob。

                      返回值

                      返回一个字符串值。

                      以下是可以在Compose()函数中的其他字符组合使用的unistring值的列表:

                      Unistring值结果字符
                      unistr('\0300')重音符(`)
                      unistr('\0301')锐音符(‘)
                      unistr('\0302')(^)
                      unistr('\0303')~
                      unistr('\0308')变音符(¨)

                      适用版本

                      Compose()函数可用于以下版本的Oracle :

                      Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

                      示例

                      下面是Oracle Compose()函数的使用示例:

                      COMPOSE('o' || unistr('\0308') )
                      Result: ö
                      
                      COMPOSE('a' || unistr('\0302') )
                      Result: â
                      
                      COMPOSE('e' || unistr('\0301') )
                      Result: é


                      以上内容是否对您有帮助:

                      来自  https://www.w3cschool.cn/oraclejc/oraclejc-us492r6s.html


                      5.5)Oracle Concat()函数

                      Oracle Concat()函数

                      CONCAT()函数在Oracle中可以用于将两个字符串连接在一起,那么CONCAT()函数的语法及使用方法是什么呢?下面一起来看看。

                      CONCAT()函数语法

                      CONCAT( string1, string2 )

                      string1:第一个要连接的字符串。

                      string2:第二个要连接的字符串。

                      返回值

                      CONCAT函数返回string1连接string2后的一个字符串值。

                      适用版本

                      CONCAT()函数可用于以下版本的Oracle:

                      Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

                      示例

                      下面是Oracle CONCAT()函数的使用示例:

                      CONCAT('Oraok', '.com')
                      -- Result: 'Oraok.com'
                      
                      CONCAT('a', 'b')
                      -- Result: 'ab'

                      需要注意:

                      在Oracle中,CONCAT函数将只允许您将两个值连接在一起。如果需要连接多个值,那么我们可以嵌套多个CONCAT函数调用

                      示例:

                      SELECT CONCAT(CONCAT('A', 'B'),'C')
                      FROM dual;
                      -- Result: 'ABC'

                      以上这个例子将3个值连接在一起并返回'ABC'字符串值。

                      SELECT CONCAT(CONCAT(CONCAT('A', 'B'),'C'),'D')
                      FROM dual;
                      - Result: 'ABCD'

                      这个例子将连接4个值并返回'ABCD'。

                      连接单引号

                      由于CONCAT函数中的参数由单引号分隔,因此如何在CONCAT函数的结果中添加单引号字符并不简单。

                      我们来看一个相当简单的例子,它展示了如何使用CONCAT函数向结果字符串添加单引号。

                      SELECT CONCAT('Let''s', ' learn Oracle')
                      FROM dual;
                      -- Result: Let's learn Oracle

                      由于参数包含在单引号中,因此在引号内使用2个额外的单引号来表示生成的连接字符串中的单引号。


                      以上内容是否对您有帮助:

                      来自 https://www.w3cschool.cn/oraclejc/oraclejc-p4oz2r6u.html


                      5.6)Oracle || 连接运算符

                      Oracle || 连接运算符

                      在 Oracle中,|| 运算符可以将两个或两个以上的字符串连接在一起。本章节要为大家带来的就是 || 运算符的语法及使用示例。

                      || 运算符语法

                      string1 || string2 [ || string_n ]


                      • string1: 第一个要连接的字符串。

                      • string2:第二个要连接的字符串。

                      • string_n:可选项,第 n 个要连接的字符串。


                      返回值

                      返回连接后的一个字符串值。

                      适用版本

                      ||  运算符可用于以下版本的 Oracle:

                      Oracle 12c、 Oracle 11g、 Oracle 10g、Oracle 9i

                      示例

                      下面是 Oracle ||  运算符的使用示例:

                      'oraok' || '.com'
                      
                      'a' || 'b' || 'c' || 'd'

                      结果为:


                      'oraok.com'
                      
                      'abcd'

                      案例:

                      select '姓名:' || c.stuname || ', 课程:' || b.coursename || ', 成绩:' || a.score || '分数' as sxcj
                        from score a, course b, stuinfo c
                       where a.courseid = b.courseid
                         and a.stuid = c.stuid

                      连接空格字符

                      将值连接在一起时,可能需要添加空格字符来分隔连接的值。 否则,可能会得到一个串联值一起运行的长字符串。 这使得阅读结果非常困难。

                      下面来看一个简单的例子。可以使用||运算符连接空格字符。

                      SELECT 'Dave' || ' ' || 'Anderson'
                      FROM dual;
                      -- Result: 'Dave Anderson'

                      这里,我们使用了 || 运算符在 Dave 和 Anderson 字符串值之间添加空格字符,最后可以得到以下结果:

                      'Dave Anderson'

                      || 运算符将多个字段连接在一起时,连接空格字符。

                      例如:

                      SELECT first_name || ' ' || last_name AS customer_name
                      FROM customers;

                      此示例查询将返回结果集,其中一列由 customers 表中的 first_name 和 last_name 字段(用空格分隔)组成。 结果集中的列将被别名为 customer_name

                      连接单引号

                      || 运算符将连接包含在单引号中的字符串值,但并不直接说明如何在连接字符串的结果中添加单引号字符。

                      我们来看一个相当简单的例子,它显示了如何使用||运算符向结果字符串添加单引号。

                      例如:

                      SELECT 'Let''s' || ' learn Oracle'
                      FROM dual;

                      结果为

                      'Let's learn Oracle'

                      由于字符串值用单引号引起来,因此引号内使用2个额外的单引号来表示生成的连接字符串中的单引号。

                      如果想从其他字符串值中分出单引号,则还可以按如下方式重写此查询:

                      SELECT 'Let' || '''' || 's' || ' learn Oracle'
                      FROM dual;

                      结果为

                       'Let's learn Oracle'


                      以上内容是否对您有帮助:

                      来自 https://www.w3cschool.cn/oraclejc/oraclejc-18ly2r6x.html


                      5.7)Oracle Convert()函数

                      Oracle Convert()函数

                      在 Oracle 中,Convert() 函数可以将字符串从一个字符集转换为另一个字符集。本文要为大家带来的就是 Convert() 函数的使用方法。


                      句法

                      Description of convert.gif follows


                      Convert() 函数语法

                      CONVERT( string1, char_set_to [, char_set_from] )

                      string1:要转换的字符串。

                      char_set_to:要转换为的字符集。

                      char_set_from:可选的,要从中转换的字符集。

                      返回值

                      CONVERT 函数返回特定字符集中的字符串值。 可用的字符集是:

                      字符集描述
                      US7ASCII美国 7 位 ASCII 字符集
                      WE8DEC西欧 8 位字符集
                      WE8HP惠普西欧 Laserjet 8 位字符集
                      F7DECDEC 法语 7 位字符集
                      WE8EBCDIC500IBM 西欧 EBCDIC 代码第 500 页
                      WE8PC850IBM PC 代码第 850 页
                      WE8ISO8859P1ISO 8859-1 西欧 8 位字符集

                      适用版本

                      Convert() 函数可用于以下版本的 Oracle:

                      Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

                      示例

                      下面是 Oracle CONVERT() 函数的使用示例:

                      SELECT CONVERT('Ä Ê Í Õ Ø A B C D E ', 'US7ASCII', 'WE8ISO8859P1') 
                         FROM DUAL; 
                      
                      CONVERT('ÄÊÍÕØABCDE' 
                      --------------------- 
                      A E I ? ? A B C D E ? 

                      您可以查询v $ NLS _有效值视图获取有效字符集的列表,如下所示:

                      SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET'
                      


                      以上内容是否对您有帮助:

                      来自  https://www.w3cschool.cn/oraclejc/oraclejc-9x7b2r70.html


                      5.8)Oracle Dump()函数

                      Oracle Dump()函数

                      在Oracle中,使用Dump()函数可以返回一个varchar2值,这个值包含了数据类型代码、字节长度和表达式的内部表示形式。本文就为大家带来Dump()函数的具有使用方法。

                      Dump()函数语法

                      DUMP( expression [, return_format] [, start_position] [, length] )

                      expression:要分析的表达式。

                      return_format:决定了返回值的格式,该参数可以是以下任何值:

                           ● 8 :八进制符号

                           ● 10 :十进制符号

                           ● 16 :十六进制符号

                           ● 17 :单个字符

                           ● 1008 :带字符集名称的八进制符号

                           ● 1010 :带字符集名称的十进制符号

                           ● 1016 :带字符集名称的十六进制符号

                           ● 1017 :带字符集名称的单个字符

                      start_position :可选的,要返回的内部表示的起始位置。

                      length :可选的,要返回的内部表示的长度。

                      返回值

                      返回一个VARCHAR2值。如果省略了return_format,start_position和length参数,则DUMP函数将以十进制表示形式返回整个内部表示形式。

                      适用版本

                      Convert()函数可用于以下版本的Oracle :

                      Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

                      示例

                      下面是一些Oracle Dump()函数的使用示例:

                      DUMP('Tech')
                      -- Result: 'Typ=96 Len=4: 84,101,99,104'
                      
                      DUMP('Tech', 10)
                      -- Result: 'Typ=96 Len=4: 84,101,99,104'
                      
                      DUMP('Tech', 16)
                      -- Result: 'Typ=96 Len=4: 54,65,63,68'
                      
                      DUMP('Tech', 1016)
                      -- Result: 'Typ=96 Len=4 CharacterSet=US7ASCII: 54,65,63,68'
                      
                      DUMP('Tech', 1017)
                      -- Result: 'Typ=96 Len=4 CharacterSet=US7ASCII: T,e,c,h'


                      以上内容是否对您有帮助:

                      来自  https://www.w3cschool.cn/oraclejc/oraclejc-7pw82r71.html


                      5.9)Oracle Initcap()函数


                      Oracle Initcap()函数

                      在Oracle中,Initcap()函数可以将每个单词中的第一个字符设置为大写,其余的设置为小写。下面就是Initcap()函数的语法及具体用法介绍。

                      Initcap()函数语法

                      INITCAP( string1 )

                      string1 :字符串参数,其中每个单词中的第一个字符将转换为大写字母,其余所有字符转换为小写字母。

                      返回值

                      返回一个字符串值。

                      适用版本

                      Initcap()函数可用于以下版本的Oracle :

                      Oracle 12c、 Oracle 11g、 Oracle 10g、 Oracle 9i

                      示例

                      下面是一些Oracle Initcap()函数使用示例:

                      INITCAP('tech on the oraok');
                      -- Result: 'Tech On The Oraok'
                      
                      INITCAP('GEORGE BURNS');
                      -- Result: 'George Burns'

                      以上内容是否对您有帮助:


                      来自 https://www.w3cschool.cn/oraclejc/oraclejc-oxt92r72.html


                      5.10)Oracle 运算符

                      Oracle 运算符


                      Oracle 算术运算符包括+-*/四个,其中/获得的结果是浮点数。

                      案例1、求2018年上学期数学的平均成绩。

                      select a.*, b.coursename, c.stuname
                       from score a, course b, stuinfo c
                      where a.courseid = b.courseid
                        and a.stuid = c.stuid;

                      select b.coursename, sum(a.score) / count(1)
                       from score a, course b
                      where a.courseid = b.courseid
                        and a.courseid = 'R20180101'
                      group by b.coursename;

                      Oracle关系运算符

                      Oracle 关系运算符在 where 条件语句当中经常使用到,常用的关系如下:

                      符号解释符号解释
                      =等于<>或者!=不等于
                      >大于>=大于或者等于
                      <小于<=小于或者等于

                      Oracle逻辑运算符

                      Oracle 的逻辑运算符有三个:ANDORNOT

                      案例2、查看2018年上学期数学成绩在85-95分之间的同学:

                      select a.*,b.coursename,c.stuname
                          from score a,course b,stuinfo c
                      where a.courseid=b.courseid
                          and a.stuid=c.stuid and a.score>='85'and a.score<='95'
                      


                      以上内容是否对您有帮助:

                      来自  https://www.w3cschool.cn/oraclejc/oraclejc-xz7q3d1w.html


                      普通分类: