기본키 PRIMARY KEY 란?
SQL에서 기본키(Primary Key)는 테이블 내의 각 행을 고유하게 식별하는 역할을 합니다. 기본키는 테이블의 중복된 데이터를 방지하고, 데이터의 무결성을 보장하는 데 중요한 역할을 합니다.
외래키 FOREIGN KEY 란?
외래키(Foreign Key)는 관계형 데이터베이스에서 하나의 테이블의 필드(또는 필드 집합)가 다른 테이블의 기본키를 참조하는데 사용되는 키입니다. 이는 테이블 간의 관계를 설정하고 데이터의 무결성을 유지하는 데 도움이 됩니다.
기본키와 외래키 특징
기본키 (Primary Key)
- 고유성 (Uniqueness):
- 각 행은 기본키 값을 가지며 고유하게 식별됩니다.
- 중복된 값이 허용되지 않습니다.
- NULL 값 금지 (Non-null):
- 기본키 값은 NULL이 될 수 없습니다.
- 각 행은 반드시 기본키 값을 가져야 합니다.
- 불변성 (Immutability):
- 기본키 값은 변경할 수 없습니다.
- 다른 행으로 이동하거나 변경되지 않습니다.
- 테이블의 기본 정렬:
- 물리적으로 테이블을 정렬하는 데 사용될 수 있습니다.
외래키 (Foreign Key)
- 참조 무결성 (Referential Integrity):
- 외래키 값은 참조하는 테이블의 기본키와 관련이 있어야 합니다.
- 참조된 데이터의 일관성을 유지합니다.
- NULL 값 허용:
- 외래키 값은 NULL일 수 있습니다.
- 어떤 레코드가 참조 관계를 가질 필요가 없을 때 사용됩니다.
- 다 대 일 관계 (Many-to-One Relationship):
- 하나의 테이블의 외래키 값은 다른 테이블의 여러 행을 참조할 수 있습니다.
- 다수의 행이 하나의 행을 참조할 수 있도록 합니다.
- 제약 조건 설정:
- 외래키는 제약 조건으로 사용되어 데이터베이스 시스템이 제약 위반을 방지합니다.
- 참조된 키가 없는 삽입 또는 갱신을 거부합니다.
- 다양한 작업에 사용:
- 테이블 간의 관계 설정 및 데이터의 무결성을 유지합니다.
- 조인 연산을 통해 연결된 테이블 간의 정보 검색에 사용됩니다.
기본키 (Primary Key) 사용법
기본키(Primary Key)는 데이터베이스 테이블의 각 행을 고유하게 식별하는 데 사용되며, 데이터의 정확성과 무결성을 유지하는 데 중요한 역할을 합니다.
테이블 생성 시 기본키 정의
테이블을 생성할 때, CREATE TABLE 문을 사용하여 기본키를 정의합니다. 기본키는 해당 테이블의 주요 식별자가 되며 다음과 같은 예시로 정의할 수 있습니다.
CREATE TABLE 사용자 (
사용자ID INT PRIMARY KEY,
이름 VARCHAR(50),
이메일 VARCHAR(100)
);
SQLAUTO_INCREMENT를 사용한 자동 증가 기능
일반적으로 숫자로 된 기본키는 AUTO_INCREMENT 속성을 사용하여 자동으로 증가하도록 설정합니다. 이렇게 하면 데이터베이스가 새로운 레코드를 삽입할 때 자동으로 기본키 값을 증가시킵니다.
CREATE TABLE 주문 (
주문ID INT AUTO_INCREMENT PRIMARY KEY,
날짜 DATE,
사용자ID INT
);
SQL기존 테이블에 ALTER 문을 사용한 기본키 추가
이미 존재하는 테이블에 기본키를 추가하려면 ALTER TABLE 문을 사용할 수 있습니다.
ALTER TABLE 주문
ADD PRIMARY KEY (주문ID);
SQL복합 기본키 정의
두 개 이상의 열을 결합하여 복합 기본키를 정의할 수 있습니다.
CREATE TABLE 주문_상세 (
주문ID INT,
상품ID INT,
PRIMARY KEY (주문ID, 상품ID)
);
SQL기본키 삭제 및 수정
- 기존 기본키 삭제
ALTER TABLE 사용자
DROP PRIMARY KEY;
SQL- 기존 기본키 수정
ALTER TABLE 주문
MODIFY PRIMARY KEY (다른ID);
SQL기본키 활용
- 데이터 식별 및 검색:
- 기본키는 각 레코드를 고유하게 식별하므로 특정 레코드에 접근 및 검색하는 데 사용됩니다.
- 무결성 유지:
- 중복된 값이 허용되지 않기 때문에 데이터의 무결성을 보장하고, 잘못된 데이터를 방지합니다.
- 조인 연산:
- 다른 테이블과의 관계 설정 시, 기본키는 외래키와 매칭되어 조인 연산에 사용됩니다.
- 정렬 및 인덱스 생성:
- 기본키는 데이터를 물리적으로 정렬하거나 인덱스를 생성하는 데 사용됩니다.
외래키 (Foreign Key) 사용법
외래키(Foreign Key)는 데이터베이스에서 두 테이블 간의 관계를 설정하고 연결하는 데 사용되며, 데이터의 일관성과 무결성을 유지하는 데 중요한 역할을 합니다. 외래키를 사용하는 방법에 대해 자세히 설명하겠습니다:
테이블 생성 시 외래키 정의
테이블을 생성할 때, CREATE TABLE 문을 사용하여 외래키를 정의합니다. 외래키는 참조할 테이블과 참조할 열을 명시합니다.
CREATE TABLE 주문 (
주문ID INT PRIMARY KEY,
날짜 DATE,
사용자ID INT,
FOREIGN KEY (사용자ID) REFERENCES 사용자(사용자ID)
);
SQL기존 테이블에 ALTER 문을 사용한 외래키 추가
이미 존재하는 테이블에 외래키를 추가하려면 ALTER TABLE 문을 사용할 수 있습니다.
ALTER TABLE 주문
ADD FOREIGN KEY (사용자ID) REFERENCES 사용자(사용자ID);
SQL외래키의 제약 조건 설정
외래키는 보통 제약 조건(constraint)으로 사용되어 데이터 무결성을 보장합니다.
CREATE TABLE 주문 (
주문ID INT PRIMARY KEY,
날짜 DATE,
사용자ID INT,
FOREIGN KEY (사용자ID) REFERENCES 사용자(사용자ID)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
SQL✔️위의 예시에서 ON DELETE CASCADE는 참조된 키가 삭제될 때 주문 테이블의 해당 행도 삭제되도록 설정한 것입니다.
복합 외래키 정의
두 개 이상의 열을 결합하여 복합 외래키를 정의할 수 있습니다.
CREATE TABLE 주문_상세 (
주문ID INT,
상품ID INT,
PRIMARY KEY (주문ID, 상품ID),
FOREIGN KEY (주문ID) REFERENCES 주문(주문ID),
FOREIGN KEY (상품ID) REFERENCES 상품(상품ID)
);
SQL외래키 삭제 및 수정
- DELETE 연산 시의 옵션
- ON DELETE 옵션을 사용하여 참조된 키가 삭제될 때의 동작을 설정할 수 있습니다. (CASCADE, SET NULL, 등)
ALTER TABLE 주문
DROP FOREIGN KEY 주문_사용자_fk;
SQL- UPDATE 연산 시의 옵션
- ON UPDATE 옵션을 사용하여 참조된 키가 수정될 때의 동작을 설정할 수 있습니다. (CASCADE, SET NULL, 등)
ALTER TABLE 주문
DROP FOREIGN KEY 주문_사용자_fk;
SQL외래키 활용
- 데이터 무결성 유지:
- 외래키는 참조된 키가 있는 경우만 데이터를 삽입하거나 갱신할 수 있도록 보장하므로 데이터 무결성을 유지합니다.
- 관계 설정 및 조인 연산:
- 다른 테이블과의 관계를 설정하고, 조인 연산을 수행할 때 외래키는 주로 기본키와 매칭되어 사용됩니다.
- 제약 조건 설정:
- 외래키 제약 조건을 사용하여 데이터베이스 시스템이 제약 위반을 방지합니다.
외래키를 적절하게 활용하면 데이터베이스의 관계를 잘 구성하고 데이터의 일관성을 유지할 수 있습니다.
결론
기본키와 외래키는 데이터베이스의 핵심 원리로, 데이터의 정확성과 무결성을 보장합니다. 기본키는 각 레코드를 식별하고, 외래키는 테이블 간의 관계를 형성하여 데이터 일관성을 유지합니다. 적절한 활용을 통해 데이터베이스의 구조를 명확하게 설계하고 효율적으로 관리할 수 있습니다.