字段类型:
小数型:分为2类:浮点型和小数型
一、浮点型
(1)float:单精度,4字节,能保证7位数左右的精度(第8位由第9位四舍五入得到)
基本语法:float:不指定小数位的浮点数
float(x,y):共存储x个数字,小数部分有y位
例:-- 创建浮点型
create table datatest2(
f1 float,
f2 float(10,2)
)charset utf8;
输入数据:insert into datatest2 values(123.456,12345678.90);
结果:
二、定点数(保证数据精确)
Decimal:系统自动分配内存,超过9个分配4个字节,同时小数和整数部分分开
Decimal(m,d):m表示数据总长度,不能超过65个数,d表示小数部分,不能超过30个数
形式:create table 字段表名(
字段列表名 decimal(m,d)
);
如果decimal内的数超过(m,d)规定的范围,则无法显示
时间日期类型:
Date:日期类型,使用3个字节存储数据,格式:’yyyy-mm-dd’(从1000-01-01到9999-12-12)
Time:时间类型,3字节保存,格式:’HH:ii:ss’(-838:59:59到838:59:59),表示的是时间区间,其范围不局限与24h,且在时间录入的时候,在时间日期前面指定一个数字(可以是负数)加一个空格,再加入时间,系统会将该数字从天数转化成小时,再加上后面的时间
Datetime:日期时间格式,将date和time类型结合,8字节保存,格式:’yyyy-mm-dd HH:ii:ss’
Timestamp:时间戳类型,表示现实的时间,格式:’yyyy-mm-dd HH:ii:ss’(不能为空,默认值为当前时间),当对应的数据(不一定是自己时)被修改,其也会发生改变
Year:年类型,1字节保存,表示范围1900-2155,该类型有两种插入方式0-99和具体年份
(当进行两位数输入时,如果输入的数字小于等于69,则会以20开头,当大于等于70,以19开头)
1.year两位数插入:
大于69:
小于等于69:
对应timestamp发生变化的情况:
time应用:
将天数变成小时:
(将空格前的数字*24在加上后面的时间)
字符类型:
Char:定长类型,指定长度之后,系统会分配对应的内存进行存储
形式:char(l)(l表示字符数,此时英文字母和中文将占有相同内存,限制范围为0-255)
Varchar:变长长度,系统会根据实际存储的数据计算长度,分配合适的长度(在数据不超过限定范围的情况下),每个varchar数据在计算完占用的内存后,会额外的多占用1-2个字节(小于127个字符,占用1个字节,大于127,占用2个字节),用来保存数据所占用的空间长度(在utf-8中,一个字符占用3个字节)
形式:varchar(l)(l表示字符数,限制范围为0-65535)
Char和varchar的区别:
- char一定会占用规定的字节数,而varchar会根据数据的大小来占用空间
- Char的数据查询效率更高
总结:如果知道数据一定会占指定长度,使用char;反之,用varchar
Text:文本类型,存储普通的字符文本,分为4种
1、tinytext:使用1个字节保存,实际可以存储的数据(存储的字符数)为2^8+1
2、text:2字节保存,可存储2^16+2
3、mediumtext:3字节保存,可存储2^24+3
4、longtext:4字节保存,可存储2^32+4
注意:系统会根据文本的长度自动的选择以上四种类型
如果数据超过255个字符,则不选择varchar进行存储,一定选择text类型
Enum:枚举类型,在数据插入前,如已知数据的范围(如性别),那么可以提前设置项进行使用(项:数据可能出现的结果的集合)
形式:enum (数据值1,数据值2...);
系统提供1-2个字节进行数据的存储枚举型数据,如果数据值列表在255个以内,提供1个字节,超过255单小于65535提供2个字节保存
创建枚举类型的字符段:
(插入创建枚举型没有输入的值时,系统会报错)
枚举存储的原理:实际上字段所存储的值表示字符串,而是对应的下标,可以理解为在创建该表使用枚举时,会将枚举内部的数据变成一个数组进行存储
如:enum(1=>‘张三’,2=>’李四’,3=>’王五’);
如果数据碰到‘+’‘*’‘-’‘/’,数据会默认的转换为数值,普通字符串默认转化成数值0
形式:select 字段名 +0 from 表段名;(+0表示数据对应的下标)
那么既然可以显示出数值,在输入数据时可不可以用数值?
答:可以
等等...