/* 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;
댓글