SQL study [21.08.25]
FOREIGN KEY <Fieldname> REFERENCES <Table name> (<Field name>) ON DELETE ~
CREATE TABLE Parent (
ID INT PRIMARY KEY,
SCORE INT NOT NULL,
NAME VARCHAR(30)
);
CREATE TABLE Child (
PID_CASCADE INT, #DELETE/UPDATE 시 CASCADE 처리되는 FK
PID_SETNULL INT, #DELETE/UPDATE 시 SET NULL 처리되는 FK
NUMBER INT,
FOREIGN KEY (PID_CASCADE) REFERENCES Parent(ID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (PID_SETNULL) REFERENCES Parent(ID) ON DELETE SET NULL ON UPDATE SET NULL
);
#FK 선언법
FOREIGN KEY(A) REFERENCES B(C) ~;
# 지정된 테이블의 A 필드를 B 테이블의 C 필드를 참고로 FK로 설정.
- ON UPDATE CASCADE #부모 테이블의 Primary 값이 업데이트 되는 경우 하위테이블의 Reference 값은 수정된 값을 가진다.
- ON UPDATE SET NULL #위와 같은 경우 하위테이블의 Reference 값은 NULL 값을 가진다.
ON DELETE ~ / ON UPDATE ~
- CASCADE : 삭제/수정이 같이 이루어짐. Master 삭제/수정 -> Child 삭제/수정
- SET NULL : 삭제/수정시 NULL 값으로 변경됨 Master 삭제/수정 -> Child 에서 해당 Field == NULL
- NO ACTION : 삭제/수정해도 참조하는 테이블의 데이터는 변경 X -> 참조무결성
- SET DEFAULT : 삭제/수정시 참조하는 테이블의 데이터는 DEFAULT VALUE로 설정됨
- RESTRICT : 참조하는 테이블에 데이터가 남아있으면 참조되는 테이블의 데이터는 수정/삭제 부락
DEFAULT
CREATE TABLE Accounts(
ID INT PRIMARY KEY,
NAME VARCHAR(30) DAFAULT = 'No name'
);
#ALTER 을 이용한 SET DEFAULT
ALTER TABLE Accounts
ALTER NAME SET DEFAULT 'No name';
#DEFAULT 제약 조건 삭제
ALTER TABLE Accounts
ALTER NAME DROP DEFAULT
- NAME 필드의 Default value 를 'No name' 으로 설정
VARCHAR(n)
- n 길이가 넘는 문자열은 저장 못 한다.
DELETE/DROP/TRUNCATE
JOIN
: DB 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해준다.
* SELECT 문과 함께 자주 사용이 된다.
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
오늘의 한 마디 : 파이팅
'Data Base > Daily_study' 카테고리의 다른 글
SQL study [21.09.03] (0) | 2021.09.03 |
---|---|
SQL study [21.09.02] (0) | 2021.09.02 |
SQL study [21.08.24] (0) | 2021.08.24 |
SQL study [21.08.23] (0) | 2021.08.24 |
SQL study [21.08.19] (0) | 2021.08.19 |
댓글