헤르메스 LIFE

[ProgreSQL] CREATE TABLE / DROP TABLE / Sequence 생성 본문

Database

[ProgreSQL] CREATE TABLE / DROP TABLE / Sequence 생성

헤르메스의날개 2023. 3. 5. 11:24
728x90

 

https://runebook.dev/ko/docs/postgresql/-index-

 

PostgreSQL 15.0 한국어

 

runebook.dev


테이블 생성

CREATE TABLE [IF NOT EXISTS] table_name (
   column1 datatype(length) column_contraint,
   column2 datatype(length) column_contraint,
   column3 datatype(length) column_contraint,
   table_constraints
);
DROP TABLE [IF EXISTS] table_name 
[CASCADE | RESTRICT];

샘플

DROP TABLE IF EXISTS `sample`;

CREATE TABLE IF NOT EXISTS `sample`
(
    id   bigint      NOT NULL AUTO_INCREMENT,
    name varchar(30) NOT NULL,
    age  int DEFAULT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE IF NOT EXISTS `sample`
  KEY          VARCHAR(16) NOT NULL,
  KEY2        INTEGER NOT NULL,
  VAL2        INTEGER,
  CONSTRAINT PK_NAME PRIMARY KEY (KEY1, KEY2 )
);

기본 컬럼 타입

    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

시퀀스

drop sequence seq;

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

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

insert into sample values (nextval('seq'), '홍길동', 20);
insert into sample values (nextval('seq'), '이순신', 30);
insert into sample values (currval('seq'), '허균', 40);


날짜변환

-- 2023-01-01 01:32:11.321
SELECT to_char(now(), 'YYYY-MM-DD HH24:MI:SS.MS');

-- 2023-01-01 01:32:11.321
SELECT to_timestamp('2023-01-01 01:32:11.321', 'YYYY-MM-DD HH24:MI:SS.MS');

-- 2023-01-01 01:32:11.321
SELECT to_char(to_timestamp('2023-01-01 01:32:11.321', 'YYYY-MM-DD HH24:MI:SS.MS'), 'YYYY-MM-DD HH24:MI:SS.MS');

-- 2023-01-01 00:00:00.000
SELECT to_char(to_date('2023-01-01 01:32:11.321', 'YYYY-MM-DD HH24:MI:SS.MS'), 'YYYY-MM-DD HH24:MI:SS.MS');


SELECT to_char(now(), 'YYYYMMDDHH24MISS');
 -- 20231106174232

날짜포멧

#포멧     설명
YYYY      year (4 and more digits)
MM        month number (01-12)
DD        day of month (01-31)
HH24      hour of day (00-23)
MI        minute (00-59)
SS        second (00-59)
MS        millisecond (000-999)
D         day of week (1-7; Sunday is 1)

'0' 채우기

SELECT
    RPAD(1::TEXT, 4, '0'),                 /* 1000 */
    LPAD(22::TEXT, 4, '0');                /* 0022 */

UUID

데이터유형 UUID 는RFC 4122 , ISO/IEC 9834-8:2005 및 관련 표준에 정의 (일부 시스템에서는 이 데이터 유형을 전역적으로 고유한 식별자 또는 GUID라고 합니다.) 이 식별자는 동일한 식별자가 다른 사람에 의해 생성될 가능성이 거의 없도록 선택된 알고리즘에 의해 생성되는 128비트 문자열입니다. 단일 데이터베이스 내에서만 고유한 시퀀스 생성기보다 더 나은 고유성을 보장합니다.
UUID는 하이픈으로 구분된 여러 그룹, 특히 8자리 그룹, 4자리 그룹 3개, 12자리 그룹으로 이루어진 소문자 16진수 시퀀스로 작성되며 총 32개의 숫자는 UUID를 나타냅니다. 이 표준 형식의 UUID 예는 다음과 같습니다.

third-party module로써 추가적으로 설치를 해주어야 합니다.

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

/* mac address, current timestamp, random value의 조합 */
SELECT uuid_generate_v1();

/* 완전랜덤 생성 */
SELECT uuid_generate_v4();
CREATE TABLE CONTACTS (
    ID UUID DEFAULT UUID_GENERATE_V4(),
    NAME VARCHAR NOT NULL,
    TEL_NO VARCHAR NOT NULL,
    PRIMARY KEY (ID)
);

https://runebook.dev/ko/docs/postgresql/-index-

 

PostgreSQL 15.0 한국어

 

runebook.dev

 

728x90

'Database' 카테고리의 다른 글

[Oracle] PLSQL Array  (0) 2023.07.30
[Docker] Docker 에 Oracle XE 11g설치하기  (0) 2023.05.30
AWS 의 Database 설정 - Postgresql  (0) 2023.03.04
[H2] H2 DB 설치  (0) 2021.11.24
[MSSQL] 다국어(한글) 문제  (0) 2021.05.22