1. 오라클 접속환경 2가지 

  1) two - tier 환경 

     client -------> database

  2) three - tier 환경 
   
     client ----------> Middle tier --------> database  
                      (로드 밸런싱 역활)

2. database 구성요소 

  1) data file - data가 들어있는 파일
   
      - 사용자 data ---> business data
      - 시스템 data ---> 시스템을 운영하기 위한 data

       * datafile 의 위치 확인하는 스크립트 
          - select file_name 
             from dba_data_files;
      
   2) control file - database의 구조정보가 들어있는 파일
         - 파일들의 위치와 이름, 상태정보 
        
       * controlfile의 위치 확인
        -  select name from v$controlfile;
            ( binary file ) 

       * text 용 controlfile을 생성하는 명령어
         
         SQL> alter database backup controlfile to trace as '/home/oracle/cre_control.sql';
    
    3) redo log file - 복구를 하기위해 필요한 파일
    
        * redo logfile의 위치를 확인하시오!
          SQL> select member
                   from v$logfile;
   
        * 메뉴얼에 나오는 ASM의 장점중 하나가 OS 엔지니어가 실수로 오라클의 파일을 삭제할 가능성이 낮아진다.
            - linux에서 rm 명령어로 삭제할 수 없다.

        * redo log 그룹이 몇개인지 확인하시오!
            SQL> select group#, status
                     from v$log;

    4) archive log file - redo logfile의 복사본

        * archive log file을 위치를 확인하는 명령어 
           - select name from v$archived_log;

       SQL> archive log list
               Database log mode              No Archive Mode
               Automatic archival             Disabled
               Archive destination            USE_DB_RECOVERY_FILE_DEST
               Oldest online log sequence     26
               Current log sequence             28

             - no archive mode : archive log file 을 사용하지 않는다. 

   * database mode를 archive log mode로 변경하는 방법
      1. SQL> archive log list                  <------ db 모드 확인
      2. SQL> shutdown immediate         <---- 정상종료
      3. SQL> startup mount                <----- mount 상태로 db를 올린다.
      4. SQL> alter database archivelog;   <----- 모드 변경 
      5. SQL> alter database open;           <---- mount에서 open으로 올린다. 
      6. SQL> archive log list                     <----- archive log list
 
     * archive log file은 switch log file 이 실행되면 생성된다. (default)
        (강제로 log를 스위치를 할 수 있다. ) 
 
     * 수동으로 로그 스위치하는 명령어 
      SQL> select group#, status from v$logfile;

      SQL> alter system swich logfile;

      SQL> select group#, status from v$logfile;

   

문제 1. 오라클 database 시스템의 구조 2가지 ?

답)  database , instance 
                         

문제 2. database 를 구성하는 파일들이 무엇이 있는가?

답) 1. data file - data가 들어있는 파일
     2. control file - database의 구조정보가 들어있는 파일
     3. redo log file - 복구를 하기위해 필요한 파일
     4. archive log file - redo logfile의 복사본
     5. password file - 특별한 권한을 가진 유저를 인증해주기 위한 파일
     6. parameter file  - 인스턴스의 구조정보가 들어있는 파일 


문제1. SQL의 종류에는 무엇이 있는가?
 
    (1) query (질의, 검색어)
         ~> select 문의 6가지 절

   (2) DML문 (Data manage Language)
        - insert /입력
        - update /수정
        - delete / 삭제
        - merge / 입력&수정&삭제
   
  (3) DDL문 (Data definition Language)
       - create /생성
       - alter /수정
       - drop /삭제
       - truncate /삭제
       - rename/이름 변경

  (4) DCL문 (Data control Language)
       - grant / 권한부여
       - revoke /권한취소
 
  (5) TCL문 (Transaction control Language)
       - commit / 변경된 내용을 영구히 저장
       - rollback /취소
       - savepoint /특정시점으로 취소
 

문제2. emp테이블 구조를 살펴보시오

SQL > describe emp

EMPNO      사원번호
ENAME      사원이름
JOB           직업
MGR          관리자의 사원번호
HIREDATE   입사일
SAL           월급
COMM       커미션
DEPTNO     부서번호



문제3. 이름과 월급을 출력하시오 !

SQL > select ename, sal  --- 컬럼명
          from emp;       --- 테이블 명

';' = 실행해 달라는 의미


문제4. 사원번호, 이름, 월급, 직업을 출력하시오!

SQL > select empno, ename,sal,job
          from emp;



문제5. 이름, 월급, 커미션을 출력하시오!

SQL > select ename, sal, comm
          from emp;



문제6. 이름, 월급, 커미션, 월급+커미션을 출력하시오

SQL > select ename, sal, comm, sal+nvl(comm,0)
          from emp;


* 출력시 커미션 값이 null이면 월급+커미션 값이 출력되지 않음

null 값인 경우 
 1) data가 없는 상태 
 2) 알 수 없는 상태 (unknown)


문제7. 월급이 3000인 사원들의 이름과 월급을 출력하시오 !

SQL > select ename,sal
          from emp
          where sal = 3000;

*where 절에 검색 조건을 준다


문제 8. 사원번호가 7788번인 사원의 사원번호, 이름, 월급을 출력하시오

SQL > select empno,ename,sal
          from emp
          where empno = 7788;


문제 9. 사원이름이 SMITH인 사원의 이름과 직업을 출력하시오!

SQL > select ename, job
          from emp
          where ename = 'SMITH';

* 이름은 ' ' 을 사용하여 문자 type이 string 임을 표시 해줌


문제 10. 직업이 SALESMAN인 사원들의 이름과 직업을 출력 하시오

SQL > select ename, job
          from emp
          where job = 'SALESMAN';


문제 11. 월급이 3000 이상인 사원들이 이름과 월급을 출력하시오!

SQL > select ename, sal
          from emp
          where sal >= 3000;

* 연산자의 종류 3가지
1. 산술 연산자 : * , /, +,-
2. 비교 연산자 : >,<,>=,<=,=
                     !=, <>,^= (같이 않거나)
3. 논리 연산자 : and, or, not


문제 12. 직업이 SALESMAN이 아닌 사원들의 이름과 직업을 출력하시오!

SQL > select ename, job
          from emp
          where job != 'SALESMAN';


문제 13. 월급이 1000에서 3000 사이인 사원들의 이름과 월급을 출력하시오!

SQL > select ename, sal
          from emp
          where sal between 1000 and 3000;

* 연산자의 종류 3가지
1. 산술 연산자
2. 비교 연산자
3. 논리 연산자
       - 기타 비교 연산자/  between and


문제 14. 월급이 1000에서 3000 사이가 아닌 사원들의 이름과 월급을 출력하시오

SQL > select ename, sal
          from emp
          where sal not between 1000 and 3000;


문제 15. 사원번호가 7788, 7902 인 사원들의 사원번호와 이름을 출력하시오 !

SQL > select empno, ename
          from emp
          where empno in(7788,7902);

SQL > select empno, ename
          from emp
          where empno = 7788 or empno = 7902;

* 기타 비교 연산자
1. between and
2. in (여러가지 동시에 검색)


문제 16. 직업이 SALESMAN, ANALYST, CLERK이 아닌 사원들의 이름과 직업을 출력하시오!

SQL > select ename, job
          from emp
          where job not in ('SALESMAN', 'ANALYST', 'CLERK');


문제 17. 커미션이 Null인 사원들의 이름과 커미션을 출력하시오!

SQL > select ename, comm
          from emp
          where comm is null;

*기타 비교 연산자
1. between and
2. in
3. is null


문제 18. 커미션이 null이 아닌 사원들의 이름과 커미션을 출력하시오!

SQL > select ename, comm
          from emp
          where comm is not null;


문제 19. 이름의 첫글자가 S(대문자)로 시작하는 사원들의 이름을 출력하시오!

SQL > select ename
          from emp
          where ename like 'S%';

*like 와 같이 쓰이는 것들 (1)
% : wildcard
    이자리에 뭐가 와도, 갯수가 몇개이든 관계없다.


문제 20. 이름의 끝글자가 T로 끝나는 사원들의 이름을 출력하시오!

SQL > select ename
          from emp
          where ename like '%T';


문제 21 이름의 두번째 철자가 M인 사원들의 이름을 출력하시오!

SQL > select ename
          from emp
          where ename like '_M%';

**like 와 같이 쓰이는 것들 (2)
% : 이자리에 뭐가 와도 관계없고 갯수가 몇개든 관계없다.
_ :  이자리에 뭐가 와도 관계 없는 자리 수 1개 이어야 한다.


문제 22. 이름의 세번째 철자가 A인 사원들의 이름을 출력하시오!

SQL > select ename
          from emp
          where ename like '__A%';


문제 23. 이름에 EN 또는 IN을 포함하고 있는 사원들의 이름을 출력하시오!

SQL > select ename
          from emp
          where ename like '%EN%' or ename like '%IN%';


문제 24. 아래의 DATA를 EMP 테이블에 입력하시오

SQL > insert into emp(empno, ename, sal)
          values(1234, 'A%B', 3500);

SQL > select ename, sal
          from emp;


문제 25. 이름의 두번째 철자가 %인 사원의 이름을 출력하시오

SQL > select ename
          from emp
        where ename like '_m%%' escape 'm';

*like 와 같이 쓰이는 것들 (3)
escape



* 생각해봐야할 문제 *

select ename, sal
from emp
where sal between 1000 and 3000;

둘 中 어떤것과 같은가?

1) where sal >= 1000 and sal <=3000; 
2) where sal > 1000 and sal <3000;


답은 1번 

추가로 알게 된 내용 

1. set page 400 / 보이는 페이지를 늘릴 때 사용 (점선이 사라진다.) 

2. ed+Enter키 / 메모장이 열린 후 수정이 가능하다. (닫은 후 -> '/'+Enter키) 




사랑은 어떻게 끝나는가

누군가를 너무 좋아했던 감정 

그 사람 생각밖에 나지 않고, 그저 바라보는 것으로 만족하며, 행복했던 그것 

그 감정은 어떻게 변하고 끝나는가


사랑할 때 이미 끝은 예정되어있다. 

인간의 수명이 정해져 있는 한 모든 시작은 끝을 내포한다. 


그러나 여기서 말하는 끝은 수명과는 관련 없는 끝이다. 

그 사람은 살아있고 나 또한 그와 같지만, 끝이 나버리는 것이다.


사랑이라는 감정이 변하는 것일까

그 감정을 바라고 느끼는 내가 변하는 것일까


그 끝은 나의 의지와는 상관없이 끝이 날 수 있는가

그 끝을 너무 아프지만 염원하면 끝나게 되는가

만약 끝을 바래야 하는 상황이라면 사랑의 감정을 지키지 못함을 부끄러워해야 하는가

그리고 나의 의지로 끝을 외치는 것은, 그러나 그럼에도 불구하고 감정이 남아 있음에 

진정 끝이라고 할 수 있는가 


사람들은 어떻게 누군가 사랑한 감정을 잊어가는가 

그저 무뎌짐을 끝이라 믿으며 살아가는 것일까?

계속 품고 있으면 너무 아프니까...


나의 끝은 언제일까? 무슨 모습을 하고 있을까?

나는 그저 바라보고 있다. 내 모습을 

더는 아프지 않을 때까지... 

+ Recent posts