: 테이블 수정
⏩ 데이터 수정,삭제 가능
Alter Table : 생성된 테이블을 수정
⚡ 컬럼을 추가, 제거, 컬럼의 자료형 수정
⚡ 제약 조건 추가, 제거 , 수정
기존테이블에 컬럼 추가
alter table dept20
add(dirth date);
컬럼에 지정된 자료형 수정 (⚡ MODIFY)
alter table dept20
modify email varchar2(200);
특정 컬럼 삭제(⚡ DROP)
alter table dept20
drop column JUMIN;
컬럼을 삭제 시 레코드가 많을 경우 시스템에 많은 부하가 발생 ⇒ 특정 컬럼의 사용을 중지 후 야간에 작업
임시적으로 컬럼 사용 중지 (야간에 삭제작업하기 전에 주로 이용) (⚡SET)
Alter Table dept20
set unused (email);
alter table emp_copy01
modify job constraint EMP_COPY_JOB_NN not null;
modify job constraint EMP_COPY_JOB_NN not null;
⇒ NOT NULL 조건 추가 시 노란색 하이라이트는 임의 설정 constraint (이름) not null;
alter table dept20
rename column DNO to D_no;
— 성능이 빠르다. 하드공간을 낭비 할 수 있다.
❗ (선언된 데이터값이 지정된 공간보다 작다면, 공간이 남은상태로 저장이됨)
—char보다 성능이 떨어짐. 하드공간 낭비를 줄일 수 있음
❗ (선언된 데이터 값만 하드공간에 저장)
(제약조건이 젤 중요❗..ㅠㅠ 까먹지말자구,,,)
: 테이블에 유효하지 않은(부적절한) 데이터가 입력되는 것을 방지 하기 위해서 테이블 생성시 각 털럼에 대해 정의하는 규칙
구분 | 설명 |
---|---|
NOT NULL | 컬럼에 NULL 값 포함 x |
UNIQUE | 테이블의 모든 로우에 대해서 유일한 값을 갖도록 한다. |
PRIMARY KEY | 테이블의 각 행을 식별하기 위한 것으로 NULL 과 중복된 값을 모두 허용하지 않는다. 즉 NOT NULL 조건과 UNIQUE 조건을 결합한 형태 |
FOREIGN KEY | 참조되는 테이블에 칼럼값이 항상 존재해야한다. |
CHECK | 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만 허용이 가능함 EX) ( SALARY>0 ) |
select * from user_constraints
where table_name in ( 'EMPLOYEE','EMP_COPY01');
alter table emp_copy01
add
constraint emp_COPY01_DNO_FK foreign key (dno) references dept_copy01(dno);
: FK key를 삭제하려면, PK key를 먼저 지운 뒤 삭제해야한다.
ALTER TABLE 테이블명
DROP <제약조건이름>
--FK 가 참조하는 테이블의 제약조건을 제거시 Pk를 먼저 제거후 해당 테이블의 제약 조건 제거
alter table emp_copy01
drop primary key;
🚨 FK key를 삭제하려면, PK key를 먼저 지운 뒤 삭제해야한다.
drop table dept_copy02 cascade constraint purge;
: ALTER TABLE 문에 DISABLE 절을 사용하면 제약조건을 삭제하지 않고 일시적으로 비활성화가능
ALTER TABLE table_name
DISABLE CONSTRAINT contraint_name [CASCADE]
--예시
ALTER TABLE emp_copy
DISABLE CONSTRAINT emp_copy_dno_fk ;
DISABLE 잠시 비활성화 한것을 활성화 하기 위해서 ENABLE을 사용 가능
alter table emp_copy03
enable constraint EMP_COPY03_ENO_PK ;
: 자동번호 발생기 (컬럼의 값을 자동으로 증가 시킴)
EX) 게시판 순번
1. 테이블 만들기
⏩ 시퀀스 만들기
```sql
create sequence seq3
increment by 3
start with 3l
```
→ increment by : 3부터 시작
→ start with 3씩 늘어감
⏩테이블 가져옴(단 레코드 값은 가져오지 않음)
create dept30
as select * from department
⏩테이블에 값 삽입
insert into dept30 values ( seq3.nextval, 'sales' , 'taegu')
🔻실행결과