列的类型
主要分成三大类:
1 数值型
2 日期时间型
3 字符串型
类型-字节-有符号-无符号;
TINYINT / 1 / (-128)~127 / 0~255; (人的年龄,BOOL用tinyint(1) )
SMALLINT / 2 / (-32768)~32767 / 0~65535;
MEDIUMINT / 3 / (-8388608)~8388607 / 0~16777215;
INT(INTEGE) / 4 / -2147483648~2147483647 / 0~4294967295;
BIGINT / 8 / -99223372036854775808~9223372036854775807 / 0~18446744073709551615;
*是否有符号,可以在定义时规定,默认为有符号,可以用unsigned标识来表示无符号。
*可以定义当前的显示宽度:
通过规定数据的显示宽度,达到统一显示的目的。注意定义格式:
alter table tbl_int add c tinyint(2) zerofill;
需要使用前导零来填充以达到目的:zerofill;
其中若数大于显示宽度,则直接显示原数字。
*BOOL 类型:整型 0 表示 False,其他数字 表示 True.
double-双精度:8字节 理论值 -1.7976931348623157E+308~1.7976931318623157E+308;
123.456;
在磁盘上存储时:
0.123456 * 10^3;
即只存了123456 / 3 ;
*支持控制数值的范围
create table num_3(
a float(5,2),
b double(8,3)
);
*支持科学记数法;
/*
浮点数:小数点的位置可以变化;(flaot 4,double 8)
定点数:小数点的位置不可以变化;(字节是变动的,精确表示输入的值的大小)
decimal(M,D)
M 表示总的数值位数
D 表示小数位数(范围存在)
M 默认为10,D默认为0;
以上两种均支持zerofill;
也支持无符号unsign。
*/
主要分成三大类:
1 数值型
2 日期时间型
3 字符串型
数值型:
类型-字节-有符号-无符号;
TINYINT / 1 / (-128)~127 / 0~255; (人的年龄,BOOL用tinyint(1) )
SMALLINT / 2 / (-32768)~32767 / 0~65535;
MEDIUMINT / 3 / (-8388608)~8388607 / 0~16777215;
INT(INTEGE) / 4 / -2147483648~2147483647 / 0~4294967295;
BIGINT / 8 / -99223372036854775808~9223372036854775807 / 0~18446744073709551615;
*是否有符号,可以在定义时规定,默认为有符号,可以用unsigned标识来表示无符号。
*可以定义当前的显示宽度:
通过规定数据的显示宽度,达到统一显示的目的。注意定义格式:
alter table tbl_int add c tinyint(2) zerofill;
需要使用前导零来填充以达到目的:zerofill;
其中若数大于显示宽度,则直接显示原数字。
*BOOL 类型:整型 0 表示 False,其他数字 表示 True.
2-小数类型(单,双精度)
double-双精度:8字节 理论值 -1.7976931348623157E+308~1.7976931318623157E+308;
123.456;
在磁盘上存储时:
0.123456 * 10^3;
即只存了123456 / 3 ;
*支持控制数值的范围
create table num_3(
a float(5,2),
b double(8,3)
);
*支持科学记数法;
/*
浮点数:小数点的位置可以变化;(flaot 4,double 8)
定点数:小数点的位置不可以变化;(字节是变动的,精确表示输入的值的大小)
decimal(M,D)
M 表示总的数值位数
D 表示小数位数(范围存在)
M 默认为10,D默认为0;
以上两种均支持zerofill;
也支持无符号unsign。
*/
1字节=8个bit;
注意: 如果输入的小数超过了flaot或者double的范围,默认数据显示会出现异常。
而用定点数 decimal 则不存在这种问题,因为它是根据需要来进行空间开辟;
use php_one;
create table tbl_int(
a tinyint unsigned, //注意如何定义
b tinyint
);
insert tbl_int values (255,127);
select * from tbl_int; //插入成功
insert tbl_int values (256,127); //提示 a 超过范围
insert tbl_int values (255,128); //提示 b 超过范围
insert tbl_int values (256,128); //提示 a 超过范围
alter table tbl_int add c tinyint(2) zerofill; //增加字段,并定义显示宽度,注意需要前导零
insert into tbl_int values (255,127,1); //显示01
insert into tbl_int values (255,127,9); //显示09
insert into tbl_int values (255,127,15); //显示15
insert into tbl_int values (255,127,123); //仍然显示123 显示宽度不决定存储范围
select * from tbl_int;
create table num_2(
a float,
b double);
insert into num_2 values(1234567890.0123456789,1234567890.0123456789);
select * from num_2;
create table num_3( //支持控制数值范围。(表示一共多少位,表示小数点后多少位)
a float(5,2),
b double(8,3)
);
insert into num_3 values(567.12,1234.498);
insert into num_3 values(167.12,123449.8);
insert into num_3 values(1567.12,123456.5); //可以少不可以多
select * from num_3;
insert into num_3 values(0.16E3,129.8); //支持科学记数法;
select * from num_3;
create table num_4(
send_money decimal(10,2)
);
insert into num_4 values (1234.56);
select * from num_4;
insert into num_4 values (1234.567); //显示1234.57 四舍五入
select * from num_4;
insert into num_4 values (12345678.56);
select * from num_4;
insert into num_4 values (123456789.56); //显示超出数的范围
select * from num_4;
alter table num_4 add money decimal(10,2)zerofill;
insert into num_4 values (1234.56,1234.56);
select * from num_4;
insert into num_4 values (1234.567,1234.567);
select * from num_4;
insert into num_4 values (12345678.56,12345678.56);
select * from num_4;
insert into num_4 values (123456789.56,123456789.56);
select * from num_4;