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을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
70강 SQL 초석 다지기 : PostgreSQL CHECK constraint (126) | 2023.01.13 |
---|---|
69강 SQL 초석 다지기 : PostgreSQL Foreign Key constraint (129) | 2023.01.12 |
67강 SQL 초석 다지기 : PostgreSQL TRUNCATE TABLE (67) | 2023.01.10 |
66강 SQL 초석 다지기 : PostgreSQL TEMPORARY TABLE (117) | 2023.01.09 |
65강 SQL 초석 다지기 : PostgreSQL DROP TABLE (96) | 2023.01.08 |
댓글