개발/대덕인재개발원

대덕240906-자바:조건문 /DB:데이터 타입, 테이블 수정

월은 2024. 9. 6. 17:45

<1~4교시 자바>

<조건문과 반복문>

실행 흐름을 제어하는 것이 제어문이며 이러한 제어문을 통해 실행 흐름을 원하는 방향으로 조절할 수 있다.

제어문의 종류에는 바로 이 조건문과 반복문이 있는 것이다.

 

조건문

if문

조건식 결과에 따라 블록 실행 여부 결정

 

왼쪽은 생략 불가, 오른쪽은 생략 가능

조건식의 중괄호는 실행문이 여러개일 경우 실행하지만

실행문이 하나일경우 생략 가능

if-else문

 if문을 else 블록과 함께 사용

조건식이 true가 되면 if 중괄호 내부를 실행하고, false가 되면 else 중괄호 내부를 실행

 if-else if-else문

조건식이 여러개인 if문

조건식1 이 true가 되면 if 중괄호 내부를 실행하고, 조건식2가 true가 되면 else if 중괄호 내부를 실행한다. 조건식1과 조건식2가 모두 false가 되면 else 중괄호 내부가 실행되고 사진상의 실행문D가 실행된다.

switch문

스위치 괄호 속에 있는 값과 케이스 속에 있는 값을 비교하여 같은 값을 찾는다.

도중에 break 문을 만나면 빠져나감

*break 문이 없으면 break 문을 만날 때까지 값이 일치하지 않아도밑의 값을 계속해서 실행한다

일치하는 값이 하나도 없으면 defalt 로 간다

 

<5~8교시:DB>

이진 데이터 타입 

RAW 방식은 작은 크기(2000BYTE)의 이진 자료 저장 

BFILE은 자주 변경되어지는 파일을 바꿀 때 해당 파일만 바꾸어 주면 되기 때문에 그러할 때에 사용

BLOB는 자료를 컬럼 안에 저장하기 때문에 자주 변경되지 않는 자료를 저장할때 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
2024-0906-01)이진데이터
 - RAW, BFILE, BLOB
 - 오라클은 자료를 해석하거나 변환하지 않음
 
1)RAW
  . 작은 크기(2000BYTE)의 이진 자료 저장
  .16진수, 2진수 형태로 저장
  
  사용예)
    CREATE TABLE EX02_04(
        COL1 RAW(2000),
        COL2 RAW(1000));
        
   INSERT INTO EX02_04 VALUES(HEXTORAW('EA3C'),'1110101000111100')    
   SELECT * FROM EX02_04;
   
2)BFILE
 - 4GB 까지 저장가능
 - 원본 파일은 데이터베이스 외부에 저장
 - 데이터베이스에는 경로와 파일명만 저장
 - 원본이 자주 변경되는 경우 적합
 
  사용예) 그림파일을 BFILE 방식으로 저장
    (1) 테이블 준비
        CREATE TABLE EX02_05(
            COL1 BFILE);
            
    (2) 원본 파일 준비
        SALAD_02.jpg
        
    (3) 디렉토리 객체 생성(절대경로)
        CREATE DIRECTORY 디렉토리별칭 AS '절대경로';
        - '디렉토리 별칭': 디렉토리 객체이름
        - '절대경로' : 원본파일이 저장된 경로
        
        CREATE DIRECTORY TEST_DIR AS 'D:\A_TeachingMaterial\02_Oracle\work';
        
    (4) 원본 파일 삽입
        INSERT INTO EX02_05 VALUES(BFILENAME('TEST_DIR','SALAD_02.jpg'));
        
        SELECT * FROM EX02_05;
 
 3)BLOB(Binary LARGE OBject)
 - 4GB 까지 저장가능
 - 원본 파일은 데이터베이스 외부에 저장
 - 원본이 자주 변경되지 않는 경우 적합
 
 사용예)BLOB 타입에 이진자료 저장순서
    (1) 저장공간 확보
    CREATE TABLE EX02_06(
        COL1 BLOB);
    (2) 원본파일 준비
    SALAD_02.jpg
    (3)디렉토리 객체 생성
    TEST_DIR
    (4)자료삽입(PROCEDURE나 익명 블록 
    CREATE OR REPLACE PROCEDURE BLOB_INSERT(V_FILENAME IN VARCHAR2)
    IS
        V_BLOB BLOB;
        V_BFILE BFILE;
        V_OFFSET NUMBER :=1;
        V_DEST_OFFSET NUMBER :=1;
      BEGIN
        V_BFILE := BFILENAME('TEST_DIR',V_FILENAME);
        
        
        INSERT INTO EX02_06(COL1) VALUES(EMPTY_BLOB())
            RETURN COL1 INTO V_BLOB;
            
       DBMS_LOB.OPEN(V_BFILE, DBMS_LOB.LOB_READONLY);
       DBMS_LOB.LOADBLOBFROMFILE(V_BLOB,V_BFILE,DBMS_LOB.GETLENGTH(V_BFILE),
                                    V_DEST_OFFSET, V_SRC_OFFSET);
       DBMS_LOB.CLOSE(V_BFILE);
       COMMIT;
      END;
 
    EXECUTE BLOB_INSERT('SALAD_02.jpeg');
 
cs

테이블 수정(ALTER 문)

테이블명 변경, 제약사항 변경, 수정, 삭제 및 많은 사항의 변경 가능

한번 바뀌면 ROLLBACK 되지 않음

테이블명 변경
ADD 연산자 사용하여 컬럼의 데이터타입이나 크기 변경

이미 테이블에 데이터가 저장되어있다면 변경 불가

컬럼의 데이터 타입니다 크기 변경
컬럼의 삭제, 자동으로 자식 측에서 먼저 삭제하고 부모 측을 삭제]
CASCADE CONSTRAINT = 종속 삭제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2024-0906-02)ALTER
 1. 테이블명 변경
  ALTER TABLE old_table_name RENAME TO new_table_name;
  
 사용예)CUST 테이블을 CUSTOMER로 변경하시오
    ALTER TABLE CUST RENAME TO CUSTOMER;
    
 2. 컬럼 변경 
    ALTER TABLE 테이블명 ADD|MODIFY|DROP ~~
    1)ADD
    .컬럼을 추가
        ADD(컬럼명 데이터타입[(크기)] [NOT NULL][default 값]);
        
사용예)HR계정의 EMPLOYEES 테이블에 EMP_NAME 컬럼을 추가하시오.
      데이터 타입은 VARCHAR2 이고 크기는 46BYTE이다
  ALTER TABLE HR.EMPLOYEES ADD(EMP_NAME VARCHAR2(46));     
  
  UPDATE HR.EMPLOYEES
    SET EMP_NAME = FIRST_NAME||' '||LAST_NAME;
    COMMIT;
  SELECT FIRST_NAME||' '||LAST_NAME
   FROM EMPLOYEES;
   
   2)컬럼삭제 -DROP 
   ALTER TABLE 테이블명     DROP COLUMN 컬럼명;
   
   사용예)ORDERS테이블에서 ORDER_DATE 컬럼을 삭제하시오
    ALTER TABLE ORDERS DROP COLUMN ORDER_DATE;
    
    ALTER TABLE ORDERS DROP CONSTRAINT FK_ORDERS_CUST;
    
    3)테이블 수정
     - 컬럼명 변경, 컬럼의 자료 타입 및 크기 변경, 컬럼의 제약사항 변경
     ALTER TABLE 테이블명     MODIFY COLUMN (컬럼명,데이터 타입[(크기)][NOT NULL][dafault 값])
     
     사용예)HR계정의 EMP_NAME 컬럼의 타입을 CHAR(30)으로 변경하시오
     ALTER TABLE HR.EMPLOYEES MODIFY(EMP_NAME CHAR(30));
     
       ALTER TABLE HR.EMPLOYEES MODIFY(EMP_NAME VARCHAR2(30));
     
        UPDATE HR.EMPLOYEES
            SET EMP_NAME=TRIM(EMP_NAME);
            COMMIT;
     
     SELECT EMPLOYEE_ID,EMP_NAME, SALARY
        FROM HR.EMPLOYEES;
  COMMIT;      
        
 4)테이블 컬럼 이름 수정  
    -ALTER TABLE 테이블명 RENAME COLUMN old_column_name TO new_column_name;
    사용예)CUSTOMER 테이블의 CUST_ADDRESS 컬럼명을 CUST_ADDR로 변경
    ALTER TABLE CUSTOMER RENAME COLUMN CUST_ADDRESS TO CUST_ADDR;
    
   
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
2024-0906-03) 테이블 삭제
- DROP TABLE 명령으로 삭제
- 자식테이블이 있는 부모테이블은 삭제 불가
 
사용형식)
    DROP TABLE 테이블명[CASCADE CONSTRAINT];
        'CASCADE CONSTRAINT' : 기본키를 참조하는 외래키 조건도 같이 삭제
        
사용예) customer 테이블을 삭제하시오.
    DROP TABLE CUSTOMER;
    
사용예) ORDERS 삭제하시오.    
    DROP TABLE ORDERS CASCADE CONSTRAINT;
cs

 

 

 

외래키 추가