我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql学习笔记之字段类型选择

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql学习笔记之字段类型选择

mysql学习笔记之字段类型选择

1. 数据库的字段选择

在数据表的结构关系确定之后,这个时候就需要去确定相应的数据表的字段类型

1.1 字符串类型字段 char与varchar以及text

char => char(长度) -> 多长 varchar => 根据规定长度变化

数据库中会保存varchar的长度

在gbk与utf8的编码下char与varchar在设置同等长度的时候的对比

gbk(1个字符,2个字节)

Char(4) 字节 varchar(4) 字节
"" " " 8个字节 "" 1个字节
"ab" "ab " 8个字节 "ab" 5个字节
"abcd" "abcd" 8个字节 "abcd" 9个字节
"abcdefg" "abcd" 8个字节 "abcd" 9个字节

utf8(1个字符,3个字节)

Char(4) 字节 varchar(4) 字节
"" " " 12个字节 "" 1个字节
"ab" "ab " 12个字节 "ab" 7个字节
"abcd" "abcd" 12个字节 "abcd" 13个字节
"abcdefg" "abcd" 12个字节 "abcd" 13个字节

 

varchar之所以会多出一个字符是因为数据库中还保存着字符串长度

varchar超过5000字符用text比较合适,一般单独查询text

数据索引效率 char > varchar > text

1.2 数字类型的字段 tinyint,smallint,int,bigint

unsigned 无序号

数据类型 范围 字节
bigint -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807) 8 字节
| 0到18446744073709551615 较大整数  
int -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) 4 个字节
| 0到4294967295 标准整数  
smallint -2^15 (-32,768) 到 2^15-1 (32,767) 2 字节
| 0到65535 较小整数  
tinyint -2^7 (-128) 到 2^7 - 1 (127) 1 字节
| 0到255 非常小的整数  
|    
float[(m,d)] ±1.175494351e - 38 4字节
double[(m, d)] ±2.2250738585072014e - 308 8字节
decimal (m,d) 可变;其值的范围依赖于m 和d m+2字节

 

1.3 时间类型的字段 Date,Time,Datetime

数据类型 范围 字节
date "0000-00-00" 3字节
time "00:00:00" 3字节
datetime "0000-00-00 00:00:00" 8字节
timestamp "0000-00-00 00:00:00" 4字节
year 0000 1字节

数据时间超出了mysql规定范围 通常为改为 0 的方式存放 time截取

DATETIME 可以允许为null 手动设计的

TIMESTAMP 不允许 默认"0000-00-00 00:00:0" 时间主要是根据时区一起变化

不做配置;更新一条数据的时候该字段也会随之记录更新的时间

常用datetime

时间戳 char int

 

1.4 一些不适合放在数据库中的数据类型

  1. 二进制多媒体数据

将二进制多媒体数据存放在数据库中,一个问题是数据库空间资源耗用非常严重,另一个问题是这些数据的存储很消耗数据库主机的 CPU 资源。这种数据主要包括图片,音频、视频和其他一些相关的二进制文件。这些数据的处理本不是数据的优势,如果我们硬要将他们塞入数据库,肯定会造成数据库的处理资源消耗严重。

  1. 流水队列数据

我们都知道,数据库为了保证事务的安全性(支持事务的存储引擎)以及可恢复性,都是需要记录所有变更的日志信息的。而流水队列数据的用途就决定了存放这种数据的表中的数据会不断的被 INSERT,UPDATE 和 DELETE,而每一个操作都会生成与之对应的日志信息。在 MySQL 中,如果是支持事务的存储引擎,这个日志的产生量更是要翻倍。而如果我们通过一些成熟的第三方队列软件来实现这个 Queue 数据的处理功能,性能将会成倍的提升。

  1. 超大文本数据

对于 5.0.3 之前的 MySQL 版本,VARCHAR 类型的数据最长只能存放 255 个字节,如果需要存储更长的文本数据到一个字段,我们就必须使用 TEXT 类型(最大可存放 64KB)的字段,甚至是更大的LONGTEXT 类型(最大 4GB)。而 TEXT 类型数据的处理性能要远比 VARCHAR 类型数据的处理性能低下很多。从 5.0.3 版本开始,VARCHAR 类型的最大长度被调整到 64KB 了,但是当实际数据小于 255Bytes 的时候,实际存储空间和实际的数据长度一样,可一旦长度超过 255 Bytes 之后,所占用的存储空间就是实际数据长度的两倍。

xxx 下载 => 网址

小说 => 根据章节 text => 下载完整版 => 所有内容 txt => 某一个路径下

收费接入 => 根据章节下载

图片:blob

 

 

2. SQL执行流程

"select count(*) from table_name "=>2313

select name,id from table_name where id =9 and age > 9

查询缓存 => select 语句作为记录 数据

优化器 => where id =9 and age > 9 => 重写然后根据对应规则 去选择最优的执行计划 算法

sql 对于 用户 的访问权限做一个校验 => rbac

存储引擎接口 -> 最优的执行计划去执行sql => 扫码磁盘

执行sql不是立即就可以获取数据

数据查询出来之后 => "select 语句" key , data 数据value

 

sql 优化 = 磁盘的io操作次数/优化器执行的时间 不是io操作的速度 (充值)

?? 数据库中的数据变了,缓存中的数据会自动更新么?会的

了解 数据表大体结构

优化器 => 简单内容

  1. 选择合适键
  2. 针对每个表全局的扫码 结构 有很多记录 数据表过大寻找合适执行计划
  3. (如果是join 选择表单连接顺序)
  4. 对于where 进行重写,删除不必要的代码,减少不要计算量,尽可能的限制条件 方便查询有效键执行    4.1 (join)删除不需要的连接的数据表

  5. 确定键是否可以用在order group     5.1 (join)合并大的视图

  6. 执行执行计划

优化器的算法

存储过程 => 是否经过优化器 => 预编译 =>事先通过 (解析器和优化器编译完的sql语句)

来自六星教育的学习笔记 记录对自己有用的

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql学习笔记之字段类型选择

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql学习笔记之字段类型选择

1. 数据库的字段选择 在数据表的结构关系确定之后,这个时候就需要去确定相应的数据表的字段类型 1.1 字符串类型字段 char与varchar以及text char => char(长度) -> 多长 varchar => 根据规定长度变化 数据库中会保存v
mysql学习笔记之字段类型选择
2018-10-21

MySQL学习笔记(4):数据类型

本文更新于2019-06-19,使用MySQL 5.7,操作系统为Deepin 15.4。目录数值类型整数类型定点数类型浮点数类型位类型日期时间类型字符串类型枚举类型集合类型数值类型整数类型type[(m)] [UNSIGNED] [ZEROFILL] [AU
MySQL学习笔记(4):数据类型
2019-09-06

mysql学习笔记之索引类型B-TREE介绍

B-tree索引是MySQL数据库中使用最为频繁的索引类型,特别是在innodb中经常使用;在其他数据库中b-tree索引也同样是作为最主要的索引类型的,这主要是因为b-tree索引的存储结构在数据库的数据检索中有着非常优异的表现。 这种索引的特点就是会把实际
mysql学习笔记之索引类型B-TREE介绍
2022-02-03

[学习笔记] Oracle字段类型、建表语句、添加约束

SQL语句介绍数据定义语言(DDL),包括 CREATE、 ALTER、 DROP等。数据操纵语言(DML),包括 INSERT、 UPDATE、 DELETE、 SELECT … FOR UPDATE等。数据查询语言(DQL),包括基本查询语句、 Order
[学习笔记] Oracle字段类型、建表语句、添加约束
2019-09-12

[Python学习笔记] 数字类型及操作

数字类型整数类型十进制:1110,-123二进制:以0B或0b开头 0b110,-0B101八进制:以0O或0o开头 0o123,-0O567十六进制:以0X或0x开头 0x555,-0X89a浮点数类型可以采用科学记数法表示 5.5e-3
2023-01-31

MySQL中性别字段最佳数据类型选择是什么?

在设计数据库表时,选择合适的数据类型对于性能优化和数据存储效率非常重要。在MySQL数据库中,存储性别字段的数据类型真是没有所谓的最佳选择,因为性别字段一般只有两个取值:男或女。但是为了效率和节省空间,我们可以选择合适的数据类型来存储性别字
MySQL中性别字段最佳数据类型选择是什么?
2024-03-14

MySQL入门阶段这一篇就够了-学习笔记(手敲1.5万字)

前言 虽然在大一下学期,就已经接触到了MySQL,但是那个时候只是会用MySQL进行增删改查,在大三上学期,尝试投简历寻找实习时,对方公司对于程序员的MySQL水平有很高的要求,所以我开始系统化的学习MySQL。顺便将整理出的笔记逐步写入博
2023-08-18

编程热搜

目录