π PostgreSQL κΈ°λ³Έ 04 - λ°μ΄ν° νμ μ΄ν΄
π PostgreSQL κΈ°λ³Έ 04 - λ°μ΄ν° νμ
μ΄ν΄
π
γμ€μ© 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,falsegeometricνμ : μ , μ , μ λ° κΈ°ν 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.
