SQL FOREIGN KEY: 예제를 통해 SQL Server에서 생성하는 방법

외래 키란 무엇입니까?

A 외래 키 SQL Server 내에서 참조 무결성을 적용하는 방법을 제공합니다. 간단히 말해서 외래 키는 한 테이블의 값이 다른 테이블에 있어야 함을 보장합니다.

FOREIGN KEY 규칙

  • SQL 외래 키에는 NULL이 허용됩니다.
  • 참조되는 테이블을 상위 테이블이라고 합니다.
  • SQL에서 외래 키가 있는 테이블을 하위 테이블이라고 합니다.
  • 하위 테이블의 SQL 외래 키는 상위 테이블의 기본 키를 참조합니다.
  • 이 부모-자식 관계는 "참조"라는 규칙을 시행합니다. Integrity. "

다이어그램이 포함된 SQL 예제의 아래 외래 키는 외래 키에 대한 위의 모든 사항을 요약합니다.

SQL의 FOREIGN KEY 규칙
외래 키 작동 방식

SQL에서 FOREIGN KEY를 생성하는 방법

우리는 외래 키 SQL 서버에서 2 가지 방법 :

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

상위 테이블: 예를 들어 'Course'라는 기존 Parent 테이블이 있다고 가정해 보겠습니다. Course_ID 및 Course_name은 Course_Id를 기본 키로 사용하는 두 개의 열입니다.

SQL에서 FOREIGN KEY 생성

하위 테이블: 두 번째 테이블을 하위 테이블로 생성해야 합니다. 'Course_ID'와 'Course_Strength'를 두 개의 열로 표시합니다. 단, 'Course_ID'는 Foreign Key로 한다.

단계 1) 테이블>새로 만들기>테이블…을 마우스 오른쪽 버튼으로 클릭합니다.

SQL에서 FOREIGN KEY 생성

단계 2) 'Course_ID'와 'Course_Strength' 두 개의 열 이름을 입력합니다. 'Course_Id' 열을 마우스 오른쪽 버튼으로 클릭하세요. 이제 관계를 클릭하세요.

SQL에서 FOREIGN KEY 생성

단계 3) In '외래 키 관계,' 클릭 '더하다'

SQL에서 FOREIGN KEY 생성

단계 4) '테이블 및 열 사양'에서 다음을 클릭하세요. '...' 아이콘

SQL에서 FOREIGN KEY 생성

단계 5) '기본 키 테이블'을 'COURSE'로 선택하면 드롭다운에서 '외래 키 테이블'로 생성되는 새 테이블이 생성됩니다.

SQL에서 FOREIGN KEY 생성

단계 6) '기본 키 테이블' - 'Course_Id' 열을 '기본 키 테이블' 열로 선택합니다.

'외래 키 테이블' - 'Course_Id' 열을 '외래 키 테이블' 열로 선택합니다. 확인을 클릭하세요.

SQL에서 FOREIGN KEY 생성

단계 7) 를 클릭하십시오 추가.

SQL에서 FOREIGN KEY 생성

단계 8) 테이블 이름을 'Course_Strength'로 지정하고 클릭하세요. 좋아요.

SQL에서 FOREIGN KEY 생성

결과 : 우리는 사이에 부모-자식 관계를 설정했습니다 '강의' 그리고 '코스_강도.'

SQL에서 FOREIGN KEY 생성

T-SQL: T-SQL을 사용하여 상위-하위 테이블 만들기

상위 테이블: 다시 생각해 보면 테이블 이름이 'Course'인 기존 상위 테이블이 있습니다.

Course_ID 및 Course_name은 Course_Id를 기본 키로 사용하는 두 개의 열입니다.

T-SQL을 사용하여 상위-하위 테이블 만들기

하위 테이블: 두 번째 테이블을 'Course_Strength_TSQL'이라는 이름의 하위 테이블로 생성해야 합니다.

하위 테이블 Course_Strength_TSQL'에 대한 두 개의 열인 'Course_ID' 및 'Course_Strength'. 단, 'Course_ID'는 Foreign Key로 한다.

다음은 FOREIGN KEY를 사용하여 테이블을 생성하는 구문입니다.

구문 :

CREATE TABLE childTable
(
  column_1 datatype [ NULL |NOT NULL ],
  column_2 datatype [ NULL |NOT NULL ],
  ...

  CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n)
    [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ]
    [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] 
);

위의 매개변수에 대한 설명은 다음과 같습니다.

  • childTable은 생성할 테이블의 이름입니다.
  • 컬럼_1, 컬럼_2 - 테이블에 추가할 열입니다.
  • fkey_name - 생성할 외래 키 제약 조건의 이름입니다.
  • child_column1, child_column2…child_column_n - parentTable의 기본 키를 참조하는 chidTable 열의 이름입니다.
  • parentTable - 하위 테이블에서 키를 참조할 상위 테이블의 이름입니다.
  • parent_column1, parent_column2, … parent_column3 - 상위 테이블의 기본 키를 구성하는 열입니다.
  • 삭제 중. 선택적 매개변수입니다. 상위 데이터를 삭제한 후 하위 데이터에 어떤 일이 발생하는지 지정합니다. 이 매개변수의 일부 값에는 NO ACTION, SET NULL, CASCADE 또는 SET DEFAULT가 포함됩니다.
  • ON 업데이트 - 선택적 매개변수입니다. 상위 데이터를 업데이트한 후 하위 데이터에 어떤 일이 발생하는지 지정합니다. 이 매개변수의 일부 값에는 NO ACTION, SET NULL, CASCADE 또는 SET DEFAULT가 포함됩니다.
  • NO ACTION - ON DELETE 및 ON UPDATE와 함께 사용됩니다. 이는 상위 데이터를 업데이트하거나 삭제한 후에 하위 데이터에는 아무 일도 일어나지 않음을 의미합니다.
  • CASCADE- ON DELETE 및 ON UPDATE와 함께 사용됩니다. 상위 데이터가 삭제되거나 업데이트된 후에 하위 데이터도 삭제되거나 업데이트됩니다.
  • SET NULL - ON DELETE 및 ON UPDATE와 함께 사용됩니다. 상위 데이터가 업데이트되거나 삭제된 후 하위는 null로 설정됩니다.
  • SET DEFAULT - ON DELETE 및 ON UPDATE와 함께 사용됩니다. 상위 데이터를 업데이트하거나 삭제하면 하위 데이터가 기본값으로 설정됩니다.

FOREIGN KEY로 하나의 열이 있는 테이블을 생성하는 SQL 예제의 외래 키를 살펴보겠습니다.

SQL 예제의 외래 키

검색어 :

CREATE TABLE Course_Strength_TSQL
(
Course_ID Int,
Course_Strength Varchar(20) 
CONSTRAINT FK FOREIGN KEY (Course_ID)
REFERENCES COURSE (Course_ID)	
)

단계 1) 실행을 클릭하여 쿼리를 실행합니다.

SQL의 외래 키

결과 : 우리는 사이에 부모-자식 관계를 설정했습니다 '강의' 그리고 '코스_강도_TSQL.'

SQL의 외래 키

ALTER TABLE 사용

이제 SQL에서 외래 키를 사용하고 ALTER TABLE 문을 사용하여 SQL 서버에 외래 키를 추가하는 방법을 알아보겠습니다. 아래 구문을 사용하겠습니다.

ALTER TABLE childTable
ADD CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);

위에서 사용된 매개변수에 대한 설명은 다음과 같습니다.

  • childTable은 생성할 테이블의 이름입니다.
  • 컬럼_1, 컬럼_2 - 테이블에 추가할 열입니다.
  • fkey_name - 생성할 외래 키 제약 조건의 이름입니다.
  • child_column1, child_column2…child_column_n - parentTable의 기본 키를 참조하는 chidTable 열의 이름입니다.
  • parentTable - 하위 테이블에서 키를 참조할 상위 테이블의 이름입니다.
  • parent_column1, parent_column2, … parent_column3 - 상위 테이블의 기본 키를 구성하는 열입니다.

테이블 변경 외래 키 추가 예:

ALTER TABLE department
ADD CONSTRAINT fkey_student_admission
    FOREIGN KEY (admission)
    REFERENCES students (admission);

부서 테이블에 fkey_student_admission이라는 외래 키를 만들었습니다. 이 외래 키는 학생 테이블의 입학 열을 참조합니다.

예 쿼리 FOREIGN KEY

먼저 상위 테이블 데이터인 COURSE를 살펴보겠습니다.

검색어 :

SELECT * from COURSE;

예 쿼리 FOREIGN KEY

이제 Child 테이블에 일부 행을 삽입해 보겠습니다. '코스_강도_TSQL.'

두 가지 유형의 행을 삽입해 보겠습니다.

  1. 하위 테이블의 Course_Id가 상위 테이블의 Course_Id에 존재하는 첫 번째 유형입니다. 즉, Course_Id = 1 및 2
  2. 하위 테이블의 Course_Id가 상위 테이블의 Course_Id에 존재하지 않는 두 번째 유형입니다. 즉, Course_Id = 5

검색어 :

Insert into COURSE_STRENGTH values (1,'SQL');
Insert into COURSE_STRENGTH values (2,'Python');
Insert into COURSE_STRENGTH values (5,'PERL');

예 쿼리 FOREIGN KEY

결과 : 함께 쿼리를 실행하여 상위 및 하위 테이블을 살펴보겠습니다.

Course_ID 1과 2가 있는 행이 Course_strength 테이블에 존재합니다. 반면 Course_ID 5는 예외입니다.

예 쿼리 FOREIGN KEY

제품 개요

  • 외래 키의 모든 값은 다음의 일부여야 합니다. 기본 키 다른 테이블의.
  • The MySQL 외래 키는 동일한 테이블의 다른 열을 참조할 수 있습니다. 이 참조를 자체 참조라고 합니다.
  • SQL 외래 키 제약 조건 : 외래 키 열에 삽입할 테이블과 유효하지 않은 데이터 간의 연결을 보호하는 데 사용됩니다.
  • Create Table, Alter Table 또는 Alter Table을 사용하여 외래 키를 생성할 수 있습니다. SQL Server Management Studio.
  • 기본 키와 외래 키의 차이점은 다음과 같습니다. Click Here