赞
踩
一、列的数据类型
1.数字类(int后面的数字并不代表存放的数字的长度,只代表显示的宽度,可以不关注)
数字类关注:
1、存储什么类型的数字
整数:正数、负数
Create table t1(id int(正负都可以),id1 int unsigned(正数));
在int中插入小数,自动删除小数点后面的
2、存储的值的范围
mysql> help int
Name: ‘INT’
Description:
INT[(M)] [UNSIGNED] [ZEROFILL]
这里的M并不代表数字的长度或者范围,只表示显示宽度,可以不关注
A normal-size integer. The signed range is -2147483648 to 2147483647.
The unsigned range is 0 to 4294967295.
数字类数据有:
1.1、整型: 5种
每个整型类型可以指定一个最小显示宽度。这个宽度并不表示存储的值有多大
(官网搜索:data types)
类型 取值范围
tinyint[(display size)] -128 ----- 127
smallint[(display size)] -32 768 ----- 32 767 (几万)
mediumint[(display size)] -8 388 608 — 8 388 607 (几百万)
integer[(display size)] -2 147 483 648 ----- 2 147 483 647 (几十亿)
bigint[(display size)] -9 223 372 036 854 775 808 -----
9 223 372 036 854 775 807 (天文数字)
例2:
CREATE TABLE width(c4 INTEGER(4));
INSERT INTO width VALUES(1);
SELECT * FROM width;
INSERT INTO width VALUES(10000);
SELECT * FROM width;
值超过显示宽度,显示宽度自动增加
1.2、小数类型(常用)
decimal[(precision[,scale])]
precision:精度,不包含小数点的数字总位数(1–30)。不指定默认为10
scale:小数位数。如果不指定,默认为0
该类型的同义词:dec,numeric,fixed
decimal[(P/M[,D])]:表示可以存储D位小数的P/M位数
precision(P/M):有效数字数的精度,支持范围(1-65),不指定默认为10
scale:小数位数,支持范围(1-30)如果不指定,默认为0
该类型的同义词:dec,numeric,fixed
MySQL要求P/M>=D
只想要小数:P/M=D
只想要整数:(P/M,0),0可省略
此时插入整数可以;
插入小数也可以,但会对第一位小数四舍五入,取整数
mysql> help decimal
Name: ‘DECIMAL’
Description:
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
A packed “exact” fixed-point number. M is the total number of digits
(the precision) and D is the number of digits after the decimal point
(the scale). The decimal point and (for negative numbers) the - sign
are not counted in M. If D is 0, values have no decimal point or
fractional part. The maximum number of digits (M) for DECIMAL is 65.
The maximum number of supported decimals (D) is 30. If D is omitted,
the default is 0. If M is omitted, the default is 10.
UNSIGNED, if specified, disallows negative values.
All basic calculations (+, -, *, /) with DECIMAL columns are done with
a precision of 65 digits.
1.3、Float (不常用)
1.小数位数不是固定的
2.超出存储范围,近似值进行存储
0-23 6
24-53 15
mysql> help float
Name: ‘FLOAT’
Description:
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
A small (single-precision) floating-point number. Permissible values
are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to
3.402823466E+38. These are the theoretical limits, based on the IEEE
standard. The actual range might be slightly smaller depending on your
hardware or operating system.
M is the total number of digits and D is the number of digits following
the decimal point. If M and D are omitted, values are stored to the
limits permitted by the hardware. A single-precision floating-point
number is accurate to approximately 7 decimal places.
UNSIGNED, if specified, disallows negative values.
Using FLOAT might give you some unexpected problems because all
calculations in MySQL are done with double precision. See
http://dev.mysql.com/doc/refman/5.7/en/no-matching-rows.html.
float[(length) | (,)]
double[(precision) | (,)]
主要用来存储小数点前后有很多位数字的值。它和小数类型的区别在于小数点的位置可以在任何地方,即小数点是“浮动的”。由于对一个浮点数字来说,可用的存储空间有限,如果一个数字非常大或非常小,将存储这个数字的近似值而不是实际值
浮点数又分为单精度和双精度。区别在于值所保留的存储空间数量不同
在一个浮点数据类型中可以指定长度,来确定具体的浮点类型:长度在0—24之间的是单精度浮点数,长度在25—53之间的是双精度浮点数
create table c(id float(25));——只有M的时候,M>24才会自动变成double。
create table d(id float(29,3));——整数位7位后数据不准
一个单精度浮点,数字精确到小数点后7位。即对第8位进行四舍五入,保留到第七位
双精度浮点,数字精确到小数点后15位。
例:
create table g(id float(10,9));
insert into g values(1.123456789);
insert into g values(1.123456789123);
insert into g values(1.123456739123);
测试float类型的精确度
例:
create table f(id float(10,2));
insert into f values(12345678.13);
insert into f values(12345678.16);
insert into f values(12345678.564);
insert into f values(12345678.568);
insert into f values(12345678.168);
例3:使用浮点数据类型
CREATE TABLE measurements(
nr INTEGER,
measurement_value FLOAT(1));
INSERT INTO measurements
VALUES(1,99.99),
(2,99999.99),
(3,99999999.99),
(4,99999999999.99),
(5,99999999999999.99),
(6,0.999999),
(7,0.9999999),
(8,9
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。