PostgreSQL 제약 조건: 예시가 포함된 유형
제약이란 무엇입니까?
데이터 유형은 테이블에 저장할 수 있는 정보의 종류를 제한하는 데 사용됩니다. 하지만 이 접근 방식에는 2가지 문제가 있습니다.
- 이슈 1 : 데이터 유형에 의해 시행되는 제한은 특정 애플리케이션에는 적합하지 않습니다. 예를 들어 품목 가격이 포함된 열은 양수 값만 허용해야 합니다. 그러나 양수만 허용하는 특정 데이터 유형은 없습니다.
- 2 문제: 다른 열이나 행과 관련하여 행/열 데이터의 정보를 제한할 수 있습니다. 예를 들어 항목 정보가 포함된 테이블에는 각 고유 열 제약 조건에 대해 하나의 행만 있어야 합니다.
이러한 문제를 극복하고 이러한 규칙을 정의하려면 다음을 사용할 수 있습니다. 구속의의 PostgreSQL. 간단히 말해서 제약 조건은 데이터가 따라야 하는 규칙입니다. 테이블 제약 조건을 추가하면 데이터베이스 시스템이 데이터 무결성을 강화할 수 있습니다.
따라서 사용자가 정의된 제약 조건을 위반하는 열에 데이터를 저장하려고 하는 경우 오류 메시지가 표시되어야 합니다.
유형 PostgreSQL 제약
다양한 종류를 살펴보자 PostgreSQL 데이터 정확성을 보장하기 위해 만들 수 있는 제약 조건은 다음과 같습니다.
- 유일한
- Null 아님
- 제약조건 확인
- 기본 키
- 외래 키
- 실행 제약
1) PostgreSQL 고유 제약
고유 제약 조건은 열 또는 열 제약 조건 그룹에 포함된 데이터가 고유한지 확인하는 데 도움이 됩니다.
예시
CREATE TABLE Item( Item_no integer UNIQUE, Name text, );
2) 널 제약조건 아님
null이 아닌 제약 조건은 열이 null 값이 되어서는 안 된다는 것을 정의합니다. 이 유형의 제약 조건은 검사 제약 조건을 만드는 것과 매우 유사합니다. 하지만, PostgreSQL 더 효율적인 null이 아닌 제약 조건을 생성합니다. 이 방법의 문제점은 null이 아닌 제약 조건에 명시적인 이름을 지정할 수 없다는 것입니다.
null이 아닌 제약 조건은 기본값이 아닙니다. PostgreSQL 표준이며 휴대용 애플리케이션에서는 사용하면 안 됩니다. 나중에 추가되었습니다. PostgreSQL 다른 것과 호환되도록 만들기 위해 DBMS 시스템많은 사람들이 이를 사용하는 이유는 스크립트 파일에서 제약 조건을 쉽게 전환할 수 있기 때문입니다.
구문 :
CREATE TABLE Item ( product no integer NULL, Item_name text NULL, Itm_price numeric NULL );
3) PostgreSQL 제약 조건 확인
검사 제약 조건은 일부 열의 값이 부울 표현식이어야 함을 지정하는 데 도움이 됩니다.
The PostgreSQL 검사 제약 조건은 CHECK 키워드와 그 뒤에 괄호 안의 표현식으로 구성됩니다. 검사 제약 조건 Postgres는 제한되어야 하는 열을 포함해야 하며 그렇지 않으면 의미가 없습니다.
구문 :
CREATE TABLE Item( Item_id INTEGER PRIMARY KEY, name VARCHAR(20), Item_price NUMERIC CHECK(price>0) );
예:
CREATE TABLE Emp( ID INTEGER primary key, First_name VARCHAR(20), Last_name VARCHAR(20), Gender CHAR(l) check(gender gender='M'), Salary INTEGER NOT NULL, Dept_Num INTEGER );
CREATE TABLE ITEM( Id INTEGER PRIMARY KEY, name VARCHAR(15), price numeric CHECK (price > 0) );
4) 기본키 제약조건
기본 키 제약 조건을 사용하면 열 또는 열 그룹을 테이블 행의 고유 식별자로 사용할 수 있습니다. 기본 키 제약 조건을 정의하려면 선언된 값이 고유해야 하며 null이 아니어야 합니다. 이를 통해 두 개의 테이블 정의가 동일한 데이터를 허용할 수 있습니다.
구문 :
Create Table Item( Item_no, integer PRIMARY KEY, Item_name text, Item_Price numeric );
예 1 :
CREATE TABLE Employee( ID INTEGER PRIMARY KEY Fname VARCHAR(20), Lname VARCHAR(20), Gender CHAR(l), Salary INTEGER NOT NULL, Dept INTEGER, UNIQUE(FNAME, LNAME) );
예 2 :
CREATE TABLE first( A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl) ); Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER. );
예 3 :
CREATE TABLE Items ( Item_no integer UNIQUE NOT NULL, name text, price numeric CREATE TABLE Items ( Items_no no integer PRIMARY KEY, name text, price numeric
5) 외래 키 제약 조건
외래 키 제약 조건은 열 또는 열 그룹의 값이 다른 테이블의 일부 행에 나타나는 값과 일치해야 함을 지정합니다. 이를 통해 연결된 두 테이블 간의 참조 무결성을 설정할 수 있습니다.
다양한 제품에 대한 주문을 저장하는 테이블이 있다고 가정해 보겠습니다. 테이블에 존재하는 제품 주문이 포함되어 있는지 확인하려고 합니다. 따라서 여기서는 제품 테이블을 참조하는 주문 테이블에 외래 키 제약 조건을 정의해야 합니다.
구문 :
CREATE TABLE ( id INTEGER PRIMARY KEY. name VARCHAR(IO) >; CREATE TABLE testable Id INTEGER PRIMARY KEY read INTEGER REFERENCES (id) );
예 2 :
CREATE TABLE Student ( Std_ID INTEGER primary key, First_name VARCHAR(20), Last_name VARCHAR(20), Gender CHAR(l), Steam, VARCHAR(20), Dept_NUM INTEGER REFERENCES Department );
6) 제외 제약
제외 제약 조건은 지정된 열 또는 지정된 연산자를 사용하여 표현식에서 두 행을 서로 비교할 경우 이러한 연산자 비교 중 하나 이상이 null 또는 false 값을 반환하도록 하는 데 도움이 됩니다. 이것을 추가 PostgreSQL 제약 조건은 제약 조건 선언에 지정된 유형의 인덱스를 자동으로 생성합니다.
예:
예를 들어, 다음 PostgreSQL 문은 School이라는 새 테이블을 만들고 5개의 열을 추가합니다.
CREATE TABLE SCHOOL6( STDID INT PRIMARY KEY NOT NULL, STDNAME TEXT NOT NULL, STDAGE INT NOT NULL, FEEDBACK CHAR(50), STANDARD INT NOT NULL,
예를 들어, 다음 PostgreSQL 문은 세 개의 열을 추가하는 Branch라는 새 테이블을 만듭니다. STD_ID 열은 외래 키이며 SCHOOL6 테이블의 ID 필드를 참조합니다.
CREATE TABLE BRANCH ( BRANCHCODE INT PRIMARY KEY NOT NULL, BRAMCHNAME CHAR(50) NOT NULL, STD_ID INT references SCHOOL6(ID) );