有用的数据库相关内容收集

有用的SQL收集:

   Oracle创建一个表空间:
     
create tablespace zastablespace datafile 'filePath' size 200m autoextend on next 10m;

   Oracle创建一个用户并授权:
     
create user zas identified by zas default tablespace zastabspace temporary tablespace temp profile default;

      其中identified后跟的密码区分大小写

      grant connect, resource,dba to zas;

查看空间占用情况

SELECT segment_name AS TABLENAME,
       BYTES B,
       BYTES / 1024 KB,
       BYTES / 1024 / 1024 MB
  FROM user_segments order by bytes desc

  

    Oracle重复数据删除:

       假设emp有大量的重复数据,重复条件为:empno相同 

       通过rowid来删除:
      
     
 delete from emp t where t.rowid <> (select max(rowid) from emp a where t.empno = a.empno);

       通过rownum来删除:
     
       delete from emp t where t.empno = ? and t.rownum > 1;

       删除操作一般为危险操作,在生产环境通过数据库端处理时一定要做好备份工作。


      Oracle的连接
             两个表或结果集,定义为两个集合A、B,最直接的连接就是笛卡尔积,即AxB。 笛卡尔积是两个集合之间的交叉乘积,记录数为|A|x|B|。
             笛卡尔积一般不用,但也是有实际意义的,比如查询本月正常工作日每天有哪些人没有打卡,就可以用(本月工作日)x(人员名单)-(打卡记录)。
             更有意义的是笛卡尔积的子集,包括内连接、左联接、右连接、全连接。连接就是将两个表(或结果集)接在一起,成为一个信息更全面的结果集。
             以ORACLE 中的SCOTT用户下的表EMP, BONUS为例,将这两个表联接起来:
             内联接:实际上应该理解为交联接
               
select a.*,b.sal b_sal,b.comm b_com from emp a,bonus b where a.ename=b.ename;
   
--只查两个表中ENAME 一致的数据。
             左联接:
              
 select a.*,b.sal b_sal,b.comm b_com from emp a,bonus b where a.ename=b.ename(+);   
--只要左边有就行了,右边是否存在对应的没关系。或者可写为:
              
 Select a.*,b.sal b_sal,b.comm b_com From emp a left join bonus b on a.ename=b.ename; 
             右联接:               
               
select a.*,b.sal b_sal,b.comm b_com from emp a,bonus b where a.ename(+)=b.ename;  
--与左联接相反,或者可写为:
              
 Select a.*,b.sal b_sal,b.comm b_com From emp a right join bonus b on a.ename=b.ename; 
             完全联接:实际上应理解为并联
               
 select a.*,b.sal b_sal,b.comm b_com from emp a,bonus b where a.ename=b.ename(+) union select a.*,b.sal b_sal,b.comm b_com from emp a,bonus b where a.ename(+)=b.ename;
             笛卡尔联接:
                
 select a.*,b.sal b_sal,b.comm b_com from emp a,bonus b;    
            各联接之间的数字关系:左联接+右联接=内联接+全联接
   

猜你喜欢

转载自zhuyufufu.iteye.com/blog/1988319