Eggs Sunny Side Up
본문 바로가기
Computer Engineering/DB_Oracle

DML 예제풀이

by guswn100059 2023. 3. 6.
/* DML 문법 문제를 풀이합니다 

   !!주의사항 
   ==> 각 문제를 정상적으로 풀고 나면 commit; 명령을 실행해주세요.
       그래야 데이터가 영구적으로 테이블에 반영이 됩니다. 

   예)
   insert into 테이블 ..  update 테이블 .. / delete 테이블 ..  
   처리 완료! 
   commit ;  --데이터를 영구반영  
   
   ==> 혹시 데이터를 잘못 처리했다면 commit ; 명령어를 입력하기 전에 rollback ; 명령으로 되돌릴 수 있습니다. 
   예)
   insert into 테이블 .. / update 테이블 .. / delete 테이블 ..  (데이터를 잘못 넣었다면?) 
   rollback ; --데이터를 마지막 commit 시점으로 되돌려줌(원상복구)    
*/ 


/*
1. 오늘 새로운 직원이 입사하였습니다. 아래 데이터를 확인하여 직원 테이블에 정보를 입력해주세요. 

자바에서 넘어온 데이터 (입력되지 않은 성별 컬럼의 경우 NULL 값이 들어가도록 해주세요.) 
[
 직원ID      : 'A1000' 
 패스워드    :  'hello1000'  
 이름        : '신캐릭' 
 나이        :  29
 입사일시    :  현재시점을 넣을 수 있게 SYSDATE 로 값을 넣어주세요. 
 주민등록번호 : '950120-1566221'
 연봉        : 3500 
 부서id      : 'D006' 
] 
*/ 
SELECT * FROM 직원;

INSERT INTO 직원(
       직원ID
     , 패스워드
     , 이름
     , 나이
     , 입사일시
     , 주민등록번호
     , 연봉
     , 부서ID
) VALUES (
       'A1000'
     , 'hello1000'
     , '신캐릭'
     , 29
     , SYSDATE --등록한 시점
     , '950120-1566221'
     , 3500
     , 'D006'
) ;
COMMIT;

/*
2. 위에서 입력한 'A1000' 직원의 정보를 수정해주세요. 
수정할 데이터 
[ 
  성별 : '남' 
  부서ID : 'D005' 
  패스워드 : 'hello1000!!!' 
] 
*/ 
UPDATE 직원 
   SET 성별 = '남'
     , 부서ID = 'D005'
     , 패스워드 = 'hello1000!!!'
 WHERE 직원ID = 'A1000';
 
COMMIT;
 
SELECT * FROM 직원;




/*
3. 위에서 입력한 'A1000' 직원이 오늘 퇴사를 하였습니다. 
   해당 직원정보를 직원 테이블에서 삭제(DELETE) 해주세요. 
*/ 
DELETE FROM 직원
 WHERE 직원ID = 'A1000';
 
SELECT * FROM 직원;

COMMIT;




/* 
4. 퇴사한 A1000 대신에 새로운 직원이 입사를 하였습니다. 

   이번에는 직원정보와 함께 연락처 정보와 주소 정보가 함께 들어왔습니다. 

   반드시 아래의 순서로 데이터를 INSERT 해주세요 
   (1)직원 테이블 -> (2)직원연락처 테이블 -> (3)직원주소 테이블 

   결과적으로 3개의 테이블에 한 행씩 입력되어야 합니다. 
   3개의 테이블에 데이터가 모두 입력되면 COMMIT; 를 해주세요 . 
   
   힌트 : 핸드폰번호는 구분코드를 '휴대폰' 으로 입력 
          집주소는 구분코드를 '집' 으로 입력 

[
 직원ID      : 'A2000' 
 패스워드    :  'hello222'  
 이름        : '이홍시' 
 나이        :  40  
 입사일시    :  현재시점을 넣을 수 있게 SYSDATE 로 값을 넣어주세요. 
 주민등록번호 : '830220-1566221'
 연봉        : 5600 
 부서id      : 'D006' 
 핸드폰번호   : '010-5959-1111' 
 집주소      : '운천로 123' 
] 
*/
INSERT INTO 직원 (
       직원ID
     , 패스워드
     , 이름
     , 나이
     , 입사일시
     , 주민등록번호
     , 연봉
     , 부서ID
) VALUES (
       'A2000'
     , 'hello222'
     , '이홍시'
     , 40
     , SYSDATE
     , '830220-1566221'
     , 5600
     , 'D006'
) ;

SELECT * FROM 직원;

SELECT * FROM 직원연락처;

INSERT INTO 직원연락처 (
       직원ID
     , 구분코드
     , 연락처
) VALUES (
       'A2000'
      , '휴대폰'
      , '010-5959-1111'
);
COMMIT;

SELECT * FROM 직원주소;

INSERT INTO 직원주소 (
       직원ID
     , 구분코드
     , 주소
) VALUES (
       'A2000'
     , '집'
     , '운천로 123' 
) ;

COMMIT;





/*
5. 2023년을 맞이해 성적표 테이블의 모든 데이터를 초기화하려고 합니다. 
   성적표 테이블의 모든 데이터를 삭제해주세요. 
*/
SELECT * FROM 성적표;

DELETE FROM 성적표;

COMMIT;




/*
6. 직원ID가 'A2000' 인 직원의 집전화 번호는 '062-123-1111' 입니다. 
   이 데이터를 직원연락처 테이블에 입력해주세요. 
*/ 
SELECT * FROM 직원연락처;

UPDATE 직원연락처
   SET 구분코드 = '집전화'
     , 연락처 = '062-123-1111'
 WHERE 직원ID = 'A2000';
 
COMMIT;


/*
7. 직원 'A2000' 이 가지고 있는 휴대폰 연락처는 '010-5959-1111' 입니다. 
   그런데 이번에 휴대폰을 바꿔서 번호가 '010-3333-5959' 로 변경이 되었습니다. 
   변경된 핸드폰 번호가 반영되도록 휴대폰 연락처를 수정해주세요.  
*/ 
SELECT * FROM 직원연락처;

UPDATE 직원연락처
   SET 연락처 = '010-3333-5959'
 WHERE 직원ID = 'A2000'
   AND 구분코드 = '휴대폰';
   
COMMIT;



/*
8. 직원주소 테이블에서 직원ID 가 'A0011' , 'A0012' , 'A0013' , 'A2000' 인 대상을 삭제해주세요 
   힌트 : IN 연산자 활용 
   DELETE 의 경우 조건에 맞는 행이 없으면 0행이 삭제되었습니다 라고 출력되고 오류를 발생시키지는 않습니다. (즉, 정상케이스입니다) 
*/ 
SELECT * FROM 직원주소;

DELETE FROM 직원주소
 WHERE 직원ID IN('A0011', 'A0012', 'A0013', 'A2000');

COMMIT;



/*
9. 직원연락처 테이블에서 직원ID 가 'A0011' , 'A0012' , 'A0013' , 'A2000' 인 대상을 삭제해주세요 
   힌트 : IN 연산자 활용 
*/ 
SELECT * FROM 직원연락처;

DELETE FROM 직원연락처
 WHERE 직원ID IN ('A0011', 'A0012', 'A0013', 'A2000');
 
COMMIT;



/*
10. 직원 테이블에서 직원ID 가 'A0011' , 'A0012' , 'A0013' , 'A2000' 인 대상을 삭제해주세요 
   힌트 : IN 연산자 활용 
*/ 
SELECT * FROM 직원;

DELETE FROM 직원
 WHERE 직원ID IN ('A0011', 'A0012', 'A0013', 'A2000');
 
COMMIT;



/* 
11. 수강생 S0001 이 최근 시험을 봐서 국어 , 수학 , 영어 점수가 각각 90 , 85 , 70 점을 맞았습니다.
    이 정보를 성적표 테이블에 INSERT 해주세요. 
    
    예) 학생ID는 문자형 , 과목은 문자형 , 성적은 숫자형 컬럼입니다. 
    S0001  국어  90
    S0001  수학  85
    S0001  영어  70
*/
SELECT * FROM 성적표;

INSERT INTO 성적표 (
       학생ID
     , 과목
     , 성적
) VALUES (
       'S0001'
     , '국어'
     , 90
) ;

INSERT INTO 성적표 (
       학생ID
     , 과목
     , 성적
) VALUES (
       'S0001'
     , '수학'
     , 85
) ;

INSERT INTO 성적표 (
       학생ID
     , 과목
     , 성적
) VALUES (
       'S0001'
     , '영어'
     , 70
) ;

COMMIT;



/* 
12. 수강생 S0001 이 본 시험에서 영어 과목에 문제가 생겨 처리 결과, 70점에서 80점으로 점수가 상승했습니다. 
    이를 반영하기 위해 S0001 학생의 영어 성적을 80으로 변경해주세요.     
*/ 
SELECT * FROM 성적표;

UPDATE 성적표
   SET 성적 = 80
 WHERE 학생ID = 'S0001'
   AND 과목 = '영어';

COMMIT;

 

답안

/* DML 문법 문제를 풀이합니다 

   !!주의사항 
   ==> 각 문제를 정상적으로 풀고 나면 commit; 명령을 실행해주세요.
       그래야 데이터가 영구적으로 테이블에 반영이 됩니다. 

   예)
   insert into 테이블 ..  update 테이블 .. / delete 테이블 ..  
   처리 완료! 
   commit ;  --데이터를 영구반영  
   
   ==> 혹시 데이터를 잘못 처리했다면 commit ; 명령어를 입력하기 전에 rollback ; 명령으로 되돌릴 수 있습니다. 
   예)
   insert into 테이블 .. / update 테이블 .. / delete 테이블 ..  (데이터를 잘못 넣었다면?) 
   rollback ; --데이터를 마지막 commit 시점으로 되돌려줌    
*/ 


/*
1. 오늘 새로운 직원이 입사하였습니다. 아래 데이터를 확인하여 직원 테이블에 정보를 입력해주세요. 

자바에서 넘어온 데이터 (입력되지 않은 성별 컬럼의 경우 NULL 값이 들어가도록 해주세요.) 
[
 직원ID      : 'A1000' 
 패스워드    :  'hello1000'  
 이름        : '신캐릭' 
 나이        :  29
 입사일시    :  현재시점을 넣을 수 있게 SYSDATE 로 값을 넣어주세요. 
 주민등록번호 : '950120-1566221'
 연봉        : 3500 
 부서id      : 'D006' 
] 
*/ 

INSERT INTO 직원 (
       직원ID 
     , 패스워드
     , 이름
     , 나이
     , 입사일시
     , 주민등록번호
     , 연봉 
     , 부서ID 
) VALUES (
       'A1000'
     , 'hello1000'
     , '신캐릭'
     , 28  
     , SYSDATE 
     , '950120-1566221'
     , 3500 
     , 'D006'
); 

COMMIT; 

/*
2. 위에서 입력한 'A1000' 직원의 정보를 수정해주세요. 
수정할 데이터 
[ 
  성별 : '남' 
  부서ID : 'D005' 
  패스워드 : 'hello1000!!!' 
] 
*/ 

UPDATE 직원 
   SET 성별 = '남' 
     , 부서ID = 'D005' 
     , 패스워드 = 'hello1000!!!' 
 WHERE 직원ID = 'A1000' ;
  
COMMIT; 


/*
3. 위에서 입력한 'A1000' 직원이 오늘 퇴사를 하였습니다. 
   해당 직원정보를 직원 테이블에서 삭제(DELETE) 해주세요. 
*/ 

DELETE FROM 직원
 WHERE 직원ID = 'A1000'; 
 
COMMIT; 



/* 
4. 퇴사한 A1000 대신에 새로운 직원이 입사를 하였습니다. 

   이번에는 직원정보와 함께 연락처 정보와 주소 정보가 함께 들어왔습니다. 

   반드시 아래의 순서로 데이터를 INSERT 해주세요 
   (1)직원 테이블 -> (2)직원연락처 테이블 -> (3)직원주소 테이블 

   결과적으로 3개의 테이블에 한 행씩 입력되어야 합니다. 
   3개의 테이블에 데이터가 모두 입력되면 COMMIT; 를 해주세요 . 
   
   힌트 : 핸드폰번호는 구분코드를 '휴대폰' 으로 입력 
          집주소는 구분코드를 '집' 으로 입력 

[
 직원ID      : 'A2000' 
 패스워드    :  'hello222'  
 이름        : '이홍시' 
 나이        :  40  
 입사일시    :  현재시점을 넣을 수 있게 SYSDATE 로 값을 넣어주세요. 
 주민등록번호 : '830220-1566221'
 연봉        : 5600 
 부서id      : 'D006' 
 핸드폰번호   : '010-5959-1111' 
 집주소      : '운천로 123' 
] 
*/


INSERT INTO 직원 (
       직원ID 
     , 패스워드
     , 이름
     , 나이
     , 입사일시
     , 주민등록번호
     , 연봉 
     , 부서ID 
) VALUES (
       'A2000'
     , 'hello222'
     , '이홍시'
     , 41
     , SYSDATE 
     , '830220-1566221'
     , 5600 
     , 'D006'
); 

INSERT INTO 직원연락처 (
       직원ID
     , 구분코드
     , 연락처 
) VALUES (
       'A2000' 
     , '휴대폰'
     , '010-5959-1111' 
) ; 

INSERT INTO 직원주소 (
       직원ID
     , 구분코드
     , 주소 
) VALUES (
       'A2000' 
     , '집'
     , '운천로 123'
) ; 


COMMIT; 



/*
5. 2023년을 맞이해 성적표 테이블의 모든 데이터를 초기화하려고 합니다. 
   성적표 테이블의 모든 데이터를 삭제해주세요. 
*/

DELETE FROM 성적표; 
COMMIT; 


/*
6. 직원ID가 'A2000' 인 직원의 집전화 번호는 '062-123-1111' 입니다. 
   이 데이터를 직원연락처 테이블에 입력해주세요. 
*/ 
INSERT INTO 직원연락처 (
       직원ID 
     , 구분코드
     , 연락처  
) VALUES ( 
        'A2000' 
      , '집전화'
      , '062-123-1111'
) ; 

COMMIT; 


/*
7. 직원 'A2000' 이 가지고 있는 휴대폰 연락처는 '010-5959-1111' 입니다. 
   그런데 이번에 휴대폰을 바꿔서 번호가 '010-3333-5959' 로 변경이 되었습니다. 
   변경된 핸드폰 번호가 반영되도록 휴대폰 연락처를 수정해주세요.  
*/ 
UPDATE 직원연락처
   SET 연락처 = '010-3333-5959' 
 WHERE 직원ID = 'A2000'
   AND 구분코드 = '휴대폰'; 

COMMIT; 


/*
8. 직원주소 테이블에서 직원ID 가 'A0011' , 'A0012' , 'A0013' , 'A2000' 인 대상을 삭제해주세요 
   힌트 : IN 연산자 활용 
   DELETE 의 경우 조건에 맞는 행이 없으면 0행이 삭제되었습니다 라고 출력되고 오류를 발생시키지는 않습니다. (즉, 정상케이스입니다) 
*/ 
DELETE FROM 직원주소
 WHERE 직원ID IN ( 'A0011' , 'A0012' , 'A0013' , 'A2000');
COMMIT;


/*
9. 직원연락처 테이블에서 직원ID 가 'A0011' , 'A0012' , 'A0013' , 'A2000' 인 대상을 삭제해주세요 
   힌트 : IN 연산자 활용 
*/ 
DELETE FROM 직원연락처
 WHERE 직원ID IN ( 'A0011' , 'A0012' , 'A0013' , 'A2000');

COMMIT; 


/*
10. 직원 테이블에서 직원ID 가 'A0011' , 'A0012' , 'A0013' , 'A2000' 인 대상을 삭제해주세요 
   힌트 : IN 연산자 활용 
*/ 
DELETE FROM 직원
 WHERE 직원ID IN ( 'A0011' , 'A0012' , 'A0013' , 'A2000');
COMMIT; 


/* 
11. 수강생 S0001 이 최근 시험을 봐서 국어 , 수학 , 영어 점수가 각각 90 , 85 , 70 점을 맞았습니다.
    이 정보를 성적표 테이블에 INSERT 해주세요. 
    
    예) 학생ID는 문자형 , 과목은 문자형 , 성적은 숫자형 컬럼입니다. 
    S0001  국어  90
    S0001  수학  85
    S0001  영어  70
*/ 

INSERT INTO 성적표 (
       학생ID 
     , 과목
     , 성적
) VALUES (
       'S0001'
     , '국어'
     , 90 
); 

INSERT INTO 성적표 (
       학생ID 
     , 과목
     , 성적
) VALUES (
       'S0001'
     , '수학'
     , 85 
); 

INSERT INTO 성적표 (
       학생ID 
     , 과목
     , 성적
) VALUES (
       'S0001'
     , '영어'
     , 70 
); 

COMMIT; 

/* 
12. 수강생 S0001 이 본 시험에서 영어 과목에 문제가 생겨 처리 결과, 70점에서 80점으로 점수가 상승했습니다. 
    이를 반영하기 위해 S0001 학생의 영어 성적을 80으로 변경해주세요.     
*/ 

UPDATE 성적표
   SET 성적 = 80 
 WHERE 학생ID = 'S0001' 
   AND 과목 = '영어' ;

COMMIT;

'Computer Engineering > DB_Oracle' 카테고리의 다른 글

TCL  (0) 2023.03.08
DCL  (0) 2023.03.08
DML문법  (0) 2023.03.06
ORDER BY  (0) 2023.03.03
HAVING  (0) 2023.03.03

댓글