PostgreSQL은 오픈 소스 객체 관계형 데이터베이스 시스템입니다. PostgreSQL 를 사용하는데에 도움이 되는 가장 필수적인 명령, 팁 및 요령을 정리했습니다. 기본 쿼리에서 고급 구성에 이르기까지 데이터베이스를 효율적으로 관리하기 위한 유용한 자료가 되길 바랍니다.
PostgreSQL란?
PostgreSQL은 SQL(구조화된 쿼리 언어)을 사용하여 데이터와 상호 작용하고 관리하는 강력한 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. PostgreSQL은 광범위한 데이터 유형과 함수를 지원하여 대량의 데이터를 효율적으로 처리할 수 있습니다. 확장성이 뛰어나 사용자가 특정 요구 사항에 맞게 새로운 데이터 유형, 함수 및 사용자 정의를 추가할 수 있습니다.
PostgreSQL 데이터 타입:
PostgreSQL은 여러 데이터를 프로세싱하는만큼, 데이터 타입도 다양한데요, 아래와 같습니다.
Numeric | Character | Date/Time | Monetary | Binary |
Boolean | Geometric | JSON | Enumerated | Text-Search |
UUID | Network Address Types | Composite | Object Identifiers | Pseudo |
BitString | XML | Range | Arrays | pg_lsn |
Common Data Types
- Numeric Types:
- INTEGER
- FLOAT
- DECIMAL
- String Types:
- VARCHAR(n)
- TEXT
- Date/Time Types:
- DATE
- TIME
- TIMESTAMP
PostgreSQL 연산기호:
연산자는 개별 데이터 항목을 조작하고 결과를 반환합니다. 이는 WHERE 절에서 연산을 수행하는 데 사용되는 예약어입니다.
Operators
Arithmetic Operators | +, -, *, /, %, ^, ! |
Comparison Operators | =, !=, <>, >, <, >=, <= |
Logical Operators | AND, NOT, OR |
Bitwise Operators | &, |
PostgreSQL Queries:
1. CREATE DATABSASE
CREATE DATABASE 명령은 데이터베이스를 만드는 데 사용됩니다.
CREATE DATABASE database_name;
2. CREATE TABLE
데이터를 저장하려면 테이블이 필요합니다. CREATE TABLE 문은 테이블을 만드는 데 사용됩니다.
CREATE TABLE table_name
(column_1 data_type,
column_2 data_type,
...
column_n data_type);
Example:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3. Inserting Data
INSERT 명령은 테이블에 새 레코드(행)를 삽입하는 데 사용됩니다.
INSERT INTO table_name (column_1, column_2 ,...)
VALUES(value_1, value_2, ...);
Example:
- 단일 행 삽입:
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
- 여러 행 삽입:
INSERT INTO users (name, email) VALUES
('Bob', 'bob@example.com'),
('Charlie', 'charlie@example.com');
4. SELECT
ISELECT 문은 데이터베이스 테이블에서 데이터를 가져오는 데 사용되며, 결과는 결과 테이블 형태로 반환됩니다.
SELECT
column_1, column_2, .. column_n
FROM
table_name;
Example:
- 전체 열 선택:
- SELECT * FROM users;
- 특정 열 선택:
- SELECT name, email FROM users;
5. WHERE
WHERE 절은 SELECT 문에서 반환된 결과를 필터링하는 데 사용됩니다.
SELECT column_name
FROM
table_name
WHERE condition;
Example:
SELECT * FROM users WHERE name = 'Alice';
6. ORDER BY
SELECT * FROM users ORDER BY created_at DESC;
7.LIMIT
LIMIT 절은 쿼리에서 생성된 행의 하위 집합을 가져오는 데 사용됩니다. SELECT 문의 선택적 절입니다. OFFSET n은 행을 반환하기 전에 'n'개의 행을 건너뜁니다.
Syntax:
SELECT *
FROM table_name
LIMIT n;
8. ALTER TABLE
기존 테이블의 구조는 ALTER TABLE 문을 사용하여 수정할 수 있습니다. PostgreSQL은 아래에 나열된 ALTER TABLE로 수행할 다양한 작업을 지원합니다.
- 기존 테이블에 열(Column)추가
ALTER TABLE table_name ADD COLUMN new_column_name TYPE;
- 기존 테이블에서 열(Column) 삭제
ALTER TABLE table_name DROP COLUMN column_name;
- 기존 테이블의 열 이름 바꾸기
ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;
- 기존 테이블의 행 이름 바꾸기
ALTER TABLE table_name ALTER COLUMN column_name [SET DEFAULT value | DROP DEFAULT];
- NOT NULL 제약 조건 변경
ALTER TABLE table_name ALTER COLUMN column_name [SET NOT NULL| DROP NOT NULL];
- 열에 CHECK 제약 조건 추가
ALTER TABLE table_name ADD CHECK expression;
- 제약조건 추가
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_definition;
- 기존 테이블 이름 바꾸기
ALTER TABLE table_name RENAME TO new_table_name;
9. UPDATE
UPDATE 문은 테이블의 기존 데이터를 업데이트하거나 수정하는 데 사용됩니다.
UPDATE table_name
SET column_1 = value_1,
column_2 = value_2, ...
WHERE
condition_1 AND condition_2;
Example:
UPDATE users SET email = 'alice_new@example.com' WHERE name = 'Alice';
10. DELETE
DELETE 문은 테이블에서 행을 삭제하는 데 사용됩니다.
DELETE FROM table_name
WHERE condition;
Example:
DELETE FROM users WHERE name = 'Charlie';
11. Joins
- Inner Join:
SELECT users.name, orders.amount FROM users INNER JOIN orders ON users.id = orders.user_id;
- Left Join:
SELECT users.name, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id;
12. Functions and Aggregations
- Count Rows:
SELECT COUNT(*) FROM users;
- Group By:
SELECT created_at::date, COUNT(*), FROM users GROUP BY created_at::date;
13. Subqueries
- Subquery Example:
SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);
14. Indexes
- Create Index:
CREATE INDEX idx_users_email ON users (email);
15. Views
- Create View:
CREATE VIEW user_emails AS SELECT name, email FROM users;
16. Advanced Queries
- CTE (Common Table Expressions):
WITH recent_users AS ( SELECT * FROM users WHERE created_at > NOW() - INTERVAL '30 days' )
SELECT * FROM recent_users;
- Window Functions:
SELECT name, RANK() OVER (ORDER BY created_at DESC) as user_rank FROM users;
노션에서 다운받기
'호주 데이터 분석가 > SQL' 카테고리의 다른 글
PostgreSQL 데이터 타입과 예시 (1) | 2024.10.11 |
---|---|
SQLite vs MySQL vs PostgreSQL: 관계형 데이터베이스 관리(RDBMS)시스템 비교 (12) | 2024.10.10 |
댓글