SQLShack (한국어)

0 Comments

이 문서에서 일반적으로 사용되는 SQL Server 제약 조건이지:NULL,독특하고 기본 키로,우리는 설명에서 세부사항,처음 세 가지 유형의 SQL 서버에 제한되지 않 NULL,독특하고 기본 핵심이다. 이 문서에서,우리가 논의하는 다른 세 가지 제약,외국 키를 확인하고 기본 설명하여 각각 하나의 간단히고 제가 실례로 다루어진다.,

외래 키 제약 조건

외래 키는 두 테이블을 함께 연결하는 데 사용되는 데이터베이스 키입니다. 외국인 키의 제약을 식별하는 간의 관계를 데이터베이스에 테이블을 참조하여,열 또는 열 집에서 아이에 테이블을 포함하는 외국인 키,차 키를 열 또는 설정의 열,부모 테이블.

사이의 관계를 자녀와 부모 테이블의 유지를 확인하여 존재를 자식 테이블의 외국인 키 값에서 참조하는 부모 테이블의 기본키를 삽입하기 전에 이러한 값으로 아이는 테이블., 이러한 방식으로 부모 테이블의 기본 키를 참조하는 자식 테이블의 외래 키 제약 조건은 데이터베이스 참조 무결성을 적용합니다. 참조 무결성은 데이터 삽입 프로세스 중에 데이터베이스 테이블 간의 관계가 보존되도록합니다. 을 기억하는 기본 키의 제약 조건하지 않는다는 것을 보장 NULL 또는 복제에 대한 값을 선택한 열 삽입됩니다 테이블을 적용하는 엔티티에 대한 무결성을 것이다., 기본 키에 의해 시행되는 엔티티 무결성과 외래 키에 의해 시행되는 참조 무결성은 함께 키 무결성을 형성합니다.

외국인 키의 제약 조건에서 다른 기본 키의 제약 조건에서,당신은 만들 수 있습니다만 하나 기본 키로 각 당 테이블을 생성 할 수있는 기능을 여러 외국인 키의 제약에서 각각의 표를 참조하여 여러 부모 테이블. 또 다른 차이는 외국인 핵심할 수 있습 삽입하는 NULL 값이 없으면 NULL 이 아닌 정의된 제약 조건에 이 키나 기본 키가 받아들이지 않 Null.,

외국인 키의 제약 조건을 제공합니 당신은 또한 당신을 제어 할 수있는 능력을 가진 어떤 작업도 수행할 때 값을 참조 부모 테이블에서 업데이트하거나 삭제,사용하에 업데이트 및 삭제 절입니다. 지원되는 행동을 취할 수 있는 경우 삭제하거나 업데이트하는 부모 테이블의 값에는 다음이 포함됩니다:

  • NO ACTION:경우에 업데이트하거나 삭제 절을 설정하면 아무 작업을 수행 업데이트하거나 삭제 작업에서 부모 테이블이 실패하는 오류가 있습니다.,
  • 캐스케이드:설정에서 업데이트하거나 삭제 절을 캐스케이드,동일한 작업을 수행에 참조되는 값의 부모 테이블에 반영할 것입과 관련된 값을 아이에는 테이블. 예를 들어 참조된 값이 상위 테이블에서 삭제되면 하위 테이블의 모든 관련 행도 삭제됩니다.
  • 설정 NULL:이에 업데이트 및 삭제 절한 경우에도 이 값을 참조 부모 테이블에서 삭제되거나 수정 관련된 모든 값을 아이에는 테이블이 NULL 로 설정 값입니다.,
  • 설정 기본값:를 사용하여 설정의 기본 옵션에 업데이트 및 삭제 절을 지정하는 경우,그 참조는 값 부모 테이블에서 업데이트하거나 삭제에 관련된 값을 자식 테이블을 가진 외국 키를 열 수 있을 설정 기본 설정 값으로 설정됩니다.

CREATE TABLE T-SQL 문을 사용하여 열을 정의하는 동안 외래 키 제약 조건을 추가하거나 ALTER TABLE T-SQL 문을 사용하여 테이블 생성 후 추가 할 수 있습니다. 외래 키 제약 조건 기능을 이해하기 위해 두 개의 새 테이블을 만들 것입니다., 첫 번째 테이블은 ID 열이 기본 키 열로 정의 된 상위 테이블의 역할을합니다. 두 번째 테이블은 부모 테이블의 ID 열을 참조하는 외래 키 열로 정의 된 ID 열과 함께 자식 테이블의 역할을합니다.,>ID INT PRIMARY KEY

Name VARCHAR(50)NULL
)
GO
테이블 생성 ConstraintDemoChild
(
CID INT PRIMARY KEY
ID INT 외국 열쇠를 참조 ConstraintDemoParent(ID)
)

을 만든 후 두 테이블,우리는 삽입하는 세 가지 기록하는 부모 테이블,두 개의 레코드를 자식 테이블을 사용하여 삽입에는 다음과 같은 문구:

결과 보는 세 개의 레코드가 성공적으로 삽입하는 부모 테이블., 자식 테이블에 삽입하려고 시도한 첫 번째 레코드는 부모 테이블에 1 의 ID 값이 이미 존재하므로 오류없이 삽입됩니다.,때문에의 ID 값 4 에 존재하지 않는 부모 테이블과로 인해 외국인 키의 제약 조건이지를 삽입할 수 있는 ID 값을 아는 테이블에 존재하지 않는 부모 테이블:

을 확인하는 부모와 자식 테이블의 콘텐츠에,당신은 당신이 볼만 하나의 레코드에 삽입되는 아이로 테이블 아래에 볼 수 있습니다:

으로 우리를 언급하지 않았 외국 키를 제 이름을 만드는 동안 자식 테이블,SQL 서버에서 할당된 고유한 이름을 우리는 할 수 있습에서 검색 INFORMATION_SCHEMA.,TABLE_CONSTRAINTS system view using the following query:

1
2
3
4
5
6
7
8

SELECT CONSTRAINT_NAME,
TABLE_SCHEMA ,
TABLE_NAME,
CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.,onstraintDemoChild
제약 추가 FK__ConstraintDe__ID
외국인 키(ID)참조 ConstraintDemoParent(ID);

작업이 실패할 것이다, 로의 ID 값 4 에 존재하지 않는 부모 테이블과 휴식에 참조 무결성 간의 자녀와 부모의 테이블에서 볼 수 있듯이,다음과 같은 오류 메시지:

을 만들 수 있도록 외국인 키의 제약 조건에서 아이블,우리는 제거하기에는 충돌에 의해 처음 삭제하거나 업데이트하는 기록이다., Here we will try to modify the ID value with the following UPDATE command:

1
2
3

UPDATE ., SET ID=2WHERE ID=4

이제 외국인 키의 제약 조건이 만들어지 않고 성공적으로 어떠한 오류는 아래와 같:

외국인 키의 제약 조건을 정의할 수 있으로 도움의 SQL 서버 관리 스튜디오 도구입니다. 필요한 테이블을 마우스 오른쪽 버튼으로 클릭하고 디자인 옵션을 선택하십시오.,>서를 표시 창,당신은 쉽게 이름을 지정한 외국 KEY,테이블과 열이는 것에 참여하는 것과 관련하여 테이블과 열 명세,이를 통해 기존는 데 필요한 데이터,그리고 마지막으로 수행하는 작업을 때는 참조되는 기록을 삭제하거나 수정한 부모 테이블,다음과 같습니다:

CHECK

A CHECK 에 정의 열 또는 설정의 열을 제한하는 값의 범위에 삽입할 수 있는 이러한 열을 사용하여,미리 정의된 상태입니다., 체크인 제약 조건을 제공 행동으로 평가를 삽입 또는 수정된 값을,어디로 가치 있는 조건을 만족하는 것으로 삽입,테이블,그렇지 않으면을 삽입하는 작업 삭제 될 수 있습니다. 동일한 열에 대해 여러 검사 제약 조건을 지정할 수 있습니다.

정의하는 확인 제약 조건이 그렇게 쓰기 WHERE 절을 쿼리를 사용하여 다양한 비교 연산자와 같고,또는 사이에서,다음과 같은 NULL 을 쓰고 그는 부울 식 TRUE 를 반환,허위 또는 알 수 있습니다., CHECK 제약 조건은 조건에 NULL 값이 있을 때 알 수 없는 값을 반환합니다. 체크인 제약 조건을 사용에 주로 적용하의 도메인 무결성 제한하여 삽입되는 값에는 것에 따라 정의된 값 범위 또는 형식으로 규칙이 있습니다.

우리는 새로 만드 간단한 테이블이 있는 세 개의 열;ID 를 열 것으로 간주되는 기본 키의 표,이름 및 연봉이다. 급여 열에 검사 제약 조건이 정의되어 해당 열에 0 또는 음수 값이 삽입되지 않는지 확인합니다.,v>6

7
8
9
테이블 생성 ConstraintDemo4
(
ID INT PRIMARY KEY
Name VARCHAR(50) NULL,
Salary INT 검사(봉>0)
)
GO

를 실행하는 경우에는 아래 세 가지 삽입 문의:

그것은 분명하에서 생성되는 결과는 첫 번째 레코드가 삽입되는 오류가 없으로 제공되는 급여의 가치를 확인 상태입니다.,rovided 급여 값을 충족하지 않은 체크인 제약 조건을 조건으로 인해 삽입 제하고 부정적인 급여 가치,당신이 볼 수 있듯이에서 다음과 같은 오류 메시지:

를 확인하는 테이블의 데이터를 보여줍니다 당신은 그만의 첫 번째 행에 전달 체크인 제약 조건을 삽입됩니다 테이블 아래와 같:

이전에 언급한 바와 같 이 기사에서는 확인을 제약할 수 있습 삽입하는 경우 NULL 값을 참가 열 수 있 NULL,NULL 값과 평가로 알 수 없이 오류가 있습니다., 이것은 분명 아래 기록에 삽입되는 성공적으로만 제공된 가치 급여의 열은 NULL 입니다:

을 검토하는 경우 체크인 제약 조건을 정의에 이전 테이블 만들기 문 것을 볼 수 있을 것입니다 언급하지 않는 이름의 정의된 제약 조건이 있습니다. 이 경우 SQL Server 는 INFORMATION_SCHEMA 를 쿼리하여 표시 할 수있는 해당 제약 조건에 고유 한 이름을 할당합니다.ConstraintDemo4 테이블에 대한 table_constraints 시스템 뷰입니다., 그 결과는 다음과 같습니다:

체크인 제약 조건을 삭제할 수 있을 사용하여 변경 테이블 T-SQL statement.,onstraint now, with the following ALTER DATABASE … ADD CONSTRAINT T-SQL statement:

1
2
3
4
5

ALTER TABLE ConstraintDemo4
ADD CONSTRAINT CK__Constrain__Salar
CHECK (Salary>0);

Adding the CHECK constraint will fail., 이는 사실로 인해 동안,SQL 서버는 검사 이미 기존에 대한 데이터를 확인 제약 조건 값을 하나 이상을 충족하지 않는 제약 조건이 발견되 당신이 볼 수 있듯이에서 다음과 같은 오류 메시지:

를 정의 할 수 있도록 체크인 제약 조건을 다시 우리를 수정하거나 삭제된 데이터를 방지 제약 조건에서 만들어집니다.,de484761″>

1
2
3
업데이트 ConstraintDemo4SET Salary=300 는 ID(2,3)

이제,확인 제약 조건을 정의할 수 있으로 아무 문제는 다음과 같습니다:

SQL 서버 사용하지 않도록 설정할 수 있습 CHECK 특별한 경우에, 를 삽입하는 등 거대한 양의 데이터에 대해 걱정하지 않고 회의 제약 조건에 대한 테스트용으로,또는 인해 변화하는 비즈니스에서 논리입니다., 이 경우는 일시적으로 비활성화 할 수있는 검사 및 외래 키 제약 조건에 대해서만 유효합니다.,riting 제약 조건을 이름에서와 같이,T-SQL 아래 명령을 사용:

1
2
3
ALTER TABLE ConstraintDemo4NOCHECK 제약 조건 모든

에서 확인 제약 조건을 정의할 수 있는 지정된 제약 조건을 만들다는 것을 확인하지 않고 기존의 행, 그러나 제약 조건으로 표시되지 않은 신뢰할 수 있습니다., 할 수 있도록 모든 확인 제약 조건을,한 번에 모두 사용하여,T-SQL 아래 명령을 사용:

1
2
3
ALTER TABLE ConstraintDemo4CHECK 모든

사용하는 동안 이전 CHECK,당신이 볼 수는 SQL 서버에 대해 불평하지 않습니다 선택하는 데이터의 제약 조건입니다., 이 경우 데이터의 도메인 무결성은 유지되지 않습니다.

이 문제를 해결하기 위해,DBCC CHECKCONSTRAINTS 명령을 쉽게 사용할 수 있는 데이터를 식별하기 위해 제한조건을 위반하는 조건에서 지정된 테이블이나 제약 조건을 고려하지 않을 실행하는 명령에는 피크 시간에,그것에 영향을 미칠 것입니다 SQL 서버 성능으로 인해하지 않을 활용하여 데이터베이스에 있습니다.,v id=”ff419aa09d”>

1
2
3
DBCC CHECKCONSTRAINTS(ConstraintDemo4)

결과를 보여줍니다 두 개의 급여 값을 확인한 제약 조건을 다음과 같습니다:

A CHECK 수 있습니다 또한 도움으로 만들의 SQL 서버 관리 스튜디오 도구에 마우스 오른쪽 버튼을 클릭하여 필요한 테이블과를 선택하는 디자인 옵션입니다., 에서 표시되는 디자인 창고 마우스 오른쪽 단추를 클릭한 확인을 선택하 제약 옵션은 다음과 같다:

에서 확인 제약 조건을 지정할 수 있습니다 CHECK 이름을 표현하는 경우 기존의 데이터가 필요한 다음과 같습니다:

기본 제약 조건

기본 제약 조건을 제공하는 데 사용되는 기본 열 값을 삽입되는 행 값을 지정하지 않으면 그 열에 삽입하는 문입니다., 기본 제약 조건을 유지하는 데 도움의 도메인 무결성을 제공하여 적절한 값을 열 경우에는 사용자가 값을 제공합니다. 기본값은 상수 값,시스템 함수 값 또는 NULL 일 수 있습니다.,elow:

1
2
3
4
ALTER TABLE ConstraintDemo5
제약 추가 DF__제한__원 모집본(GETDATE()) 에 대한 EmployeeDate

또한,기본 제약 조건을 정의할 수 있을 사용하여 SQL Server Management,스튜디오에 마우스 오른쪽 버튼을 클릭하여 필요한 테이블의 디자인을 선택 옵션입니다., 를 선택한 후 열을 할당하는 것에 대한 기본값을 검색하여 열 특성을 창에 아래와 같이

기대하는 이 문서 및 이전,도움이 설명하는 여섯 개의 SQL 서버 제한조건 유형입니다. 아래 의견에 질문이 있으시면 언제든지 문의하십시오.,nly SQL 사용되는 서버에 제약이지:NULL, 독특하고 기본 키

유용한 링크

  • 만들기 Check
  • 제약
  • 기본
  • 외국인을 만들 중요한 관계
  • CHECK

  • 저자
  • 최근 게시글
Ahmad 야신 Microsoft 빅 데이터 엔지니어와 깊은 지식과 경험에서 SQL BI,SQL 서버 데이터베이스 관리 및 개발 분야.,
그는 마이크로소프트에 의하여 증명된 솔루션에서 전문가가 데이터 관리와 분석,Microsoft 인증 솔루션 연결에서 SQL 데이터베이스 관리와 개발,푸른 개발자 연결 및 마이크로소프트에 의하여 증명된 트레이너입니다.
또한 그는 많은 블로그에서 SQL 팁으로 기여하고 있습니다.,
모두 보기 게시물에 의해 Ahmad 야신
최근 게시물에 의해 아마드 알파벳을(모든)
  • 하는 방법을 모니터링 Azure 데이터 공장 January15,2021
  • 사용하여 소스에서 컨트롤 Azure 데이터 Factory-January12, 2021
  • 사용 템플릿에서 Azure 데이터 Factory-January8,2021


답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다