728x90
반응형
제약조건 CONSTRAINT
- 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 검사 규칙을 의미한다.
- 제약조건은 CREATE 문으로 테이블 생성할 때나, ALTER문으로 컬럼을 추가할 때도 설정할 수 있다.
< 제약조건 종류 >
- NOT NULL : NULL값을 가지면 안되는 컬럼
- UNIQUE : 같은 컬럼안에서 동일한 값을 가질 수 없다. MYSQL에서는 NULL을 여러번 지정가능
(MSSQL 은 NULL도 한번만 가능하다)
- PRIMARY KEY : 행에 반드시 유일한 값이 들어가야함 ( NULL값을 가질 수 없다.)
- FOREIGN KEY
- DEFAULT
- CHECK
제약조건 사용법
제약조건 확인
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME='테이블명';
제약조건 추가 및 제거하기
ALTER TABLE [TABLE NAME] ADD 제약조건(컬럼명);
ALTER TABLE [TABLE NAME] DROP 제약조건;
ALTER TABLE [TABLE NAME] DROP CONSTRAINTS [컬럼명] ;
ALTER TALBE [TALBE NAME] MODIFY [COLUMN NAME] [DATA TYPE] NOT NULL;
ALTER TABLE [TABLE NAME] MODIFY [CLUMN NAME] [DATA TYPE] NULL;
1. PRIMARY KEY 설정, 설정취소
alter table t1 add primary key(id);
select * from information_schema.table_constraints where table_name='t1';
입력시 아래의 그림과 같이제약조건을 확인할 수 있습니다.
alter table t1 drop primary key; => 제약조건을 없애준다.
2. NOT NULL/ NULL 설정하기
alter table t1 modify id int not null;
alter table t1 modify id int null;
DESC T1;
각각 설정하여 desc t1;으로 확인해 보았을 때
3. UNIQUE 설정, 취소
alter table t1 add unique(id);
alter table t1 drop constraint id;
desc t1;
4. FOREIGN KEY 설정,해제
ALTER TABLE [CHILD TABLE] ADD CONSTRAINT [제약조건이름] FOREIGN KEY(CHILD 의 컬럼 명) REFERENCES [PARENTS TABLE ](PARENTS의 컬럼명) ;
CONSTRAINT [제약조건이름] 으로 이름을 지정할 수 있다.
만약 따로 지정하지 않으면 자동생성 됩니다.
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME='CHILD TABLE';
의 결과로 제약조건의 이름을 확인해야 합니다.
PARENT2의 값은 TABLE NAME1의 값을 참고한다.
alter table t2 add constraint job_fk foreign key(job) references t1(job);
insert into t1 values(1,'음악');
insert into t2 values(1,'음악');
insert into t2 values(2,'미술'); => 실패
T1의 값이 없기 때문에 가져올 수 없다.
foreing key 해제 하기
ALTER TABLE [CHILD TABLE NAME] DROP CONSTRAINT 제약조건이름 ;
alter table t2 drop constraint job_fk;
728x90
반응형
'Database > mysql' 카테고리의 다른 글
[MYSQL / Database] 제약조건 적용해보기( NOT NULL, UNIQUE, DEFAULT, CHECK, PRIMARY KEY,FOREIGN KEY) (0) | 2023.04.13 |
---|---|
[MYSQL / Database] Role 생성, 퍼미션 할당, 권한취소 (0) | 2023.04.12 |
[MYSQL / Database ] 사용자 권한 실습해보기 - REVOKE (0) | 2023.04.12 |
댓글