欢迎各位兄弟 发布技术文章
这里的技术是共享的
1) 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 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 数据库的优势所在:
完整的数据管理功能:
数据的大量性
数据的保存的持久性
数据的共享性
数据的可靠性
完备关系的产品:
信息准则---关系型 DBMS 的所有信息都应在逻辑上用一种方法,即表中的值显式地表示
保证访问的准则
视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
数据物理性和逻辑性独立准则
分布式处理功能:
ORACLE 数据库自第5版起提供了分布式处理能力,到第7版有比较完善的分布式数据库功能了,一个ORACLE 分布式数据库由 oraclerdbms、sql*Net、SQL*CONNECT 和其他非 ORACLE 的关系型产品构成。
用 ORACLE 能轻松的实现数据仓库的操作
以上是 Oracle 数据库的优势,从这些优势中不难看出这是一款功能强大的数据库系统。
Oracle 数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例则是管理数据库文件的内存结构。此外,数据库是由后台进程组成。
数据库和实例是紧密相连的,所以我们一般说的 Oracle 数据库,通常指的就是实例和数据库。
下图说明了 Oracle 数据库服务器体系结构:
在这种体系结构中,Oracle 数据库服务器包括两个主要部分:文件(Oracle 数据库)和内存(Oracle 实例)。
Oracle 数据库的一个基本任务是存储数据,以下部分简要地介绍 Oracle 数据库的物理和逻辑存储结构。
物理存储结构是存储数据的纯文件。当执行一个 CREATE DATABASE 语句来创建一个新的数据库时,将创建下列文件:
● 数据文件:数据文件包含真实数据,例如销售订单和客户等。逻辑数据库结构(如表和索引)的数据被物理存储在数据文件中。
● 控制文件:每个 Oracle 数据库都有一个包含元数据的控制文件。元数据用来描述包括数据库名称和数据文件位置的数据库物理结构。
● 联机重做日志文件:每个 Oracle 数据库都有一个联机重做日志,里面包含两个或多个联机重做日志文件。联机重做日志由重做条目组成,能够记录下所有对数据所做的更改。
除这些文件外,Oracle 数据库还包括如参数文件、网络文件、备份文件以及用于备份和恢复的归档重做日志文件等重要文件。
Oracle 数据库使用逻辑存储结构对磁盘空间使用情况进行精细控制。以下是 Oracle 数据库中的逻辑存储结构:
● 数据块(Data blocks):Oracle 将数据存储在数据块中。数据块也被称为逻辑块,Oracle 块或页,对应于磁盘上的字节数。
● 范围(Extents):范围是用于存储特定类型信息的逻辑连续数据块的具体数量。
● 段(Segments):段是分配用于存储用户对象(例如表或索引)的一组范围。
● 表空间(Tablespaces):数据库被分成称为表空间的逻辑存储单元。 表空间是段的逻辑容器。 每个表空间至少包含一个数据文件。
下图说明了表空间中的段,范围和数据块:
下图显示了逻辑和物理存储结构之间的关系:
Oracle 实例是客户端应用程序(用户)和数据库之间的接口。Oracle 实例由三个主要部分组成:系统全局区 (SGA),程序全局区 (PGA) 和后台进程。如下图所示 :
SGA 是实例启动时分配的共享内存结构,关闭时释放。 SGA 是一组包含一个数据库实例的数据和控制信息的共享内存结构。
不同于所有进程都可用的 SGA,PGA 是会话开始时为每个会话分配的私有内存区,当会话结束时释放。
以下是 Oracle 实例的主要后台进程:
● PMON 是 Oracle 数据库中最活跃的一个进程,是调节所有其他进程的进程监视器。PMON 能够清理异常连接的数据库连接,并自动向侦听器进程注册数据库实例。
● SMON 是执行系统级清理操作的系统监视进程。它有两个主要职责,包括在发生故障的情况下自动恢复实例,例如断电和清理临时文件。
● DBWn 是数据库编写器。Oracle 在内存中执行每个操作而不是磁盘。因为在内存中的处理速度比在磁盘上快。DBWn 进程从磁盘读取数据并将其写回到磁盘。 一个 Oracle 实例有许多数据库编写器,如:DBW0,DBW1,DBW2等等。
● CKPT 是检查点进程。 在 Oracle 中,磁盘上的数据称为块,内存中的数据称为缓冲区。 当该块写入缓冲区并更改时,缓冲区变脏,需要将其写入磁盘。CKPT 进程使用检查点信息更新控制和数据文件头,并向脏盘写入脏缓冲区的信号。 请注意,Oracle 12c 允许全面和增量检查点。
● LGWR 是日志写入过程,是可恢复架构的关键。 在数据库中发生的每一个变化都被写出到一个名为 redo 日志文件中用于恢复目的。 而这些变化是由 LGWR 进程编写和记录的。 LGWR 进程首先将更改写入内存,然后将磁盘写入重做日志,然后将其用于恢复。
● ARCn 是归档进程,它将重做日志的内容复制到归档重做日志文件。存档程序进程可以有多个进程,如:ARC0,ARC1 和 ARC3,允许存档程序写入多个目标,如 D:驱动器,E:驱动器或其他存储。
● MMON 是收集性能指标的可管理性监控流程。
● MMAN 是自动管理 Oracle 数据库内存的内存管理器。
● LREG 是监听器注册过程,它使用 Oracle Net Listener 在数据库实例和调度程序进程上注册信息。
来自 https://www.w3cschool.cn/oraclejc/oraclejc-dxgu2qqt.html
1.2)Oracle 11g安装
在本章节中,我们将为大家介绍如何下载 Oracle 11g 数据库,并且在 Windows 10 64 位电脑上进行安装演示。
首先,需要到 Oracle 官方网站下载Oracle数据库。
Oracle 11g 官网下载地址:点击下载
下载的时候注意选对版本,因为我们是要在 Windows 10 64 位电脑上进行安装,所以选择 Windows X64 的版本,如下图:
Oracle 11g下载完成后,解压到一个空的文件夹,然后双击setup.exe文件,就可以开始安装Oracle数据库了。
执行安装程序后会出现如下的命令提示行。
等待片刻之后就会出现启动画。
在此步骤中,可以提供您的电子邮件,以获取有关 Oracle 安全问题的更新信息。但为了方便,这里我们不提供电子邮件。
确认不提供电子邮件,点击 【是(Y)】继续。
此步骤中有三个选项,如下图所示。选择第一个【创建和配置数据库】,然后单击【下一步】按钮。
如果要在笔记本电脑或桌面上安装 Oracle 数据库,请选择第一个选项【桌面类】,否则选择第二个选项,然后单击【下一步】按钮。
此步骤允许要求输入完整的数据库安装文件夹。可以更改 Oracle 基本文件夹,其他文件夹将相应更改。填写上管理员密码,之后单击【下一步】按钮进入下一步。
在此步骤中,Oracle 将在安装 Oracle 数据库组件之前执行先决条件检查。
此步骤将显示上一步骤检查的摘要信息,单击【完成】按钮开始安装 Oracle 数据库。
此步骤将文件复制到相应的文件夹并安装 Oracle 组件和服务。完成所需的时间需要几分钟,请耐心等待
完成后,安装程序将显示“数据库配置助理”对话框
单击【口令管理】按钮设置不同用户的密码,这里我们将 SYS,SYSTEM 和 HR 用户解锁并设置相应的密码 ,完成后,点击【确定】。
安装过程完成后,单击【关闭】按钮来关闭安装程序。到此,Oracle 11g 已经成功安装好了。
如果上面安装步骤正常通过,在【开始】->【所有应用】将看到 Oracle 文件夹如下:
首先,启动 SQL Plus,它是一个可用于与 Oracle 数据库交互的命令行界面工具。
然后,在命令提示符中输入用户和登录密码,如提示连接成功,证明我们的Oracle11g安装完
安装时遇到oracle安装最后一步出错Ora
至此,Oracle 数据库就正式安装完毕了。在安装过程中,如果没有完全成功,请仔细查看每个步骤,并在必要时进行适当的更正。
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 Database 12c,是Oracle 11g的升级版,新增了很多新的特性。本章节就为大家介绍Oracle 12c的下载和安装步骤。
打开Oracle的官方中文网站,选择相应的版本即可。
下载地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html
注意:下载时,根据电脑系统选择相应的版本,如下图,因为我用的是WIN 10 64位系统,因此选择第一个下载。
将下载下来的压缩包解压,得到以下文件:
双击 setup.exe 文件,就可以进行安装了。
安装程序要求提供您的电子邮件地址以获取最新的安全问题和更新。您可以单击下一步按钮跳过。
在这一步中,Oracle 安装程序会询问您是要创建和配置数据库,仅安装数据库软件还是仅升级现有数据库。因为首次安装 Oracle 数据库,请选择第一个选项 ( Create and configure a database ),然后单击下一步按钮。
安装程序允许您选择系统类型。因为我们是在桌面计算机上安装Oracle,而不是服务器,因此,这里选择第一个选项:桌面类 ( Desktop class ),然后单击下一步按钮。
在这一步骤中,允许指定要安装和配置 Oracle Home 以增强安全性的 Windows 用户帐户。选择第三个选项:“使用 Windows 内置帐户( Use Windows Built-in Account )”。
在此步骤中,选择要安装 Oracle 数据库的文件夹,全局数据库名称和密码,可插拔数据库名称。
安装程序执行前提条件检查。
安装程序会显示信息的摘要,例如全局设置,数据库信息等。如果一切正常,可查看信息并单击安装按钮。
确认安装?
即将要安装的信息概述 :
安装程序开始安装 Oracle 数据库。安装速度取决于您的计算机性能,需要几分钟的时间才能完成。
安装成功完成后,安装程序会通知提示安装完成,如下面截图所示。单击关闭按钮关闭窗口。
第一步,启动由 Oracle 数据库提供的 SQL developer 应用程序。
第二步,右键单击连接节点,然后选择“新建连接…(New Connection …)”菜单项以创建 新连接。
第三步,输入您在安装过程中提供的信息,如以下屏幕截图所示。单击连接按钮连接到 Oracle 数据库。
SQL developer 将显示所有对象,如下所示:
至此,恭喜,您已成功安装 Oracle 数据库 12c 了。
来自 https://www.w3cschool.cn/oraclejc/oraclejc-vuqx2qqu.html
1.4) Oracle 数据库创建导入
2020-10-29 14:16 更新
在本章教程中,将教大家如何在 Oracle 中创建导入数据库。
注意:本教程中的有些命令您可能并不熟悉,但没关系,只需按照说明一步一步创建示例数据库即可。在之后的教程中,会详细介绍每个命令。
1.1.打开
首先,启动 SQL plus 程序的命令行:
sqlplus
如下所示:
或者从开始菜单的安装目录打开 SQL Plus:
1.2.登录
当 SQL Plus 启动后,它会提示您输入用户名和密码。继续使用在安装 Oracle 数据库服务器期间输入的密码以 sys 用户身份登录:
C:\Users\Administrator>sqlplus
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 10 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.
使用OT用户帐户连接到数据库(ORCL)。 当 SQL Plus 提示输入用户名和密码时,输入:OT 和 Orcl1234。
对于 Oracle 11g/12c,使用如下命令:
SQL> CONNECT ot@orcl
输入口令:
已连接。
注意,OT 用户仅存在于 ORCL 数据库中,因此,必须在 CONNECT 命令中明确指定用户名为 ot@orcl。
要为示例数据库创建表,需要从 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个表名按预期方式返回。
接下来,我们可以将数据加载/导入到这些表中。
要将数据加载到表中,请按如下所示执行 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数据库以及其安装方法,那么本章节,将和大家说说如何使用SQL * plus和SQL Developer 工具连接到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 程序,如下所示:
启动 SQLPlus 图标时,会提示输入用户名和密码。输入在安装Oracle数据库服务器期间设置的用户名和密码。如果不知道要使用哪个帐户,请询问安装数据库的管理员。
假设要使用 sys 帐户连接到本地 Oracle 数据库服务器,请输入以下信息:
按下 Enter 后,您应该看到一条消息,后面跟着SQL>
命令行,如下所示:
如上图所示,您已成功连接到 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 的免费 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”则表明数据库连接正确。
接着为 ORCL 这个数据库创建新用户,如下图所示
填写用户名和密码,以及为用户指定表空间。如下图所示:
为用户分配权限
查看创建用户和分配权限所对应的 sql 代码,如下图所示。
使用新账户创建数据库连接的方法和第一步类似,这里不再赘述。
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
本节教程涵盖了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数据类型的概述。
● 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语句的作用是在表单中查询数据,本文将为大家带来Select语句的详细用法介绍。
在Oracle中,表是由列和行组成。 例如,示例数据库中的customers表具有以下列:customer_id,name,address,website和credit_limit。customers表中这些列中也有对应的数据。
要从表的一个或多个列(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语句,下面为大家带来一些示例代码。
要从客户(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行。
要从多个列查询数据,请指定一个以逗号分隔的列名称列表。
以下示例显示如何从客户(customers)表的customer_id,name和credit_limit列中查询数据。
SELECT
customer_id,
name,
credit_limit
FROM
customers;
执行上面示例代码,得到以结果:
以下示例将检索customers表的所有列中的数据,列出所有列的名称,如下所示:
SELECT
customer_id,
name,
address,
website,
credit_limit
FROM
customers;
执行上面示例代码,得到以下结果:
为了方便起见,查看所有列可以使用简写星号(*)来指示Oracle从表中返回所有列的数据,如下所示:
SELECT
*
FROM
customers;
执行上面示例代码,得到以下结果:
请注意,应尽量避免使用星号(*)进行测试。 在实践中,即使想要从表的所有列中检索数据,也应该明确指定要从中查询数据的列。
这是因为业务变化,表格未来可能会有更多或更少的列。 如果在应用程序代码中使用星号(*),并假定该表有一组固定的列,但应用程序可能不处理其他不相关的列或访问已删除的列。
以上就是Oracle Select语句用法的详细介绍了,下一章我们将为大家带来Oracle Order By子句的使用教程,不要错过哦。
来自 https://www.w3cschool.cn/oraclejc/oraclejc-e2ua2qu5.html
2.2) Oracle Order By子句
在Oracle中,ORDER BY子句可以用来对一列或多列的结果集按升序或降序进行排序。本文,将为大家带来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语句中的最后一个子句。
下面将使用示例数据库中的customers表进行演示。
以下语句从客户(customers)表中检索客户的:name, address 和 credit limit :
SELECT name, address, credit_limit FROM customers;
执行上面查询语句,得到以下结果:
要按照字母顺序按升序排列客户名称,请使用以下语句:
SELECT name,address,credit_limit
FROM customers
ORDER BY name ASC;
执行上面示例代码,得到以下结果:
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;
执行上面查询语句,得到以下结果:
要对多列进行排序,可以用逗号分隔ORDER BY子句中的每列。
请参阅示例数据库中的以下联系人(contacts)表。
例如,要按first_name进行按升序排序,并按降序对last_name列进行排序,请使用以下语句:
SELECT first_name, last_name
FROM contacts
ORDER BY first_name, last_name DESC;
执行上面示例代码,可以看到如下结果:
从上面截图中可以看到,contact_id为91和311这两条记录的first_name的值相同,last_name的值是以降序来排列的。
在这个例子中,Oracle首先按first_name升序对行进行排序,以创建初始结果集。 然后Oracle按降序对last_name排序初始结果集。
看到类似下面的结果如下:
在上面的这个结果中:
首先,按first_name升序排序。
其次,如果两个名字相同,按last_name降序排列,如Daniel Glass和Daniel Costner,Dianne Sen和Dianne Derek,Doretha Tyler和Dorotha Wong。
不需要指定用于排序数据的列名称。如果您愿意,可以使用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对行进行排序。
请参阅示例数据库中的以下地区(locations)表:
以下语句按城市(city)和州(state)检索位置并对其进行排序:
SELECT country_id, city, state
FROM locations
ORDER BY state DESC;
SQL
执行上面查询语句,得到以下结果:
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
执行上面示例查询语句,得到以下结果:
ORDER BY子句可在一列上应用一个函数,例如字符串函数,数学函数等,并按函数的结果对数据进行排序。
例如,以下语句使用ORDER BY子句中的UPPER()函数来区分客户名称的大小写:
SELECT customer_id, name
FROM customers
ORDER BY UPPER( name );
SQL
执行上面查询语句,得到以下结果:
以上内容是否对您有帮助
来自 https://www.w3cschool.cn/oraclejc/oraclejc-xzfk2qv3.html
SELECT DISTINCT可以用来过滤结果集中的重复行,确保SELECT子句中返回指定的一列或多列的值是唯一的。本文将为大家带来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是一个更好的选择。
下面来看看如何使用SELECT DISTINCT来看看它是如何工作的一些例子。
以下是一个table表
字段1 字段2
id name
1 a
2 b
3 c
4 c
5 b
如果想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。所以首先输入:
select *, count(distinct name) from table group by name
然后我们再输入:
id name count(distinct name)
得到结果:
1 a 1
2 b 1
3 c 1
以下示例检索所有联系人的名字:
SELECT first_name
FROM contacts
ORDER BY first_name;
执行上面查询语句,得到以下结果:
该查询返回了319行,表示联系人(contacts)表有319行。
要获得唯一的联系人名字,可以将DISTINCT关键字添加到上面的SELECT语句中,如下所示:
该查询返回了302行,表示联系人(contacts)表有17行是重复的,它们已经被过滤了。
看下面的order_items表,表的结构如下:
以下语句从order_items表中选择不同的产品ID和数量:
SELECT
DISTINCT product_id,
quantity
FROM
ORDER_ITEMS
ORDER BY product_id;
执行上面查询语句,得到以下结果
在此示例中,product_id和quantity列的值都用于评估结果集中行的唯一性。
DISTINCT将NULL值视为重复值。如果使用SELECT DISTINCT语句从具有多个NULL值的列中查询数据,则结果集只包含一个NULL值。
请参阅示例数据库中的locations表,结构如下所示:
以下语句从state列中检索具有多个NULL值的数据:
SELECT DISTINCT state
FROM locations
ORDER BY state NULLS FIRST;
执行上面示例代码,得到以下结果:
正如上图所看到的,只返回一个NULL值。
以上内容是否对您有帮助
来自 https://www.w3cschool.cn/oraclejc/oraclejc-jhpr2qvb.html
2.4) Oracle Where子句
Where是Oracle中的条件查询子句,本教程,将学习如何使用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子句来指定要更新或删除的行记录。
参阅示例数据库中的以下产品(products)表,其表结构如下:
以下示例仅返回名称为“Kingston”的产品:
SELECT
product_name,
description,
list_price,
category_id
FROM
products
WHERE
product_name = 'Kingston';
执行上面示例中的查询语句,得到以下结果:
在这个例子中,Oracle按以下顺序评估子句:FROM WHERE和SELECT
首先,FROM子句指定查询数据的表。
其次,WHERE子句基于条件(例如product_name ='Kingston'过滤行记录)。
第三,SELECT子句选择了应该返回的列。
除了等于(=)运算符之外,Oracle还提供了下表中所示的许多其他比较运算符:
编号 | 运算符 | 描述 |
---|---|---|
1 | =
| 等于 |
2 | != ,<>
| 不等于 |
3 | >
| 大于 |
4 | <
| 小于 |
5 | >=
| 大于等于 |
6 | <=
| 小于等于 |
7 | IN | 等于值列表中的任何值 |
8 | ANY/SOME/ALL | 将值与列表或子查询进行比较。它必须以另一个运算符(例如:= ,> ,< )作为前缀。 |
9 | NOT IN | 不等于值列表中的任何值 |
10 | [NOT] BETWEEN n AND m | 相当于[Not] >= n 且 <= m 。 |
11 | [NOT] EXISTS | 如果子查询返回至少一行,则返回true
|
12 | IS [NOT] NULL
| 测试NULL 的值 |
例如,要获取标价大于500的产品,请使用以下语句:
SELECT
product_name,
list_price
FROM
products
WHERE
list_price > 500;
执行上面查询语句,得到以下结果:
要组合条件,可以使用AND,OR和NOT逻辑运算符。
例如,要获取属于类别编号是4且标价大于500的所有主板,请使用以下语句:
SELECT
product_name,
list_price
FROM
products
WHERE
list_price > 500
AND category_id = 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;
执行上面查询语句,得到以下结果:
请注意,以下表达式是等效的:
SELECT
product_name,
list_price
FROM
products
WHERE
list_price >= 650 AND list_price <= 680
ORDER BY
list_price;
要查询值列表中的行记录,可以使用IN运算符,如下所示:
SELECT
product_name,
category_id
FROM
products
WHERE
category_id IN(1, 4)
ORDER BY
product_name;
执行上面查询语句,得到以下结果:
表达方式:
category_id IN (1, 4)
等效于 -
category_id = 1 OR category_id = 4
以下语句检索名称以Asus开头的产品:
SELECT
product_name,
list_price
FROM
products
WHERE
product_name LIKE 'Asus%'
ORDER BY
list_price;
在这个例子中,我们使用LIKE运算符来根据指定的模式来匹配行记录。
以上内容是否对您有帮助
来自 https://www.w3cschool.cn/oraclejc/oraclejc-932p2qvx.html
2.5) Oracle And子句
Oracle AND是一个逻辑运算符,可以用来组合两个或更多的布尔表达式。本文就将为大家带来Oracle AND的使用方法。
AND运算符是一个逻辑运算符,它组合了布尔表达式,如果两个表达式都为真,则返回true。 如果其中一个表达式为假,则AND运算符返回false。
AND运算符的语法如下所示:
expression_1 AND expression_2
下表说明了使用AND运算符合并true,false和NULL值时的结果:
值 | TRUE | FALSE | NULL |
---|---|---|---|
TRUE | TRUE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
通常,在SELECT,DELETE和UPDATE语句的WHERE子句中使用AND来形成匹配数据的条件。 另外,在JOIN子句的谓词中使用AND运算符来形成连接条件。
在声明中使用多个逻辑运算符时,Oracle始终首先评估AND运算符。 但是,可以使用括号来更改评估的顺序。
以以下数据库中的订单(orders)表为例:
以下示例查找具有客户编号为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
执行上面的代码可以得到以下结果:
可以使用多个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;
执行上面的代码可以得到以下结果:
可以将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;
执行上面的代码可以得到以下结果:
以上内容是否对您有帮助
来自 https://www.w3cschool.cn/oraclejc/oraclejc-4gxo2qyi.html
2.6) Oracle Or子句
OR是Oracle中的逻辑运算符,本教程,将来学习如何使用OR运算符来组合两个或更多的布尔表达式。
OR运算符组合了布尔表达式,如果其中一个表达式为真(true),则返回true。
以下是OR运算符的语法:
expression_1 OR expression_2
下表显示了OR运算符在true,false和NULL值之间的结果。
值 | TRUE | FALSE | NULL |
---|---|---|---|
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
我们经常在SELECT,DELETE和UPDATE语句的WHERE子句中使用OR运算符来形成过滤数据的条件。
如果在语句中使用多个逻辑运算符,则Oracle会在评估NOT和AND运算符之后评估OR运算符。 但是,可以使用括号更改评估的顺序。
我们将使用以下的orders表进行演示:
以下示例查找状态为挂起(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'
执行上面的代码可以得到以下结果:
我们经常使用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;
执行上面的代码可以得到以下结果:
可以使用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运算符返回的结果相同。
可以将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;
执行上面的代码可以得到以下结果:
以上内容是否对您有帮助
来自 https://www.w3cschool.cn/oraclejc/oraclejc-kd9u2qyp.html
2.7) Oracle Fetch子句
FETCH 子句在 Oracle 中可以用来限制查询返回的行数,本教程将教大家如何使用 FETCH 子句。
以下说明了行限制子句的语法:
[ OFFSET offset ROWS]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]
OFFSET 子句指定在行限制开始之前要跳过行数。OFFSET 子句是可选的。 如果跳过它,则偏移量为 0,行限制从第一行开始计算。
偏移量必须是一个数字或一个表达式,其值为一个数字。偏移量遵守以下规则:
如果偏移量是负值,则将其视为 0。
如果偏移量为 NULL 或大于查询返回的行数,则不返回任何行。
如果偏移量包含一个分数,则分数部分被截断。
FETCH 子句指定要返回的行数或百分比。
为了语义清晰的目的,您可以使用关键字 ROW 而不是 ROWS,FIRST 而不是 NEXT。 例如,以下子句的行为和产生的结果相同:
FETCH NEXT 1 ROWS
FETCH FIRST 1 ROW
仅返回 FETCH NEXT (或 FIRST) 后的行数或行数的百分比。
WITH TIES 返回与最后一行相同的排序键。请注意,如果使用 WITH TIES,则必须在查询中指定一个 ORDER BY 子句。如果不这样做,查询将不会返回额外的行。
以下语句返回库存量最高的前 5 个产品:
-- 以下查询语句仅能在Oracle 12c以上版本执行
SELECT
product_name,
quantity
FROM
inventories
INNER JOIN products
USING(product_id)
ORDER BY
quantity DESC
FETCH NEXT 5 ROWS ONLY;
得到结果如下
以下查询使用 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 列的值相同。
以下查询返回库存量最高的前 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 (行)。
以下查询将跳过库存量最高的前 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 运算符的语法如下所示:
expression [NOT] IN (v1,v2,...)
并且表达式的语法与子查询匹配:
expression [NOT] IN (subquery)
在上面语法中,这里将介绍每个参数含义:
expression - 该表达式(expression)是任何有效的表达式,它可以是要匹配的表的列。
v1, v2, v3.. - IN 运算符后面是逗号分隔值列表,用于测试匹配。所有值必须与表达式具有相同的数据类型。
subquery - 子查询返回一列的结果集以测试匹配。该列还必须具有与表达式相同的数据类型。
如果表达式(expression)的值等于值列表中的任何值或由子查询返回的结果集,则 IN 运算符返回 true。 否则,它返回 false。
NOT 运算符否定 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;
执行以上代码可以得到以下结果:
如上图中所示,查询结果集返回了 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"的销售订单信息,如下所示:
这个示例演示如何查找状态(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"的销售订单信息,如下所示:
以下示例返回负责订单状态为取消(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;
执行上面查询语句,得到以下结果:
在这个例子中,子查询首先执行并返回一个销售员ID列表:
SELECT
DISTINCT salesman_id
FROM
orders
WHERE
status = 'Canceled'
执行上面查询语句,得到以下结果
这些销售人员id用于外部查询,查找所有员工的ID与销售员ID列表中的任何id相同。
以上内容是否对您有帮助
来自 https://www.w3cschool.cn/oraclejc/oraclejc-okdx2r0q.html
2.9)Oracle Between子句
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运算符的一些使用示例。
以下方的products表为例:
以下语句返回标准成本在500到600之间的所有产品:
SELECT
product_name,
standard_cost
FROM
products
WHERE
standard_cost BETWEEN 500 AND 600
ORDER BY
standard_cost;
在此示例中,我们将标准成本(standard_cost)列中的值在500到600之间的范围进行比较筛选。该查询仅返回标准成本在以下范围之间的产品:
要查询标准成本不在500和600之间的产品,请按如下方式将NOT运算符添加到上述查询中:
SELECT
product_name,
standard_cost
FROM
products
WHERE
standard_cost NOT BETWEEN 500 AND 600
ORDER BY
product_name;
以下方的orders表为例进行演示:
要查询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;
执行语句后,可以得到以下结果:
以上就是W3Cschool为大家带来Oracle Between子句的用法介绍,希望对大家有所帮助。
以上内容是否对您有帮助
来自: https://www.w3cschool.cn/oraclejc/oraclejc-6py42qz7.html
2.10)Oracle Like子句
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 运算符的例子来看看它是如何工作的,以 contacts 表为例进行演示:
以下示例使用 % 通配符查找姓氏以St开头的联系人的电话号码:
SELECT
first_name,
last_name,
phone
FROM
contacts
WHERE
last_name LIKE 'St%'
ORDER BY
last_name;
查询结果如下:
在这个例子中,使用了这个模式:
'St%'
LIKE 运算符匹配任何以“St”开头的字符串,后跟任意数量的字符,例如 Stokes,Stein 或 Steele 等。
要查找姓氏以字符串“er”结尾的联系人的电话号码,请使用以下语句:
SELECT
first_name,
last_name,
phone
FROM
contacts
WHERE
last_name LIKE '%er'
ORDER BY
last_name;
查询结果如下:
匹配的模式
%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;
执行上放代码,得到以下结果:
以下示例使用 NOT LIKE 运算符来查找电话号码不以“+1”开头的联系人:
SELECT
first_name, last_name, phone
FROM
contacts
WHERE
phone NOT LIKE '+1%'
ORDER BY
first_name;
执行上面查询语句,得到以下结果:
以下示例查找名字具有以下模式“Je_i”的联系人的电话号码和电子邮件:
SELECT
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
first_name LIKE 'Je_i'
ORDER BY
first_name;
查询结果如下:
模式 'Je_i' 匹配任何以'Je'开头的字符串,然后是一个字符,最后是 'i',例如 Jeri 或Jeni,但不是 Jenni。
可以在模式中混合通配符。例如,以下语句查找名字以 Je 开头,后跟一个字符,然后是任意数量字符的联系人。换句话说,它将匹配以 Je 开头并且至少有 3 个字符的任何姓氏(first_name):
SELECT
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
first_name LIKE 'Je_%';
结果如下:
以上内容是否对您有帮助
来
来自 https://www.w3cschool.cn/oraclejc/oraclejc-h37o2r0u.html
事务在数据库中是工作的逻辑单元,单个事务是由一个或多个完成一组的相关行为的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 语句可以用来提交当前事务的所有更改。提交后,其他用户将能够看到您的更改。本文要为大家带来的就是 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 语句在 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
2020-11-25 09:40 更新
在 Oracle 中,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 语句在 Oracle 中发出回滚。
例如:
ROLLBACK;
此 ROLLBACK 示例执行与以下操作相同:
ROLLBACK WORK;
在这个例子中,隐含了 WORK 关键字,所以前面2个 ROLLBACK 语句是等价的。 这些示例将回滚当前事务。
可以通过两种方式将 ROLLBACK 写入保存点:
ROLLBACK TO SAVEPOINT savepoint1;
或者
ROLLBACK WORK TO SAVEPOINT savepoint1;
由于始终隐含着 WORK 关键字,因此这两个 ROLLBACK 示例都会将当前事务回滚到名为 savepoint1 的保存点。
最后,看看 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
2020-11-25 09:40 更新
在 Oracle 中,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 语句在 Oracle 中发出回滚。
例如:
ROLLBACK;
此 ROLLBACK 示例执行与以下操作相同:
ROLLBACK WORK;
在这个例子中,隐含了 WORK 关键字,所以前面2个 ROLLBACK 语句是等价的。 这些示例将回滚当前事务。
可以通过两种方式将 ROLLBACK 写入保存点:
ROLLBACK TO SAVEPOINT savepoint1;
或者
ROLLBACK WORK TO SAVEPOINT savepoint1;
由于始终隐含着 WORK 关键字,因此这两个 ROLLBACK 示例都会将当前事务回滚到名为 savepoint1 的保存点。
最后,看看 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语句
2020-09-29 16:02 更新
在 Oracle 中,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' 标识的事务分配一个名称,该事务用引号括起来。
下面我们来看一个演示如何在 Oracle 中使用 SET TRANSACTION 语句的示例。
首先,下面来看看看如何使用SET TRANSACTION语句将事务设置为只读。
SET TRANSACTION READ ONLY NAME 'RO_example';
此示例会将事务设置为只读,并为其分配“RO_example”的名称。
下面是如何使用 SET TRANSACTION 语句将事务设置为读/写的示例:
SET TRANSACTION READ WRITE NAME 'RW_example';
一般在做报表查询的时候,可以先设置该查询事务为一个只读事务,以避免出现写操作。
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语句
2020-08-14 16:43 更新
在 Oracle 中,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:它指定数据库不应该等待释放锁。
下面是一个如何在 Oracle 中使用 LOCK TABLE 语句的例子:
LOCK TABLE suppliers IN SHARE MODE NOWAIT;
这个例子会锁定 suppliers 表在共享模式,而不是等待锁定被释放。
以上内容是否对您有帮助:
来自 https://www.w3cschool.cn/oraclejc/oraclejc-vxaw2r2n.html
4) Oracle 外键
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性,本节教程将为大家带来Oracle中如何使用外键的方法。
来自 https://www.w3cschool.cn/oraclejc/oraclejc-512y2r2p.html
4.1)Oracle 外键创建
在Oracle数据库中,外键是强制实施参照完整性的一种方式,使用外键就意味着一个表中的值在另一个表中也必须出现。
被引用的表称为父表,而带有外键的表称为子表。子表中的外键通常会引用父表中的主键。
使用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字段引用供应商表。
在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);
以上内容是否对您有帮助:
4.2)Oracle 级联删除外键
所谓的级联删除是指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除。本教程将教大家如何在Oracle中使用级联删除外键。
以下是使用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表中的所有对应记录也会被级联删除。
除了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中,我们可以使用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中,我们要禁用外键可以使用以下语法:
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外键启用方法。
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
来自 https://www.w3cschool.cn/oraclejc/oraclejc-f8h32r6k.html
5.1)Oracle Ascii()函数
在Oracle中,Ascii()函数可以返回代表指定字符的数字值代码,那么Ascii()函数具体该如何实用呢?
ASCII( single_character )
single_character:指定的字符来检索NUMBER代码。 如果输入多个字符,则ASCII函数将返回第一个字符的值,并忽略第一个字符后的所有字符。
ASCII函数返回一个数值。
ASCII函数可用于以下版本的Oracle:
Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i、Oracle 8i
下面是一些Oracle ASCII函数的使用示例:
ASCII('t')
Result: 116
ASCII('T')
Result: 84
ASCII('T2')
Result: 84
以上内容是否对您有帮助:
来自 https://www.w3cschool.cn/oraclejc/oraclejc-16hq2r6l.html
在Oracle中,Asciistr()函数可以使用数据库字符集将任何字符集中的字符串转换为ASCII字符串。下面,就为大家介绍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()函数可以根据数字代码返回字符,其功能和ASCII函数相反。本教程将为大家带来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()函数可以返回一个Unicode字符串。本教程,将为大家带来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
CONCAT()函数在Oracle中可以用于将两个字符串连接在一起,那么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中,||
运算符可以将两个或两个以上的字符串连接在一起。本章节要为大家带来的就是 ||
运算符的语法及使用示例。
||
运算符语法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
在 Oracle 中,Convert() 函数可以将字符串从一个字符集转换为另一个字符集。本文要为大家带来的就是 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 位字符集 |
F7DEC | DEC 法语 7 位字符集 |
WE8EBCDIC500 | IBM 西欧 EBCDIC 代码第 500 页 |
WE8PC850 | IBM PC 代码第 850 页 |
WE8ISO8859P1 | ISO 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()函数可以返回一个varchar2值,这个值包含了数据类型代码、字节长度和表达式的内部表示形式。本文就为大家带来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
在Oracle中,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 算术运算符包括+
、-
、*
、/
四个,其中/
获得的结果是浮点数。
案例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 关系运算符在 where
条件语句当中经常使用到,常用的关系如下:
符号 | 解释 | 符号 | 解释 |
---|---|---|---|
= | 等于 | <>或者!= | 不等于 |
> | 大于 | >= | 大于或者等于 |
< | 小于 | <= | 小于或者等于 |
Oracle 的逻辑运算符有三个:AND
、OR
、NOT
。
案例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
附件 | 大小 |
---|---|
[www.java1234.com]超详细Oracle教程_ok.pdf | 2.53 MB |