Oracle入門初日

6286 ワード

Oracle初日
学習目標
  • Oracle紹介
  • Oracleインストール
  • Oracleアーキテクチャ
  • 基本クエリー
  • 条件照会
  • 単一行関数
  • マルチライン関数
  • 二、Oracleの紹介
    mysql関係型のデータベース、表と表の関係:外部キー、ポート番号:3306
    redis:非リレーショナル・データベース、key-value、ポート番号:6379
    Oracle:リレーショナル・データベース、ポート番号:1521
           :19   ,       
    
             ,   
    

    Oracleのバージョン:8 I 9 I 10 G 11 G 12 C
    職階:DBA(データベース管理者)、javaEE開発エンジニア
    三、Oracleインストール
    1)仮想マシンのインストール:中国語のないパスに解凍する
                 -- xxx.vmx   ,    
    

    2)仮想にoracleデータベースをインストールする
          : orcl,       sys ,system
    

    3)仮想NICの構成:静的ipアドレスを構成する必要がある
            ,      ip  :      ,    ()
    

    4)plsqlツールのインストール
             :   ,  ,    
    

    5)中国語の文字化けしを解決する
    --        : NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
    --         
    
    select userenv('language') from dual;
    

    四、Oracleアーキテクチャ
    ≪データベース|Database|oem_src≫:1つのデータベースのみ
    例:バックグラウンドで実行されるプロセス
    ≪表領域|Tablespace|oem_src≫:論理記憶単位
    データファイルでーたふぁいる:物理ストレージ単位ぶつりストレージたんい
    ユーザー:ユーザー管理向けで、いずれも1つの表領域に対応し、表領域にデータを追加し、データファイルに保存します.
    五、scottユーザーとscottユーザーの下の表を紹介する
    Oracle  (   ):   ,        
    
    scott       , pointbase
    
    scott  ,  :tiger
    

    –ユーザーのロック解除
    -alter userユーザー名account unlock;
    alter user scott account unlock
    -パスワードをリセット
    -alter userユーザー名identified byパスワード;
    alter user scott identified by tiger;
    六、基本クエリー
    -- dual :     ,            ,      
       --   :                  
       --         ,       
       select 
       length('abc') "  ",
       length('abc') as "  ",
       length('abc') as   , 
       length('abc') as '123'   from dual;
       --        
       select distinct job from emp;
       --     :+ - *  /      --     :||
       select concat('a' , 'b') from dual;
       select concat(concat('a' , 'b'),'c') from dual;
       select 'a' || 'b'|| 'c' from dual;
       select '1' + 1 from dual;
       --        : nvl(comm,0)
       select sal * 12 + nvl(comm,0),nvl(comm,0) from emp;
    

    七、条件照会
    --         
       select * from emp where comm > 0;
    
       select * from emp where comm is not null and comm != 0;
       --          
       select * from emp where comm is null or comm = 0;
       -- not   
       select * from emp where not(comm is not null and comm != 0);
    
       --   1981      
       select * from emp where to_char(hiredate,'yyyy') = '1981';
    
       select * from emp where hiredate >= to_date('1981-01-01','yyyy-mm-dd')
                           and hiredate <= to_date('1981-12-31','yyyy-mm-dd');
    
       select * from emp where hiredate between  to_date('1981-01-01','yyyy-mm-dd')  
                                             and to_date('1981-12-31','yyyy-mm-dd') ; 
                           ---   :to_char  to_date
        -- to_char (p1,p2):         
                     -- p1:      
                     -- p2:     
          select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day') from dual;
    
        -- to_date(p1,p2):         
                     -- p1:       
                     -- p2:             
         select '2018-07-06 11:11:11' , 
         to_date('2018-07-06 11:11:11' ,'yyyy-mm-dd hh24:mi:ss') from dual;
         -- upper:       lower :     
         select * from emp where upper(ename) like upper('%M%');
         --   
       --             
       select * from emp order by sal asc;
       --             
       select * from emp order by sal desc;
       --               (null     )
       select * from emp order by nvl(comm,0) asc;
    
       select * from emp order by comm asc nulls first; 
       --               (null     ) 
       select * from emp order by comm desc nulls last; 
    

    八、単行関数
     --     
       select length(ename) from emp;
       --     
          -- concat
          -- length
          -- substr(str, p1 ,p2): str:       ,p1:      ,p2:     
             --      0 1    
          select substr('abcjavadef' , 4, 4 ) from dual;
          select substr('abcjavadef' , 1, 3 ) from dual;
          select substr('abcjavadef' , 0, 3 ) from dual;
          -- replace(str ,p1,p2) :     str:        p1:     p2:    
          select replace('abcdefa' , 'a' ,'z') from dual;
          -- trim()        
          select trim('   abc    '),ltrim('   abc    '),rtrim('   abc    ') from dual;
          -- upper lower
    
       --    
          --        ==   
          select sysdate - hiredate from emp;
          --   
          select (sysdate - hiredate) / 7 from emp;
          --   :months_between
          select months_between(sysdate , hiredate) from emp;
          --     : add_months
          select add_months(sysdate ,-12) from dual;
       --    
          -- round ()     
          select round(2.666) from dual;
          -- trunc()   
          select trunc(2.666,1) from dual;
          -- mod()     (  )
          select mod(3,10) from dual;
       --    
          -- to_char to_date
          -- to_char to_number
          select 1 ,to_char(1),'1',to_number('1') from dual;
          select 1 + '1' from dual;
       --    
          -- nvl
    

    九、多行関数
     --     (    ,    )(count, avg, max ,min ,sum)
       --         :      group by       
       select 
          count(1),deptno, avg(sal),max(sal) ,min(sal) ,sum(sal)
       from emp group by deptno;
    
       --     4     
       --  where        ,where     group by  
       -- having              
       select count(1),deptno from emp  group by deptno having count(1) > 4;
    

    練習する
    1.     smith              
        select ename,hiredate from emp where deptno=(select deptno from emp where ename=upper('smith'))
    2.                     ,     。
         select empno,ename,sal from emp where sal> (select avg(sal) from emp)
    
    3.                          ,      
      select empno,ename,sal,deptno from emp where sal>(select avg(sal) from    emp where deptno=20)and deptno!=20
    
    4.            U                  
      select empno,ename from emp where deptno=(select deptno from emp where    ename like '%U%')
    
    5.      King        
    select ename,sal from emp where mgr= (select empno from emp where ename='KING')