괴발개발

[강의 정리]D-51 DB(contraint - 제약 조건) 본문

BACK END/DB

[강의 정리]D-51 DB(contraint - 제약 조건)

dinoelll 2023. 3. 21. 23:44

1. Primary key - 기본키 제약 조건

  1. 중복 허용하지 않고
  2. null 허용 하지 않는다.
  3. 테이블 종속적이다.(죽으면 같이 죽어야 함)    
  4. 하나 이상의 컬럼으로 구성 된다. 
  5. 한 컬럼에 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

  1. 컬럼의 속성 취급한다(** 은근 무슨 소리인지 모르겟음) - 데이터 타입 같은 느낌으로
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. 연계참조 무결성 제약 조건 

        ⭐부모 자식 간에 논리적으로 말이 되게 만들어주는 제약 조건

 

  1. 부모가 확보된 상태에서 자식 데이터 들어가야 함
  2. 외래키(?)에서 부모에서 없는 값을 추가하려면 추가 불가능함(없는 글에 댓글 못다는것 처럼) - 해당 다른글 참고https://dinoell.tistory.com/97하기
  3. 자식있는 부모 지울려면 참조한 자식들 하나하나 다 지워야 함. 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

  1. 중복 허용하지 않음
  2. null 은 허용함
  3. 테이블에 여러개 passible👌
  4. *unique + not null = preimary key 

          ->유니크 키에 null을 허용하지 않으면 pk가 된다(후보가 되는 것) 

unique 생성
alter table supplier add constraint unique (supplier_name);

6. check

😒요즘에는 안씀(옛날 프로그램에는 있을 수 잇으니까 알려주는 거임)

  1. 제약조건에 대한 표시가 없다(조건을 알아내기도 어렵다.)
  2. 조건이 바꿔었을 경우 제약조건을 추가 해 줘야 한다.
-- 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';
Comments