π PostgreSQL κΈ°λ³Έ β £ - λ°μ΄ν° νμ μ΄ν΄
π PostgreSQL κΈ°λ³Έ β
£ - λ°μ΄ν° νμ
μ΄ν΄
π
γμ€μ© SQLγ
μ μ½κ³ μ 리ν κΈμ λλ€.
κ°μ
- μμΌλ‘ λ§μ΄ λ³΄κ² λ λ°μ΄ν° νμ μ λ€μκ³Ό κ°λ€.
- λ¬Έμ: κΈμμ κΈ°νΈ
- μ«μ: μ μμ μμλ₯Ό ν¬ν¨ν λͺ¨λ μ
- λ μ§μ μκ°: μκ° μ 보
λ¬Έμν λ°μ΄ν° νμ μ΄ν΄νκΈ°
- λ¬Έμν λ°μ΄ν° νμ μ λ¬Έμ, μ«μ, κΈ°νΈμ μ‘°ν©μ μ¬μ©νκΈ° μ ν©ν μΌλ°μ μΈ νμ μ΄λ€.
- λ¬Έμν λ°μ΄ν° νμ μ λ€μκ³Ό κ°λ€.
char(n)
- μ
λ ₯ν
n
μ λ°λΌ κΈΈμ΄κ° κ³ μ λ μ΄μ΄ μ μλλ€. - κ°λ Ή
char(20)
μΌλ‘ μ€μ λλ€λ©΄ κΈμλ₯Ό μ무리 λ§μ΄ μ½μ νλλΌλ κ° νμ 20μλ§ λ³΄κ΄λλ€. - λ§μ½ 20μλ³΄λ€ μ κ² μ
λ ₯νλ©΄
PostgreSQL
μ΄ λλ¨Έμ§ κ³΅κ°μ 곡백μΌλ‘ μ±μ΄λ€. character(n)
μΌλ‘ μ μν μλ μμΌλ©°, μμ¦μ κ±°μ μ°μ΄μ§ μλλ€.- νμ€
SQL
μ ν¬ν¨λλ€.
- μ
λ ₯ν
varchar(n)
- μ΅λ κΈΈμ΄κ°
n
μΌλ‘ μ μλλ κ°λ³ κΈΈμ΄ λ°μ΄ν° νμ μ΄λ€. - μ΅λμΉλ³΄λ€ μ μ μμ κΈμλ₯Ό μ
λ ₯νλλΌλ
PostgreSQL
μ 곡백μ μΆκ°νμ§ μμΌλ―λ‘ λ°μ΄ν° 곡κ°μ μ μ½ν μ μλ€. character varying(n)
μΌλ‘ μ μν μλ μλ€.- νμ€
SQL
μ ν¬ν¨λλ€.
- μ΅λ κΈΈμ΄κ°
text
- κΈΈμ΄ μ νμ΄ μλ κ°λ³ κΈΈμ΄ λ°μ΄ν° νμ μ΄λ€.
- κ°μ₯ κΈΈκ² λ΄μ μ μλ λ°μ΄ν° ν¬κΈ°λ
1GB
μ΄λ€. - νμ€
SQL
μ ν¬ν¨λμ§ μλλ€.
λ¬Έμ νμ μ΄μ μ μ₯λ μ«μμλ μν μ°μ°μ μνν μ μλ€. λ¬Έμ νμ μ΄μλ μ°νΈλ²νΈ κ°μ μΌλ ¨λ²νΈλ₯Ό μ μ₯ν λλ§ μ«μλ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE char_data_types (
char_column char(10),
varchar_column varchar(10),
text_column text
);
INSERT INTO char_data_types
VALUES
('abc', 'abc', 'abc'),
('defghi', 'defghi', 'defghi');
COPY char_data_types TO 'C:\YourDirectory\typetest.txt'
WITH (FORMAT CSV, HEADER, DELIMITER '|');
- λ¬Έμ λ°μ΄ν° νμ μ΄ κ°κ° μ΄λ»κ² μ μ₯λλμ§ νμΈνκΈ° μν μμ μ½λμ΄λ€.
COPY table_name FROM
μ κ°μ Έμ€κΈ° κΈ°λ₯μ μννλ©°,TO path
λ λ΄λ³΄λ΄κΈ° κΈ°λ₯μ μννλ€.WITH
ν€μλ μ΅μ μ μ¬μ©ν΄ νμΌ μ λ°μ΄ν°μ κ° μ΄μ νμ΄ν λ¬Έμλ‘ κ΅¬λΆν νμμΌλ‘ λ³κ²½ν κ²μ΄λ€.
1
2
3
char_column|varchar_column|text_column
abc |abc|abc
defghi |defghi|defghi
- μ νμΌμ 보면
char
νμ κ²½μ° κ³΅λ°±μ μ±μ λ§€λ² 10μλ₯Ό μΆλ ₯νλ κ²μ μ μ μλ€. - μ§κΈμ κ° μ΄μμ μ¬μ©λμ§ μλ 곡κ°λ€μ΄ 무μν΄λ λ μ λλ‘ μκ² λκ»΄μ§μ§λ§, νλ‘μ νΈκ° μ»€μ Έ μμ κ°μ ν μ΄λΈμ μλ μλ°±λ§ κ°μ νμ λ€λ£¨κ² λ λλ λ ν¨μ¨μ μΈ κ³΅κ° κ΄λ¦¬κ° νμν΄μ§ κ²μ΄λ€.
- λ¬Έμλ₯Ό μ μ₯ν λλ
text
νμ μ μ¬μ©νλ κ²μ κΆμ₯νλ€. - μ΅λ κΈΈμ΄λ₯Ό μ§μ νμ§ μμλ λκΈ° λλ¬Έμ μΆν λ¬Έμ νμ μ΄μ λν μꡬ μ¬νμ΄ λ³κ²½λλλΌλ ν μ΄λΈμ μμ ν νμκ° μλ€.
μ«μν λ°μ΄ν° νμ μ΄ν΄νκΈ°
- μ°μ°μ νκ±°λ λ²νΈ μμΌλ‘ λμ΄ν΄μΌ νλ€λ©΄ λ¬Έμκ° μλ μ«μ νμ μ νμ©ν΄μΌ νλ€.
- μ«μ λ°μ΄ν° νμ μ λ€μκ³Ό κ°λ€.
- μ μ: μμμ μμ, 0
- κ³ μ μμμ κ³Ό λΆλ μμμ : μ€μλ₯Ό νννλ λ κ°μ§ νν
μ μ
- νμ€
SQL
μsmallint
,integer
,bigint
λΌλ μΈ κ°μ μ μλ₯Ό μ 곡νλ€. - μΈ νμ μ μ°¨μ΄μ μ λ£μ μ μλ μ«μμ μ΅λ ν¬κΈ°λ€.
λ°μ΄ν° νμ | μ μ₯ ν¬κΈ° | μ΅μκ° | μ΅λκ° |
---|---|---|---|
smallint | 2λ°μ΄νΈ | -32,768 | 32,767 |
integer | 4λ°μ΄νΈ | -2,147,483,648 | 2,147,483,647 |
bigint | 8λ°μ΄νΈ | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
- λ°μ΄ν° μ©λμ κ³ λ €νμ¬ μ μ ν λ°μ΄ν° νμ
μ μ νν΄μΌ νμ§λ§, λ°μ΄ν° νμ
μ λ²μ΄λ μ«μλ₯Ό μ΄μ μ
λ ₯ν κ²½μ°, λ°μ΄ν°λ² μ΄μ€λ μ€νμ μ€μ§νκ³
out of range
μ€λ₯λ₯Ό λ°ννλ€. - μλ¦¬μΌ νμ
κ³Ό κ°μ μλ μ¦κ° μ μ μ΄μ λ§λ€λ©΄ ν
μ΄λΈμ κ° νμ κΈ°λ³Έ ν€λΌλ κ³ μ ν
ID
λ²νΈλ₯Ό μμ±ν μ μλ€. PostgreSQL
μμ μλ μ¦κ° μ μ μ΄μ λ§λλ λ°©λ²μ λ κ°μ§κ° μλ€.- νλλ μλ¦¬μΌ λ°μ΄ν° νμ
μΌλ‘, μ΄λ
ANSI SQL
νμ€μΈ μλ μ¦κ° μ μλ₯ΌPostgreSQL
μμ κ³ μ ꡬνν λ°μ΄ν° νμ μ΄λ€. - λ€λ₯Έ νλλ
ANSI SQL
νμ€μΈIDENTIIY
ν€μλμ΄λ€.
μλ¦¬μΌ νμ μ μ¬μ©ν μλ μ¦κ°
1
2
3
4
CREATE TABLE people (
id serial,
person_name varchar(100)
);
λ°μ΄ν° νμ | μ μ₯ ν¬κΈ° | μ΅μκ° | μ΅λκ° |
---|---|---|---|
smallserial | 2λ°μ΄νΈ | 1 | 32,767 |
serial | 4λ°μ΄νΈ | 1 | 2,147,483,647 |
bigserial | 8λ°μ΄νΈ | 1 | 9,223,372,036,854,775,807 |
IDENTITY
ν€μλλ₯Ό μ¬μ©ν μλ μ¦κ°
1
2
3
4
CREATE TABLE people (
id integer GENERATED ALWAYS AS IDENTITY,
person_name varchar(100)
);
IDENTITY
ν€μλλ₯Ό μ¬μ©ν κ²½μ° μ½λλ λ κΈΈμ§λ§ μ리μΌλ³΄λ€ μ νΈλλ€.- μ΄λ
IDENTITY
νμ μ΄ λ€λ₯Έ λ°μ΄ν°λ² μ΄μ€ μμ€ν κ³Ό νΈνλλ©°, μ¬μ©μκ° μ€μλ‘ ν΄λΉ μ΄μ κ°μ μ½μ νμ§ λͺ»νλλ‘ λ°©μ§νκΈ° λλ¬Έμ΄λ€. - μλ¦¬μΌ νμ μ λ°μ΄ν° μ½μ μ λ°©μ§νμ§ μλλ€.
IDENTITY
ν€μλλ₯Ό μ¬μ©νλ λ€μ λ κ°μ§ λ°©λ²μ΄ μλ€.
GENERATED ALWAYS AS IDENTITY
- νμ μλ μ¦κ° μ μ μ½μ , μ¬μ©μ μμ μ½μ λΆκ°
GENERATED DEFAULT AS IDENTITY
- μ¬μ©μκ° μμλ‘ μ½μ νμ§ μλ κ²½μ° μλ μ¦κ° μ μ μ½μ
- μ΄ μ΅μ μ μ¬μ©νλ©΄ κ°μ΄ μ€λ³΅λ μ μμΌλ―λ‘ ν€ μ΄λ‘ μ¬μ©νλ©΄ λ¬Έμ κ° λ μ μμ
νμ΄ μΆκ°λ λλ§λ€ μλμΌλ‘ μ¦κ°νλ μλ¦¬μΌ νμ μ΄ μ μ©λ μ΄μ΄λλΌλ μ΄λ€ κ²½μ°μλ κ·Έ κ°μ νμ΄ μκΈΈ μ μλ€. κ°λ Ή νλμ νμ΄ μμ λ κ²½μ°, κ·Έ νμ ν λΉλλ κ°μ λ€μ λ체λμ§ μλλ€. ν μ½μ μ΄ μ·¨μλλλΌλ ν΄λΉ μ΄μ μνμ€λ κ³μν΄μ μ΄μ΄μ§λ€.
μμ
SQL
λ°μ΄ν°λ² μ΄μ€μμ μμλ κ³ μ μμμ κ³Ό λΆλ μμμ λ°μ΄ν° νμ μΌλ‘ μ²λ¦¬ν μ μλ€.
κ³ μ μμμ
- μμ μ λ°λ νμ μΌλ‘λ λΆλ¦°λ€.
numeric(precision, scale)
ννλ‘ μ μΈνλ€.- μΈμμΈ
precision
μ μ λ ₯λ μ«μμ μ 체 μλ¦Ώμλ₯Ό,scale
μ μμμ μλ μλ¦Ώμλ₯Ό μ λλ€. decimal(precision, scale)
μΌλ‘λ κ³ μ μμμ νμμΌλ‘ μ§μ ν μ μλ€.- λ λ°©μ λͺ¨λ
ANSI SQL
νμ€μ ν¬ν¨λμ΄ μλ€. precision
μΈμ κ°μ μλ΅ν κ²½μ° λ°μ΄ν°λ² μ΄μ€μ μ΅λ νλλ₯Ό κΈ°μ€μΌλ‘ μ«μλ₯Ό μ μ₯νλ€.scale
μΈμ κ°μ μλ΅ν κ²½μ° 0 κ°μ κ°μ§λ©°, μ΄λ μ μλ₯Ό μλ―Ένλ€.
λΆλ μμμ
- λΆλ μμμ νμ
μΌλ‘λ
real
,double precision
μ΄ μλ€. - μ΄ λμ μ°¨μ΄μ μ λ΄μ μ μλ λ°μ΄ν° ν¬κΈ°μ΄λ€.
real
νμ μ μμμ μ΄ν 6μ리κΉμ§ μ λ°λλ₯Ό νμ©νλ©°,double precision
μ μμμ μλ 15μ리κΉμ§ μ λ°λλ₯Ό νμ©νλ€.- μ΄ λΆλ μμμ νμ μ κ°λ³ μ λ°λ νμ μ΄λΌκ³ λ νλ€.
- λ°μ΄ν°λ² μ΄μ€λ μ λ ₯λ κ°μ μ ν¨ μ«μμ 10μ μ§μλ₯Ό λνλ΄λ μ«μ(μμμ μ μμΉ)λ‘ λλμ΄ λ³΄κ΄νλ€.
- κ·Έλ¬λ―λ‘ μ΄μ μ ν μμμ μ μμΉλ μ«μμ λ°λΌ μμ§μΌ μ μκ² λλ€.
κ΅¬λΆ | λ°μ΄ν° νμ | ν¬κΈ° | μ μ₯ λ°©μ | λ²μ |
---|---|---|---|---|
κ³ μ μμμ | numeric(precision, scale), decimal(precision, scale) | κ°λ³ κΈΈμ΄ | λ΄λΆμ μΌλ‘ κ°λ³ κΈΈμ΄ 2μ§μλ‘ μ μ₯, μ νν 10μ§μ νν κ°λ₯ | -10^131072 ~ +10^131072 (μμ μλ¦Ώμ μ΅λ 16383 μ리) |
λΆλ μμμ | real | 4λ°μ΄νΈ | IEEE 754 λ¨μ λ(32λΉνΈ) λΆλ μμμ | μ½ Β±1.18E-38 ~ Β±3.40E38, μμμ μ½ 6μ리 μ λ°λ |
λΆλ μμμ | double precision | 8λ°μ΄νΈ | IEEE 754 λ°°μ λ(64λΉνΈ) λΆλ μμμ | μ½ Β±2.23E-308 ~ Β±1.80E308, μμμ μ½ 15μ리 μ λ°λ |
λΆλ μμμ | float(p) | 4~8λ°μ΄νΈ | p β€ 24 β real, p > 24 β double precision | p κ°μ λ°λΌ real λλ double precisionμ λ²μμ μ λ°λ μ μ© |
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE number_data_types (
numeric_column numeric(20,5),
real_column real,
double_column double precision
);
INSERT INTO number_data_types
VALUES
(.7, .7, .7),
(2.13579, 2.13579, 2.13579),
(2.1357987654, 2.1357987654, 2.1357987654);
SELECT * FROM number_data_types;
numeric
,real
,double precision
μΈ κ°μ λ°μ΄ν° νμ μ΄ μ΄λ»κ² λ€λ₯Έμ§ μ΄ν΄ 보기 μν μμ μ΄λ€.
numeric_column | real_column | double_column |
---|---|---|
0.7 | 0.7 | 0.7 |
2.13579 | 2.13579 | 2.13579 |
2.1358 | 2.1357987 | 2.1357987654 |
numeric
νμ μ λ€μ― μλ¦¬λ³΄λ€ λ§μ΄ μ λ ₯ν κ²½μ° λ°μ¬λ¦Ό μ²λ¦¬νλ€.real
νμ μ ν΄λΌμ΄μΈνΈ λ³λ‘ μμμ μλ 6 ~ 7μ리κΉμ§ μ νν κ²°κ³Όλ₯Ό μΆλ ₯νλ€.double precision
νμ μ μμμ μλ 15μ리κΉμ§ μ νν κ²°κ³Όλ₯Ό μΆλ ₯νλ€.- μ»΄ν¨ν°κ° λΆλ μμμ μ 보κ΄νλ λ°©μ λλ¬Έμ μλμΉ μμ μνμ μ€λ₯λ‘ μ΄μ΄μ§ μλ μλ€.
1
2
3
4
5
SELECT
numeric_column * 10000000 AS fixed,
real_column * 10000000 AS floating
FROM number_data_types
WHERE numeric_column = .7;
fixed | floating |
---|---|
7,000,000 | 6,999,999.88079071 |
- μμ λ§λ ν μ΄λΈμμ, μ² λ§μ κ³±ν λ€ 0.7 κ°μ΄ λ€μ΄μλ 첫 λ²μ§Έ μ€λ§ νν°λ§νλλ°, 쿼리μ λ¦¬ν΄ κ°μ΄ λ€λ₯΄λ€.
- λΆλ μμμ μ΄ μ΄λ¬ν μ€λ₯λ₯Ό λ±λ μ΄μ λ μ»΄ν¨ν°κ° μ νν μ«μλ€ μμ λλμ μ 보λ₯Ό μ§μ΄ λ£μΌλ €κ³ νκΈ° λλ¬Έμ΄λ€.
- μ«μ λ°μ΄ν° νμ μ νμν μ μ₯ 곡κ°μ μμμ μλ€ μλ¦Ώμμ λ°λΌ λ¬λΌμ§λ€.
- λμ λ°λΌ
numeric
νμ μ΄ λΆλ μμμ νμ λ³΄λ€ λ λ§μ 곡κ°μ μ°¨μ§ν μλ μλ€. - λ§μ½ λͺ μλ§ κ°μ νμ λ€λ£¨λ μμ μ νκ³ μλ€λ©΄, λΉκ΅μ λΆμ νν λΆλ μμμ κ³μ° μμ΄ μ²λ¦¬ν μ μλμ§ κ³ λ €ν΄λ³΄λ κ²μ΄ μ’λ€.
νμν μ«μ λ°μ΄ν° νμ μ μ ννλ λ²
- κ°λ₯ν μ μ νμ μ μ ννμ.
- μμμ λ°μ΄ν°λ₯Ό λ€λ£¨λλ° κ³μ°μ΄ μ νν΄μΌ νλ€λ©΄
numeric
,decimal
νμ μΌλ‘ μ¬μ©νμ. - λΆλ μμμ νμ μ 곡κ°μ μ μ½ν μ μμ§λ§ κ³μ°μ μ νλκ° λ¨μ΄μ§λ―λ‘ κ³μ°μ μ νλκ° μ€μνμ§ μμ λλ§ μ¬μ©ν΄μΌ νλ€.
- μΆ©λΆν ν° μ«μ νμ μ μ ννμ.
- κ°λ Ή
numeric
,decimal
μ μ¬μ©ν λprecision
μ μΆ©λΆν ν¬κ² νμ¬ μμμ μλ μλλ‘ μλ¦Ώμκ° λ€ λ΄κΈΈ μ μλλ‘ ν보νλ κ²μ΄ μ€μνλ€. - μ μλ₯Ό λ€λ£° λλ
bigint
λ₯Ό μ¬μ©νλ, νμ μ΄ λ λ€λ©΄integer
λsmallint
λ₯Ό νμ©ν΄λ μ’λ€.
λ μ§μ μκ° νμ μ΄ν΄νκΈ°
λ°μ΄ν° νμ | ν¬κΈ° | μ€λͺ | λ²μ |
---|---|---|---|
date | 4λ°μ΄νΈ | λ μ§(μ°-μ-μΌ)λ§ μ μ₯ | κΈ°μμ 4713-01-01 bc ~ 5874897-12-31 ad |
time(precision) | 8λ°μ΄νΈ | ν루 μ€ μκ°(μ:λΆ:μ΄.μμμ΄)λ§ μ μ₯, νμμ‘΄ μ 보 μμ | 00:00:00 ~ 24:00:00 (μμ μ΄ μ λ°λ μ΅λ 6μ리) |
time(precision) with time zone | 12λ°μ΄νΈ | ν루 μ€ μκ° + νμμ‘΄ μ μ₯ | 00:00:00+1459 ~ 24:00:00-1459 |
timestamp(precision) | 8λ°μ΄νΈ | λ μ§ + μκ° μ μ₯, νμμ‘΄ μ 보 μμ | 4713 bc ~ 294276 ad (μμ μ΄ μ λ°λ μ΅λ 6μ리) |
timestamp(precision) with time zone | 8λ°μ΄νΈ | λ μ§ + μκ° + utc κΈ°μ€ νμμ‘΄ 보μ μ 보 μ μ₯ | 4713 bc ~ 294276 ad (μμ μ΄ μ λ°λ μ΅λ 6μ리) |
interval [fields] (precision) | 16λ°μ΄νΈ | μκ° κ°κ²©(λ , μ, μΌ, μ, λΆ, μ΄) μ μ₯ | μ½ Β±178000000λ (μμ μ΄ μ λ°λ μ΅λ 6μ리) |
- μΈμ μ΄λ€ μΌμ΄ λ°μνλμ§μ λν λ¬Έμ λ μΌλ°μ μΌλ‘ λκ°, 무μμ, μΌλ§λ λ§μ μ¬λμ΄ μ°Έμ¬νλμ§ λ§νΌμ΄λ κ°μΉ μλ λ¬Έμ κΈ° λλ¬Έμ λ°μ΄ν°λ₯Ό μ¬μ©ν μ€ν 리ν λ§μ νμμ μ΄λ€.
timestamp
- μΆμ ν μ μλ λ€μν μν©μμ μ μ©ν λ μ§μ μκ°μ κΈ°λ‘νλ€.
- μ¬κ°κΈ°μ μΆλ°, νμλΌμΈμ λ€λ₯Έ μ¬κ±΄ μ 리 λ± μ΄λ²€νΈ μκ° κΈ°λ‘μ ν΄λΉ μ΄λ²€νΈκ° λ°μν μκ°λκ° ν¬ν¨λλλ‘ ν€μλλ₯Ό μΆκ°νλ κ²μ΄ μ’λ€.
- κ·Έλ μ§ μμΌλ©΄ μ μΈκ³ μ¬λ¬ κ³³μμ κΈ°λ‘λ μκ°μ λΉκ΅ν μ μλ€.
timestamp with time zone
νμ μ νμ€SQL
μ μΌλΆλ‘PostgreSQL
μμλtimestampz
λ‘λ κ·Έμ λμΌν λ°μ΄ν° νμ μ μ§μ ν μ μλ€.
date
- λ μ§λ§ κΈ°λ‘νλ©°,
SQL
νμ€μ μΌλΆμ΄λ€.
time
- μκ°λ§ κΈ°λ‘νλ©°,
SQL
νμ€μ μΌλΆμ΄λ€. with time zone
μ μΆκ°ν μ μμ§λ§, λ μ§κ° μλ€λ©΄ 무μλ―Ένλ€.
interval
- μλ λ¨μ νμμΌλ‘ ννλ μκ° λ¨μλ₯Ό λνλ΄λ κ°μ 보μ νλ€.
- κΈ°κ°μ μμ λλ λμ κΈ°λ‘νμ§ μκ³ , κΈΈμ΄λ§ κΈ°λ‘νλ€.
- μΌλ°μ μΌλ‘
interval
λ°μ΄ν° νμ μ λ€λ₯Έ λ μ§λ μκ° μ΄μ κ³μ° λλ νν°λ§μ μ¬μ©λλ€. SQL
νμ€μ μΌλΆμ§λ§PostgreSQL
μ μ© κ΅¬λ¬Έμ λ λ§μ κΈ°λ₯μ μ 곡νλ€.
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE date_time_types (
timestamp_column timestamp with time zone,
interval_column interval
);
INSERT INTO date_time_types
VALUES
('2022-12-31 01:00 EST','2 days'),
('2022-12-31 01:00 -8','1 month'),
('2022-12-31 01:00 Australia/Melbourne','1 century'),
(now(),'1 week');
SELECT * FROM date_time_types;
timestamp_column | interval_column |
---|---|
2022-12-31 15:00:00.000 +0900 | 2 days |
2022-12-31 18:00:00.000 +0900 | 1 mon |
2022-12-30 23:00:00.000 +0900 | 100 years |
2025-08-14 14:14:02.601 +0900 | 7 days |
- λ νμ μ λν ν μ΄λΈμ λ§λ€κ³ ν 4κ°λ₯Ό μ½μ νλ€.
- λ μ§μ μκ° μ 보λ₯Ό μ½μ
ν λ
ISO
νμYYYY-MM-DD HH:MM:SS
μ λ§λ κ°μ μ λ ₯νμλ€. SQL
μMM/DD/YYYY
λ± λ€μν λ μ§ νμμ μ§μνμ§λ§ μΈκ³μ μΈ νΈνμ±μ μν΄ISO
λ₯Ό κΆμ₯νλ€.- 첫 λ²μ§Έ νμμλ λ―Έκ΅ λλΆ νμ€μμ μ½μ΄μΈ
EST
λ₯Ό μ¬μ©νλ€. - λ λ²μ§Έ νμμλ μκ°λλ₯Ό -8 κ°μΌλ‘ μ€μ νμ¬
UTC
κΈ°μ€ 8μκ° λ¦μ μκ°λλ‘ μ§μ νλ€. - μΈ λ²μ§Έ νμμλ
Australia/Melbourne
μΌλ‘ μμκ³Ό μμΉμ μ΄λ¦μ μ¬μ©νμ¬ μκ°λλ₯Ό μ§μ νλ€. - λ€ λ²μ§Έ νμμλ λ μ§, μκ° λ° μκ°λλ₯Ό μ§μ νλ λμ νλμ¨μ΄μμ νμ¬ νΈλμμ
μκ°μ μΊ‘μ³νλ
now()
ν¨μλ₯Ό μ¬μ©νλ€. - μ²μ μΈ νμ
timestamp_column
μ΄μ λμΌν λ μ§μ μκ°μ μ 곡νμμλ νμμ‘΄μ΄ λ€λ₯΄λ©΄ μ μ₯λλ UTCμ μΆλ ₯κ°μ λͺ¨λ λ¬λΌμ§λ€. - λ§μ§λ§μΌλ‘
PostgreSQL
μ κ°κ²© νμμ λν κΈ°λ³Έ μ€μ μΌλ‘ 1century
λ₯Ό 100years
λ‘, 1week
μ 7days
λ‘ λ³κ²½νλ€.
interval
λ°μ΄ν° νμ
μ ν΅ν΄ λ μ§ κ³μ°νκΈ°
interval
λ°μ΄ν° νμ μ λ μ§ λ° μκ° λ°μ΄ν°μ κ΄λ ¨λ κ°λ¨ν κ³μ°μ μ μ©νλ€.- μλ₯Ό λ€μ΄, κ³ κ°μ΄ κ³μ½μ 체결ν λ μ§λ₯Ό ν¬ν¨νλ μ΄μ΄ μλ€κ³ κ°μ νμ.
- μ¬κΈ°μ
interval
λ°μ΄ν° νμ μ λ°μ΄ν°λ‘ κ° κ³μ½ λ μ§μ 90μΌμ μΆκ°νμ¬ ν΄λΌμ΄μΈνΈ νμ μ‘°μΉ μκΈ°λ₯Ό μ ν μ μλ€.
1
2
3
4
5
SELECT
timestamp_column,
interval_column,
timestamp_column - interval_column AS new_date
FROM date_time_types;
timestamp_column | interval_column | new_date |
---|---|---|
2022-12-31 15:00:00.000 +0900 | 2 days | 2022-12-29 15:00:00.000 +0900 |
2022-12-31 18:00:00.000 +0900 | 1 mon | 2022-11-30 18:00:00.000 +0900 |
2022-12-30 23:00:00.000 +0900 | 100 years | 1922-12-30 23:00:00.000 +0900 |
2025-08-14 14:14:02.601 +0900 | 7 days | 2025-08-07 14:14:02.601 +0900 |
- μ¬κΈ°μ
timestamp_column - interval_column
κ²°κ³ΌμΈnew_date
μ κ°μ΄ κ³μ°λ μ΄μ ννμμ΄λΌκ³ νλ©°, μ΄ κΈ°λ²μ μμ£Ό μ¬μ©νλ€. new_date
μ΄μ κΈ°λ³Έμ μΌλ‘timestamp with time zone
νμ μΌλ‘ ν¬λ§·λμ΄ μκ° κ°μ νμνλλ°,interval
κ°μμ λ μ§κ° μ¬μ©λλ©΄ λ μ§κΉμ§ νμνλ€.
JSON
κ³Ό JSONB
μ΄ν΄νκΈ°
1
2
3
4
5
6
7
8
9
10
11
{
"business_name": "Old Ebbitt Grill",
"business_type": "Restaurant",
"employees": 300,
"address": {
"street": "675 15th St NW",
"city": "Washington",
"state": "DC",
"zip_code": "20005"
}
}
PostgreSQL
μλJSON
μ© λ°μ΄ν° νμ μ΄ λ κ°μ§ μλ€.
json
:JSON
ν μ€νΈλ₯Ό κ·Έλλ‘ μ μ₯jsonb
:JSON
ν μ€νΈλ₯Ό λ°μ΄λ리 νμμΌλ‘ λ³ννμ¬ μ μ₯
PostgreSQL
μ νμ¬SQL
νμ€μ μλ μ¬λ¬ κΈ°λ₯μ ꡬννμ§λ§ μ체μ μΌλ‘JSON
κ΄λ ¨ κΈ°λ₯κ³Ό μ°μ°μλ₯Ό μ 곡νλ€.json
κ³Ό λ€λ₯΄κ²jsonb
λ μΈλ±μ±μ μ§μνλ―λ‘ μ²λ¦¬ μλκ° λΉ λ₯΄λ€.
κ·Έ μΈ νμ λ€ μ¬μ©νκΈ°
PostgreSQL
μλ λ¬Έμ, μ«μ, λ μ§ μΈμλ λ€μν νμ λ€μ΄ μλ€.
boolean
νμ :true
,false
geometric
νμ : μ , μ , μ λ° κΈ°ν 2μ°¨μ κ°μ²΄λ₯Ό ν¬ν¨text search
νμ :PostgreSQL
μ λ¬Έ κ²μ μμ§μ© ν μ€νΈ κ²μ νμnetwork address
νμ :IP
λλMAC
μ£ΌμUUID
νμrange
νμ : μ μ λλ νμμ€ν¬ν κ°μ λ²μλ₯Ό μ§μ - λ°μ΄λ리 λ°μ΄ν°λ₯Ό μ μ₯νλ νμ
- ꡬ쑰νλ νμμΌλ‘ μ 보λ₯Ό μ μ₯νλ
XML
λ°JSON
νμ
CAST
λ₯Ό ν΅ν΄ λ°μ΄ν° νμ
λ³ννκΈ°
1
2
3
4
5
6
7
8
9
10
SELECT timestamp_column, CAST(timestamp_column AS varchar(10))
FROM date_time_types;
SELECT numeric_column,
CAST(numeric_column AS integer),
CAST(numeric_column AS text)
FROM number_data_types;
-- μ€λ₯ λ°μ
SELECT CAST(char_column AS integer) FROM char_data_types;
- μ’ μ’ μ΄λ€ κ°μ λ°μ΄ν°λ₯Ό κΈ°μ‘΄μ μ μ₯λ κ²κ³Ό λ€λ₯Έ νμ μΌλ‘ λ³νν΄μΌ νλ κ²½μ°κ° μλ€.
- μλ₯Ό λ€μ΄ μ«μμ λ¬Έμλ₯Ό κ²°ν©νκΈ° μν΄ μ«μλ₯Ό λ¬Έμ νμ μΌλ‘ λ°νλ°κ³ μΆμ μ μλ€.
- μ΄μ²λΌ μ§μ λ λ°μ΄ν° νμ
μ΄ μλ κ°μ λ€λ₯Έ νμ
μΌλ‘ λ³ννλ μΌμ
CAST()
ν¨μλ₯Ό μ¬μ©νμ¬ μνν μ μλ€. CAST()
ν¨μλ λμ λ°μ΄ν° νμ μ΄ μλ κ°μ μμ©ν μ μμ λλ§ μ±λ¦½νλ€.- κ°λ Ή λ¬Έμλ ν μ€νΈ νμ μ μ«μ νμ μΌλ‘ λ³νν μλ μλ€.
- 첫 λ²μ§Έ μμ λ
timestamp_column
κ°μvarchar
νμ μΌλ‘ λ³νν΄ μμμλΆν° 10μλ§ μ μ§νλ€. - μκ° λΆλΆμ μ μΈνκ³ λ μ§λ§ νμΈνκ³ μΆμ λ μ μ©ν κ²μ΄λ€.
- λ λ²μ§Έ μμ λ
numeric_column
λ₯Ό λ€λ₯Έ ννλ‘ μΈ λ² λ°ννλ€. integer
λ‘ λ³νν λPostgreSQL
μ κ°μ μ μλ‘ λ°μ¬λ¦Όνλ€.- μΈ λ²μ§Έ μμ μ κ²½μ° μλͺ»λ νμ λ³νμ μννλ €κ³ μλνμ¬ μ€λ₯κ° λ°μνλ€.
1
2
3
4
5
SELECT timestamp_column, CAST(timestamp_column AS varchar(10))
FROM date_time_types;
SELECT timestamp_column::varchar(10)
FROM date_time_types;
PostgreSQL
μCAST()
λ³΄λ€ κ³΅κ°μ λ μ°¨μ§νκ³ λμ± λͺ νν λ¨μΆ νκΈ°λ²μ μ 곡νλ€.- μ΄μ€ μ½λ‘
::
μ μ¬μ©νλ©΄ λλ€. - νΈν λ°©μμ μ¬μ©νλ, ν κ°μ§ μ£Όμν μ μ μ΄μ€ μ½λ‘ λ°©μμ
PostgreSQL
μ μ©μ΄λ―λ‘ λ€λ₯ΈSQL
λ²μ μΌλ‘λ ν¬νΈκ° λΆκ°λ₯νλ€.
This post is licensed under CC BY 4.0 by the author.