코딩기록
Day - 34 [Maria DB] CONSTRAINT 본문
06_CONSTRAINT
- 제약조건은 컬럼에 데이터를 넣을 경우 특정한 조건을 만족시켜야 할 경우 사용 합니다.

1) 기본 키 제약 조건(primary key)
- 중복을 허용하지 않고, null 을 사용하지 않는다.
- 테이블 종속적이다. (테이블에 1개만 가능)
- 종속적 이라는것은 1. 다른데다 빌려줄 수 없고, 2. 테이블이 사라지면 PK 도 같이 사라진다는 뜻이다.
- 하나 이상의 컬럼을 구성된다.(16개)
-- 테이블 생성시 함께 생성(가장 많이 사용)
create table pk_test(
first_col int(3) primary key,
second_col varchar(4)
);
desc pk_test;
insert into pk_test (first_col)values(1);
-- Field 'first_col' doesn't have a default value
insert into pk_test (second_col)values('test');
-- Duplicate entry '1' for key 'PRIMARY'
-- **Duplicate 가 뜨면 같은 값을 넣은것이다. 중복.
insert into pk_test (first_col)values(1);
기존 테이블에 추가하는 방법 :
ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 종류] (대상컬럼);
-- 기존테이블에 추가
select * from employees;
-- ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 종류] (대상컬럼);
alter table employees add constraint primary key (emp_no);
alter table employees add primary key (emp_no);
desc employees;
중복값 추가 방법
-- 중복값 추가
-- Duplicate entry '112' for key 'PRIMARY'
-- emp_no 112 키를 이미 가지고 있어서 오류가 났다.
insert into employees (emp_no, first_name, family_name, email, mobile, salary)
values(112,'태근','김','email@naver','01020343054','99999999');
-- upsert(key 가 없으면 insert, 있으면 update)
insert into employees (emp_no, first_name, family_name, email, mobile, salary)
values(112,'태근','김','email@naver','01020343054','99999999')
on duplicate key update first_name = '태곤', family_name='박';
복합키(한개 이상의 컬럼으로 키를 생성 하는 것)
복합키에 추가되는 컬럼이 외래키 일 경우 update 나 insert 에 제한을 줄 수 있다.
복합키에 추가되는 컬럼이 외래키 일 경우 사용하지 말자는 뜻이다.
create table pk_two_test(
first_col int(5),
second_col varchar(10),
third_col date,
primary key(first_col,second_col)
);
desc pk_two_test;

2) NOT NULL (NULL 을 허용하지 않음)
NOT NULL 은 컬럼의 속성으로 취급한다. -> modify 를 사용하는 이유도 속성으로 취급하기 때문이다.
ALTER TABLE [테이블 명] MODIFY COLUMN [컬럼명] [데이터타입] (대상컬럼);
create table pk_two_test(
first_col int(5),
second_col varchar(10),
third_col date not null,
primary key(first_col,second_col)
);
-- ALTER TABLE [테이블 명] MODIFY COLUMN [컬럼명] [데이터타입] (대상컬럼);
-- Data truncated for column 'second_col' at row 1
-- truncated 데이터 비우거나 null을 채우라는 뜻.
-- 이미 null 하라고 했는데 not null 하라고? 라는뜻
-- not null은 제약조건이 아니라 속성으로 취급한다. modify
alter table pk_test modify column second_col varchar(4) not null;
select * from pk_test;
delete from pk_test;
desc pk_test;

짝대기 하나는 1:1 관계를 말한다.
없어도 되면 0
1:다 관계
rdb 는 관계를 파악해야한다.
'study' 카테고리의 다른 글
| Day - 34 [Maria DB] Sub Query (0) | 2023.03.21 |
|---|---|
| Day - 34 [Maria DB] Reference (relation) (0) | 2023.03.21 |
| Day - 22 [JAVA_MVC] String 문자열 (0) | 2023.03.17 |
| Day - 30 [JAVA] - Multi Thread {Thread State/control (sleep..) , Demon Thread} (0) | 2023.03.15 |
| Day - 25 [JAVA_MVC] Generic , Linked List, HashSet (0) | 2023.03.08 |