괴발개발
[강의 정리]D-51 DB(contraint - 제약 조건) 본문
1. Primary key - 기본키 제약 조건
- 중복 허용하지 않고
- null 허용 하지 않는다.
- 테이블 종속적이다.(죽으면 같이 죽어야 함)
- 하나 이상의 컬럼으로 구성 된다.
- 한 컬럼에 1개 - 권장사항
pk 만들기
create table pk_test(
first_col int(3) primary key,
second_col varchar(4)
);
기존 테이블에서 추가하고 싶을 때
alter table employees add constraint primary key(emp_no);
+ 복합키 가능함
2. not null
- 컬럼의 속성 취급한다(** 은근 무슨 소리인지 모르겟음) - 데이터 타입 같은 느낌으로
alter table pk_test modify column second_col varchar(4) not null;
뒤에 not null 이렇게 붙여 주면 됨
3. Forign key - 외래키
fk 만들기
create table parent_table( -- //**콤마는 앞에다가 찍자!!
user_id varchar(30) primary key
,user_name varchar(20)
);
create table child_table(
order_id int(10)
,user_id varchar(30)
,foreign key(user_id) references parent_table(user_id)
);
이미 만들어진 테이블에 외래키 만들기
alter table child_table add constraint foreign key (user_id) references parent_table(user_id);
4. 연계참조 무결성 제약 조건
⭐부모 자식 간에 논리적으로 말이 되게 만들어주는 제약 조건
- 부모가 확보된 상태에서 자식 데이터 들어가야 함
- 외래키(?)에서 부모에서 없는 값을 추가하려면 추가 불가능함(없는 글에 댓글 못다는것 처럼) - 해당 다른글 참고https://dinoell.tistory.com/97하기
- 자식있는 부모 지울려면 참조한 자식들 하나하나 다 지워야 함. so 삭제하고 on delete cacated걸어줘서 다시 만들어 줘야 함
on delete cascade
create table products(
product_id int(10) primary key
,foreign key(supplier_id) references supplier(supplier_id) on delete cascade
);
5. unique
- 중복 허용하지 않음
- null 은 허용함
- 테이블에 여러개 passible👌
- *unique + not null = preimary key
->유니크 키에 null을 허용하지 않으면 pk가 된다(후보가 되는 것)
unique 생성
alter table supplier add constraint unique (supplier_name);
6. check
😒요즘에는 안씀(옛날 프로그램에는 있을 수 잇으니까 알려주는 거임)
- 제약조건에 대한 표시가 없다(조건을 알아내기도 어렵다.)
- 조건이 바꿔었을 경우 제약조건을 추가 해 줘야 한다.
-- alter table [테이블 명] add constraint [제약조건타입] (적용 컬럼 조건)
만드는 법
alter table products add constraint check(product_price between 5000 and 10000);
확인 하는 방법
select * from information_schema.table_constraints where TABLE_NAME = 'products';
'BACK END > DB' 카테고리의 다른 글
[강의 정리]D-52 DB#3 (join) (0) | 2023.03.22 |
---|---|
[퀴즈 정리]D-51 DB - contraint (0) | 2023.03.22 |
[강의 정리]D-51 pk,fk (연계 참조 무결성 제약 조건) (0) | 2023.03.21 |
[강의 정리]D-50 DB - select 활용 (0) | 2023.03.20 |
[강의 정리] D-50 , DB : 전체 구조 (테이블 add , 칼럼insert delete... etc) (0) | 2023.03.20 |
Comments