IT/WEB

[PostgreSQL] 누구나 알기 쉬운 PostgreSQL DB구축

개발자 두더지 2022. 6. 8. 21:54
728x90

일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있일 수 있으며 틀린 내용은 지적 부탁드립니다.

 

DB의 실행


$ psql -d 데이터베이스명;

postgres를 먼저 실행한다.

$ psql -d postgres;

만약 비밀번호에서 에러가 발생한 경우 아래의 커맨드와 같이 관리자를 지정하여 패스워드 postgres를 입력하자.

$ psql -d postgres -U postgres

 

 

DB의 생성과 삭제


DB의 생성

기본 구문이다.

# CREATE DATABASE 데이터베이스명;

예를 들면 kenko이라는 이름의 DB를 작성한다면 다음과 같다.

# CREATE DATABASE kenko;

참고로 이 커맨드로 DB의 목록을 확인할 수 있다.

# \l
                               List of databases
   Name    | Owner  | Encoding |   Collate   |    Ctype    | Access privileges 
-----------+--------+----------+-------------+-------------+-------------------
 kenko     | hoge | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 postgres  | hoge | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |

물론 권한의 지정도 가능하다.

 

DB의 삭제

데이터 베이스를 삭제하고 싶은 경우 다음의 커맨드를 입력한다.

# DROP DATABASE 데이터베이스명;

 

 

테이블의 생성


테이블은 다음과 같이 생성한다.

# CREATE TABLE 테이블명
# (컬럼1 데이터형 제약,
# 컬럼1 데이터형 제약,
# 컬럼1 데이터형 제약,
# PRIMARY KEY(컬럼1));

제약의 경우 다음의 것들로 설정할 수 있다.

제약 의미
PRIMARY KEY 기본키 (주키)
UNIQUE 동일한 열에서 중복되는 값을 피함
REFERENCES 표 이름(열 이름) 외부키로 한다. 참고처는 지정한 표 이름(열 이름)
CHECK(조건) 조건에 맞는 값만 입력
NOT NULL NULL은 입력불가
DEFAULT 값 기본 값을 지정

 아까 전에 만든 kenko이라는 DB에 kenko_record 테이블을 작성한다.

# CREATE TABLE kenko_record
# (id char(4) not null,
# name text not null,
# food text not null,
# PRIMARY KEY(id));

아래의 커맨드으로 뷰를 포함한 테이블의 목록을 확인할 수 있다.

# \d

아까 만든 테이블이 생성됐음을 알 수 있다.

           List of relations
 Schema |     Name     | Type  | Owner  
--------+--------------+-------+--------
 public | kenko_record | table | hiropy
(1 row)

참고로 아래의 커맨드로 뷰를 포함하지 않은 테이블의 목록을 확인할 수 있다.

# \dt

 

 

보충 : 데이터형


문자형

데이터형 최대길이 개요
VARCHAR(n) 1GB 길이가 n 문자의 가변 문자열
CHAR(n) 1GB 길이가 n 문자의 고정 길이 문자 데이터. 지정한 길이보다 짧은 경우 입력은 되지만 남은 문자길이 만큼 여백이 추가됨.
TEXT 1GB 길이 지정없는 가변형 문자열

 

숫자형

데이터형 최대 길이  개요
INTEGER 4바이트 정수형. 숫자의 범위와 저장 사이즈, 성능의 밸런스는 NUMBER가 좋음.
SMALLINT 2바이트 범위가 좁은 정수형
BIGINT 8바이트 범위가 놃은 정수형
NUMBERIC 1000자릿수 고정 소수점. 소수점부터의 자릿수와 전체의 자릿수를 지정할 수 있음.
REAL 4바이트 단정밀도 부동 소수점
DOUBLE PRECISON 8바이트 배정밀도 부동 소수점

 

날짜형

데이터형 최대 길이 개요
DATE 4바이트 1일 단위로 날짜만을 표시하는 데이터
TIMESTAMP 8바이트 날짜와 시간을 둘 다 표시하는 데이터

 

바이너리형

데이터형 최대 길이 개요
bytea 1GB 가변 길이의 바이너리 데이터
라지 오브젝트 2GB 데이터 베이스내에 저장

 

 

DB에 등록


 insert문으로 칼럼에 대응되는 데이터형으로 데이터를 등록할 수 있다.

# INSERT INTO 테이블
# (컬럼1,컬럼2,컬럼3) VALUES 
# (컬럼1의 새로운 데이터, 컬럼2의 새로운 데이터, 컬럼3의 새로운 데이터);

 여러 개의 레코드를 등록할 때에는 다음과 같이 연속된 값을 기재하면 등록된다.

# INSERT INTO 테이블명
# (컬럼1,컬럼2,컬럼3)VALUES
# (컬럼1의 새로운 데이터, 컬럼2 의 새로운 데이터, 컬럼3 의 새로운 데이터),
# (컬럼1의 새로운 데이터, 컬럼2 의 새로운 데이터, 컬럼3 의 새로운 데이터),
# (컬럼1의 새로운 데이터, 컬럼2 의 새로운 데이터, 컬럼3 의 새로운 데이터);

 예를 들면 방금 전에 만든 kenko_record 테이블에 데이터를 등록하면 다음과 같이 할 수 있다.

kenko=# INSERT INTO kenko_record(id,name,food) VALUES (1,'hoge','주먹밥');

 일단 select 문으로 내용을 확인해보자.

kenko=# select * from kenko_record;

 입력한 데이터가 등록된 것을 확인할 수 있다.

  id  | name |   food   
------+------+----------
 1    | hoge | 주먹밥
(1 row)

 

 

테이블의 변경과 삭제


변경은 조금 길다.

# ALTER TABLE 테이블 rename column 변경대상칼럼명 to 새로운칼렁명;

삭제는 간단하다.

# DROP TABLE 테이블명;

 

 

뷰의 생성과 삭제


 이번에는 딱히 뷰를 만들 필요는 없지만, 여러 개의 쿼리를 뷰로 해두면 참고하기 쉬워지거나 보기 싫은 칼럼을 숨기는 것이 가능하다.

# CREATE VIEW 뷰명 AS SELECT 컬럼명 FROM 테이블명;

 삭제도 간단하다.

# DROP VIEW 뷰명

참고자료

https://qiita.com/hiroyuki_mrp/items/10322eeb29bb8e35987f

728x90