oracle database 23c 提供了 300 新特性和增强功能,本文给大家做一个简要的介绍,主要涉及开发者相关的功能。
json关系对偶
数据可以透明地访问和更新为json文档或关系表。
开发人员受益于两者的优势,这些优势比对象关系映射(orm)更简单、更强大。
参见。
操作属性图
开发人员现在可以利用其行业领先的安全性、高可用性和性能能力,直接在甲骨文数据库中根据操作数据构建实时图形分析应用程序。
请参阅。
微米乐app官网下载的服务支持
除了甲骨文已经对微服务的全面支持外,新功能使实施跨服务事务变得更加简单。
参见。
无锁列值预订
无锁列值保留允许应用程序保留列中部分值,而无需锁定该行;例如,保留部分银行账户余额或在库存中保留项目,而无需锁定银行账户或项目的所有其他操作。
请参阅。
okafka
kafka应用程序现在可以直接对oracle数据库运行,只需最小的代码更改,利用高性能事务事件队列(txeventq)。
请参阅
javascript存储过程
开发人员现在可以在数据库中使用javascript创建存储过程。此功能还允许开发人员利用大量的javascript库。
请参阅。
sql域
sql域允许开发人员以集中和轻量化的方式声明数据(列)的预期用途。例如,声明一列包含电子邮件、url、密码、货币等。应用程序可以使用sql域自动生成代码或验证值。
参见。
许多数据类型和sql增强功能
以下是许多数据类型和sql增强功能:
每张表最多4096列
数据库表现在支持多达4096列。此功能简化了需要大量属性的应用程序的开发,例如ml和物联网。
请参阅。
改进的机器学习算法
oracle数据库内机器学习算法的新改进使文本和数据的分类更简单,同时提供更好的性能和灵活性。
参见。
模式特权
现在可以在模式级别授予系统特权。此功能简化了特权管理过程,因此可以轻松保护数据库。
请参阅。
开发人员角色
新角色允许管理员仅为开发人员设计、构建和部署oracle数据库所需的权限快速分配开发人员。
请参阅。
azure ad oauth2集成
新功能允许单点登录oracle数据库服务实例或来自microsoft azure cloud的本地oracle数据库。
请参阅。
部分特性测试
开发者新特性--无表查询
很多数据库都支持没有 from 子句的查询,可以直接返回表达式或者函数的值。oracle 则提供了虚拟的 dual 表。不过从 oracle 23c 开始,也支持了这种无表查询语句。下面让我们一起来看看:
--查询示例
sql> select 'oracle database 23c' as db, sysdate as now, 'i am vip' name;
db now name
------------------- --------- --------
oracle database 23c 13-apr-23 i am vip
sql>
开发者新特性--boolean 数据类型
oracle database 23c 引入了新的 boolean 数据类型,可以用于字段定义和 sql 语句。
true、false、't'、'f'、'true'、'yes' 等可以作为 boolean 类型的输入数据,任何非 0 的数字都会被转换为 true,数字 0 则会被转换为 false。
--创建测试表并插入数据
create table test_bool (val varchar2(10), flg boolean);
insert into test_bool values ('true' , true );
insert into test_bool values ('false' , false);
insert into test_bool values ('null' , null );
insert into test_bool values ('t' ,'t' );
insert into test_bool values ('yes' ,'yes' );
insert into test_bool values ('true' ,'true');
insert into test_bool values ('f' ,'f' );
insert into test_bool values ('0' , 0 );
commit;
sql> desc test_bool
name null? type
----------------------------------------- -------- ----------------------------
val varchar2(10)
flg boolean
sql> select val from test_bool where flg;
val
----------
true
t
yes
true
sql>
sql> select val from test_bool where not flg;
val
----------
false
f
0
sql>
开发者新特性--基于别名的 group by
oracle database 23c 可以基于表达式的别名或者它在 select 列表中的位置指定 group by 和 having 操作。
select extract(year from hire_date) yr, count(*) as total_emp
from employee
group by yr
having total_emp > 5;
开发者新特性--模式级别的特权
oracle database 23c 支持基于整个模式的特权管理:
grant select any table
on schema hr
to user01;
开发者新特性--create table if not exists
在之前的版本中,如果创建一个已经存在的表,将会返回 ora-00955: name is already used by an existing object 错误;如果删除一个不存在的表,将会返回 ora-00942: table or view does not exist 错误。
oracle database 23c 支持 create table if not exists 以及 drop table if exists 语句,可以避免这些问题:
--在表已存在情况下使用普通语句创建表
sql> create table test_bool (val varchar2(10), flg boolean); create table test_bool (val varchar2(10), flg boolean) * error at line 1: ora-00955: name is already used by an existing object
--在表已存在情况下使用if not exists语句创建表 sql> create table if not exists test_bool (val varchar2(10), flg boolean); table created.
--在表不存在情况下使用drop table命令删除表 sql> drop table test; drop table test * error at line 1: ora-00942: table or view does not exist
--在表不存在情况下使用drop table if exists命令删除表 sql> drop table if exists test; table dropped. sql>