search results for '교육'

  1. 2008/03/15 Oracle 교육 - PL/SQL
  2. 2008/03/15 Oracle 교육 - SQL
  3. 2008/03/15 Oracle 교육
  4. 2008/03/05 Unix교육 - 1일째 (2)
  5. 2008/03/01 Java 교육 - 4일차 (2)

Oracle 교육 - PL/SQL

Work 2008/03/15 16:26

오라클 공식 사이트 - tool이나 manual 등
(otn.oracle.com/kr)


* tools - instant client, sql developer (둘다 기업에서 사용해도 무료임)
* manual


PL/SQL <- Ada <- Pascal

- 블럭형 구조
declare
  v_sal1  number;
  v_sal2  number;
begin
  select sal into v_sal1
  from emp
  where empno = '7788';
 -- 주석
  /*  주석  */
  select sal into v_sal2
  from emp
  where empno = '7782';

  if v_sal1 > v_sal2 then
     dbms_output.put_line('7788win');
  end if;

end;            
/

;  - 전체 블럭의 종료
/  - 실행


변수 선언시 참고할 점
변수의 데이터형을 정할때, db의 자료형이 변하는경우를 생각하여 그때 끄때 db의 자료형에 맞춰갈 수 있도록 선언하는 방법

declare
  v_ename emp.ename%type;            -- 변수 하나
  v_job      emp.job%type;

  emp_rec  emp%rowtype;                 -- 하나의 레코드
  TYPE emp_record_type IS RECORD  -- data type 생성
    (ename emp.ename%type,
      job     emp.job%type,
      sal     emp.sal%type);
 
  emp_rec1 emp_record_type;             -- data type instance 생성
  emp_rec2 emp_record_type;              -- data type instance 생성

  TYPE emp_sal_table_type IS TABLE OF emp.sal%type
     INDEX BY PLS_INTEGER;               -- 배열 타입 생성
 
  emp_sal_tab1 emp_sal_table_type;      -- 배열 instance 생성
  emp_sal_tab2 emp_sal_table_type;

  TYPE emp_tab_row_type IS TABLE OF emp%rowtype
     INDEX BY PLS_INTEGER;               -- 구조체 배열 타입 생성
 
  emp_tab_row emp_tab_row_type;        -- 구조체 배열 instance생성
begin
  select  ename, job, sal into emp_rec1
  from emp
  where empno = 7788;

select  * into emp_rec
  from emp
  where empno = 7782;

 dbms_output.put_line(emp_rec.ename||' '||to_char(emp_rec.sal));

select sal bulk collect into emp_sal_tab1
  from emp
  where deptno = 10;

select * bulk collect into emp_tab_row
  from emp
  where deptno = 10;
end;
/



## 모든 에러는 번호로 알 수 있지만, 모든 예외처리는 이름으로 한다
1. Predefined
2. Non-predefined -> when others then
3. Non-predefined -> 이름 붙여서
4. User-defined
5. User-defined


===================================================================================

Oracle 교육 - SQL

Work 2008/03/15 15:40
======================================================================================
sql example
======================================================================================
> select * from tab;    // 테이블 명을 보여준다
TNAME                                                        TABTYPE        CLUSTERID
------------------------------------------- -------------- ----------
EMP                                                           TABLE
DEPT                                                          TABLE
BONUS                                                        TABLE
SALGRADE                                                  TABLE
DUMMY                                                       TABLE


> desc emp
이름                                                              널?           유형
-------------------------------------------- --------    -------------------
EMPNO                                                        NOT NULL  NUMBER(4)
ENAME                                                                         VARCHAR2(10)
JOB                                                                             VARCHAR2(9)
MGR                                                                            NUMBER(4)
HIREDATE                                                                     DATE
SAL                                                                             NUMBER(7,2)
COMM                                                                         NUMBER(7,2)
DEPTNO                                                                       NUMBER(2)

// alias를 사용한다. " "로 묶으면 묶은 그대로 나오고 아니면 무조건 대문자로 나온다
> select job as "abc" from emp;
abc
------------------
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK

abc
------------------
CLERK
ANALYST
CLERK

> select job as abc from emp;
ABC
------------------
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK

ABC
------------------
CLERK
ANALYST
CLERK


> select * from emp
     order by deptno asc, sal desc;

EMPNO  ENAME         JOB               MGR HIREDATE        SAL       COMM     DEPTNO
-----     ------------  ------------- ----- --------          -----      -------    -------
 7839      KING             PRESIDENT              81/11/17         5000                     10
 7782      CLARK          MANAGER      7839   81/06/09          2450                     10
 7934      MILLER         CLERK           7782   82/01/23          1300                     10
 7788      SCOTT          ANALYST       7566   82/12/09          3000                     20
 7902      FORD            ANALYST       7566   81/12/03          3000                     20
 7566 JONES                MANAGER                  7839 81/04/02       2975                    20
 7876 ADAMS                CLERK                    7788 83/01/12       1100                    20
 7369 SMITH                CLERK                    7902 80/12/17        800                    20
 7698 BLAKE                MANAGER                  7839 81/05/01       2850                    30
 7499 ALLEN                SALESMAN                 7698 81/02/20       1600        300         30
 7844 TURNER               SALESMAN                 7698 81/09/08       1500          0         30

===================================================================================

Oracle 교육

Work 2008/03/15 09:51

======================================================================================
oracle server에 접속하기 위해서 필요한 중요한 세가지
======================================================================================
- host name or ip
- port number(기본 설정 1521 or Admin이 설정한 번호)
- sid name

위 세가지를 알아야 한다.

======================================================================================
sql 작성시 sequel을 이용하여 작성하면 보다 높은 성능을 이끌어 낼 수 있다.
======================================================================================
sequel을 이용하여 sql문을 작성하면 해당 sql문이 buffered cache에 저장되게 된다.
따라서 자주 사용하는 sql문을 미리 buffered cache에 저장해 놓으면
이후에 사용되는 동일 sql에는 보다 높은 성능을 낼 수 있다.

ex) select * from emp
        where empno = :eno;

eno자리에 일반적으로 '123', '456' 과 같은 상수가 들어오면 각각의 sql문이 cache에 올라가게 되어 buffer가 쉽게 pool이 날 수가 있다. 이것을 방지하기 위해서도 sequel을 사용한다.
동일 sql문으로 다양한 변수들을 처리하기 위해서 eno에 값을 넣는 방식을 사용한다.

======================================================================================
save sql
======================================================================================
sqlplus를 시작할때 시작위치를 지정하고 실행하면, 본인이 실행하는 sql문을 저장할 수 있다

ex)
> select * from dept;
> save dept
file dept.sql(이)가 생성되었습니다

다시 사용하고자 할때는 다음처럼 사용하면 된다
> start dept

======================================================================================
buffer edit
======================================================================================
> l
을 치면 현재 버퍼에 있는 sql문을 보여준다
이것을 바로 고치고 싶으면
> edit를 누르면 된다.

이렇게 하면 새로운 창이 뜨면서 buffer에 있는 sql문이 나온다. 이를 수정하여 저장하고
> l
을 쳐보자.. 그럼 바뀐 sql문이 보여질 것이다.

======================================================================================
스풀 사용
======================================================================================
오라클에서 스풀은 본인이 실행한 sql문의 결과를 저장해준다.
실행순서) 스풀사용 -> 파일 지정 -> sql문 실행 -> 스풀 종료

======================================================================================
Transaction
======================================================================================
트랜잭션의 시작
- DB에 처음 접속했을때
- 하나 또는 여러개의 DML문이 실행된 후 COMMIT, ROLLBACK문이 실행된 직후

트랜잭션의 종료
- COMMIT, ROLLBACK이 실행될때
- DDL문 or DCL문이 실행될 때
- 정상적으로 DB를 종료할때
- 비정상적으로 DB를 종료할때

===================================================================================

Unix교육 - 1일째

Work/Linux 2008/03/05 21:31
ls | wc -l : 현재 디렉토리의 파일 개수

set -o vi : vi내에서의 command history

shft + j : 아래 라인을 위 라인의 끝에 붙이기

telnet address : 128.1.206.92

ps aux | more : sort해서 보여준다

find . -name 'str' -exec command {} \;

ex) fine . -name 'test.c' -exec grep 'include' {} \;

나에게 shell script를 알려줄 사람?

===================================================================================

TAG Unix, 교육

Network Programming
import java.net.*;

OSI 7 Layer

Application Layer       : 7
Presentation Layer     : 6
Session Layer           : 5
Transport Layer         : 4
Network Layer           : 3
Data Link Layer         : 2
Physical Layer          : 1

네트워크 상에서는 readLine()을 가급적이면 안쓰는게 좋다는 얘기가 있다.
그 이유인 즉! readLine은 CR/LF을 기다리는데 보통 전송시에는 CR만 올뿐 LF가 오지 않기 때문이다. 또한, 이것은 운영체제마다 다르다.
Windows는 CR/LF가 모두 필요하고, Unix는 LF만 있으면 된다.
이를 보완하기 위해 Java는 하나의 메소드를 제공하고 있다.
System.getProperty("line.separator"); 라는 Method이다.
보내고자 하는 문자열(string)의 끝부분에 해당 내용을 붙여서 보내면 장땡이다. ㅋ

CR( Carriage Return ) : 커서를 그 줄의 맨 앞으로 옮기는데 사용되는 특수한 코드. 아스키코드 13에 해당되는 값이다. \r이 이에 해당된다.

LF ( Line Feed ) : 화면에서 커서를 한 줄 밑으로 내리는데 사용하는 명령어. 아스키코드 10에 해당되는 값이다. \n이 이에 해당된다.

JDBC(Java DataBase Connectivity)
JDBC 프로그래밍 5단계
1. JDBC 드라이버 로딩
- JDBC 드라이버 : 자바 프로그램과 DB사이를 연결해 주는 인터페이스(자바 클래스파일)
                        : 각 DB에 따른 드라이버는 DBMS회사에 가면 download받을 수 있다.
                        : Sun홈피에서도 받을 수 있삼, 각 DB업체에서 만든다.
- SQL Plus 실행
2. 연결
- ID/PW를 입력하고 연결한다
3. 명령
- 쿼리문(ex : select * from tab)
4. 결과
- 테이블 정보
5. CLOSE
- 종료(SQL Plus 종료)

* Connection Pool
Connection을 미리 만들어 놨다가 사용자의 요청이 있을때 Connection을 빌려줬다가 돌려받는다. --> 사용자의 요청이 있을때마다 연결하고 끊는 과정의 오버헤드를 줄이기 위한 것


Test Program (ECHO) - 첨부 파일 참고
Test Program 2 (Basic Chat Program)  - 첨부 파일 참고


===================================================================================