0_ch4n
기계쟁이\n개발자
0_ch4n
0chn.xxx@gmail.com @0ch._.n
전체 방문자
오늘
어제

공지사항

  • All (282)
    • 🖥 CS (21)
      • 네트워크 (12)
      • 운영체제 (3)
      • 자료구조 (2)
      • Web (4)
    • 🧠 Algorithm (185)
      • [C] BOJ (93)
      • [JAVA] Programmers (91)
    • 📚 Study (69)
      • HTML&CSS (19)
      • MySQL (11)
      • JAVA (22)
      • Servlet&JSP (8)
      • Thymeleaf (2)
      • Spring (5)
      • JPA (2)
    • 📖 Book (1)
    • 📃 Certification (6)
      • 정보처리기사 (6)

인기 글

최근 글

최근 댓글

태그

  • til
  • Programmers
  • java
  • 자바
  • kakao
  • 코딩테스트
  • 코테
  • 프로그래머스
  • CSS
  • 카카오

블로그 메뉴

  • 홈
  • 태그
  • 방명록

티스토리

hELLO · Designed By 정상우.
0_ch4n

기계쟁이\n개발자

[MySQL] 제약조건
📚 Study/MySQL

[MySQL] 제약조건

2022. 6. 19. 23:09
반응형

 

✔️ 제약조건

  • 제약조건(constraint)이란 데이터의 무결성을 지키기 위해 데이터를 입력 받을 때 실행되는 검사 규칙을 의미합니다.
  • 이러한 제약 조건은 CREATE문으로 테이블을 생성할 때나 ALTER문으로 필드를 추가할 때도 설정할 수 있습니다.

 

📌 NOT NULL

-- CREATE문으로 NOT NULL 설정
CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럼타입] NOT NULL
);

-- ALTER문으로 NOT NULL 설정
ALTER TABLE [테이블이름]
ADD [컬럼이름] [컬럼타입] NOT NULL; -- 새로운 컬럼 추가

ALTER TABLE [테이블이름]
MODIFY [컬럼이름] [컬럼타입] NOT NULL; -- 기존 컬럼 변경
  • NULL 비허용, 중복 허용

 

📌 UNIQUE

-- CREATE문으로 UNIQUE 설정
CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럽타입] UNIQUE
);

CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럼타입],
	UNIQUE ([컬럼이름])
);

CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럼타입],
	...,
	CONSTRAINT [제약조건이름] UNIQUE ([컬럼이름])
);

-- ALTER문으로 UNIQUE 설정
ALTER TABLE [테이블이름]
ADD UNIQUE ([컬럼이름]);

ALTER TABLE [테이블이름]
ADD CONSTRAINT [제약조건이름] UNIQUE ([컬럼이름]);
  • NULL 허용, 중복 비허용
  • UNIQUE 제약조건을 설정하면 해당 필드는 자동으로 보조 인덱스(INDEX)로 만들어집니다.
  • 만약 제약조건에 이름을 설정하면 ALTER-DROP문을 이용해 해당 제약조건을 삭제할 수 있습니다.

 

📌 PRIMARY KEY

-- CREATE문으로 PRIMARY KEY 설정
CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럽타입] PRIMARY KEY
);

CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럼타입],
	PRIMARY KEY ([컬럼이름])
);

CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럼타입],
	...,
	CONSTRAINT [제약조건이름] PRIMARY KEY ([컬럼이름])
);

-- ALTER문으로 PRIMARY KEY 설정
ALTER TABLE [테이블이름]
ADD PRIMARY KEY ([컬럼이름]);

ALTER TABLE [테이블이름]
ADD CONSTRAINT [제약조건이름] PRIMARY KEY ([컬럼이름]);

-- 기본키 삭제
ALTER TABLE [테이블이름]
DROP PRIMARY KEY;
  • NULL 비허용, 중복 비허용, 테이블당 하나
  • NOT NULL과 UNIQUE의 특징을 모두 가지고 테이블 당 오직 하나의 컬럼에만 설정할 수 있습니다.
  • 테이블의 데이터를 쉽고 빠르게 찾도록 도와주는 역할을 합니다.

 

📌 FOREIGN KEY

-- CREATE문으로 FOREIGN KEY 설정
CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럼타입],
	...,
	CONSTRAINT [제약조건이름] FOREIGN KEY [컬럼이름] REFERENCES [테이블이름2(컬럼이름)
);

-- ALTER문으로 FOREIGN KEY 설정
ALTER TABLE [자식 테이블이름]
ADD CONSTRAINT [제약조건이름] FOREIGN KEY [자식 기본키] REFERENCES [부모 테이블이름(부모 기본키)]
ON UPDATE [동작]
ON DELETE [동작];

-- 외래키 삭제
ALTER TABLE [자식 테이블이름]
DROP FOREIGN KEY [자식 외래키];
  • 한 테이블을 다른 테이블과 연결해주는 역할을 합니다.
  • FOREIGN KEY를 설정하려는 컬럼은 UNIQUE나 PRIMARY KEY가 설정되어 있어야 합니다.

 

📌 ON DELETE / ON UPDATE

CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럼타입],
	...,
	FOREIGN KEY [컬럼이름] REFERENCES [테이블이름2(컬럼이름)] 
	ON UPDATE [동작] 
	ON DELETE [동작]
);
  • FOREIGN KEY에 의해 참조되는 테이블에서 데이터의 수정/삭제가 발생하면 참조하고 있는 테이블의 데이터도 같이 영향을 받습니다.
  • 이 때 참조하고 있는 테이블의 동작은 다음 키워드를 사용하여 미리 설정할 수 있습니다.
    • ON DELETE : 참조되는 테이블의 값이 삭제될 경우의 동작
    • ON UPDATE : 참조되는 테이블의 값이 수정될 경우의 동작
  • 설정할 수 있는 동작
    • CASCADE : 참조하는 테이블에서도 데이터의 삭제와 수정이 같이 이루어집니다.
    • SET NULL : 참조하는 테이블의 데이터가 NULL로 변경됩니다.
    • NO ACTION : 참조하는 테이블의 데이터가 변경되지 않습니다.
    • SET DEFAULT : 참조하는 테이블의 데이터는 컬럼의 기본값으로 설정됩니다.
    • RESTRICT : 참조하는 테이블에 데이터가 남아 있으면 참조되는 테이블의 데이터를 삭제하거나 수정할 수 없습니다.

 

📌 DEFAULT

-- CREATE문에서 DEFAULT 설정
CREATE TABLE [테이블이름] (
	[컬럼이름] [컬럼타입] DEFAULT [기본값]
);

-- ALTER문에서 DEFAULT 설정
ALTER TABLE [테이블이름]
ADD or MODIFY [컬럼이름] [컬럼타입] DEFAULT [기본값];

ALTER TABLE [테이블이름]
ALTER [컬럼이름] SET DEFAULT [기본값];
  • 데이터를 추가할 때 해당 컬럼 값을 전달하지 않으면 자동으로 설정된 기본값을 저장하도록 설정합니다.
반응형
저작자표시 (새창열림)

'📚 Study > MySQL' 카테고리의 다른 글

[MySQL] JOIN , UNION  (0) 2022.07.02
[MySQL] 서브쿼리  (0) 2022.07.02
[MySQL] 문법  (0) 2022.06.19
[MySQL] 함수  (0) 2022.06.16
[MySQL] 연산자  (0) 2022.06.15
    0_ch4n
    0_ch4n
    while(true) { study(); }

    티스토리툴바