MySQL 외래 키 삭제

Rashmi Patidar 2024년2월15일
MySQL 외래 키 삭제

외래 키는 두 개 이상의 테이블을 함께 연결하고 이들 사이에 의미 있는 연결을 형성하는 키입니다.

이 키는 자식 테이블의 기본 키를 참조하고 부모 테이블에서 외래 키 역할을 합니다. 참조 키 제약 조건이라고도 합니다.

MySQL에서 외래 키 삭제

외래 키에 대해 수집된 사실은 그것이 기본 키 역할을 하기 때문에 테이블에 하나 이상의 항목이 있을 수 없으며 레코드가 기본 키와 관련하여 고유하다는 것입니다.

외래 키는 사용자가 테이블 간에 연결된 레코드를 직접 삭제하지 못하도록 제한하는 제약 조건으로, 사용자 작업을 방지하고 데이터 보안으로 이어집니다.

외래 키가 있는 테이블을 하위 테이블이라고 하고 키가 나오는 테이블을 상위 테이블이라고 합니다. 테이블 연결의 개념은 관계형 데이터베이스 관리 시스템에서만 제공됩니다.

MySQL에서 외래 키 제약 조건의 이점은 다음과 같습니다.

  1. 제약 조건은 참조 무결성을 강화하므로 테이블 전체에서 일관성을 유지합니다.
  2. ON DELETE CASCADEON UPDATE CONSTRAINTS와 같은 제약 조건을 사용하면 데이터베이스 전체에서 테이블의 일관된 동작을 유지하는 데 도움이 됩니다.
  3. 상호 연결된 테이블에 대한 제약 조건을 유지하면 테이블을 기억하는 오버헤드가 줄어들고 연결된 테이블을 검색하는 데 사용되므로 결과적으로 성능이 향상됩니다.
  4. 테이블이 이미 연결되어 있으므로 더 나은 조인을 수행하고 더 빠르게 결과를 검색하여 성능을 향상시킵니다.
  5. 부모 테이블의 레코드가 외래 키보다 먼저 삭제되면 쿼리가 실패하고 레코드 삭제가 허용되지 않습니다. 테이블 간의 연결을 보여주고 먼저 부모 테이블 대신 자식 테이블에서 레코드를 삭제하도록 요청합니다.
아래는 동일한 스크린 샷입니다.

하위 테이블에 링크가 있을 때 상위에서 레코드 삭제

외래 키를 삭제하려면 먼저 테이블을 만들고 테이블에 외래 키를 생성해야 합니다. 다음은 정의된 테이블에 외래 키 제약 조건을 만드는 명령입니다.

create table student(id varchar(255), name varchar(255), dob date, deptId varchar(255), primary key(id));
create table department(dept_id varchar(255), id varchar(255), dept_name varchar(255), constraint fk_id foreign key(id) references student(id));

먼저 위의 쿼리는 studentdepartment라는 두 개의 테이블을 생성합니다. 이 테이블은 student 테이블의 id 속성이 department 테이블에서 외래 키 id 역할을 하는 부모-자식 관계 형식입니다.

첨부된 스크린샷:

기본 키로 학생-부모 테이블 생성

외래 키로 테이블 부서 하위 생성

테이블의 레코드가 삽입되고 delete 문으로 삽입된 레코드를 조작하려고 하면 위에 표시된 오류가 채워집니다. 채우기 문제를 해결하려면 외래 키 제약 조건을 삭제하고 삭제 작업을 수행합니다.

이제 MySQL에서 위에서 만든 제약 조건을 삭제하는 구문은 다음과 같습니다.

Alter table table_name drop constraint constraint_name;

위의 명령은 alter 명령을 사용하여 테이블 스키마를 변경하고 drop 키워드를 사용하여 스키마에 적용된 제약 조건을 삭제합니다. Alter tableDDL 명령으로도 알려진 데이터 정의 언어이며 데이터베이스 및 테이블 스키마 생성을 돕습니다.

Alter table department drop constraint fk_id;

외래 키 제약 조건이 제거되었을 때 delete 문의 스크린샷은 다음과 같습니다.

외래 키 삭제 및 상위 테이블에서 레코드 삭제

Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

관련 문장 - MySQL Key