개요
- psql shell 명령어를 간단히 배우도록 한다.
Database, Schema, Table를 생성하도록 한다.
- 데이터타입에 대해 배우도록 한다.
psql Shell 명령어
| 명령어 |
설명 |
| \q |
psql을 종료한다. |
| \l |
데이터베이스를 조회한다. |
| \c |
입력한 DB로 이동한다. |
| \e |
외부편집기로 sql 쿼리 입력 가능 |
| \dt |
현재 DB에서 테이블을 확인할 수 있음. |
DB 및 Table 다루기
evan=# CREATE DATABASE book;
CREATE DATABASE
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
);
다양한 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
);