본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

68강 SQL 초석 다지기 : PostgreSQL Primary Key constraint

by DoitSQL 2023. 1. 11.
728x90

PostgreSQL 기초강의, PostgreSQL 기초강좌

68강 SQL 초석 다지기 : PostgreSQL Primary Key constraint   

 

SQL 초석 다지기 68강 시작합니다.

 

이번 시간부터는 PostgreSQL DATABASE CONSTRAINTS(제약조건)에 대해서 알아보겠습니다. 

 

이번 시간에는 첫 번째로

 PostgreSQL Primary Key constraint

에 대해서 알아보는 시간입니다.

 

요약: 이번 강의에서는 SQL 문을 통해 기본 키가 무엇이고 PostgreSQL 기본 키 제약 조건을 관리하는 방법을 알아봅니다.


Primary Key는 테이블에서 행을 고유하게 식별하는 데 사용되는 열 또는 열 그룹입니다.

Primary Key 제약 조건을 통해 Primary Key를 정의합니다. 기술적으로 Primary Key 제약 조건은 NOT NULL  제약 조건과 UNIQUE 제약 조건의 조합입니다.

테이블에는 Primary Key가 하나만 있을 수 있습니다. 모든 테이블에 Primary Key를 추가하는 것이 좋습니다. 테이블에 Primary Key를 추가할 때 PostgreSQL은 Primary Key를 정의하는 데 사용되는 열 또는 열 그룹에 고유한 B-트리 인덱스를 만듭니다.

 

Define primary key when creating the table   

일반적으로 CREATE TABLE 문을 사용하여 테이블 구조를 정의할 때 primary key를 테이블에 추가합니다.

 

CREATE TABLE TABLE (
     column_1 data_type PRIMARY KEY,
     column_2 data_type,
     …
); 

 

다음 문은 po_headers라는 이름으로 구매 주문 (PO) 헤더 테이블을 생성합니다.

CREATE TABLE po_headers (
     po_no INTEGER PRIMARY KEY,
     vendor_no INTEGER,
     description TEXT,
     shipping_address TEXT
);
 

po_no는 po_headers 테이블의 기본 키로, po_headers 테이블에서 구매 주문을 고유하게 식별합니다.

 

 

기본 키가 둘 이상의 열로 구성된 경우 다음과 같이 기본 키 제약 조건을 정의합니다:

CREATE TABLE TABLE (
     column_1 data_type,
     column_2 data_type,
     … 
        PRIMARY KEY (column_1, column_2)
); 

 

예를 들어, 다음 문은 구매 주문 번호(po_no)와 라인 항목 번호( item_no)의 조합을 주 키로 하는 구매 주문 라인 항목 테이블을 생성합니다.

CREATE TABLE po_items (
     po_no INTEGER,
     item_no INTEGER,
     product_no INTEGER,
     qty INTEGER,
     net_price NUMERIC,
     PRIMARY KEY (po_no, item_no)
); 

 

기본 키 제약 조건의 이름을 명시적으로 지정하지 않으면 PostgreSQL은 기본 키 제약 조건에 기본 이름을 할당합니다. 기본적으로 PostgreSQL은 table-name_pkey를 기본 키 제약 조건의 기본 이름으로 사용합니다. 이 예에서는 PostgreSQL은 po_items 테이블에 대해 po_items_pkey라는 이름으로 기본 키 제약 조건을 생성합니다.

기본 키 제약 조건의 이름을 지정하려는 경우 CONSTRANT 절을 다음과 같이 사용합니다:

CONSTRAINT constraint_name PRIMARY KEY(column_1, column_2,...);   

 


Define primary key when changing the existing table structure   

기존 테이블의 기본 키를 정의하는 경우는 거의 없지만, 필요한 경우 ALTER TABLE 문을 사용하여 기본 키 제약 조건을 추가할 수 있습니다.

ALTER TABLE table_name ADD PRIMARY KEY (column_1, column_2); 

 

다음 문은 기본 키를 정의하지 않고 products라는 테이블을 만듭니다.

CREATE TABLE products (
     product_no INTEGER,
     description TEXT,
     product_cost NUMERIC
); 

 

이후, 제품 테이블에 주 키 제약 조건을 추가하려는 경우 다음 명령문을 실행할 수 있습니다:

ALTER TABLE products 
ADD PRIMARY KEY (product_no); 

 

보통 테이블 생성할 때 주 키를 정하지만, 지정이 안된 경우 위와 같이 추가할 수 있습니다.


How to add an auto-incremented primary key to an existing table   

기본 키가 없는 공급업체 테이블이 있다고 가정합니다.

CREATE TABLE vendors (name VARCHAR(255)); 

 

INSERT 문을 사용하여 벤더 테이블에 몇 개의 행을 추가합니다:

INSERT INTO vendors (NAME)
VALUES
     ('Microsoft'),
     ('IBM'),
     ('Apple'),
     ('Samsung'); 

 

삽입 작업을 확인하기 위해 다음 SELECT 문을 사용하여 공급업체 테이블에서 데이터를 쿼리 합니다:

SELECT
     *
FROM
     vendors;  

이제 id라는 기본 키를 공급업체 테이블에 추가하고 id 필드가 하나씩 자동으로 증분 되는 경우 다음 명령문을 사용합니다:

ALTER TABLE vendors ADD COLUMN ID SERIAL PRIMARY KEY; 

 

벤더 테이블을 다시 확인해 보겠습니다.

SELECT
     *
FROM
     vendors;  
   

ID 열이 추가되었습니다. 열 순서는 두 번째입니다.


Remove primary key   

기존의 기본 키 제약 조건을 제거하려면 다음 구문과 함께 ALTER TABLE 문을 사용합니다:

ALTER TABLE table_name DROP CONSTRAINT primary_key_constraint; 

 

예를 들어 제품 테이블의 기본 키 제약 조건을 제거하려면 다음 명령문을 사용합니다:

ALTER TABLE products
DROP CONSTRAINT products_pkey; 


이번 시간에는 CREATE TABLE 및 ALTER TABLE 문을 사용하여 기본 키 제약 조건을 추가하고 제거하는 방법에 대해 배웠습니다.

 

수고하셨습니다.


본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글