본문 바로가기
DATABASE/DB study

postsql basic sql

by 개폰지밥 2019. 8. 20.
반응형

 postsql을 이제 막 설치했다... 이것저것 사용하면서 사용했던것들을 정리해봤다.

다른 DB랑 확 다른 것도 있는데 편한 것 같기도하고.. 좀 더 사용해봐야할 것 같다.

 

-       스키마 생성

create schema 생성할스키마이름

-       스키마 조회

\dn

-       User 생성

create user 생성할유저이름 with encrypted password ‘사용하고싶은비밀번호’;

-       User 조회

select * from pg_user;

-       Owner 변경

예를 들어 test DBownertest owner로 바꾸고 싶을 때

\l   -> 리스트 확인

alter database owner바꾸고싶은db owner to 바꾸고싶은owner;

-       Table 생성

create table 생성하고픈테이블이름(

필드명 필드타입, ….);

-       테이블 지우기

Ex) test라는 table을 지우고 싶을 때

drop table test;

 

● 기본적인 필드 타입

    smailint                           2 바이트 정수

    integer                            4 바이트 정수

    bigint                             8 바이트 정수

    decimal(a, a)/numeric(a, s)        10진수형

    real                               6자리 단정도 부동소수점

    double precision                   15 자리 배정도 부동소수점

    serial                             4 바이트 일련번호

    bigserial                          8 바이트 일련번호

    date                               일자

    time                               시간

    timestamp                          일자시간

    char(문자수)/character             고정길이 문자열  (최대 4096 문자)

    varchar(문자수)/charcter varying   가변길이 문자열  (최대 4096 문자)

    text                               무제한 텍스트

    Large Object                       oid

    boolean/bool                       true/false

 

-       데이터 넣기

Ex) test라는 table1,1를 넣겠다.

insert into test values(1,1);

 

-       데이터 확인하기

Ex) test 테이블 안에있는 데이터 확인

Select * from test;

 

-       특정 owner의 테이블 목록 확인하기

Ex) Test owner의 테이블 목록 확인하기

 

-       Roles 보기

\du

 

-       스키마 owner 변경

Alter schema name owner to newowner

 

참고)./psql -d test 하면 뒤에 최고 관리자가 생략되어있다.

 

-       현재 접속 스키마 확인하기

show search_path;

참고) DB안에 특정 스키마를 만들지 않았다면 defaultpublic 스키마가 만들어져있고 public 스키마 안에 저장이 된다.

 

-       접속 스키마를 지정하기(한번)

참고) 지정하지 않았을 때 default 스키마는 public이다.

Set search_path to testschema;

 

-       접속 스키마 지정하기(영구)

Alter schema 접속하고싶은스키마이름 owner to owner이름

Ex) kmsauth owner가 접속했을 때 kmsauth라는 스키마에 접속하겠다.

alter schema kmsauth owner to kmsauth;

 

* 스키마 생성, 삭제, 변경

-- 스키마 생성

CREATE SCHEMA schema_name AUTHORIZATION username;

 

-- 스키마 이름 변경

ALTER SCHEMA schema_name RENAME TO new_schema_name;

 

-- 스키마 소유자 변경

ALTER SCHEMA username OWNER TO new_username;

 

-- 스키마 삭제

DROP SCHEMA schema_name CASCADE;

 

-       데이터베이스 목록 확인하기 => \l

 

-       사용하는 데이터베이스 변경하기 => \c DB이름

 

-       데이터베이스 생성하기 => create database DB이름

-       스키마 목록 확인, 생성하기 => \dn

 

============================================================================

Pgadmin3 설치하기

https://www.pgadmin.org/download/

 

 

압축해제

실행

설치 완료 후 실행

 

 

-       Server 추가

File -> add Server ->

 

 

name

아무 이름이나 지정하면 됨

Host

접속하고 싶은 ip

Port

Postgress 포트

Maintance DB

접속 하고 싶은 DB

Usename

접속 하고 싶은 user이름

Password

접속 하고 싶은 user이름의 비밀번호

Store password

비밀번호 저장할 것이면 체크

 

 

 ============================================================================

참고)

postgress conf 파일

postgress를 사용하면서 건드려야 하는 conf 파일

주로 pg_hba.conf => 접근제어 / postgresql.conf => DB 전반적인 것 수정할 때 예를 들어 메모리 크기나 성능 즉 DB를 더 빠르게 튜닝하고 싶을 때 같은 경우 사용한다.

-       pg_hba.conf

 

Trust는 비밀번호 없어도 접속 되고 외부에서도 접속 허용하고 싶으면 아래와 같이 설정

host     all        all        0.0.0.0/0            md5

md5는 비밀번호로 접속하게 됨

 

-       postgresql.conf

listen_address*해야 로컬말고도 접속이 됨

max_connections는 몇 개의 연결을 할 수 있는지 설정할 수 있음.

============================================================================

postgress 구조

스키마 때문에 약간 이해하기가 어려웠다. TABLEVIEWS등이 합쳐진 것을 스키마라고 하고 디폴트로는 public스키마가 있고, 다른 스키마도 만들 수 있구나라고 이해를 했다. DB는 물리적으로 데이터를 구분하고 schema는 논리적으로 구분한다는데 table로 구분하지 않고 구지 스키마를 사용하는 이유는 무엇일까? 문득 궁금해졌는데 postgress가 다중 사용자 접속을 위해 만들어진 DB라서 그런 것 같다고 이해를 했다.

그런데 갑자기 등장한 tablespaces....?

user/groups과 database와 tablespaces는 각각 별개라고 이해하는 것이 빠를 듯하다!

반응형

댓글