• 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,sum(sal)

        from emp

        group by rollup(deptno,job);

    上述两种表达结果相同。

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

        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 删除数据

            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操作的时候
                  >> 非正常关闭: 断电断网....

        --导入一个脚本里的sql语句

          格式:  @d:/testdelete.sql;

        -- 打开sql执行的时间
            set timing on
        -- 关闭oracle的回调显示
            set feedback off;

        -- update 操作

            -- 从emp表更新名字为KING的工资为20000
              update emp set sal=10000 where ename='KING';

        --alter 修改表

             -- 在emp中追加一个列 photo,数据类型为varchar2(20)。

                alter table emp add photo varchar2(20);

            -- 修改photo的字符串长度为50

                alter table emp modify photo varchar2(50);  

            -- 修改photo这个列的列名为photos

                alter table testemp10 rename column photo to photos;

            -- 删除photos

                alter table emp drop column photos;

            -- 修改emp 表名称

                 rename emp to testemp;

            -- 删除testemp;
                drop table testemp;

              

                        

          

  • 相关阅读:
    [原创]存储过程,insert,case when then,处理性别问题 Virus
    [原创]c#,数据结构,栈 Virus
    [原创]软件自动化测试和.NET中的反射 Virus
    [原创]反射,.NET,委托 Virus
    《博客园精华集--NET3.x分册》第三轮结果
    (翻译)《Expert .NET 2.0 IL Assembler》 详要目录 更新到第8章
    MSIL翻译中的问题贴
    (翻译)《Expert .NET 2.0 IL Assembler》 第一章 简单示例 1.2 简单示例(二)
    (翻译)《Expert .NET 2.0 IL Assembler》 第一章 简单示例 1.2 简单示例(一)
    第三轮进度汇总
  • 原文地址:https://www.cnblogs.com/kylyww/p/5308395.html
Copyright © 2020-2023  润新知