sql中decimal是什么类型(数据库decimal对应类型)
- 数据库
- 2023-08-13
- 80
老铁们,大家好,相信还有很多朋友对于sql中decimal是什么类型和数据库decimal对应类型的相关问题不太懂,没关系,今天就由我来为大家分享分享sql中decim...
老铁们,大家好,相信还有很多朋友对于sql中decimal是什么类型和数据库decimal对应类型的相关问题不太懂,没关系,今天就由我来为大家分享分享sql中decimal是什么类型以及数据库decimal对应类型的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
sql中精确到小数点后两位用哪种数据类型
在SQL中,可以使用`DECIMAL(M,D)`数据类型来精确到小数点后M位和D小数位。其中,M是总位数,D是小数位数。例如,`DECIMAL(5,2)`可以存储最多10位数字,其中有两位是小数。
sqlserver数量用什么数据类型
整数的话就用int
小数可以用float和double,不过更推荐用decimal,精度更高
SQL哪些数据类型可以带小数啊
浮点数据类型浮点数据类型用于存储十进制小数。
浮点数值的数据在SQLServer中采用上舍入(Roundup或称为只入不舍)方式进行存储。所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加1,并进行必要的进位。若一个数是上舍入数,其绝对值不会减少。如:对3.14159265358979分别进行2位和12位舍入,结果为3.15和3.141592653590。1、REAL数据类型REAL数据类型可精确到第7位小数,其范围为从-3.40E-38到3.40E+38。每个REAL类型的数据占用4个字节的存储空间。2、FLOATFLOAT数据类型可精确到第15位小数,其范围为从-1.79E-308到1.79E+308。每个FLOAT类型的数据占用8个字节的存储空间。FLOAT数据类型可写为FLOAT[n]的形式。n指定FLOAT数据的精度。n为1到15之间的整数值。当n取1到7时,实际上是定义了一个REAL类型的数据,系统用4个字节存储它;当n取8到15时,系统认为其是FLOAT类型,用8个字节存储它。3、DECIMALDECIMAL数据类型可以提供小数所需要的实际存储空间,但也有一定的限制,您可以用2到17个字节来存储从-10的38次方-1到10的38次方-1之间的数值。可将其写为DECIMAL[p[s]]的形式,p和s确定了精确的比例和数位。其中p表示可供存储的值的总位数(不包括小数点),缺省值为18;s表示小数点后的位数,缺省值为0。例如:decimal(155),表示共有15位数,其中整数10位,小数5。位表4-3列出了各精确度所需的字节数之间的关系。4、NUMERICNUMERIC数据类型与DECIMAL数据类型完全相同。注意:SQLServer为了和前端的开发工具配合,其所支持的数据精度默认最大为28位。mysql数据类型的详解
MySQL数据库的表是一个二维表,由一个或多个数据列构成。每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,我们可以把整型数值存放到字符类型的列中,MySQL则会把它看成字符串来处理。MySQL中的列类型有三种:数值类、字符串类和日期/时间类。从大类来看列类型和数值类型一样,都是只有三种。但每种列类型都还可细分。下面对各种列类型进行详细介绍。
数值类的数据列类型数值型的列类型包括整型和浮点型两大类。
TINYINT:1字节非常小的正整数,带符号:-128~127,不带符号:0~255SMALLINT:2字节小整数,带符号:-32768~32767,不带符号:0~65535MEDIUMINT:3字节中等大小的整数,带符号:-8388608~8388607,不带符号:0~16777215INT:4字节标准整数,带符号:-2147483648~2147483647,不带符号:0~4294967295BIGINT:8字节大整数,带符号:-9223372036854775808~9233372036854775807,不带符号:0~18446744073709551615FLOAT:4字节单精度浮点数,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38DOUBLE:8字节双精度浮点数,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308DECIMAL:M+2字节以字符串形式表示的浮点数,它的取值范围可变,由M和D的值决定。MYSQL支持大量的列类型,它们可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。这个章节首先给出可用类型的概述,并且总结各类型所需的存储需求,然后提供各类型中的类型范畴更详细的描述。概述有意地简化了。更详细的说明应该参考特写列类型的附加信息,例如你能为其指定值的允许格式。MySQL支持的列类型在下面列出。下列代码字母用于描述中:M指出最大的显示尺寸。最大的显示尺寸长度为255。D适用于浮点类型。指出跟随在十进制小数点后的数字数量。最大可能值为30,但不应大于M-2。方括号(“[”and“]”)指定可选的类型修饰部份。注意,如果为一个列指定了ZEROFILL,MySQL将自动为这个列添加UNSIGNED属性。警告:你应该知道当在两个整数类型值中使用减法时,如有一个为UNSIGNED类型,那么结果也是无符号的。查看章节6.3.5Cast函数。
TINYINT[(M)][UNSIGNED][ZEROFILL]-128到127。无符号的范围是0到255。BITBOOL它们是TINYINT(1)的同义词。
SMALLINT[(M)][UNSIGNED][ZEROFILL]一个小整数。有符号的范围是-32768到32767。无符号的范围是0到65535。
MEDIUMINT[(M)][UNSIGNED][ZEROFILL]一个中等大小的整数。有符号的范围是-8388608到8388607。无符号的范围是0到16777215。
INT[(M)][UNSIGNED][ZEROFILL]一个正常大小的整数。有符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。
INTEGER[(M)][UNSIGNED][ZEROFILL]INT的同义词。
BIGINT[(M)][UNSIGNED][ZEROFILL]一个大的整数。有符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。你应该知道的有关BIGINT列的一些事情:BIGINT或DOUBLE值来完成的,因此你不应该使用大于9223372036854775807(63bits)的无符号大整数,除了位函数之外!如果你这样做了,结果中的某些大数字可能会出错,因为将BIGINT转换成DOUBLE时产生了舍入错误。MySQL4.0在下列情况下可以处理BIGINT:在一个BIGINT列中使用整数存储一个大的无符号值。在MIN(big_int_column)和MAX(big_int_column)中。当两个操作数都是整数时使用操作符(+、-、*、等)。通常你可以在一个BIGINT列中以字符串方式存储的一个精确的整数。在这种情况下,MySQL将执行一个字符串到数字的转换,包括无intermediate的双精度表示法。当两个参数均是整数值时,“-”、“+”和“*”将使用BIGINT运算!这就意味着,如果两个大整数的乘积(或函数的结果返回整数)的结果大于9223372036854775807时,你可能会得到意想不到的结果。FLOAT(precision)[UNSIGNED][ZEROFILL]一个浮点型数字。precision可以是<=24作为一个单精度的浮点数字和介于25和53之间作为一个双精度的浮点数字。这些类型与下面描述的FLOAT和DOUBLE类型相似。FLOAT(X)有与相应的FLOAT和DOUBLE类型同样的范围,但是显示尺寸和十进制小数位数是未定义的。在MySQL3.23中,它是一个真实的浮点值。而在MySQL早期的版本中,FLOAT(precision)通常有2小数位。注意,由于在MySQL中所有的计算都是以双精度执行的,所以使用FLOAT可能带来一些意想不到的问题。查看章节A.5.6解决没有匹配行的问题。FLOAT[(M,D)][UNSIGNED][ZEROFILL]一个小的(单精度)浮点数字。允许的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。如果UNSIGNED被指定,负值是不允许的。M是显示宽度,D是小数位数。FLOAT没有参数或有X<=24的FLOAT(X)代表一个单精度的浮点数字。DOUBLE[(M,D)][UNSIGNED][ZEROFILL]一个正常大小的(双精度)浮上数字。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。如果UNSIGNED被指定,负值是不允许的。M是显示宽度,D是小数位数。DOUBLE没胡参数或有25<=X<=53的FLOAT(X)代表一个双精度的浮点数字。DOUBLEPRECISION[(M,D)][UNSIGNED][ZEROFILL]REAL[(M,D)][UNSIGNED][ZEROFILL]它们是DOUBLE同义词。DECIMAL[(M[,D])][UNSIGNED][ZEROFILL]一个未压缩(unpacked)的浮点数。运作如同一个CHAR列:“unpacked”意味着数字是以一个字符串存储的,值的每一位将使用一个字符。小数点并且对于负数,“-”符号不在M中计算(但是它们的空间是被保留的)。如果D是0,值将没有小数点或小数部份。DECIMAL值的最大范围与DOUBLE一致,但是对于一个给定的DECIMAL列,实际的范围可以被所选择的M和D限制。如果UNSIGNED被指定,负值是不允许的。如果D被忽略,缺省为0。如果M被忽略,缺省为10。在MySQL3.23以前,M参数必须包含符号与小数点所需的空间。DEC[(M[,D])][UNSIGNED][ZEROFILL]NUMERIC[(M[,D])][UNSIGNED][ZEROFILL]DECIMAL的同义词。DATE一个日期。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式显示DATE值,但是允许你以字符串或数字给一个DATE列赋值。查看章节6.2.2.2DATETIME、DATE和TIMESTAMP类型。DATETIME一个日期和时间的组合。支持的范围是'1000-01-0100:00:00'到'9999-12-3123:59:59'。MySQL以'YYYY-MM-DDHH:MM:SS'格式显示DATETIME值,但是允许你以字符串或数字给一个DATETIME列赋值。查看章节6.2.2.2DATETIME、DATE和TIMESTAMP类型。TIMESTAMP[(M)]一个时间戳。范围是'1970-01-0100:00:00'到2037年间的任意时刻。MySQL4.0和更早版本中,TIMESTAMP值是以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式显示的,它取决于M是否是14(或省略)、12、8或6,但是允许你以字符串或数字给一个TIMESTAMP列赋值。从MySQL4.1开始,TIMESTAMP以'YYYY-MM-DDHH:MM:DD'格式作为字符返回。如果你你希望以数字形式返回则必须在该时间戳字段后加上+0。不同的时间戳长度是不支持的。从MySQL4.0.12开始,选项--new可以被用来使服务器与4.1一样运作。TIMESTAMP列有益于记录一个INSERT或UPDATE操作的日期和时间,因为如果你自己没有给它赋值,它将被自动地设置为最近一次操作的日期和时间。也可以通过给它赋一个NULL而使它设置为当前的日期和时间。查看章节6.2.2Date和Time类型。参数M只影响一个TIMESTAMP列的显示格式;它的值总是占用4个字节存储。注意,当TIMESTAMP(M)列的M是8或14时,它返回的是数字而其它的TIMESTAMP(M)列返回的是字符串。这仅仅是为了可以可靠地转储并恢复到其它格式的表中。查看章节6.2.2.2DATETIME、DATE和TIMESTAMP类型。TIME一个时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式显示TIME值,但是允许你使用字符串或数字来给TIME列赋值。查看章节6.2.2.3TIME类型。YEAR[(2|4)]一个2或4位数字格式的年(缺省为4位)。允许的值是1901到2155、0000(4位年格式)以及使用2位格式的1970-2069(70-69)。MySQL以YYYY格式显示YEAR值,但是允许你使用字符串或数字来给YEAR列赋值。(YEAR类型在MySQL3.22之前不支持。)查看章节6.2.2.4YEAR类型。[NATIONAL]CHAR(M)[BINARY]一个定长的字符串,当存储时,总是以空格填满右边到指定的长度。M的范围是0到255(在MySQL3.23版本之前为1到255)。当该值被检索时,尾部空格将被删除。CHAR值根据缺省的字符集进行忽略大小写的排索与比较,除非指定了关键词BINARY。NATIONALCHAR(或短形式NCHAR)是以ANSISQL方式定义一个CHAR列,它将使用缺省的字符集。这在MySQL中是默认的。CHAR是CHARACTER的缩写。MySQL允许以CHAR(0)类型建立一个列。一些老程序运行时必需一个列,却又并不使用这个列的值,你就不得不为了适应它而建立该列,在这情况下,CHAR(0)将是很有益的。当需要一个列仅保存两个值时:一个为CHAR(0)(该列没有定义为NOTNULL),这将仅占用一个比特位来存储2个值:NULL或""。查看章节6.2.3.1CHAR和VARCHAR类型。CHAR这是CHAR(1)的同义词。[NATIONAL]VARCHAR(M)[BINARY]一个变长的字符串。注意:尾部的空格在存储时将会被删除(这与ANSISQL约规不同)。M的范围是0到255(在MySQL4.0.2之前的版本中是1到255)。VARCHAR值以大小写忽略方式进行排索与比较,除非关键词BINARY被指定。查看章节6.5.3.1隐式的列定义变化。VARCHAR是CHARACTERVARYING的缩写。查看章节6.2.3.1CHAR和VARCHAR类型。TINYBLOBTINYTEXT一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。查看章节6.5.3.1隐式的列定义变化。查看章节6.2.3.2BLOB和TEXT类型。BLOBTEXT一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。查看章节6.5.3.1隐式的列定义变化。查看章节6.2.3.2BLOB和TEXT类型。MEDIUMBLOBMEDIUMTEXT一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。查看章节6.5.3.1隐式的列定义变化。查看章节6.2.3.2BLOB和TEXT类型。LONGBLOBLONGTEXT一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。查看章节6.5.3.1隐式的列定义变化。注意,由于服务器/客户端的协议以及MyISAM表通常有一个16M每通信包/表行的限制,你仍然不能使用这个类型的整个范围。查看章节6.2.3.2BLOB和TEXT类型。ENUM('value1','value2',...)一个枚举类型。一个仅能有一个值的字符串对象,这个值选自值列'value1'、'value2'、...、NULL或特殊的""出错值。一个ENUM列可以有最大65535不同的值。查看章节6.2.3.3ENUM类型。SET('value1','value2',...)一个集合。一个能有零个或更多个值的字符串对象,其中每个值必须选自值列'value1'、'value2'、...。一个SET列可以有最大64个成员。查看章节6.2.3.4SET类型。MySQL支持所有的ANSI/ISOSQL92数字类型。这些类型包括准确数字的数据类型(NUMERIC、DECIMAL、INTEGER和SMALLINT),也包括近似数字的数据类型(FLOAT、REAL和DOUBLEPRECISION)。关键词INT是INTEGER的同义词,关键词DEC是DECIMAL的同义词。NUMERIC和DECIMAL类型被MySQL以同样的类型实现,这在SQL92标准中是允许的。他们用于保存对准确精度有重要要求的值,例如与金钱有关的数据。当以它们中的之一声明一个列时,精度和数值范围可以(通常是)被指定;例如:salaryDECIMAL(5,2)在这个例子中,5(精度(precision))代表重要的十进制数字的数目,2(数据范围(scale))代表在小数点后的数字位数。在这种情况下,因此,salary列可以存储的值范围是从-99.99到99.99。(实际上MySQL在这个列中可以存储的数值可以一直到999.99,因为它没有存储正数的符号)。译者注:M与D对DECIMAL(M,D)取值范围的影响类型说明取值范围(MySQL<3.23)取值范围(MySQL>=3.23)DECIMAL(4,1)-9.9到99.9-999.9到9999.9DECIMAL(5,1)-99.9到999.9-9999.9到99999.9DECIMAL(6,1)-999.9到9999.9-99999.9到999999.9DECIMAL(6,2)-99.99到999.99-9999.99到99999.99DECIMAL(6,3)-9.999到99.999-999.999到9999.999#在MySQL3.23及以后的版本中,DECIMAL(M,D)的取值范围等于早期版本中的DECIMAL(M+2,D)的取值范围。注释结束:在ANSI/ISOSQL92中,句法DECIMAL(p)等价于DECIMAL(p,0)。同样的,在执行被允许决定值p的地方,句法DECIMAL等价于DECIMAL(p,0)。MySQL目前还不支持DECIMAL/NUMERIC数据类型的这些变体形式中的任一种。一般来说这并不是一个严重的问题,通过明确地控制精度和数值范围可以得到这些类型的主要功能益处。DECIMAL和NUMERIC值是作为字符串存储的,而不是作为二进制浮点数,以便保护这些值的十进制精确度。一个字符用于数值的每一位、小数点(如果scale>0)和“-”符号(对于负值)。如果scale是0,DECIMAL和NUMERIC值不包含小数点或小数部分。DECIMAL和NUMERIC值的最大范围与DOUBLE一致,但是对于一个给定的DECIMAL或NUMERIC列,它的实际范围可制定该列时的precision或scale限制。当这样的列被赋给了小数点的位数超过scale所指定的值时,该将根据scale进行四舍五入。当一个DECIMAL或NUMERIC列被赋与一个大小超过指定(或缺省)的precisionandscale的限止范围时,MySQL以该列范围的端点值存储该值。
sql语句decimal(18,0)什么意思
1、sql语句decimal(18,0)的意思是:可储存的最大十进位数总数为18,小数位数为0。2、Decimal(n,m)的含义如下:n表示可储存的最大十进位数总数,小数点左右两侧都包括在内,最小的有效位数是1,最大的有效位数是38。m表示小数点右侧所能储存的最大十进位数。m和n之间要满足0≤m≤n的关系,只有在指定了有效位数时,才能指定小数位数。Decimal为SQLServer、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。
Decimal(n,m)表示数值中共有n位数,其中整数(n-m)位,小数m位。例:decimal(10,6),数值中共有10位数,其中整数占4位,小数占6位。
sql server中的成绩字段的数据类型一般是什么
可以用numeric(5,2)
或者decimal(5,2)
前面5表示总的位数,后面的2表示精度(小数点后的位数).比如99.12,100.00,67.24
如果想精确到小数点后1位,可以修改为numeric(4,1)或decimal(4,1)比如:99.1,100.0,67.2
关于本次sql中decimal是什么类型和数据库decimal对应类型的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。
本文链接:http://xinin56.com/su/4401.html