다연이네

[days08] DDL - create, alter, drop와 테이블 기초 본문

Oracle

[days08] DDL - create, alter, drop와 테이블 기초

 다연  2020. 11. 9. 18:23
반응형

1. tbl_member 테이블 존재 확인

select * 
from tabs
where table_name like 'TBL_M%';

2. 테이블 구조 확인

desc tbl_member;

3. 테이블 삭제

drop table 테이블명 purge;

4. 테이블명 변경

테이블명 tbl_member을 tbl_student 변경

rename tbl_member to tbl_student;

5. 새로운 컬럼(열) 추가

   연락처 컬럼 tel varchar2(11), 비고 컬럼 etc varchar2(200) 추가
     -> 기존 테이블 삭제 후 새로 생성하지 않고 수정 DDL( create, alter, drop )
    alter table ... add : 컬럼 또는 제약조건 추가할 때 사용
   컬럼 추가시 테이블의 행이 존재한다면, 새로 추가되는 컬럼은 이미 존재하는 모든 행의 값은 NULL로 초기화한다.

alter table tbl_member
add (tel varchar2(11), etc varchar2(200));
--add tel varchar2(11) 한개 컬럼 추가시 괄호()생략 가능

6. 컬럼 사이즈 수정

  - 변경 대상 컬럼에 데이터가 없거나 null 값만 존재할 경우에는 size를 줄일 수 있다.
  - 컬럼의 기본값 변경은 그 이후에 삽입되는 행부터 영향을 준다.
  - 컬럼이름의 직접적인 변경은 불가능하다.
  - 컬럼이름의 변경은 서브쿼리를 통한 테이블 생성시 alias를 이용하여 변경이 가능하다.

alter table tbl_member
modify(tel varchar2(11), etc varchar2(100));

7. 컬럼명 수정

ETC 컬럼명을 MEMO 라고 수정

--1. 별칭 사용하면 되니까 굳이 수정할 필요 없음
select etc as "memo"
from tbl_member; 
--2. 굳이 바꾸겠다면
alter table tbl_member
rename column etc to memo;

8. 컬럼 삭제

테이블 삭제는 drop table 테이블명 purge;

alter table tbl_member
drop column memo;

9. truncate문과 delete문은 모두 레코드(행)를 삭제하는 역할이다.

delete from salgrade;
--5개 행 이(가) 삭제되었습니다.

delete from salgrade
where hisal>2000;
--조건 지정 가능

truncate문과 delete문 차이점은 ? 

 - delete는 레코드는 삭제하지만 commit, rollback 가능하다. (되돌리기 가능)

    where 조건절을 붙여 원하는 레코드만 삭제가 가능하다.
 - truncate 하면 완전히 삭제한다.

    특정 레코드가 아닌 무조건 모든 레코드를 삭제한다.

- MS/SQL Server는 delete하면 롤백이 불가능하기 때문에 주의가 필요하다 !

 

ORA-02292: integrity constraint (SCOTT.FK_DEPTNO) violated - child record found 

 

delete했을 때 위의 오류가 뜨는 이유 

- Foreign Key 무결성 제약조건에 위배되기 때문이다.
- emp(deptno FK) , dept(deptno PK) 관계가 맺어져 있다.
- dept의 부서번호를 emp가 참조하도록 되어있는데 삭제하면 관계를 맺을 수 없기 떄문에 삭제가 불가능하다.
- 관계를 끊어야 (제약조건을 삭제해야) 삭제가 가능하다.

 

 

 

반응형

'Oracle' 카테고리의 다른 글

[days08] any, some 연산자  (0) 2020.11.09
[days08] DML - 테이블에 데이터 추가, 복사, 수정 등 + 제약조건  (0) 2020.11.09
[days08] 서브쿼리  (0) 2020.11.09
[days07] 달력 그리기  (0) 2020.11.06
[days07] level 의사컬럼  (0) 2020.11.06
Comments