zoukankan      html  css  js  c++  java
  • Oracle集合

      1 --union  并集
      2 select  * from emp where ename like '%A%' union
      3 select * from emp where ename like '%M%';
      4 --union all  集并  公共部分 会包含二次
      5  select * from emp where ename like '%A%' 
      6   union all 
      7   select * from emp where ename like '%M%'; 
      8  --intersert交集  
      9  select * from emp where ename like '%A%' 
     10      intersect 
     11      select * from emp where ename like '%M%'; 
     12  --minus求差集  S1: A -  (S1&S2 union)1100-1200
     13       select * from emp where sal between 700 and 1200   --700-1100;  
     14      minus
     15      select  * from emp where sal between  1100 and 1500;
     16 
     17 --联合与全联合运算
     18  --union
     19  create table emp_history as select * from emp ;--辅助
     20  
     21  select empno,ename,sal,hiredate,deptno 
     22  from emp where deptno =20
     23  union
     24  select empno,ename,sal,hiredate,deptno 
     25  from emp_history where deptno =30
     26  order by deptno;
     27  
     28  -- union all 不能消除重复行,不能输出排序 使用DISTINCT关键字
     29   select empno,ename,sal,hiredate,deptno 
     30  from emp where deptno =20
     31  union  all
     32  select empno,ename,sal,hiredate,deptno 
     33  from emp_history where deptno =30
     34  order by deptno;
     35  
     36  --相交运算   1.列数和数据类型与select语句一样,但列名可以不同
     37  
     38  select empno,ename,sal,hiredate,deptno from emp
     39   where deptno =20 intersect
     40   select empno,ename,sal,hiredate,deptno from emp_history
     41   where deptno=20;
     42   
     43 --相减运算
     44 --查询在第一个表中而不再第二个表中的行
     45 select empno,ename,sal,hiredate,deptno from emp
     46 where deptno=20
     47 minus
     48 select empno,ename,sal,hiredate,deptno from emp
     49 where deptno=20;  
     50 --结构化查询   实现递归表的查询
     51 select * from emp;
     52 select level,lpad(' ',2*(level-1))||ename, empno,mgr,hiredate,sal  from emp
     53 start with mgr is null  --start with以manager_id is null作为跟节点
     54 connect by prior empno=mgr;  
     55 --根据connect by prior规则,继续向下寻找,形成树状结构查询
     56  
     57 --用子查询插入数据
     58 create table emp_copy as select * from emp where 1=2;
     59 insert into emp_copy select * from emp where deptno=20;
     60 --insert插入多表数据
     61 create table emp_dept_10 as select * from emp where 1=2;
     62 create table emp_dept_20 as select * from emp where 1=2;
     63 create table emp_dept_30 as select * from emp where 1=2;
     64 insert first
     65   when deptno =10
     66     then 
     67       into emp_dept_10
     68     when deptno=20
     69       then 
     70         into emp_dept_20
     71       when deptno=30
     72       then
     73         into emp_dept_30
     74       else
     75          into emp_copy
     76        select * from emp;          
     77  
     78 select * from emp_dept_10;
     79 --Merge语句
     80 merge into emp_copy c       --目标表
     81 using emp e on (c.empno=e.empno)   --源表,可以是表,视图或查询
     82 when MATCHED then update           --当匹配时,进行update操作
     83   set c.ename=e.ename,c.job=e.job,c.mgr=e.mgr,
     84       c.hiredate=e.hiredate,c.sal=e.sal,c.comm=e.comm,
     85       c.deptno =e.deptno
     86    when not matched then
     87       insert
     88       values(e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,
     89       e.deptno);
     90       
     91 
     92 create table dept60_bonuses
     93 ( 
     94 empno number,bonus_amt number
     95 );
     96 insert into dept60_bonuses values(7369,0);
     97 insert into dept60_bonuses values(7788,2);
     98 insert into dept60_bonuses values(7876,3);
     99 select  empno,sal,ename from emp;
    100 select * from dept60_bonuses;
    101 --合并两张表,根据不同的语句删除,更新
    102 merge into dept60_bonuses b
    103 using ( select empno,sal,deptno from emp where deptno=20) e
    104 on (b.empno=e.empno) 
    105 when matched then
    106 update set b.bonus_amt =e.sal*0.2
    107 where b.bonus_amt=0
    108 delete where (e.sal>2500)
    109 when not matched then
    110 insert (b.empno,b.bonus_amt)
    111 values (e.empno,e.sal*0.1)
    112 where (e.sal<4000);      
    113 使用TRUNCATE清除表数据
    114 与delete语句相比,使用truncate命令速度更快,原因  DTL
    115 1不会激活表的删除触发器
    116 2 属于数据定义语言,不会产生撤销信息
    117 3 主外键关系无法清除表内容,必须禁用约束
    118 不能使用PLSQL语句块 直接调用
    119 --禁用约束
    120 alter table dept disable constraint pk_dept cascade;
    121 提交 commit; 回滚 rollback;
    122 --sql>
    123 create table jobs (adds varchar2(10),jname varchar2(20),sal number(10),comm number(10));
    124 delete from jobs;
    125 insert into jobs values('OFFICE','办公文员',3000,5000);
    126 savepoint sp;
    127 insert into jobs values('FINANCE','财务人员',4000,8000);
    128 select * from jobs;
    129 rollback to savepoint sp;
    130 使用集合方法
    131 --exits 方法   集合的坐标元素是否存在
    132 declare
    133         type projectlist is varray (50) of varchar2(16);
    134         project_list projectlist:=projectlist('网站','ERP','CRM','CMS');
    135 begin
    136   if project_list.exists(5)
    137     then
    138       dbms_output.put_line('元素存在,其值为:'||project_list(5));
    139       else
    140         dbms_output.put_line('元素不存在');
    141         end if;
    142   end;        
  • 相关阅读:
    移除jboss响应中的中间件信息
    Cypress web自动化1-windows环境npm安装Cypress
    pytest文档39-参数化(parametrize)结合allure.title()生成不同标题报告
    pytest文档38-allure.step()添加测试用例步骤
    python笔记45-经典面试题:判断字符串括号是否闭合{}[]()
    Linux学习28-linux一行命令杀掉指定名称进程(killall 、kill 、pkill)
    pytest文档37-自定义用例顺序(pytest-ordering)
    pytest文档36-断言失败后还能继续执行pytest-assume
    pytest文档35-Hooks函数之统计测试结果(pytest_terminal_summary)
    pytest文档34-Hooks函数改变用例执行顺序(pytest_collection_modifyitems)
  • 原文地址:https://www.cnblogs.com/Remedy/p/8652134.html
Copyright © 2011-2022 走看看