Data Types
- postgresql 기반의 data type 모두 사용
- 최소한의 공간을 차지하도록 컬럼 데이터 타입 지정
- join 에 사용하는 컬럼의 경우 동일한 data type + 동일 자릿수 사용 권장
- table1(col1 int, col2 int), table2(col1 char, col2 char) 인 경우
> 값이 같아보여도 컬럼 타입이 다르면 local join 불가.
- table1(col1 char(10)), table(col char(20)) 인 경우
> 값이 같아보여도 컬럼 길이가 다르면 local join 불가.
(각각의 컬럼 내 공백을 포함하여 hash 값을 만들기 때문에 다른 값으로 인식)
- table1(col1 bigint), table(col smallint) 인 경우
> 값이 같아보여도 컬럼 타입이 다르면 local join 불가.
- table1(col1 varchar(10)), table(col varchar(20)) 인 경우
> 가변 데이터 타입이기 때문에 local join 가능.
- Data type 종류
- array type : 컬럼당 1G 까지 저장 가능
- jsonb (GPv6 부터 지원)
실습
1) numeric : exact calculations
SELECT POWER(2::DOUBLE PRECISION, 64::DOUBLE PRECISION);
-------------------------------------
1.84467440737096E+19
SELECT POWER(2::NUMERIC, 64::NUMERIC);
----------------------------------------------------------------
18446744073709551615.0000000000000000
SELECT POWER(2::NUMERIC , NUMERIC NUMERIC(20);
----------------------
18446744073709551615
2) data and time
SELECT '2008-10-11':: TIMESTAMP
--------------------------------
2008-10-11 00:00:00
SELECT 'JANUARY 5 2007'::TIMESTAMP
--------------------------------
2007-01-05 00:00:00
SELECT '2008-10-11 12:33:25':: DATE
--------------------------------
2008-10-11
SELECT '2005-08-10 03:25:00PM UTC':: TIMESTAMPTZ
--------------------------------------
2005-08-10 15:25:00+00
SELECT 'Wed Feb 20 10:06:22 UTC 2019'::TIMESTAMPTZ
--------------------------------------
2019-02-20 10:06:22+00
3) Change time zone temporarily
SELECT NOW();
--------------------------------------------------
2019-02-20 10:11:47.845698+00
SET TIME ZONE 'ASIA/SEOUL';
SELECT NOW();
--------------------------------------------------
2019-02-20 19:16:45.818178+09
SELECT NOW() AT TIME ZONE 'Europe/Moscow';
--------------------------------------------------
2019-02-20 13:20:05.053911
4) Calculate time differences
SELECT '2000-01-05'::TIMESTAMP --'2000-01-01'::TIMESTAMP;
--------------
4 DAYS
SELECT '2000-01-01'::TIMESTAMP --'2000-01-04'::TIMESTAMP;
---------------
3 DAYS
SELECT '2005-10-23 00:23:12'::TIMESTAMP --'2005-10-12 07:05:25'::TIMESTAMP;
--------------------------
10 days 17:17:47
SELECT '2000-02-28 00:00:00'::TIMESTAMP + INTERVAL '1 day 02:00:00';
-------------------------------
2000-02-29 02:00:00
SELECT '2001-01-01'::DATE --'2000-01-01'::DATE;
--------------
366
5) Object Identifier Type : OID
SELECT 'PG_CLASS'::REGCLASS::OID;
--------
1259
SELECT OID FROM PG_CLASS WHERE RELNAME = 'PG_CLASS';
--------
1259
6) Casting Data Types
SELECT 'PG_CLASS'::REGCLASS::OID;
--------
1259
SELECT OID FROM PG_CLASS WHERE RELNAME = 'PG_CLASS';
--------
1259
참고 사이트
'프로N잡러 > 프로그래밍&자격증' 카테고리의 다른 글
[GPDB] 5. Storage Optimization (0) | 2024.01.09 |
---|---|
[GPDB] 4-4. Data Definition Language(DDL) : Indexes, View, Sequence (0) | 2024.01.09 |
[GPDB] 4-2.Data Definition Language(DDL) : Distribution (1) | 2024.01.09 |
[GPDB] 4-1. Data Definition Language(DDL) : Table (0) | 2024.01.09 |
[GPDB] 3. Role & Access (인증, 권한 관리) (1) | 2024.01.09 |