출처: https://toma0912.tistory.com/47
안녕하세요. 오늘은 제약사항에 대해서 포스팅 해보려고 합니다. 우선 '제약 조건'의 의미에 대해서 알아보고 간단한 예제를 통해 제약 조건에 대해서 알아보겠습니다.
제약조건(Constraint)?
제약조건(Constraint)이란, 데이터의 무결성을 지키기 위해 제한된 조건을 의미합니다. 즉, 데이터를 삽입할 때 무조건적으로 삽입되는 것이 아니라 어떠한 조건을 만족했을 경우에만 데이터가 삽입되도록 제약을 할 수 있는 것이라고 생각하시면 됩니다.
우선 기본적인 제약 조건들의 사용법에 대해서 알아보겠습니다.
// 제약조건 확인하기
DESC 데이터베이스 명.테이블 명;
// 제약조건 삭제
ALTER TABLE [테이블 명] DROP CONSTRAINT [제약조건 이름];
ALTER TABLE [테이블 명] DROP FOREIGN KEY [제약조건 이름];
// 제약조건 추가
외래키 : ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 이름] FOREIGN KEY(컬럼 명)
REFERENCES [부모테이블 명](PK 컬럼 명) [ON DELETE CASCADE / ON UPDATE CASCADE];
기본키 : ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 이름] PRIMARY KEY(컬럼 명);
// NOT NULL 제약 조건 추가
ALTER TABLE [테이블 명] MODIFY [컬럼 명] [데이터 타입] CONSTRAINT [제약조건 이름] NOT NULL;
우선, 기본적으로 테이블을 생성할 때 제약 조건을 아래와 같이 추가할 수 있습니다. 그리고 나서 간단한 예제를 통해 위의 제약조건에 대해서 알아보겠습니다.
제약 정의
위의 테이블 생성 코드를 살펴보면, a 열에는 NOT NULL 제약이 걸려 있습니다. b 열에는 NOT NULL 제약과 UNIQUE 제약이 걸려 있습니다.
c 열에는 아무런 제약사항이 없는 것을 확인할 수 있습니다. 이처럼 열에 정의하는 제약을 '열 제약'이라 부릅니다.
또다른 예제로 테이블에 제약을 정의하는 방법에 대해서 알아보겠습니다.
위 코드를 살펴 보시면, 제약에는 이름을 붙일 수 있습니다. 제약에 이름을 붙이면 나중에 관리하기 쉬워지므로 가능한 한 이름을 붙이도록 합니다. 제약 이름은 CONSTRAINT 키워드를 사용해서 지정합니다.
제약 추가
1) 열 제약 추가
ALTER TABLE 구문을 사용해서 c열에 NOT NULL 제약 조건을 추가한 뒤, 테이블을 보면 기본 생성 테이블과 다르게 NULL에 NO라고 제약이 추가된 것을 확인할 수 있습니다.
2) 테이블 제약 추가
테이블 제약은 ALTER TABLE의 ADD 하부명령으로 추가할 수 있습니다. 기본키는 테이블에 하나만 설정할 수 있으며, PRIMARY KEY 키워드를 사용해서 a를 기본키로 지정했습니다. 그리고, 이미 기본키가 설정되어 있는 테이블에 추가로 기본키를 작성할 수는 없습니다.
제약 삭제
1) 열 제약 삭제
기본적으로 열 제약 삭제의 경우에는 제약조건 수정과 마찬가지로 ALTER TABLE 구문을 사용합니다. 위의 코드를 살펴보시면, sample631 테이블의 c열의 NOT NULL 제약조건을 삭제한 것을 확인할 수 있습니다.
2) 테이블 제약 삭제
위의 코드를 살펴보시면, DROP 명령어를 통해 삭제할 제약 조건인 PRIMARY KEY를 삭제하는 것을 확인할 수 있습니다.
이것으로 MySQL 제약조건 추가, 수정 및 삭제에 대해 간단히 알아보았고, 포스팅을 마치도록 하겠습니다. : )
출처: https://toma0912.tistory.com/47 [토마's 개발노트]
'프로젝트 관련 조사 > DB' 카테고리의 다른 글
ubuntu mysql 한글 패치 (0) | 2019.08.12 |
---|---|
[MYSQL] 문자열 타입 (column type) (0) | 2019.06.11 |
[MYSQL] constraints 설정 값 확인 명령어 (0) | 2019.05.05 |
데이터베이스 네이밍 룰 (0) | 2019.05.02 |
[MSSQL] 엑셀에서 쿼리 만들기 (0) | 2017.05.17 |