MySQL 화폐 데이터 유형
이 튜토리얼에서는 MySQL에 돈 값을 저장하는 데 가장 적합한 DECIMAL(P,D)
데이터 유형을 소개합니다.
MySQL 화폐 데이터 유형
화폐 가치는 정확한 표현이 필요합니다. 예를 들어 float
와 같은 대략적인 데이터 유형만 사용할 필요는 없습니다.
통화 데이터를 삽입하기 위해 고정 소수점 숫자 데이터 유형의 이점을 얻을 수 있습니다(예: DECIMAL(P,D)
).
DECIMAL(P,D)
는 열이 최대 P
숫자와 D
십진수를 저장할 수 있음을 나타냅니다. P
및 D
는 구문 뒤에 설명됩니다.
DECIMAL(P,D)
데이터 유형으로 열을 정의할 수 있습니다.
# Syntax
columnName DECIMAL(P,D)
여기서 P
는 유효 자릿수를 나타내는 정밀도를 나타냅니다. 범위는 1
에서 65
입니다.
D
는 스케일이지만 소수점 이하의 자릿수를 나타냅니다. D
의 범위는 0
및 30
입니다.
DECIMAL(P,D)
를 사용하는 동안 D<=P
라는 조건을 충족해야 합니다. 그렇지 않으면 오류가 발생합니다. P
및 D
가 지정되지 않은 경우 DECIMAL
유형 열의 최대 자릿수는 65입니다.
DECIMAL
유형 열의 범위는 정밀도(P
) 및 배율(D
)에 따라 다릅니다. ID
및 MONEY
라는 두 가지 속성이 있는 demo
테이블을 만들고 일부 데이터를 채워서 이해해 봅시다.
다음 쿼리를 사용하여 후속 조치를 취할 수 있습니다.
예제 코드:
# create a table
CREATE table demo(
ID INT NOT NULL PRIMARY KEY,
MONEY DECIMAL(12,2) NOT NULL
);
# insert data
INSERT INTO demo VALUES
(1,1254367892.50),
(2,8754367893.60),
(3,9854367895.65),
(4,9224367896.70);
# display data
SELECT * FROM demo;
출력:
+----+---------------+
| ID | MONEY |
+----+---------------+
| 1 | 1254367892.50 |
| 2 | 8754367893.60 |
| 3 | 9854367895.65 |
| 4 | 9224367896.70 |
+----+---------------+
4 rows in set (0.00 sec)
언급된 모든 키워드가 DECIMAL
의 동의어이기 때문에 DECIMAL
키워드 대신 FIXED
, DEC
또는 NUMERIC
키워드를 사용할 수도 있습니다. 데모로 다음 예를 참조하십시오.
예제 코드:
# create a table
CREATE table demo1(
ID INT NOT NULL PRIMARY KEY,
MONEY FIXED(12,2) NOT NULL
);
# insert data
INSERT INTO demo1 VALUES
(1,1254367892.50),
(2,8754367893.60),
(3,9854367895.65),
(4,9224367896.70);
# display data
SELECT * FROM demo;
출력:
+----+---------------+
| ID | MONEY |
+----+---------------+
| 1 | 1254367892.50 |
| 2 | 8754367893.60 |
| 3 | 9854367895.65 |
| 4 | 9224367896.70 |
+----+---------------+
4 rows in set (0.00 sec)
INT
와 마찬가지로 DECIMAL
데이터 유형의 ZEROFILL
및 UNSIGNED
속성을 사용할 수 있습니다. UNSIGNED
속성을 사용하여 DECIMAL(P,D) UNSIGNED
유형의 테이블 필드는 음수 값을 가질 수 없습니다.
예를 들어 다음 쿼리를 사용하여 만든 테이블은 MONEY
필드에 음수 값을 허용하지 않습니다.
예제 코드:
# create a table
CREATE table demo2(
ID INT NOT NULL PRIMARY KEY,
MONEY DECIMAL(12,2) UNSIGNED NOT NULL
);
ZEROFILL
속성을 사용하여 MySQL은 열 정의에서 지정한 너비까지 결과 값을 0으로 채웁니다.
MySQL은 ZEROFILL
속성을 사용하는 경우 자동으로 UNSIGNED
를 추가합니다. DESCRIBE tableName;
을 사용하여 확인할 수 있습니다. 질문.
다음 코드를 예로 참조하십시오.
# create a table
CREATE table demo3(
ID INT NOT NULL PRIMARY KEY,
MONEY DECIMAL(12,2) ZEROFILL NOT NULL
);
# describe a table
DESCRIBE demo3;
출력:
+-------+---------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------------------+------+-----+---------+-------+
| ID | int | NO | PRI | NULL | |
| MONEY | decimal(12,2) unsigned zerofill | NO | | NULL | |
+-------+---------------------------------+------+-----+---------+-------+
2 rows in set (0.26 sec)
DECIMAL(P)
는 DECIMAL(P,0)
과 동일하고 DECIMAL
은 DECIMAL(P,0)
과 동일하다는 점을 항상 기억하십시오. DECIMAL(P,0)
을 사용하여 소수 부분(소수 부분)을 갖지 않습니다.
DECIMAL(P)
및 DECIMAL(P,0)
구현을 통해 P
의 값을 결정할 수 있습니다. 기본 구현 DECIMAL
을 사용하는 경우 P
의 기본값은 10입니다.
자세한 내용은 이것에서 확인하실 수 있습니다.