列类型
数据类型:对数据进行统一的分类,从系统的角度出发,为了能够使用统一的方式进行管理,更好的利用有限的磁盘空间。
SQL中将数据类型分成了三大类:
1、数值类型
2、字符串类型
3、时间日期类型
1、数值型
数值型数据:都是数值,系统将数值型分为整数型和小数型。
SQL种的数据类型全部都是默认有符号:分正负。
整数型:存放整型数据,在SQL中更多要考虑如何节省空间,所以系统将整型又细分成了5类:
tinyint:迷你整型,使用一个字节存储,表示的状态最多为256种(常用)
smallint:小整型,使用两个字节存储,表示的状态最多为65536种
mediumint:中整型,使用三个字节存储
int:标准整型,使用四个字节存储(常用)
bigint:大整型,使用八个字节存储
可使用unsigned控制是否有正负
可以使用zerofill来进行前导零填充
创建一张整型表
--创建一张整型表
create table my_int (
int_1 tinyint,
int_2 smallint,
int_3 mediumint,
int_4 int,
int_5 bigint
) charset utf8;
插入数据:只能插入整型,只能插入范围内的数据。
SQL种的数据类型全部都是默认有符号:分正负。
有时候需要使用无符号数据:需要给数据类型限定:int unsigned; –无符号:从0开始。
eg:
--给表增加一个无符号类型
alter table my_int add int_6 tinyint unsigned;
显示宽度:
查看表结构的时候,发现每个字段的数据类型之后都会自带一个括号,里面有指定的数字。
没有特别的含义,只是默认的告诉用户可以显示的形式而已。实际上用户是可以控制的。
显示宽度并不改变数据的实际大小。
显示宽度的意义:在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度。通常需要搭配一个前导0来增加宽度。不改变值大小。前导0叫做zerofill;
小数型
小数型:带有小数点或者范围超出整型的数据类型。
SQL中:将小数型细分为两种:浮点型和定点型。
浮点型:小数点浮动,精度有限,而且会丢失精度(会四舍五入)。
定点型:小数点固定,精度固定,不回丢失精度(不会四舍五入)。
浮点型:
浮点型数据是一种精度型数据:因为超出指定范围之后,会丢失精度(自动四舍五入)
float:单精度,占用4个字节存储数据。
double:双精度,占用8个字节存储数据。
浮点的使用方式:
直接float表示没有小数部分;float(M,D):M代表总长度,D代表小数部分长度。
如果数据要求精度,数据小的时候可以用浮点型,数据大的时候不要用浮点型。
--创建浮点数表:
create table my_float(
f1 float,
f2 float(10,2),
f3 float(6,2)
) charset utf8;
插入数据:可以直接是小数,也可以是科学记数法。
浮点型数据的插入:整型部分是不能超出长度的, 但是小数部分可以超出长度(系统会自动四舍五入)
浮点数如果是因为系统进位导致整数部分超出指定的长度,那么系统也允许成立。
定点型
定点型:绝对的保证整数部分不回被四舍五入(不会丢失精度),小数部分有可能(理论小数部分也不会丢失精度)
插入数据:定点数的整数部分一定不能超出长度(进位也不可以),小数部分的长度可以随意超出(系统自动四舍五入)。
浮点数因为进位导致长度溢出没有问题,但是定点数不行。
数据需要精确,一定要定点,如果数据需要粗略的、比较大的,用浮点数。