PHP(SQL)的学习(13)

字段类型:

小数型:分为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的区别:

  1. char一定会占用规定的字节数,而varchar会根据数据的大小来占用空间
  2. 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表示数据对应的下标)

 

那么既然可以显示出数值,在输入数据时可不可以用数值?

答:可以

等等... 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值