SQL - ALTER 테이블 수정, 시퀀스

구름·2022년 12월 17일
0

SQL

목록 보기
7/7
post-thumbnail

✍️ALTER

: 테이블 수정
데이터 수정,삭제 가능

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);

NOT NULL 조건 추가

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;

테이블의 컬럼명 변경 (⚡ RENAME ~ TO )

alter table dept20
rename column DNO to D_no;

✍️문자열을 저장

char : 자릿수가 저장된 컬럼은 char,주민번호,은행비밀번호(4자리)

— 성능이 빠르다. 하드공간을 낭비 할 수 있다.

❗ (선언된 데이터값이 지정된 공간보다 작다면, 공간이 남은상태로 저장이됨)

varchar L 자릿수를 알 수 없는 경우, 주소,email

—char보다 성능이 떨어짐. 하드공간 낭비를 줄일 수 있음

❗ (선언된 데이터 값만 하드공간에 저장)


(제약조건이 젤 중요❗..ㅠㅠ 까먹지말자구,,,)

제약조건

: 테이블에 유효하지 않은(부적절한) 데이터가 입력되는 것을 방지 하기 위해서 테이블 생성시 각 털럼에 대해 정의하는 규칙

구분설명
NOT NULL컬럼에 NULL 값 포함 x
UNIQUE테이블의 모든 로우에 대해서 유일한 값을 갖도록 한다.
PRIMARY KEY테이블의 각 행을 식별하기 위한 것으로 NULL 과 중복된 값을 모두 허용하지 않는다. 즉 NOT NULL 조건과 UNIQUE 조건을 결합한 형태
FOREIGN KEY참조되는 테이블에 칼럼값이 항상 존재해야한다.
CHECK저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만 허용이 가능함 EX) ( SALARY>0 )

두 테이블의 제약조건 한번에 확인 (❗ user_constraints)

select * from user_constraints
where table_name in ( 'EMPLOYEE','EMP_COPY01');

Foreign key : 부모 테이블의 primary Key, Unique 를 참조함.

alter table emp_copy01
add
constraint emp_COPY01_DNO_FK foreign key (dno) references dept_copy01(dno);

🚨제약조건 제거 (ALTER DROP)

: FK key를 삭제하려면, PK key를 먼저 지운 뒤 삭제해야한다.

ALTER TABLE 테이블명
DROP <제약조건이름>
--FK 가 참조하는 테이블의 제약조건을 제거시 Pk를 먼저 제거후 해당 테이블의 제약 조건 제거
  • ENO 컬럼에 할당된 primary key이름으로 제거
alter table emp_copy01
    drop primary key;

🚨 FK key를 삭제하려면, PK key를 먼저 지운 뒤 삭제해야한다.

🚨 FK가 참조하는 테이블을 강제로 제거 (CASCADE)

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 ;

✍️ 시퀀스

: 자동번호 발생기 (컬럼의 값을 자동으로 증가 시킴)

  1. 고유한 번호가 할당됨
  2. 시퀀스를 생성, 테이블의 특정 컬럼에 사용
  3. 출력된 시퀀스는 뒤로 되돌다 가지 않는다. (기존의 큰 번호에 +1)

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')

🔻실행결과

profile
내가 보려고 하는 업데이트

0개의 댓글