728x90
728x90
추가
- foreign key 추가
ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] FOREIGN KEY(컬럼)
REFERENCES [관련_테이블명](PK컬럼) [ON DELETE CASCADE / ON UPDATE CASCADE];
<예시>
ALTER TABLE orders
ADD CONSTRAINT fk_orders_customer
FOREIGN KEY (customer_id)
REFERENCES customers(id);
ON DELETE CASCADE
- "ON DELETE CASCADE" 옵션은 외래 키를 가진 테이블에서 행이 삭제될 때 연관된 행도 함께 삭제됩니다.
- 예를 들어, "orders" 테이블에 "customer_id"라는 외래 키가 있고, "customers" 테이블의 "id" 열을 참조한다고 가정해 봅시다.
- "ON DELETE CASCADE" 옵션을 사용하면 "customers" 테이블에서 특정 고객의 행을 삭제하면, "orders" 테이블에서 해당 고객의 주문 행도 자동으로 삭제됩니다.
ON UPDATE CASCADE
- "ON UPDATE CASCADE" 옵션은 외래 키를 가진 테이블에서 행이 업데이트될 때 연관된 행도 자동으로 업데이트됩니다.
- 예를 들어, "customers" 테이블에서 고객의 "id" 값을 변경한다고 가정해 봅시다.
- "ON UPDATE CASCADE" 옵션을 사용하면 "customers" 테이블의 해당 고객의 "id" 값을 업데이트하면, "orders" 테이블에서도 해당 고객의 주문 행의 외래 키 값이 자동으로 업데이트됩니다.
삭제
- 외래 키 제약 조건 확인
- 먼저, 어떤 테이블에서 외래 키를 삭제할지 확인합니다.
- 해당 테이블에 있는 외래 키 제약 조건의 이름을 알아야 합니다. - 외래 키 제약 조건 삭제
- ALTER TABLE 문을 사용하여 외래 키 제약 조건을 삭제할 수 있습니다.
ALTER TABLE 테이블명
DROP FOREIGN KEY 외래키_제약조건_이름;
<예시>
ALTER TABLE orders
DROP FOREIGN KEY fk_orders_customer;
확인
- 테이블 구조 확인
- 먼저, 외래 키를 확인하려는 테이블의 구조를 확인합니다.
- 이를 위해 DESCRIBE 문이나 SHOW CREATE TABLE 문을 사용할 수 있습니다.
DESCRIBE 테이블명;
SHOW CREATE TABLE 테이블명;
- 외래 키 정보 확인
- 테이블의 구조를 확인한 후, 외래 키 정보를 확인합니다.
- DESCRIBE 문이나 SHOW CREATE TABLE 문에서 외래 키 제약 조건과 관련된 정보를 찾을 수 있습니다. - 정보 스키마 쿼리 사용
- 데이터베이스 시스템에 따라 INFORMATION_SCHEMA 데이터베이스를 사용하여 외래 키 정보를 확인할 수도 있습니다.
- INFORMATION_SCHEMA 데이터베이스에는 데이터베이스, 테이블, 열 등의 메타데이터가 저장되어 있습니다.
- INFORMATION_SCHEMA 데이터베이스의 TABLE_CONSTRAINTS 또는 KEY_COLUMN_USAGE 테이블을 쿼리 하여 외래 키 정보를 확인할 수 있습니다.
SELECT *
FROM information_schema.table_constraints
WHERE table_name = '테이블명';
SELECT *
FROM information_schema.table_constraints
WHERE constraint_schema = '데이터베이스명';
CONSTRAINT_CATALOG: 제약 조건이 속한 카탈로그의 이름
CONSTRAINT_SCHEMA: 제약 조건이 속한 스키마의 이름
CONSTRAINT_NAME: 제약 조건의 이름
TABLE_CATALOG: 테이블이 속한 카탈로그의 이름
TABLE_SCHEMA: 테이블이 속한 스키마의 이름
TABLE_NAME: 테이블의 이름
CONSTRAINT_TYPE: 제약 조건의 유형 (예: FOREIGN KEY, PRIMARY KEY, UNIQUE 등)
IS_DEFERRABLE: 제약 조건이 지연 가능한지 여부
INITIALLY_DEFERRED: 제약 조건이 초기에 지연된 상태인지 여부
끝.
728x90
300x250
'Database > MariaDB' 카테고리의 다른 글
[MariaDB; 마리아디비] 대소문자 구분 무시하기 (0) | 2024.02.22 |
---|---|
[MariaDB; 마리아디비] USER / 유저 / 계정 / 사용자 / 이름 변경 ( 수정 ) / 비밀번호 변경 (0) | 2024.02.06 |
[MariaDB; 마리아디비] SELECT 값으로 UPDATE 하기 (0) | 2024.01.30 |
[MariaDB; 마리아디비] 마리아DB 주석처리 (0) | 2024.01.02 |
[MariaDB; 마리아디비] 한 컬럼에 여러개 조건 검색 하기 ( IN / NOT IN ) (0) | 2023.11.20 |