2008년 5월 14일.
Posted 2008/05/14 19:39, Filed under: Oracle9i*** 5장에서 생성한 E학번 테이블과 D학번 테이블 사용 ***
1. E학번 테이블의 manager_id 칼럼을 삭제하여라.
SQL> alter table E200707083
2 drop column manager_id;
Table altered.
2. E학번 테이블과 D학번 테이블에 데이터를 추가하여라.
1) D학번 테이블에 NO는 10이고 NAME은 Finance인 행을 추가하여라.
SQL> insert into D200707083 (no,name) values (10, 'Finance');
1 row created.
2) E학번 테이블에 두 개의 행을 추가하여라. 첫 번째 사원은 DEPTID가 10인 Donna Smith(LNAME, FNAME)이고 ID는 200이다. 두 번째 사원은 DEPTID가 54인 Albert Jones이고 ID는 201이다. 결과와 그 결과의 이유를 설명하여라.
Result 1)
SQL> insert into e200707083 (deptid,lname, fname, id)
2 values (10, 'Donna', 'Smith', 200);
1 row created.
Result 2)
SQL> insert into e200707083 (deptid, lname, fname, id)
2 values (52, 'Albert', 'Jones', 201);
insert into e200707083 (deptid, lname, fname, id)
*
ERROR at line 1:
ORA-02291: integrity constraint (Y200707083.EMP200707083C_DEPTID_FK) violated -
parent key not found
3) NO가 10, NAME이 Marketing인 데이터를 D학번 테이블에 추가하여라. 결과와 그 결과의 이유를 설명하여라.
SQL> insert into d200707083 (no,name) values (10, 'Marketing');
insert into d200707083 (no,name) values (10, 'Marketing')
*
ERROR at line 1:
ORA-00001: unique constraint (Y200707083.DEPT200707083C_NO_PK) violated
Reason : NO 컬럼에 PK키로 지정되어 있고, 중복된 값이 들어가 있기 때문에.
4) 치환매개변수를 이용하여 D학번 테이블에 Marketing은 NO를 37번, Sales는 54번, Personnel은 75번을 추가하여라.
SQL> insert into d200707083 (no, name)
2 values (&no, '&name');
Enter value for no: 37
Enter value for name: Marketing
old 2: values (&no, '&name')
new 2: values (37, 'Marketing')
1 row created.
SQL> /
Enter value for no: 54
Enter value for name: Sales
old 2: values (&no, '&name')
new 2: values (54, 'Sales')
1 row created.
SQL> /
Enter value for no: 75
Enter value for name: Personnel
old 2: values (&no, '&name')
new 2: values (75, 'Personnel')
1 row created.
5) Albert Jones의 DEPTID는 54이고 ID는 201, Harry Chin은 각각 75와 202, Rey Guiliani는 37과 203인 행을 E학번 테이블에 추가하여라.
SQL> insert into e200707083 (lname, fname, deptid,
2 values ('&lname', '&fname', &deptid, &id)
3 ;
Enter value for lname: Albert
Enter value for fname: Jones
Enter value for deptid: 54
Enter value for id: 201
old 2: values ('&lname', '&fname', &deptid, &id)
new 2: values ('Albert', 'Jones', 54, 201)
1 row created.
SQL> /
Enter value for lname: Harry
Enter value for fname: Chin
Enter value for deptid: 75
Enter value for id: 202
old 2: values ('&lname', '&fname', &deptid, &id)
new 2: values ('Harry', 'Chin', 75, 202)
1 row created.
SQL> /
Enter value for lname: Rey
Enter value for fname: Guiliani
Enter value for deptid: 37
Enter value for id: 203
old 2: values ('&lname', '&fname', &deptid, &id)
new 2: values ('Rey', 'Guiliani', 37, 203)
1 row created.
SQL> select *
2 from e200707083
3 ;
ID LNAME FNAME DEPTID
---------- ------------------------- ------------------------- ----------
200 Donna Smith 10
201 Albert Jones 54
202 Harry Chin 75
203 Rey Guiliani 37
6) 추가한 데이터가 영구적으로 반영되도록 하여라.
SQL> commit;
Commit complete.
3. E학번 테이블과 D학번 테이블의 데이터를 변경하고 삭제하여라.
1) D학번 테이블의 Personnel NAME을 Human Resources로 변경하여라.
SQL> update d200707083 set name = 'Human Resources'
2 where name = 'Personnel'
3 ;
1 row updated.
2) E학번 테이블의 202번 LNAME을 Korsgaard로 변경하여라.
SQL> update e200707083 set lname = 'Korsgaard'
2 where id = 202;
1 row updated.
3) D학번 테이블에서 NO가 54인 데이터를 삭제하여라. 결과와 그 결과의 이유를 설명하여라.
SQL> delete from d200707083
2 where no = 54
3 ;
delete from d200707083
*
ERROR at line 1:
ORA-02292: integrity constraint (Y200707083.EMP200707083C_DEPTID_FK) violated -
child record found
Reason : D학번 테이블의 DEPTID 값이 FK 값으로 지정되어 있기 때문에.
4) E학번 테이블에서 Albert Jones를 삭제하여라.
SQL> delete from e200707083
2* where lname = 'Albert' and fname = 'Jones'
SQL> /
1 row deleted.
5) D학번 테이블에서 NO가 54인 데이터를 다시 삭제하여라. 결과와 그 결과의 이유를 설명하여라.
SQL> delete from d200707083
2 where no = 54
3 ;
1 row deleted.
Reason : FK로 지정되어 있는 값이 먼저 삭제되었기 때문에.
6) 변경한 데이터가 영구적으로 반영되도록 하여라.
SQL> commit;
Commit complete.
'Oracle9i' 카테고리의 다른 글
| 2008년 5월 14일. (0) | 2008/05/14 |
|---|---|
| SQL*PLUS (0) | 2008/05/08 |
| 2008년 4월 2일. (0) | 2008/05/07 |
| 2008년 3월 28일. (0) | 2008/05/07 |
Trackback URL : http://trustnoone.tistory.com/trackback/676
이올린에 북마크하기
이올린에 추천하기

