MySQL 화폐 데이터 유형

Mehvish Ashiq 2024년2월16일
MySQL 화폐 데이터 유형

이 튜토리얼에서는 MySQL에 돈 값을 저장하는 데 가장 적합한 DECIMAL(P,D) 데이터 유형을 소개합니다.

MySQL 화폐 데이터 유형

화폐 가치는 정확한 표현이 필요합니다. 예를 들어 float와 같은 대략적인 데이터 유형만 사용할 필요는 없습니다.

통화 데이터를 삽입하기 위해 고정 소수점 숫자 데이터 유형의 이점을 얻을 수 있습니다(예: DECIMAL(P,D)).

DECIMAL(P,D)는 열이 최대 P 숫자와 D 십진수를 저장할 수 있음을 나타냅니다. PD는 구문 뒤에 설명됩니다.

DECIMAL(P,D) 데이터 유형으로 열을 정의할 수 있습니다.

# Syntax
columnName DECIMAL(P,D)

여기서 P는 유효 자릿수를 나타내는 정밀도를 나타냅니다. 범위는 1에서 65입니다.

D는 스케일이지만 소수점 이하의 자릿수를 나타냅니다. D의 범위는 030입니다.

DECIMAL(P,D)를 사용하는 동안 D<=P라는 조건을 충족해야 합니다. 그렇지 않으면 오류가 발생합니다. PD가 지정되지 않은 경우 DECIMAL 유형 열의 최대 자릿수는 65입니다.

DECIMAL 유형 열의 범위는 정밀도(P) 및 배율(D)에 따라 다릅니다. IDMONEY라는 두 가지 속성이 있는 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 데이터 유형의 ZEROFILLUNSIGNED 속성을 사용할 수 있습니다. 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)과 동일하고 DECIMALDECIMAL(P,0)과 동일하다는 점을 항상 기억하십시오. DECIMAL(P,0)을 사용하여 소수 부분(소수 부분)을 갖지 않습니다.

DECIMAL(P)DECIMAL(P,0) 구현을 통해 P의 값을 결정할 수 있습니다. 기본 구현 DECIMAL을 사용하는 경우 P의 기본값은 10입니다.

자세한 내용은 이것에서 확인하실 수 있습니다.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook