南岗区城市管理与建设网站,网页布局方式,苏州外包公司排名,免费软件电视剧最全目录 一.数据类型分类
二. 数值类型
1.tinyint类型
2.bit类型
3.float类型
4.decimal
三.字符串类型
1.char
2.varchar
四.日期和时间类型
五.enum和set 一.数据类型分类
关于数据库的数据类型有非常多#xff0c;但是并非所有的数据类型都是我们常用的#xff…目录 一.数据类型分类
二. 数值类型
1.tinyint类型
2.bit类型
3.float类型
4.decimal
三.字符串类型
1.char
2.varchar
四.日期和时间类型
五.enum和set 一.数据类型分类
关于数据库的数据类型有非常多但是并非所有的数据类型都是我们常用的今天我们列举常用的数据类型。 二. 数值类型 1.tinyint类型
tinyint 数值范围在 -128 ~ 127 之间。
tinyint unsigned 无符号数输在范围在 0 ~ 255
测试tinyint: 插入-129失败插入128失败。 测试tinyint unsiged 在第二列插入-1和256失败。
2.bit类型
基本语法
bit (M) : 位字段类型。M表示每个值的位数范围从1到64。如果M被忽略默认为1。
测试: bit使用的注意事项
bit字段在显示时是按照ASCII码对应的值显示,所以刚刚我们插入98显示的是b。如果我们有这样的值只存放0或1这时可以定义bit(1)。这样可以节省空间。
3.float类型
语法
float[(m, d)] [unsigned] : M指定显示长度d指定小数位数占用空间4个字节
案例
小数float(4,2)表示的范围是-99.99 ~ 99.99MySQL在保存值时会进行四舍五入
注意如果我们插入的值精度上超过了小数点两位四舍五入之后的值如果超出了整数部分范围还是会被拒绝。 插入 99.99 成功99.994成功99.995失败。
如果定义的是float(4,2) unsigned 这时因为把它指定为无符号的数范围是 0 ~ 99.99。
案例 4.decimal
语法
decimal(m, d) [unsigned] : 定点数m指定长度d表示小数点的位数
decimal(5,2) 表示的范围是 -999.99 ~ 999.99decimal(5,2) unsigned 表示的范围 0 ~ 999.99
decimal和float很像但是有区别: float和decimal表示的精度不一样 decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略默认为0.如果m被省略 默认是10。
三.字符串类型
1.char
语法
char(L): 固定长度字符串L是可以存储的长度单位为字符最大长度值可以为255
注意L的单位是字符而非字节。 char(3) 表示可以存放三个字符可以是字母或汉字但是不能超过3个 最多只能是255。 2.varchar
语法
varchar(L): 可变长度字符串L表示字符长度最大长度65535个字节。
案例
create table t8(id int ,name varchar(6)); 关于varchar(len),len到底是多大这个len值和表的编码密切相关 varchar长度可以指定为0到65535之间的值但是有1 - 3 个字节用于记录数据大小所以说有效字 节数是65532。 当我们的表的编码是utf8时varchar(n)的参数n最大值是65532/321844 [因为utf8中一个字符占 用3个字节]如果编码是gbkvarchar(n)的参数n最大是65532/232766因为gbk中一个字符 占用2字节。 注意上述说的65535是包括 1 - 3 个字节用于记录长度并且这65535是一整行共用的。 char和varchar比较 如何选择定长或变长字符串
如果数据确定长度都一样就使用定长char比如身份证手机号md5如果数据长度有变化,就使用变长(varchar), 比如名字地址但是你要保证最长的能存的进去。定长的磁盘空间比较浪费但是效率高。变长的磁盘空间比较节省但是效率低。定长的意义是直接开辟好对应的空间变长的意义是在不超过自定义范围的情况下用多少开辟多少。
四.日期和时间类型
常用的日期有如下三个
date :日期 yyyy-mm-dd 占用三字节 datetime 时间日期格式 yyyy-mm-dd HH:ii:ss 表示范围从 1000 到 9999 占用八字节 timestamp 时间戳从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致占用 四字节 更新数据
mysql update birthday set t12000-1-1;
时间戳就会跟着改变。
五.enum和set
enum枚举“单选”类型enum(选项1,选项2,选项3,...);
该设定只是提供了若干个选项的值最终一个单元格中实际只存储了其中一个值而且出于效率考虑这些值实际存储的是“数字”因为这些选项的每个选项值依次对应如下数字1,2,3,....最多65535个当我们添加枚举值时也可以添加对应的数字编号。
set集合“多选”类型set(选项值1,选项值2,选项值3, ...);
该设定只是提供了若干个选项的值最终一个单元格中设计可存储了其中任意多个值而且出于效率考虑这些值实际存储的是“数字”因为这些选项的每个选项值依次对应如下数字1,2,4,8,16,32....最多64个。
说明不建议在添加枚举值集合值的时候采用数字的方式因为不利于阅读。
案例 对即合类型进行插入时可以采用插入数字的方式按照数字的比特位0或1来决定对应位置上的集合元素是否插入。
find_in_set函数
我们可以使用where进行判断某一个条件
select * from person where level2;在person表中筛选出level等于2的数据。 如果我们向筛选出hobby中有rap的数据 我们发现不太对劲为什么想要的是hobby中包含rap的不是只有rap的。
所以我们就要使用一个函数find_in_set: find_in_set本身就可以用来查找集合并返回结果再1或者不在0