성장 일기/쌍용교육센터 / / 2023. 1. 27. 17:09

0127/테이블 제약 조건

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/ssangyonng.git에 올려두었습니다.

 

외래키 ( foreign key )

- 부모 테이블에 존재하는 컬럼 값으로만 컬럼을 추가해야 할 때
- 테이블의 관계가 설정된다.( 부모-자식관계 )
- null을 허용한다. ( 값이 없을 수도 있지만 값이 있다면 부모테이블의 컬럼 값으로만 존재 )
- 하나의 테이블은 여러 개의 FK를 가질 수 있다.
- user_constraints DD에서 constraint_type이 ‘R’ 로 설정된다. 

 

- 문법

  컬럼 단위

create table 테이블명(
컬럼명 데이터형(크기) constraint fk_테이블명_컬럼명 references 부모테이블명(컬럼명)
on delete cascade,
... ,
...
);
-- on delete cascade : 부모 테이블의 레코드가 삭제되면
-- 자식 테이블의 레코드가 자동으로 삭제되는 옵션

  테이블 단위

create table 테이블명(
컬럼명 데이터형(크기)
... ,
... ,
constraint fk_테이블명_컬럼명 foreign key(적용 컬럼명) references 부모테이블명(컬럼명)
on delete cascade
);

 

ERD 예시

- 학생 테이블( 학번, 이름, 이메일, 전화번호, 주소, 입력일 )
- 시험점수 테이블( 학번, 과목코드, 과목명, 점수, 시험일자 ) 
    학생은 시험을 반드시 봐야 하는데 여러 과목을 시험 볼 수 있고
    같은 과목은 한번만 시험 볼 수 있다.

학생 테이블, 시험 점수 테이블

 

- 회원테이블 ( 아이디, 이름, 입력일 )

- 배송지 테이블( 아이디, 배송지명, 우편번호, 주소 )

    한 회원은 여러 개의 배송지를 가질 수 있다.

회원 테이블, 배송지 테이블

 

unique

- 값이 없을 수도 있지만, 있다면 유일해야 할 때 ( 카드번호, 이메일... )

- 테이블에서는 여러 개의 unique를 정의할 수 있다.

- user_constraints DD에서 constraint_type이 'U'로 설정된다.

 

- 문법

  컬럼 단위

create table 테이블명(
컬럼명 데이터형( 크기 ) constraint ux_테이블명_컬럼명 unique,
... ,
...
);

  테이블 단위

create table 테이블명(
컬럼명 데이터형( 크기 ),
... ,
... ,
constraint ux_테이블명_컬럼명 unique( 적용 컬럼 )
);

 

Check 조건

- 개발자가 원하는 형태의 값을 받을 때 사용

- 컬럼 단위, 테이블 단위 제약 사항을 설정할 수 있다.

- 주로 제약 사항명을 생략하여 사용

- user_constraints DD에서 constraint_type이 'C'로 설정된다.

 

- 문법

  컬럼단위

create table 테이블명(
컬럼명 데이터형(크기) constraint 제약사항명 check ( 조건 )
-- (constraint 제약사항명)은 주로 생략
-- 조건 : 자신의 컬럼만 가능하고 다른 컬럼을 조건에 넣을 수 없다.
);

  테이블 단위

create table 테이블명 (
컬럼명 데이터형( 크기 ),
... ,
constraint 제약사항명 check ( 조건 )
);

 

not null 조건

- 컬럼의 값을 반드시 입력 받아야할 때

- 제약 사항명을 설정할 수 없다.

- 컬럼 단위 제약 사항으로만 적용할 수 있다.

- user_constraints DD에서 constraint_type이 'C'로 설정된다.

 

- 문법

  컬럼 단위

create table 테이블명(
컬럼명 데이터형( 크기 ) not null
);

 

default

- 컬럼에 null이 입력되는 상황에서 설정한 값으로 입력하고 싶을 때

- 제약사항이 아니어서 user_constraints DD에 들어가지 않는다.

- user_tab_column DD나 user_tab_cols DD에서 확인한다.

 

- 문법

create table 테이블명(
컬럼명 데이터형( 크기 ) default null일 때 입력될 값
);

 

alter

- DDL

- 테이블 관리( 테이블명 변경, 컬럼의 데이터형 변경, 컬럼명 변경, 컬럼 추가 및 삭제 )

- 제약사항 관리( 제약 사항 추가 및 삭제, 제약 사항 활성화 및 비활성화 )

- 계정 관리( 계정 비밀번호를 변경, 계정을 잠그거나 열 수 있다. )

 

* 테이블 관리

  컬럼 추가 

alter table 테이블명 add 컬럼명 데이터형( 크기 ) 제약사항;

  컬럼 삭제

alter table 테이블명 drop column 컬럼명;

  컬럼 데이터 변경

  레코드 존재 O : 동일 데이터형에서 크기 증가만 가능

  레코드 존재 X : 형 자체를 변경할 수 있다.

alter table 테이블명 modify 컬럼명 데이터형 ( 크기 ) 제약사항;

 

  컬럼명 변경

alter table 테이블명 rename column 이전컬럼명 to 변경할컬럼명;

 

  테이블명 변경

rename 원본테이블명 to 변경할테이블명;

 

* 제약사항 관리

  제약사항 추가 ( 테이블 단위 제약 사항 문법 )

  레코드의 구성상 제약사항이 추가되지 않을 수도 있다.

alter table 테이블명 add
constraint 제약사항명 제약사항종류 ( 적용 컬럼 );

  제약사항 삭제

alter table 테이블명 drop constraint 제약사항명;

제약사항 활성화

alter table 테이블명 enable constraint 제약사항명;
-- 레코드의 구성상 제약사항이 활성화되지 않을 수도 있다.

제약사항 비활성화

alter table 테이블명 disable constraint 제약사항명;

 

* 계정관리

  비밀번호 변경

    관리자 계정은 모든 계정의 비밀번호를 변경할 수 있다.

    일반 계정은 자신의 비밀번호만 변경할 수 있다.

alter user 계정명 indentified by 비번;

 

  계정 잠그기, 열기( 관리자 계정만 가능 )

-- 잠금
alter user 계정명 account lock;
-- 열기
alter user 계정명 account unlock;

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0131/계정 권한, 백업 및 복원, view  (0) 2023.01.31
0130/시퀀스, 조인, 정규화  (0) 2023.01.30
0126/집계함수  (0) 2023.01.26
0125/집계함수  (0) 2023.01.25
0120/DBMS 함수  (0) 2023.01.20
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유