PostgreSQL 기초 1
Page content
개요
- psql shell 명령어를 간단히 배우도록 한다.
Database
,Schema
,Table
를 생성하도록 한다.- 데이터타입에 대해 배우도록 한다.
psql Shell 명령어
명령어 | 설명 |
---|---|
\q | psql을 종료한다. |
\l | 데이터베이스를 조회한다. |
\c | 입력한 DB로 이동한다. |
\e | 외부편집기로 sql 쿼리 입력 가능 |
\dt | 현재 DB에서 테이블을 확인할 수 있음. |
- 자주 사용하는 명령어이기 때문에 확인한다.
DB 및 Table 다루기
- 콘솔창에서 book 이름의 DB를 생성한다.
evan=# CREATE DATABASE book;
CREATE DATABASE
- 그 후, book에 접속한다.
evan=# \c book
You are now connected to database "book" as user "evan".
book=#
- 이번에는 DROP DATABASE 구문을 통해 book 삭제한다.
evan=# DROP DATABASE book;
DROP DATABASE
SCHEMA 생성
postgres=# CREATE SCHEMA ann_simmons;
CREATE SCHEMA
postgres=# CREATE SCHEMA ty_beck;
CREATE SCHEMA
postgres=# CREATE SCHEMA production;
CREATE SCHEMA
Two Table 생성
- 두개의 테이블을 생성한다.
CREATE TABLE customers ();
CREATE TABLE orders ();
- 커밋을 항상 진행한다.
- psql 터미널에서
\dt
를 실행하여 출력값이 잘 나오는지 확인한다.
postgres=# \dt
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+-------
public | customers | table | evan
public | orders | table | evan
(2 rows)
Primary Key 생성
- 이번에는 Primary Key 생성하는 것을 준비한다.
- 이제 이 두개의 Table를 생성하도록 합니다.
CREATE TABLE business_type (
id serial PRIMARY KEY,
description TEXT NOT NULL
);
CREATE TABLE applicant (
id serial PRIMARY KEY,
name TEXT NOT NULL,
zip_code CHAR(5) NOT NULL,
business_type_id INTEGER references business_type(id)
);
CREATE TABLE users (
id serial PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL,
hashed_password CHAR(72) NOT NULL
);
schema.table 생성
- temp schema를 생성한 후, temp.users table를 작성한다.
CREATE TABLE temp.users (
id serial PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL,
hashed_password CHAR(72) NOT NULL
);
Data Types
- 크게 Text, NUMERIC, BOOLEAN 형태로 구성이 됩니다.
-- Create the project table
CREATE TABLE project (
-- Primary Key
id SERIAL PRIMARY KEY,
-- franchise 기회
is_franchise BOOLEAN DEFAULT FALSE,
-- Franchise 이름
franchise_name TEXT DEFAULT NULL,
-- Project 시도
project_state TEXT,
-- Project 시군
project_county TEXT,
-- Project로 발생한 Job 수
jobs_supported NUMERIC
);
- Data Types URL: https://www.postgresql.org/docs/current/datatype.html
다양한 Text Data Types
CREATE TABLE book (
isbn CHAR(13) NOT NULL,
author_first_name VARCHAR(50) NOT NULL,
author_last_name VARCHAR(50) NOT NULL,
content TEXT NOT NULL
);
- Text data 타입은: TEXT, VARCHAR(N), CHAR(N) 크게 3가지 형태로 구성이 된다.
- TEXT
- 길이를 알 수 없는 텍스트 데이터에 적합
- VARCHAR(N)
- N은 최대 길이가 N자인 문자열만 저장하도록 열을 제한함.
- N보다 글자수가 큰 값이 입력이 되면 error가 발생이 됨
- 만약 N을 지정하지 않으면 TEXT와 동일하게 됨
- CHAR(N)
- 정확하게 N 숫자만큼 글자만 들어가게 됨
- isbn은 주로 출판사에서 볼 수 있는 문자열임
Numeric Data
CREATE TABLE employee (
id SERIAL PRIMARY KEY,
first_name VARCHAR(10) NOT NULL,
last_name VARCHAR(10) NOT NULL,
num_sales INTEGER
)
-- Create the client table
CREATE TABLE client (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
site_url VARCHAR(50),
num_employees SMALLINT,
num_customers INTEGER
);
-- Create the campaign table
CREATE TABLE campaign (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
budget NUMERIC(7, 2),
num_days SMALLINT DEFAULT 30,
goal_amount INTEGER DEFAULT 100,
num_applications INTEGER DEFAULT 0
);
-
Integer Types
- SMALLINT
- INTEGER
- BIGINT
- SERIAL
- BIGSERIAL
- DECIMAL(총자릿수, 소수점 자릿수)
-
Floating-Point Types
- DECIMAL(NUMERIC)
- REAL
- DOUBLE PRECISION
BOOLEAN Data Types
- true
- false
- NULL
Temporal Data types
CREATE TABLE appeal (
id SERIAL PRIMARY KEY,
content TEXT NOT NULL,
received_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
approved_on_appeal BOOLEAN DEFAULT NULL,
reviewed DATE
);
-
TIMESTAMP
-
DATE
-
TIME
-
아래 Table 정의하는 것에 대해 생각해보는 시간을 갖는다.
-- Create the loan table
CREATE TABLE loan (
borrower_id INTEGER REFERENCES borrower(id),
bank_id INTEGER REFERENCES bank(id),
approval_date DATE NOT NULL DEFAULT CURRENT_DATE,
gross_approval DECIMAL(9, 2) NOT NULL,
term_in_months SMALLINT NOT NULL,
revolver_status BOOLEAN NOT NULL DEFAULT FALSE,
initial_interest_rate DECIMAL(4, 2) NOT NULL
);
CAST 연산자
- CAST 연산자는 형변환을 할 수 있는 가장 기본적인 방법이다.
CAST (표현식 AS 바꿀 데이터 타입) FROM TABLE;