기본 콘텐츠로 건너뛰기

우분투 PostgreSQL 설치

참조 사이트
http://zetawiki.com/wiki/%EC%9A%B0%EB%B6%84%ED%88%AC_PostgreSQL_%EC%84%A4%EC%B9%98


1. 설치 확인

aptitude show postgresql | grep State
State: not installed

2. 설치

apt-get install postgresql

3. 확인

dpkg -l | grep postgres
4. 계정 확인
cat /etc/passwd | grep postgres
postgres:x:110:120:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
네트웍 상태 확인
netstat -tnlp | grep postgres

패스워드 설정
sudo -u postgres psql template1
could not change directory to "/root": Permission denied
psql (9.3.11)
Type "help" for help.

template1=#
template1=# ALTER USER postgres with encrypted password 'P@ssw0rd';
ALTER ROLE
template1=# \q

접속 모든 대역 허용
vi /etc/postgresql/9.3/main/postgresql.conf
listen_addresses = '*'

vi /etc/postgresql/9.3/main/pg_hba.conf
host    all             all             0.0.0.0/0               md5

접속 테스트

psql -h 135.79.246.80 -U postgres template1

접속 db 포함 접속
#psql -h 127.0.0.1 -U postgres customsinsa

다른 DB 접속
postgres=# use customsinsa;

테이블 보기
customsinsa=# \d

컴럼 정보 보기
customsinsa=# \d testa

뷰목록
\dv

DB 목록
\l

종료
\q

아래 참조: http://wwwi.tistory.com/347
● 데이터 베이스 사용자 만들기

create user wwwi with password 'wwwi';


버전 확인
select version();

● 데이터베이스  만들기

create database wwwi;

● 테이블 만들기

create table testa (
  key          char(16) primary key,
  val1        integer,
  val2        integer
);

  *테이블 만들 때에  NOT NULL 제약(NULL Data 입력 금지),
  UNIQUE 제약, (동일한 Data 입력 금지)
  DEFAULT 초기값 설정가능

create table testa (
  key          char(16) primary key,
  val1        integer not null,
  val2        integer unique,
  val3        integer default 0 not null
);

  *constraint으로 Primary Key를 설정하거나 복수의 Primary Key는
  아래와 같은 방법으로 설정

create table testa (
  key          char(16),
  val1        integer,
  val2        integer,
  constraint PK_NAME primary key (
    key,
    val1
  )
);

● 테이블 지우기

drop table testa;

● 기본적인 필드 타입

    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

● 키 만들기

  *단일 키 설정은 테이블 만들 때에 create table에서 하는 편이 좋다.
    단일 키를 설정할 필드에 primary key를 지정하면 된다.

  key          char(16)     primary key,

  *복수 키는 아래와 같이 추가할 수 이싿.

create table testa (
  key          char(16),
  val1        integer,
  val2        integer,
  constraint PK_NAME primary key (
    key,
    val1
  )
);

  * 인덱스를 추가하면 검색 속도를 빠르게 할 수 있지만 너무 많이 만들면
    갱신할 때에 부하가 걸릴 수 있다.
 
create unique index PK_NAME on testa (
  key,
  val1
);

create index PK_NAME on testa (
  key,
  val1
);

● 키 지우기

drop index PK_NAME;

● 일련번호  만들기

  *일변번호는 serial로 정의해서 사용할 수 있음

create table testa (
  key          char(16),
  val1        serial,
  val2        integer,
);

insert into testa values('key00A');
insert into testa values('key00B');

   key      | val1 | val2
--------+----+------
 key00A   |    1 |    
 key00B   |    2 |    


create sequence seq;

  *다음과 같이 만들면 10 ~ 1000000, 100씩 증가하며 최대값이 되면 다시 최소값으로 돌아간다.

create sequence seq
  increment    10
  minvalue     10
  maxvalue     1000000
  start        10
  cache        100
  cycle
;

  *일련번호는 다음과 같이 사용한다.
    nextval이 일련번호를 만들어 내고
    currval은 일변번호의 현재값을 가져온다.

insert into testa values ('k001', nextval('seq'), 10);
insert into testa values ('k002', nextval('seq'), 10);
insert into testa values ('k003', currval('seq'), 10);

   key    | val1 | val2
------+-----+------
 k001     | 10   |   10
 k002     | 20   |   10
 k003     | 20   |   10

● 일련번호  지우기

drop sequence seq;

댓글

이 블로그의 인기 게시물

[Java] Http File Download 이어받기

Http 서버로부터 다운로드 받는 파일을 이어받기 위해서는 Http Header에 아래 두가지 정보를 추가해 주면 된다. URLConnection conn = url.openConnection(); conn.setRequestProperty("Accept-Ranges", "bytes"); conn.setRequestProperty("Range", "bytes=" + mOffset + "-"); 그러면 서버에서는 해당 Offset으로부터 File을 다운로드 시켜준다. 클라이언트가 요청헤더에 Range 필드를 포함 시켜서 보내면, 서버는 그 정보를 가지고 어디서 부터 파일을 보낼지 판단을 합니다. 하지만 클라이언트가(브라우저) Range 필드를 포함 시켜야 할지를 판단하는 기준은 최초 다운로드 요청시 서버의 응답헤더에 따라 다음 요청헤더에 Range 헤더를 생성할지 않할지 판단하게 됩니다. 그걸 당락짓는 응답 헤더 필드는 다음과 같습니다. Accept-Ranges , ETag, Last-Modified 반드시 위 필드를 응답 헤더에 같이 보내줘야 클라이언트는 다음 요청시 Range헤더를 포함시켜 보내게 됩니다. 참고로 말씀 드리면 위 필드를 포함 시켜서 보내더라도 value는 반드시 " " 로 묶어서 보내야 합니다. 안그러면 브라우저는 죽어도 Range 필드를 생성시키지 않습니다. HTTP 1.1 스펙은 따옴표를 강제적으로 해줘라 이런 내용 없습니다. 자바기준 40byte의 파일이라치면 클리이언트 요청을 두번으로 나누었다치면 이케 connection.setRequestProperty("Range", "bytes=0-20"); connection.setRequestProperty("Range", "bytes=20-40"); 단 co...

java 특정 디렉토리에 있는 파일 목록을 읽어내기, 정렬해서 가져오기

폴더 리스트 가져오기 String path="C:\"; File dirFile=new File(path); File []fileList=dirFile.listFiles(); for(File tempFile : fileList) {   if(tempFile.isFile()) {     String tempPath=tempFile.getParent();     String tempFileName=tempFile.getName();     System.out.println("Path="+tempPath);     System.out.println("FileName="+tempFileName);     /*** Do something withd tempPath and temp FileName ^^; ***/   } } 정렬해서 가져오기 import java.io.FileFilter; import java.io.IOException; import java.util.Arrays; import java.util.Date; import org.apache.commons.io.comparator.LastModifiedFileComparator; import org.apache.commons.io.filefilter.FileFileFilter; public class LastModifiedFileComparatorTest { public static void main(String[] args) throws IOException { File directory = new File("."); // get just files, not directories File[] files = directory.listFiles((FileFilter) FileFileFilter.FILE); System.out.println("Defaul...