본문 바로가기
연습 문제

예제 따라가며 쉽게 배우는 오라클 연습 문제 p.226

by 알기 쉬운 코딩 사전 2023. 1. 3.
반응형

연습문제 sql은 모두 제가 직접 작성한 것이므로 오타, 오답이 존재할 수 있습니다.

궁금하신 점이 추가로 있을 시에는 문의하시면 최대한 답변드리겠습니다.

 

1. E학번 테이블의 managerid 칼럼을 삭제하여라.

 

[답]

ALTER TABLE e
DROP COLUMN managerid;

 

2. E학번 테이블과 D학번 테이블에 데이터를 추가하여라.

 

1) D학번 테이블에 NO는 10이고 NAME은 Finance인 행을 추가하여라.

 

[답]

insert into d(no, name)
values(10, 'Finance');

 

+) 데이터를 확인하여라.

 

[답]

select *
from d;

 

2) E학번 테이블에 두 개의 행을 추가하여라. 첫 번째 사원은 DEPTID가 10인 Donna Smith(LNAME, FNAME)이고 ID는 200이다. 두 번째 사원은 DEPTID가 54인 Albert Jones이고 ID는 201이다. 결과와 그 결과의 이유를 설명하여라.

 

[답]

DEPTID가 10인 Donna Smith(LNAME, FNAME) 첫 번째 사원 추가

insert into e
values(200, 'Donna', 'Smith', 10);
데이터 확인

select *
from e;
insert into e
values(201, 'Albert', 'Jones', 54);

e 테이블의 deptid 칼럼은 d 테이블의 no 칼럼을 참조하는데,
d 테이블의 no 칼럼에 54 데이터가 없기 때문에 e 테이블의 deptid 칼럼에 54를 추가할 수 없다.

 

3) NO가 10, NAME이 Marketing인 데이터를 D학번 테이블에 추가하여라. 결과와 그 결과의 이유를 설명하여라.

 

[답]

insert into d(no, name)
values(10, 'Marketing');

d 테이블의 no 칼럼은 pk로 설정되어 있는데,
이미 존재하는 10 데이터를 no 칼럼에 삽입하면 중복되므로 에러가 된다.

 

4) 치환매개변수를 이용하여 D학번 테이블에 Marketing인 데이터를 D학번 테이블에 추가하여라. 결과와 그 결과의 이유를 설명하여라.

 

[답]

insert into d(no, name)
values(&no, '&name');

37
Marketing

/
54
Sales

/
75
Personnel

select *
from d;

 

5) Albert Jones의 DEPTID는 54이고 ID는 201, Harry Chin은 각각 75와 202, Rey Guiliani는 37과 203인 행을 E학번 테이블에 추가하여라.

 

[답]

insert into e
values(&id, '&lname', '&fname', '&deptid');

201
Albert
Jones
54

/
202
Harry
Chin
75

/
203
Rey
Guiliani
37

select *
from e;

 

6) 추가한 데이터가 영구적으로 반영되도록 하여라.

 

[답]

commit;

 

3. E학번 테이블과 D학번 테이블의 데이터를 변경하고 삭제하여라.

 

1) D학번 테이블의 Personnel Name을 Human Resources로 변경하여라.

 

[답]

D학번 테이블의 Personnel Name을 Human Resources로 변경

update d
set name = 'Human Resources'
where name = 'Personnel';

 

+) 테이블의 데이터를 확인

 

[답]

select *
from d;

 

2) E학번 테이블의 202번 LNAME을 Korsgaard로 변경하여라.

 

[답]

update e
set lname = 'Korsgaard'
where id = 202;

 

+) 테이블의 데이터를 확인

 

[답]

select *
from d;

 

 

3) D학번 테이블에서 NO가 54인 데이터를 삭제하여라. 결과와 그 결과의 이유를 설명하여라.

 

[답]

delete from d
where no = 54;

D 테이블의 NO 칼럼 데이터 54는 E 칼럼의 deptid 데이터 54가 참조하고 있으므로(자식이 있으므로) 삭제할 수 없다.

 

4) E학번 테이블에서 Albert Jones를 삭제하여라.

 

[답]

delete from e
where lname = 'Albert' and fname = 'Jones';

 

+) 테이블의 데이터를 확인

 

[답]

select *
from e;

 

5) D학번 테이블에서 NO가 54인 데이터를 다시 삭제하여라. 결과와 그 결과의 이유를 설명하여라.

 

[답]

delete from d
where no = 54;

D 테이블의 NO 칼럼 데이터 54는 E 칼럼의 deptid 칼럼이 참조하고 있는데 54 데이터가(자식이)
없기 때문에 삭제가 가능하다.

 

+) 테이블의 데이터를 확인

 

[답]

select *
from d;

 

6) 변경한 데이터가 영구적으로 반영되도록 하여라.

 

[답]

commit;

 

궁금한 점이 있을 시 덧글 주시면 최대한 답글 드리겠습니다.

반응형

댓글