일례로 많은 SQL문 중에 해당 Column이 쓰이고 있는데 변경을 하게되면
해당 SQL문은 모두 error를 return 할 것이다.
신중히 사전,사후 검토가 필요할 것이다.
ex>
이름 널? 유형
----------------------------------------- -------- -------------
BBB VARCHAR2(5)
SQL> insert into test values(12.34,'abcde');
---------- -----
12.34 abcde
SQL> alter table test modify (aaa number(3,2));
alter table test modify (aaa number(3,2))
*
1행에 오류:
ORA-01440: 정도 또는 자리수를 축소할 열은 비어 있어야 합니다
alter table test modify (bbb varchar2(4))
*
1행에 오류:
ORA-01441: 일부 값이 너무 커서 열 길이를 줄일 수 없음
이름 널? 유형
----------------------------------------- -------- --------------
BBB VARCHAR2(10)
---------- ----------
12.34 abcde
==> 기존에 있던 컬럼의 속성 크기보다 작게는 변경이 불가하다. 단 변경하려면 해당 컬럼에 데이터를 모두 지운후에는 변경이 가능하다. 또한 속성을 다른게 변경하는것도 데이터를 모두 지운후에 가능하다.
2. 컬럼 추가
ALTER TABLE 테이블명 ADD (컬럼명 속성명);
ex>
SQL> alter table test add (ddd number(3));
테이블이 변경되었습니다.
SQL> desc test;
이름 널? 유형
----------------------------------------- -------- ---------------
AAA NUMBER(4,2)
BBB VARCHAR2(10)
DDD NUMBER(3)
3. 컬럼명 변경
ALTER TABLE 테이블명 RENAME COLUMN old_컬럼명 TO new_컬럼명;
ex>
SQL> desc test;
이름 널? 유형
----------------------------------------- -------- -----------
AAA NUMBER(4,2)
BBB VARCHAR2(10
DDD NUMBER(3)
SQL> alter table test rename column ddd to ccc;
테이블이 변경되었습니다.
SQL> desc test;
이름 널? 유형
----------------------------------------- -------- ---------------
AAA NUMBER(4,2)
BBB VARCHAR2(10)
CCC NUMBER(3)
4. 컬럼 삭제(oracle 8i이후부터 가능)
ALTER TABLE 테이블명 DROP ( 컬럼명 );
ex>
SQL> desc test;
이름 널? 유형
----------------------------------------- -------- ----------------
AAA NUMBER(4,2)
BBB VARCHAR2(10)
CCC NUMBER(3)
SQL> alter table test drop (ccc);
테이블이 변경되었습니다.
SQL> desc test;
이름 널? 유형
----------------------------------------- -------- ----------------
AAA NUMBER(4,2)
BBB VARCHAR2(10)
5.제약조건 삭제 및 설정
삭제 : ALTER TABLE 테이블명 DROP PRIMARY KEY;
설정 : ALTER TABLE 테이블명 ADD PRIMARY KEY(컬럼명);
ex>
SQL> select * from test;
선택된 레코드가 없습니다.
SQL> desc test;
이름 널? 유형
----------------------------------------- -------- ------------------
AAA NUMBER(4,2)
BBB VARCHAR2(10)
SQL> alter table test add(ccc number primary key); <---CCC 컬럼 primary key 지정해서 추가
테이블이 변경되었습니다.
SQL> desc test;
이름 널? 유형
----------------------------------------- -------- ------------------
AAA NUMBER(4,2)
BBB VARCHAR2(10)
CCC NOT NULL NUMBER <-----primary key
SQL> alter table test drop primary key; <----뒤에 cascade 옵션 사용가능
테이블이 변경되었습니다.
SQL> desc test;
이름 널? 유형
----------------------------------------- -------- ----------------
AAA NUMBER(4,2)
BBB VARCHAR2(10)
CCC NOT NULL NUMBER <---primary key 해제되고 not null조건은 남아있는 상태
다시 CCC컬럼을 primary key로 지정하려면
SQL> alter table test add primary key(ccc);
테이블이 변경되었습니다.
SQL> desc test;
이름 널? 유형
----------------------------------------- -------- ----------------
AAA NUMBER(4,2)
BBB VARCHAR2(10)
CCC NOT NULL NUMBER
'Oracle > admin' 카테고리의 다른 글
nls_char ,spfile 위치 확인 (0) | 2015.09.14 |
---|---|
DB Buffer cache, Shared Pool 초기화 (0) | 2015.09.14 |
Control file 재생성 (0) | 2015.09.14 |
SQL TRACE ,tkprof (0) | 2015.09.14 |
Tuning 참고 (0) | 2015.09.14 |