当前位置: 首页 > news >正文

4.数据类型

数据类型约束

        如果我们向mysql特定的类型中插入不合法的数据,MySQL一般都是直接拦截我们,不让我们做对应的操作。
反过来意味着,我们已经有数据成功插入到mysql了,一定插入的时候都是合法的。

        因此,mysql中,一般而言,数据类型本身也是一种:约束(保证数据库中数据是可预期,完整的)
        倒逼程序员,让程序员尽可能进行正确的插入。

整形

        在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。可以通过UNSIGNED来说明某个字段是无符号的。

tinyint:一字节,范围-128~127,无符号范围0~255

bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。

bit数值不显示原因:ASCII码显示(mysql5.7),有的字符为不可显字符

解决方案:select id,hex(bit) from 表名;    查找时:转成十进制表示

mysql 8.0.43显示16进制

小数类型

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节

  • 举例:float(4, 2),范围是-99.99 ~ 99.99。
  • 插入99.994,可以成功插入,因为 四舍五入 成了99.99
  • 插入99.995,插入不了,越界。

如果是 float(4,2) unsigned ,范围是 0~99.99。

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数

作用:比float更加精确

说明:float表示的精度大约是7位。
decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10。

字符串类型

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

        特别注意:长度是和编码集相关的,例如utf8mb3的字符长度是3字节,char(L),L是标识字符的上限个数。

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节
        特别注意:这个长度是指最大字节数65535,但有1~3个字节是用来存储长度的,所以有效字节数是65532

        举例:按照utf8mb3来表示,3字节,65532/3=21844个字符,理论上最多是可以存21844个字符。

        细节点:mysql的行也是有长度上限的,上限也是65535。因此如果有2列及以上,有效字节数是小于65532的。

char vs varchar

char:效率高,固定字节数,一块完整开辟

varchar:效率低,可变长度,用多少开多少,因为可变,维护成本高。

日期类型

date :日期 'yyyy-mm-dd' ,占用三字节
datetime:时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节

        特别注意:timestamp使用时,如果要插入时自动设置时间戳,要建表时设置默认值为CURRENT_TIMESTAMP,即 列名 timestamp default CURRENT_TIMESTAMP。但这仅仅只在插入时起效果,如果想在更新时也起效果,需要设置:列名 timestamp default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP.

enum 和 set 类型

enum:枚举,“单选”类型;
enum('选项1','选项2','选项3',...);

作用:单选一个(也可以为NULL)

插入方式:

1)直接指定选项插入

2)用数字,数字值表示的就是选项几,上限65535

set:集合,“多选”类型;
set('选项值1','选项值2','选项值3', ...);

1)选项插入,例:values('选项值1,选项值2')

2)数字插入。位图式的插入,比如插入选项1,指定1;选项2,指定2;选项3,指定4。类似:000 -> 001(选项1),000 -> 010(选项2),000 -> 110(选项2,,选项3)选项上限为64个

说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。

特别地:因为集合类型可以选择多个,where字句指定选项选择的话,只能选择100%匹配的。如果想选择包含单个选项的,方法:find_in_set(sub, str_list);

http://www.dtcms.com/a/445487.html

相关文章:

  • Spring Boot SSE 流式输出,智能体的实时响应
  • Linux系统性能监控—sar命令
  • PostgreSQL备份不是复制文件?物理vs逻辑咋选?误删还能精准恢复到1分钟前?
  • 网站开发主管招聘wordpress 手机悬浮
  • 描述逻辑对人工智能自然语言处理中深层语义分析的影响与启示
  • 首屏加载耗时从5秒优化到1秒内:弱网与低端安卓机下的前端优化秘笈
  • 【新版】Elasticsearch 8.15.2 完整安装流程(Linux国内镜像提速版)
  • LeetCode 分类刷题:74. 搜索二维矩阵
  • 网站建设项目职责memcache安装wordpress
  • MySQL查看数据表锁定情况
  • sq网站推广用jsp做的网站源代码下载
  • 玩转ClaudeCode:通过Chrome DevTools MCP实现高级调试与反反爬策略
  • 国内做焊接机器人平台网站网络营销的方法是什么
  • 网站建设一般用什么软件敏捷模型是软件开发模型吗
  • 做网站好的品牌泰安房产网签查询
  • No商业网站建设wordpress 调用插件
  • 免费模板网站都有什么区别合肥网络seo
  • 什么是网站地址云服务器上放多个网站
  • 电子商务网站费用预算必须在当地网站备案
  • 遵义市播州区建设厅网站镇江网站建设和优化推广多少钱
  • 安阳建设网站哪家好久久项目咨询有限公司
  • 3g门户网站无锡企业网站制作
  • 手表回收网网站个人网页设计作品介绍
  • 如何用vps系统搭建企业网站以及邮箱系统网站建设运营预算
  • 贵阳网站建设app开发修仙网页游戏大全
  • 广东省建设网站深圳市网站建设科技公司
  • 一流的手机网站建设广州推广系统
  • 网站建设广州北京怎么做网站推广
  • php做网站的公司有哪些网站如何免费做SEO优化
  • 佛山优化网站网站开发虚拟主机是什么