Oracle Day05 集合与数据处理

Posted wentaokyle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle Day05 集合与数据处理相关的知识,希望对你有一定的参考价值。

1.集合

  --集合操作: 并集、交集、差

    select deptno,job,sum(sal) from emp group by deptno,job
    union
    select deptno,to_char(null),sum(sal) from emp group by deptno
    union
    select to_number(null),to_char(null),sum(sal) from emp;

 

 

    select deptno,job,sal

    from emp

    group by rollup(deptno,job,sal);

上述两种表达结果相同。

  -- 集合操作需要注意的事项:

    1). 集合的所有列应该数量相同,类型相同。

    2). 集合操作的结果以第一条sql语句的表头为表头。

    3).集合操作尽量少用

2.数据处理

  SQL 的类型:
    1). DML : 数据操作语言 insert/update/delete/select
    2). DDL : 数据定义语言 create/alter/drop/truncate
    3). DCL : 数据控制语言 grant(授权) revoke(移除授权)

    -- insert 向表里面添加一行记录

      (1)出入一行里的某些数据

        insert into emp(empno,job,sal) values(2016,‘SAL‘,8000);

      (2)按照表的顺序插入一行里的所有的数据

         insert into emp values(2015,‘zhangsan‘,‘MANAGER‘,2016,‘18-3月-16‘,5000,3000,20);

    -- 自定义日期的格式

        alter session set NLS_DATE_FORMAT = ‘yyyy-mm-dd‘;

    -- create 创建一个表

      -- 用模板快速的创建一个表

        create table testemp as select * from emp where 1= 2;

        -- 快速的插入数据

          insert into testemp select * from emp;        -- 批量操作的时候不要加关键字

       -- 创建一个没有模板的表

          create table testemp1(
                    id number(5),
                    name varchar(20),
                    weight number(5,2)
                    );

              -- varchar 和varchar2 都可以用来表示字符串,但是在oracle中推荐用varchar2。varchar是每一个字段固定占N个字节,不管内容是否足够N个长度;varchar2 会根据内容自己调整他的长度。   

     -- 删除数据

        delete from emp where empno=2016 or empno=2015;

        rollback:回滚,如果你删除错误以后可以用rollback来回滚数据。

          可以创建一个回滚的节点:savepoint a;

          然后再回滚:rollback to a;

          -- dml 可以闪回,ddl不能。

     -- 格式化表 truncate

        truncate table testemp;

      delete 和truncate 删除数据有什么差别?
        (1). delete 是逐行删除,truncate是先删除表,在重新创建一个新表
        (2). delete 能够闪回(flashback),而truncate不能闪回
        (3). delete 不会释放内存空间,而truncate会
        (4). delete 会产生碎片,而truncate不会
        (5). delete 是DML语句,truncate是一个DDL语句

        (6).delete 不会真正的将数据删除,它将所有的数据移到一个叫undo表空间里面。

    -- drop 操作

      drop table testemp;  删除表 testemp

    -- 事物: 一连串的DML,形成的一个原子操作

       事物什么时候开启:
          (1). 显示的开启: start transaction
          (2). 隐式开启: 执行的第一个DML语句
      事物什么时候关闭:
          (1). 显示关闭: commit,rollback;
          (2). 隐式关闭
              >> 正常关闭: 执行了一个DDL操作的时候
              >> 非正常关闭: 断电断网....

      

        

      

以上是关于Oracle Day05 集合与数据处理的主要内容,如果未能解决你的问题,请参考以下文章

day05

当Oracle中的字段值更改时增加行号

Logistics_Day05:Kudu 入门使用

Day 3 (05/22)

Oracle Day09 存储与触发器

day05_oracle分析函数