【Oracle语法】DDL语句

目录


1. DDL语句

DDL语句 符合SQL语法;

1.1. 基本DDL语句

--更改表结构
   alter table person modify(address varchar2(20));



2. 进阶

2.1. 表的删除

--截断 person表
truncate table person;

  1. truncate
    1. 在person表中使用delete语句删除数据,则可以使用rollback来回滚;
    2. 如果想要清空一张表的数据,同时不想回滚可以立即释放资源需要使用截断表的语法

参考:

2.2. 临时表

  1. 概述
    临时表:像普通表一样,有结构,但是对数据的管理上不一样,临时表存储事务或会话的中间结果集,临时表中保存的数据只对当前 会话可见,所有会话都看不到其他会话的数据,即使其他会话提交了,也看不到。临时表不存在并发行为,因为他们对于当前会话都是独立的。(它默认是事务级别的)

    在oracle中临时表可分为会话级临时表事务级别临时表

2.2.1. 临时表分类

2.2.1.1. 会话级临时表
2.2.1.2. 事务级别临时表

参考:

  1. oracle创建临时表
  2. MySQL临时表的简单用法 在大数据量时有时会加快查询速度

2.2.2. WITH AS 与 临时表

  1. with as
    with as 只是把子查询的语句当作了一个表,但是真实的数据并没有插入到数据库,它的好处是增加了代码的可读性和进行维护。

  2. 临时表
    临时表的数据是需要插入到数据库的,所以一般用于做报表的话,在插入数据之后需要删除临时表。

  3. 运行效率
    用with as ,其实跟直接用子查询效率上没有什么区别;而用临时表与永久表相似,数据是真是跑入到数据库里面去的,相当于第二次直接关联的是一个小表,查询效率大大提高。

  4. 应用场景
    临时表适用于:有很多复杂的关联子表查询。
    with as 适用于:为了增加代码可读性,且没有很多复杂的关联子查询。

参考:

  1. mysql8 WITH AS(公用表表达式)

2.3. 虚拟列

  1. 为什么要使用虚拟列
    (1)可以为虚拟列创建索引(Oracle为其创建function index)
    (2)可以搜集虚拟列的统计信息statistics,为CBO提供一定的采样分析。
    (3)可以在where 后面使用虚拟列作为选择条件
    (4)只在一处定义,不存储多余数据,查询是动态生成。
  2. 语法
    HR@bear> create table inv(
    inv_id   number,
    inv_count  number,
    inv_status  generated always as
       case  when  inv_count <= 100 then 'GETTING LOW'
             when  inv_count > 100  then 'OKAY'
       end)
    );
    

参考:

  1. Oracle virtual column(虚拟列)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值