본문 바로가기

개발 지식/DB

[PostgreSQL] 기본 사용법2

반응형

관계형 데이터베이스는 MySQL, MariaDB 만 다뤘다 보니까 postgreSQL은 낯선 부분이 있다. 둘 다 관계형 데이터베이스라고는 하지만 살짝살짝은 달라서 이렇게 기록으로 남겨서 계속 참고하면서 일을 해야겠다 ㅠㅠ.

대소문자 구분을 해야하는 것을 잊지말자!


MySQL과의 PostgreSQL의 개념적인 차이점

  • 테이블의 집합을 데이터베이스라는 개념으로 사용, 하지만 PostgreSQL에서는 테이블의 집합으로 데이터베이스와 스키마라는 두 개의 개념 사용
  • PostgreSQL에서의 데이터베이스는 스키마의 상위 개념이며 또한 물리적인 집합인지 논리적인 집합인지의 차이도 가지고 있다.
  • MySQL에서의 데이터베이스 개념은 PostgreSQL에서 스키마 개념과 유사하다.
  • 그렇기 때문에 서로 다른 데이터베이스에 있는 테이블은 서로 join이 될 수 없다. 반면, 서로 다른 스키마의 테이블 간에는 JOIN이 가능하다.
  • 한 세션은 무조건 하나의 데이터베이스에만 접속할 수 있다.
  • 스키마를 별도로 지정하지 않았다면 public이라는 이름의 스키마를 기본으로 사용하게 된다.
  • PostgreSQL 세션에서는 Search Path라는 것을 관리하는데, 이 값은 테이블을 어떤 스키마에서 찾아야 하는지를 설정하는 값이다. 만약, Admin이라는 스키마에서 테이블 목록을 조회하거나 쿼리를 실행하고 싶은데, 현재 세션의 Search Path에 Admin 스키마가 설정되어 있지 않다면 해당 작업은 실패된다.
  • 동일 데이터베이스라도 스키마가 다르면 동일한 이름의 테이블이 존재할 수 있는데, 이때는 Search Path에 순서대로 테이블을 찾게 된다. 이런 경우 혼란의 소지가 될 수 있으므로 이름이 같은 테이블은 생성하지 않거나, 테이블 접근시 항상 스키마 이름을 붙여 주는 방법을 사용해야 한다.

데이터베이스 관련

  • 데이터베이스 만들기 : 'CREATE DATABASE [DB명];'
  • 데이터베이스 이름 변경 : 'ALTER DATABASE [기존 DB명] RENAME TO [바꿀 DB명];'
  • 데이터베이스 삭제 : 'DROP DATABASE [DB명];'

SCHEMA 관련

스키마는 object들의 논리적인 집합이다. shcema는 table, view, sequence, synonym, domain, function등의 object들로 구성되어 있다. 스키마를 사용하는 이유는 논리적 집합체를 만들어서 관리의 편리성을 높이고 여러 User들 간의 간섭 없이 접속할 수 있게 해준다.

  • 스키마 조회 : 명령어 '\dn' 입력 혹은 pgAdmin에서 확인 가능
  • 스키마 생성 : 'CREATE SCHEMA [스키마이름]

TABLESPACE 관련

TABLESPACE는 PostgreSQL에서 DBA가 DATABASE object가 저장된 파일 시스템 장소를 정의할 수 있도록 하는 기능을 한다.

  • 테이블 스페이스 조회 : 명령어 '\db' 입력 혹은 pgAdmin의 Object Browswer에서 검색할 수 있다.
  • 테이블 스페이스 생성 : 'CREATE TABLESPACE [테이블스페이스이름]';
    • 테이블 스페이스의 디렉토리를 설정할 때 USER가 디렉토리에 대한 권한을 가지고 있어야 한다. 먼저 directory를 생성하고 생성한 directory에 권한을 부여한다. => mkdir 'directory명' => chown user명.group명 'directory명'
    • 'CREATE TABLESPACE DBSPACE LOCATION '/PostgreSQL';
    • 테이블 스페이스 오너(OWNER) 설정 후 생성 : CREATE TABLE SPACE OWNER TEST2 => LOCATION 'C:\Program Files\PostgreSQL\9.4\data\TEST_1';
  • 테이블 스페이스 이름 변경 : 'ALTER TABLESPACE [기존 TABLESPACE명] RENAME TO [바꿀 TABLESPACE명]'
  • TABLESPACE 삭제 : 'DROP TABLESPACE [TABLESPACE명]'

Data Type

Name Aliases 설명
Bigint int8 signed 8byte 정수형
Bigserial serial8 자동증가 8byte 정수형
bit[(n)] 고정길이 bit string
bit varying[(n)] Varbit 가변길이 bit string
Boolean Bool Boolean연산 (true/false)
Box 평면 위의 직사각형 상자
Bytea 이진 data ("byte array")
character [(n)] char[(n)] 고정길이 character string
character varying [(n)] varchar[(n)] 가변길이 character string
Cidr IPv4 or IPv6 network address
Circle 평면 위의 면
Date 달력 날짜 (year, month, day)
double precision float8 double precision floating-point number (8bytes)
Inet IPv4, IPv6 host address
Integer int, int4 signed four-byte 정수형
interval [fields] [(p)] time 구간
Json 문자 JSON data
Jsonb 이진 JSON data, decomposed
Macaddr MAC(Media Access Control) address
Money 현금 총액
pg_lsn PostgreSQL Log 번호
Real float4 single precision floating-point number
Smallint int2 signed 2bytes 정수형
Smallserial serial2 자동증가 2bytes 정수형
Serial serial4 자동증가 4bytes 정수형
Text 가변길이 character string
time [(p)] [without time zone] time of day(no time zone)
time [(p)] with time zone timetz time of day, including time zone
timestamp[(p)] [without time zone] 날짜와 시간 (no time zone)
timestamp[(p)] with time zone timestamptz 날짜와 시간, including time zone
Tsquery text 검색 쿼리
Tsvector text 검색 문서
Xml XML data




Reference : www.gurubee.net/postrgresql/basic

반응형