【MySQL】数値型:decimal,dec,numeric,fixed

 


ここではMySQLで、数値型(decimal,dec,numeric,fixed)について紹介しています。

数値型(固定小数点数)の一覧

型名 有効桁数 小数点以下桁数 補足
decimal 最大65 最大30  
dec 最大65 最大30 decimalの別名
numeric 最大65 最大30 decimalの別名
fixed 最大65 最大30 decimalの別名

有効桁数と小数点以下桁数の指定

decimal型では、有効桁数と小数点以下桁数に任意の値を指定することが出来ます。

有効桁数と小数点以下桁数の指定方法は次の通りです。

decimal(有効桁数,小数点以下桁数)
dec(有効桁数,小数点以下桁数)
numeric(有効桁数,小数点以下桁数)
fixed(有効桁数,小数点以下桁数)

次のSQLでは、decimal,dec,numeric,fixedで有効桁数と小数点以下桁数を指定してみました。

mysql> CREATE TABLE tab(col1 varChar(10),col2 decimal,col3 decimal(65,30),col4 dec,col5 dec(65,30),col6 numeric,col7 numeric(65,30),col8 fixed,col9 fixed(65,30));
Query OK, 0 rows affected (0.05 sec)

mysql> SHOW COLUMNS FROM tab;
+-------+----------------+------+-----+---------+-------+
| Field | Type           | Null | Key | Default | Extra |
+-------+----------------+------+-----+---------+-------+
| col1  | varchar(10)    | YES  |     | NULL    |       |
| col2  | decimal(10,0)  | YES  |     | NULL    |       |
| col3  | decimal(65,30) | YES  |     | NULL    |       |
| col4  | decimal(10,0)  | YES  |     | NULL    |       |
| col5  | decimal(65,30) | YES  |     | NULL    |       |
| col6  | decimal(10,0)  | YES  |     | NULL    |       |
| col7  | decimal(65,30) | YES  |     | NULL    |       |
| col8  | decimal(10,0)  | YES  |     | NULL    |       |
| col9  | decimal(65,30) | YES  |     | NULL    |       |
+-------+----------------+------+-----+---------+-------+
9 rows in set (0.02 sec)

UNSIGNEDオプション

データ型を宣言するとき、UNSIGNEDオプションを指定することで、符号なしの範囲で値を扱うことが出来ます。

次のSQLでは、COL3列にUNSIGNEDオプションを指定します。

mysql> CREATE TABLE tab(col1 varChar(10),col2 decimal,col3 decimal unsigned);
Query OK, 0 rows affected (0.04 sec)

mysql> SHOW COLUMNS FROM tab;
+-------+------------------------+------+-----+---------+-------+
| Field | Type                   | Null | Key | Default | Extra |
+-------+------------------------+------+-----+---------+-------+
| col1  | varchar(10)            | YES  |     | NULL    |       |
| col2  | decimal(10,0)          | YES  |     | NULL    |       |
| col3  | decimal(10,0) unsigned | YES  |     | NULL    |       |
+-------+------------------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

ZEROFILLオプション

データ型を宣言するとき、ZEROFIILLオプションを指定することで、桁数を0埋めすることが出来ます。

次のSQLでは、COL3列にZEROFILLオプションを指定しています。

mysql> CREATE TABLE tab(col1 varChar(10),col2 decimal,col3 decimal zerofill);
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO tab VALUES('00001',1,1);
Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM tab;
+-------+------+------------+
| col1  | col2 | col3       |
+-------+------+------------+
| 00001 |    1 | 0000000001 |
+-------+------+------------+
1 row in set (0.00 sec)