MySQL: Size of decimal data type

前端 未结 2 1583
深忆病人
深忆病人 2021-01-04 02:32

I have a few values that come in from a server that need to be stored in my database. I\'m not a MySQL expert, but I understand it well enough for basic input/output. Right

相关标签:
2条回答
  • 2021-01-04 03:06

    From MySQL:

    The declaration syntax for a DECIMAL column is DECIMAL(M,D). The ranges of values for the arguments in MySQL 5.1 are as follows:

    M is the maximum number of digits (the precision). It has a range of 1 to 65. (Older versions of MySQL permitted a range of 1 to 254.)

    D is the number of digits to the right of the decimal point (the scale). It has a range of 0 to 30 and must be no larger than M.

    Consider this number: 123456789.12345 here M is 14 and D is 5 then based on this principle you can set DECIMALS(M,D) for each column based on Their expected maximum values.

    0 讨论(0)
  • 2021-01-04 03:09

    Since the accepted answer left me wanting, I ran SHOW CREATE TABLE on a table that contains several columns defined as DECIMAL DEFAULT NULL (note the absence of values for M and D.

    The result follows.

    data_warehouse as davidg Wed Dec 05 12:10:36 2018 >SHOW CREATE TABLE erth_calendarmonths_historic_usage_preload;
    +--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table                                      | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
    +--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | erth_calendarmonths_historic_usage_preload | CREATE TABLE `erth_calendarmonths_historic_usage_preload` (
      `market` varchar(100) NOT NULL,
      `commodity` varchar(100) NOT NULL,
      `account_number` varchar(100) NOT NULL,
      `meter_number` varchar(100) NOT NULL,
      `period_year_month` int(11) NOT NULL,
      `estimated_usage_amount` decimal(18,7) DEFAULT NULL,
      `unit` varchar(100) DEFAULT NULL,
      `meter_read_start_date_part_1` datetime DEFAULT NULL,
      `meter_read_end_date_part_1` datetime DEFAULT NULL,
      `gross_nonadjusted_usage_amount_part_1` decimal(10,0) DEFAULT NULL,
      `applied_nonadjusted_usage_amount_part_1` decimal(10,0) DEFAULT NULL,
      `meter_read_start_date_part_2` datetime DEFAULT NULL,
      `meter_read_end_date_part_2` datetime DEFAULT NULL,
      `gross_nonadjusted_usage_amount_part_2` decimal(10,0) DEFAULT NULL,
      `applied_nonadjusted_usage_amount_part_2` decimal(10,0) DEFAULT NULL,
      `utility_rate_class` varchar(100) DEFAULT NULL,
      `utility_rate_subclass` varchar(100) DEFAULT NULL,
      `load_profile` varchar(100) DEFAULT NULL,
      `hu_type` varchar(100) DEFAULT NULL,
      `type` varchar(100) DEFAULT NULL,
      `utility_duns` varchar(100) DEFAULT NULL,
      `create_date` datetime DEFAULT NULL,
      `update_date` datetime DEFAULT NULL,
      `UsedBuckets` tinyint(4) NOT NULL DEFAULT '0',
      PRIMARY KEY (`market`,`commodity`,`account_number`,`meter_number`,`period_year_month`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    

    The foregoing makes the default values of M and D self-evident; M = 10, while D = 0. Needless to say, this is almost certainly not the desired outcome.

    Thou shalt always specify thine M and D values.

    0 讨论(0)
提交回复
热议问题