[PostgreSQL] SQL 명령어 관련

2022. 1. 24. 14:03Dev/Etc

PSQL

모두 PSQL Shell 내에서 입력하면 된다.

 

역할 생성
CREATE ROLE [역할 이름] WITH [...옵션];

 

* 기본 역할 생성

CREATE ROLE basic_role;

 

* 슈퍼 유저 권한 역할 생성

CREATE ROLE basic_role_with_sup with SUPERUSER;

 

* 비밀번호가 요구되는 슈퍼 유저, DB 생성 권한 역할 생성

CREATE ROLE varaiety_role WITH SUPERUSER CREATEDB LOGIN PASSWORD 'password';

 

데이터베이스 생성
CREATE DATABASE [데이터베이스 이름] [...옵션];

 

* 기본 DB 생성 : 이 경우 basic_db의 owner는 postgres로 설정됨

CREATE DATABASE basic_db;

 

* DB의 OWNER 설정 : 특정 Owner(=Role)를 설정 => 모든 권한을 가짐

CREATE DATABASE basic_db_with_owner OWNER basic_role;

 

* psql shell이 아닌 기본 터미널에서 바로 생성도 가능하다.

createdb [데이터베이스 이름]
createdb -O [오너 이름] [데이터베이스 이름]

 

스키마 생성
CREATE SCHEMA [스키마 이름];

 

* 기본 스키마 생성

CREATE SCHEMA basic_schem;

 

테이블 생성
CREATE TABLE [테이블 이름];

이 경우, 테이블은 기본으로 설정된 스키마(=public)에서 생성된다.

만약 특정 스키마(여기서는  basic_schem를 이용)에서 테이블을 생성하고 싶다면 "스키마.테이블"의 형태로 생성하면 된다.

 

* 기본 테이블 생성

CREATE TABLE basic_table;

 

* 특정 스키마(basic_schem)에서 table 생성

CREATE TABLE basic_schem.basic_table;

 

매번 특정 스키마로 지정하는게 불편하고, public 대신 다른 스키마를 시정하고 싶다면 스키마 옵션을 변경해주면 된다.

 

Schema 변경
SET SEARCH_PATH [스키마 이름];

이런식으로 스키마를 따로 지정하게 된다면 CREATE TABLE을 할 때나 SELECT FROM을 할 때 등, Table 접근 시 스키마를 지정해주지 않아도 설정된 스키마로 테이블을 접근할 수 있게 된다.

* 기본

SET SEARCH_PATH basic_schem;