일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Core Java
- Python
- git
- Tomcat
- 오픈소스
- STS
- myBatis
- Eclipse
- ubuntu
- 문서
- IntelliJ
- Spring Boot
- JavaScript
- oracle
- AJAX
- maven
- Exception
- jpa
- Docker
- Thymeleaf
- PostgreSQL
- MSSQL
- MySQL
- spring
- Open Source
- error
- JDBC
- Source
- 설정
- SpringBoot
- Today
- Total
헤르메스 LIFE
[ProgreSQL] CREATE TABLE / DROP TABLE / Sequence 생성 본문
https://runebook.dev/ko/docs/postgresql/-index-
테이블 생성
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-
'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 |