PostgreSQL에서 데이터베이스에 데이터를 추가하는 방법은 SQL INSERT
문을 사용하는 것입니다. 이 문을 통해 테이블에 새로운 레코드를 삽입할 수 있습니다. 아래에서는 PostgreSQL에서 데이터를 추가하는 방법을 단계별로 설명하겠습니다.
1. 데이터베이스와 테이블 준비
먼저, 데이터를 삽입할 데이터베이스와 테이블이 준비되어 있어야 합니다. 만약 테이블이 없다면, 다음과 같이 테이블을 먼저 생성해야 합니다.
1.1 데이터베이스 선택
PostgreSQL 셸(psql
)에 접속한 후, 사용할 데이터베이스를 선택합니다.
psql -U 사용자이름 -d 데이터베이스이름
예를 들어, mydb
데이터베이스를 사용하려면:
psql -U postgres -d mydb
1.2 테이블 생성
데이터를 삽입할 테이블을 생성해야 합니다. 예를 들어, 사용자 정보를 저장하는 users
테이블을 만들려면:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) unique,
age INTEGER
);
이 테이블은 id
필드가 자동 증가하는 기본 키로 설정되어 있으며, 이름(name
), 이메일(email
), 나이(age
) 정보를 저장할 수 있습니다.
2. 데이터 추가 (INSERT INTO
)
PostgreSQL에서 데이터를 테이블에 추가하려면 INSERT INTO
명령을 사용합니다. 기본 형식은 다음과 같습니다:
INSERT INTO 테이블이름 (열1, 열2, 열3, ...) VALUES (값1, 값2, 값3, ...);
2.1 예시: 단일 행 추가
위에서 만든 users
테이블에 한 명의 사용자를 추가해보겠습니다.
INSERT INTO users (name, email, age) VALUES ('John Doe', 'john@example.com', 30);
이 명령은 users
테이블에 새로운 행을 삽입합니다. id
는 SERIAL
로 자동 증가하기 때문에, 값으로 지정할 필요가 없습니다.
2.2 예시: 여러 행 추가
한 번에 여러 개의 행을 삽입할 수도 있습니다. 이를 위해 여러 VALUES
절을 사용할 수 있습니다.
INSERT INTO users (name, email, age) VALUES
('Alice Smith', 'alice@example.com', 25),
('Bob Brown', 'bob@example.com', 28),
('Charlie Johnson', 'charlie@example.com', 35);
위 명령은 users
테이블에 세 개의 행을 한꺼번에 추가합니다.
3. 특정 열에만 데이터 추가
만약 테이블의 특정 열에만 데이터를 삽입하고 싶다면, 해당 열만 지정하고 INSERT INTO
문을 사용합니다. 다른 열은 기본값으로 설정됩니다.
INSERT INTO users (name) VALUES ('David Green');
이 경우, name
열에만 값이 삽입되며, 다른 열은 기본값(혹은 NULL)로 채워집니다. 만약 age
열에 기본값이 없고 NULL 허용이 안 된다면 오류가 발생할 수 있습니다.
4. 반환된 값 확인 (RETURNING
)
데이터를 삽입한 후 삽입된 행의 특정 값을 반환받고 싶다면, RETURNING
절을 사용할 수 있습니다. 주로 자동 생성된 기본 키 값을 확인할 때 사용됩니다.
INSERT INTO users (name, email, age) VALUES ('Eve White', 'eve@example.com', 32) RETURNING id;
이 명령은 새로운 행이 삽입된 후 자동 생성된 id
값을 반환합니다.
5. 트랜잭션 사용
여러 INSERT
문을 트랜잭션으로 묶어서 실행할 수 있습니다. 이를 통해 데이터베이스 상태를 안전하게 유지할 수 있으며, 중간에 오류가 발생하면 모든 변경 사항을 롤백할 수 있습니다.
BEGIN;
INSERT INTO users (name, email, age) VALUES ('Frank Miller', 'frank@example.com', 40);
INSERT INTO users (name, email, age) VALUES ('Grace Lee', 'grace@example.com', 27);
COMMIT;
BEGIN
으로 트랜잭션을 시작하고, COMMIT
으로 트랜잭션을 완료하면 두 개의 INSERT
명령이 모두 성공해야만 데이터베이스에 반영됩니다. 중간에 오류가 발생하면 ROLLBACK
으로 변경 사항을 취소할 수 있습니다.
6. 중복 데이터 삽입 방지 (ON CONFLICT
)
PostgreSQL에서는 고유 제약 조건이 있는 필드에서 중복 삽입을 방지할 수 있도록 ON CONFLICT
절을 사용할 수 있습니다.
예를 들어, email
필드에 고유 제약 조건이 있다고 가정하면:
INSERT INTO users (name, email, age) VALUES ('Henry Adams', 'henry@example.com', 45)
ON CONFLICT (email) DO NOTHING;
email
값이 중복될 경우, 아무 작업도 하지 않고 삽입을 무시합니다.
7. 데이터 확인 (SELECT
)
데이터가 정상적으로 삽입되었는지 확인하려면 SELECT
명령을 사용하여 데이터를 조회할 수 있습니다.
SELECT * FROM users;
이 명령은 users
테이블에 있는 모든 데이터를 출력합니다.
요약
- 테이블이 준비된 상태에서
INSERT INTO
명령을 사용하여 데이터를 삽입합니다. - 단일 또는 다중 행을 삽입할 수 있으며, 특정 열만 삽입할 수도 있습니다.
RETURNING
절을 사용하여 삽입된 데이터의 특정 값을 반환받을 수 있습니다.- 트랜잭션을 사용하여 안전하게 여러 데이터를 삽입할 수 있습니다.
- 중복 삽입을 방지하려면
ON CONFLICT
절을 사용합니다.
이러한 방법을 통해 PostgreSQL에 데이터를 효율적으로 추가할 수 있습니다.
'DB > PostgreSQL' 카테고리의 다른 글
[ PostgreSQL ] sub query - 서브 쿼리로 조회하기 (0) | 2024.10.07 |
---|---|
[ PostgreSQL ] SELECT - 데이터 조회하기 (0) | 2024.10.07 |
[ PostgreSQL ] CREATE, DROP, ALTER - 테이블 생성, 삭제, 변경하기 (0) | 2024.10.07 |
[ PostgreSQL ] \dt, \d - 테이블 리스트, 테이블 schema 알아보기 (1) | 2024.10.07 |
[ PostgreSQL ] - 데이터 베이스 생성하고 삭제하기 (1) | 2024.10.07 |