[내일배움캠프] 자바 Spring_SQL(5)제약조건_230113

2023. 1. 16. 00:07·스파르타 부트캠프(spring)

5일차: 제약조건

제약조건은 데이터의 무결성을 지키기 위해 제한하는 조건

->데이터의 결함이 없는 상태인 무결성을 유지하기 위해 DBMS가 제공함.

  • 혼란스러운 상황 ex) 같은 아이디가 회원으로 추가 되는 경우, 회원이 탈퇴해서 멤버 테이블에서 삭제되었는데 구매 테이블에서는 여전히 아이디가 존재하는 경우, 등

제약 조건 종류

  • Primary Key 제약조건
  • Foreign Key 제약조건
  • Unique 제약조건
  • Check 제약조건
  • Default 정의
  • Null값 허용

기본키(Primary Key) 제약 조건

: 데이터 베이스 테이블에서 각각의 행/레코드가 유일하게 식별 가능한 값을 가지도록 한다. 고유하게 식별하는 테이블의 필드(field)

  • 기본키는 반드시 고유한 값을 가지고, 기본키로 설정된 열은 NULL값을 가질 수 없다.
  • 하나의 테이블은 오직 한 개의 기본키를 가지는데, 기본 키는 단일 필드 외에도 여러 필드가 하나의 기본 키로 구성되기도 함-> 다중 필드를 기본 키로 사용시 복합 키라고 한다.

예제

create table member
(   mem_id char(8) not null primary key,
    mem_name varchar(10) not null,
    height tinyint unsigned null
);

혹은

create table member
(   mem_id char(8) not null primary key,
    mem_name varchar(10) not null,
    height tinyint unsigned null
);
alter table member add constraint primary key (mem_id);

 

 

외래 키(Foreign Key)

: 두 테이블을 연결하기 위해 사용. 참조 키(referencing key)라고도 부른다.

  • 다른 테이블의 기본 키와 일치하는 값을 가지는 하나의 컬럼 혹은 여러 컬럼의 조합
  • 두 테이블 사이 관계는 테이블 중 하나의 기본 키와 두 번째 테이블의 외래 키를 연결하면서 생긴다.
  • 한 테이블이 어떤 필드에 정의된 기본 키를 가진다면 그 필드의 값이 같은 두 개의 레코드를 가질 수 없다(중복 불가.)

예제

create table buy
(   num int auto_increment not null primary key,
    mem_id char(8) not null,
    prod_name char(6) not null,
    foreign key(mem_id) references member(mem_id)
);

 

ON UPDATE CASCADE, ON DELETE CASCADE

 
create table buy
(   num int auto_increment not null primary key,
    mem_id char(8) not null,
    prod_name char(6) not null,
    foreign key(mem_id) references member(mem_id)
    on update cascade
    on delete cascade
);

 

  • 기타 제약 조건
    • 고유 키 제약 조건 - 중복되지 않는 유일한 값만 입력 가능
    • 체크 제약 조건 - 조건에 만족 되는 값만 입력 가능
    • 기본값 정의 - 값을 입력하지 않았을 때 자동으로 입력될 값을 미리 지정
    • 널 값 허용 - NULL or NOT NULL

'스파르타 부트캠프(spring)' 카테고리의 다른 글

[내일배움캠프_Spring] 자바 Spring 입문_Git 브랜치 활용_230118  (0) 2023.01.18
[내일배움캠프_Spring] 자바 Spring 입문_예약어_230116  (0) 2023.01.16
[내일배움캠프] 자바 Spring_SQL(4)JOIN_230112  (0) 2023.01.12
[내일배움캠프] 자바 Spring_SQL(3)CAST, CONVERT_230111  (0) 2023.01.12
[내일배움캠프] 자바 Spring_SQL(2)삽입, 수정, 삭제_230110  (0) 2023.01.10
'스파르타 부트캠프(spring)' 카테고리의 다른 글
  • [내일배움캠프_Spring] 자바 Spring 입문_Git 브랜치 활용_230118
  • [내일배움캠프_Spring] 자바 Spring 입문_예약어_230116
  • [내일배움캠프] 자바 Spring_SQL(4)JOIN_230112
  • [내일배움캠프] 자바 Spring_SQL(3)CAST, CONVERT_230111
yeah구리
yeah구리
백엔드를 공부하는 초심자입니다.
  • yeah구리
    개발일지_헤맨만큼 내땅이다
    yeah구리
  • 전체
    오늘
    어제
    • 분류 전체보기 (114)
      • 스파르타 부트캠프(spring) (75)
      • 스파르타 기술면접 (10)
      • 코딩연습 (0)
      • 항해 (10)
      • 개발일지 (4)
        • 개인 회고 (1)
        • 개발로그 (실무) (2)
      • 공부노트 (0)
      • 코딩테스트 (0)
        • 프로그래머스 (0)
        • 백준 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    비전공개발자 #개발로그 #커리어
    X(Twitter) API #캐싱 #트러블슈팅 #개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
yeah구리
[내일배움캠프] 자바 Spring_SQL(5)제약조건_230113
상단으로

티스토리툴바