※constraint는 데이터베이스에서 테이블의 컬럼이나 테이블 간의 관계를 정의하는 데 사용되는 제약 조건을 나타내는 키워드입니다. 위의 SQL 문에서 constraint는 두 개의 외래 키(Foreign Key) 관계를 정의
CREATE TABLE tbl_order (
orderno CHAR(4) ,
userno CHAR(4),
constraint fk_order_user FOREIGN KEY(userno) REFERENCES tbl_user(userno),
prodno CHAR(4),
constraint fk_order_prod FOREIGN KEY(prodno) REFERENCES tbl_product(prodno),
ea INT,
PRIMARY KEY (orderno, userno, prodno)
);
1. constraint fk_order_prod 외래키 이름 지정해주고 (굳이 안적어도된다) - 제약사항의 이름을 지정해주는것
2. FOREIGN KEY(userno) REFERENCES tbl_user(userno) --제약사항
tbl_order 테이블의 userno 컬럼에 저장되는 값이 tbl_user 테이블의 userno 컬럼에 존재하는 값 중 하나여야 함을 나타냅니다. 이를 통해 tbl_order 테이블의 userno 컬럼과 tbl_user 테이블의 userno 컬럼 간의 무결성(integrity)을 유지할 수 있습니다.
1 연습해보기
2 다른예제로 연습
3 또 다른 예시
dd는 값이 없어서 추가못한다
tbl_b는 잘지워진다 근데 tbl_a는 이건 왜 안지워지냐 ?
---> bc2 열은 반드시 ac2에 있는 값 중 하나여야한다
-->즉 외래키로 묶여있어서 삭제할수가 없다
이것도 외래키땜에 안된다 AA가 이미 쓰이고 있따
drop하고 create문을 수정해보자
--CASCADE :데이터 변경되면 같이 변경되도록 무결성(결함없도록)을 유지해준다 (같이삭제)
-->연결되어 있는 주인table에서 update랑 delete해야한다
원래는 변경못하던게 AA가 DD로 변경됐다
삭제를 해보자
DELETE SET NULL ---> 삭제하고 null로 세팅해라
'SQL > 이론' 카테고리의 다른 글
ADD/ CHANGE/ MODIFY/ DROP (0) | 2023.04.18 |
---|---|
view /describe/ as(별칭)/null조회/OR(where in)/ (0) | 2023.04.17 |
cmd에 mariadb연결하기 (0) | 2023.04.13 |
mvn / lombok mariadb 설치하기 (0) | 2023.04.12 |
READ -->LIKE(%, _ ) / 부등호/ DISTINCT/ ORDER BY/ LIMIT/between/and (0) | 2023.04.12 |