[MySQL | 二、基本数据类型]

基本数据类型

      • 一、数值类型
      • 举例表结构
        • 1. 整数类型
          • zerofill属性 与 int(n) 中 n 的关系
        • 2.bit类型
        • 3. 小数类型
          • float类型
          • decimal类型
      • 二、字符串类型
        • 1. char
        • 2. varchar
          • 如何选择定长或变长字符串?
        • 3. 日期时间类型(date datetime timestamp)
        • 4. enum枚举类型
        • 5. set多选类型

一、数值类型

举例表结构

字段名称字段类型是否NULL键值默认值附加信息
FieldTypeNullKeyDefaultExtra
idintNoUNI(唯一键)Nullauto_increment
nameverchar(10)NoPRI(主键)Null
genderenumNoman
agetinyintYesNull
telphoneintYesNull
home_idintyesMUL(外键)Null
1. 整数类型
类型字节数值范围(带符号)不带符号
tinyint1-128 ~ 1270 ~ 255
smallint2-32768 ~ 327670 ~ 65535
mediumint3-8388608 ~ 83886070 ~ 16777215
int4-2147483648 ~ 21474836470 ~ 4294967295
bigint8-9223372036854775808 ~ 92233720368547758070 ~ 2^(8 * 8) - 1
  • 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。
  • 可以通过unsigned来说明某个字段是无符号的
  • 无符号案例
mysql> create table tt2(num tinyint unsigned);
mysql> insert into tt2 values(-1); -- 无符号,范围是: 0 - 255
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> insert into tt2 values(255);
Query OK, 1 row affected (0.02 sec)
mysql> select * from tt2;
+------+
| num |
+------+
| 255 |
+------+
1 row in set (0.00 sec)
zerofill属性 与 int(n) 中 n 的关系
  • int(n) 中的 n 为显示宽度,只有当它与 zerofill 属性配合时才会显现它的作用

  • 在创建表结构时,如果创建int类型字段且没有设置宽度mysql默认显示宽度为11位,有个符号位。

  • 添加zerofill属性时,该列会自动变成无符号整型(unsigned)且默认显示宽度为10位。这是因为zerofill的主要目的是为了在显示数字时,在左边填充零以达到指定的显示宽度,而对于负数,这种填充零的操作没有意义。

    示例没有zerofill属性:

    mysql> create table t1(-> id int-> );
    )
    Query OK, 0 rows affected (0.00 sec) 
    mysql> insert into t1 values(10); #插入一条数据
    mysql> insert into t1 values(1);  #插入一条数据
    Query OK, 1 row affected (0.00 sec)
    mysql> 	select * from t1;
    +------+
    |  id  | 
    +------+
    |  10  | 
    +------+
    |  1   | 
    +------+
    

    示例有zerofill属性:

    mysql> create table t1(-> id int zerofill-> );
    )
    Query OK, 0 rows affected (0.00 sec) 
    mysql> insert into t1 values(10); #插入一条数据
    mysql> insert into t1 values(1);  #插入一条数据
    Query OK, 1 row affected (0.00 sec)
    mysql> 	select * from t1;
    +---------------+
    |  id           | 
    +---------------+
    |  0000000010   | 
    +---------------+
    |  0000000001   | 
    +---------------+
    
2.bit类型

用法:bit(m)——create table 表名 ( 字段名 bit(m)); 位字段类型。M表示字段的bit位数,范围从1到64。如果M被忽略,默认为1。
介绍:

  • bit字段在显示时,是按照ASCII码对应的值显示(如果在一个bit字段插入数字 65,查看时显示 A)
  • 如果我们有这样的值,只存放0或1,这时可以定义bit(1)。这样可以节省空间
3. 小数类型
float类型

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,默认无符号。
例:
float(4,2) :无符号时范围是 -99.99 ~ 99.99 有符号时范围是 0 ~ 99.99
若插入一个数 99.985,四舍五入储存为99.99.

  • 固定占用空间4个字节
  • 有精度损失,float表示的精度大约是7位
  • MySQL在保存指定小数位数以外的值时会进行四舍五入
decimal类型

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

  • decimal类型精度更高
  • decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10

建议:如果希望小数的精度高,推荐使用decimal

二、字符串类型

字符串类型储存内容占用字节
char(4)A4 * 3 = 12
varchar(4)A1 * 3 + 1 = 4
char(4)abcd4 * 3 = 12
varchar(4)abcd4 * 3 + 1 = 13
char(4)abcde报错,超出长度
varchar(4)abcde报错,超出长度
1. char

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

2. varchar

varchar(L): 可变长度字符串,L表示可储存的最大字符长度,最大长度65535个字节,可根据储存内容缩小储存大小。
说明:
关于varchar(L),L到底是多大,这个L值,和表的编码密切相关:

  • varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。
  • 当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字节],如果编码是gbk,varchar(n)的参数n最大65532/2=32766(因为gbk中,一个字符占用2字节)。
如何选择定长或变长字符串?
  • 如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
  • 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
  • 长的磁盘空间比较浪费,但是效率高。
  • 长的磁盘空间比较节省,但是效率低。
  • 长的意义是,直接开辟好对应的空间。
  • 长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。
3. 日期时间类型(date datetime timestamp)

常用的日期有如下三个:

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

用法:enum('选项1','选项2','选项3',...);

该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,…最多65535个;当我们添加枚举值时,也可以添加对应的数字编号

当在创建表结构中字段类型时选择enum类型并设置选项后,在此表中插入数据时只能从设置的选项中多选一

5. set多选类型

用法:set('选项值1','选项值2','选项值3', ...);

该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,…
最多64个。

当在创建表结构中字段类型时选择enum类型并设置选项后,在此表中插入数据时可以从设置的选项中多选

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金融项目实战 03|JMeter脚本实现手工接口测试

目录 一、环境说明 1、项目环境搭建 2、Mock说明 二、构造测试数据 1、通过系统页面构造 2、通过接口构造 3、通过数据库构造【推荐】 4、案例:构造借款业务数据 三、JMeter执行接口测试用例 1、获取图片验证码、获取短信验证码 2、注册脚本 3、登录脚本…

【优先算法】滑动窗口--(结合例题讲解解题思路)(C++)

目录 1. 例题1:最大连续1的个数 1.1 解题思路 1.2代码实现 1.3 错误示范如下:我最开始写了一种,但是解答错误,请看,给大家做个参考 2. 将 x 减到 0 的最小操作数 2.1解题思路 2.2代码实现 1. 例题1&#xff…

JDK17语法新增

1.yield关键字: 2.var关键字: 3.密封类: ⼀般应⽤在类和接⼝中,对接⼝和类的实现和继承进⾏约束。主要使⽤的关键字是 final 。当这个类被 final 修饰了,被修饰的类就变成完全封闭的状态了,所有类都没办法继承。…

TCP 序列和确认号说明 | seq 和 ack 号计算方法

注:本文为 “TCP 序列” 相关文章合辑。 英文引文机翻未校。 TCP Sequence and Acknowledgement Numbers Explained TCP 序列和确认编号说明 TCP Sequence (seq) and Acknowledgement (ack) numbers help enable ordered reliable data transfer for TCP streams…

设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo

1.策略模式 好处:动态切换算法或行为场景:实现同一功能用到不同的算法时和简单工厂对比:简单工厂是通过参数创建对象,调用同一个方法(实现细节不同);策略模式是上下文切换对象,调用…

《数据思维》之数据可视化_读书笔记

文章目录 系列文章目录前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 数据之道,路漫漫其修远兮,吾将上下而求索。 一、数据可视化 最基础的数据可视化方法就是统计图。一个好的统计图应该满足四个标准:准确、有…

【AIGC】SYNCAMMASTER:多视角多像机的视频生成

标题:SYNCAMMASTER: SYNCHRONIZING MULTI-CAMERA VIDEO GENERATION FROM DIVERSE VIEWPOINTS 主页:https://jianhongbai.github.io/SynCamMaster/ 代码:https://github.com/KwaiVGI/SynCamMaster 文章目录 摘要一、引言二、使用步骤2.1 TextT…

持续集成 01|Gitee介绍、Pycharm使用Gitee

目录 一、理论 二、 git的简介与安装 三、Gitee 1、注册网易163邮箱 2、注册Gitee账号 3、git和gitee管理代码工作原理 三、PyCharm安装配置Gitee 四、Pycharm使用Gitee插件的五种场景 1、将 Gitee的新仓库 Checkout(检出)到 Pycharm中 2、推送…

Sprint Boot教程之五十八:动态启动/停止 Kafka 监听器

Spring Boot – 动态启动/停止 Kafka 监听器 当 Spring Boot 应用程序启动时,Kafka Listener 的默认行为是开始监听某个主题。但是,有些情况下我们不想在应用程序启动后立即启动它。 要动态启动或停止 Kafka Listener,我们需要三种主要方法…

C++|CRC校验总结

参考: Vector - CAPL - CRC算法介绍 开发工具 > CRC校验工具 文章目录 简介CRC-8CRC-16CRC-32 简介 循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种数据校验算法,广泛用于检测数据传输或存储过程中的错误。…

# c语言:数组详解一

c语言:数组详解一 数组数组的概念引例:什么是数组数组的特征:下标(索引) 常用的数组按维度划分一维数组数组的定义:数组元素的访问数组的初始化**案例一、斐波拉契数列:****案例二、冒泡排序&am…

Docker启动达梦 rman恢复

目录标题 1. 主库备份2. Docker启动备库3. 备库修改属组4. 开始恢复5. 连接数据库配置归档 & Open6. 检查数据 关于达梦数据库(DMDBMS)的主库备份、Docker启动备库、恢复备份以及配置归档和打开数据库的详细步骤。 1. 主库备份 # 使用达梦数据库备…

WPS excel使用宏编辑器合并 Sheet工作表

使用excel自带的工具合并Sheet表,我们会发现需要开通WPS会员才能使用合并功能; 那么WPS excel如何使用宏编辑器进行合并 Sheet表呢? 1、首先我们要看excel后缀是 .xlsx 还是 .xls ;如果是.xlsx 那么 我们需要修改为 .xls 注…

【Python项目】个人密码本文档系统

【Python项目】个人密码本文档系统 技术简介:采用Python技术、Django、MYSQL数据库等实现。 系统简介:系统主要的功能有(1)新建密码本:用户可以创建新的密码本来记录自己的账户与密码; (2&#…

《OpenCV》——模版匹配

文章目录 OpenCV——模版匹配简介模版匹配使用场景OpenCV 中模板匹配的函数参数 OpenCV——模版匹配实例导入所需库读取图片并处理图片对模版图片进行处理进行模版匹配显示模版匹配的结果注意事项 OpenCV——模版匹配简介 OpenCV 是一个非常强大的计算机视觉库,其中…

doc、pdf转markdown

国外的一个网站可以: Convert A File Word, PDF, JPG Online 这个网站免费的,算是非常厚道了,但是大文件上传多了之后会扛不住 国内的一个网站也不错: TextIn-AI智能文档处理-图像处理技术-大模型加速器-在线免费体验 https://…

金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口

目录 一、日志封装及应用(理解) 二、认证开户接口脚本编写 1、代码编写 1️⃣api目录 2️⃣script目录 2、BeautifulSoup库 1️⃣简介及例子 2️⃣提取html数据工具封装 3、认证开户参数化 一、日志封装及应用(理解) &…

浅谈云计算15 | 存储可靠性技术(RAID)

存储可靠性技术 一、存储可靠性需求1.1 数据完整性1.2 数据可用性1.3 故障容错性 二、传统RAID技术剖析2.1 RAID 02.2 RAID 12.3 RAID 52.4 RAID 62.5 RAID 10 三、RAID 2.0技术3.1 RAID 2.0技术原理3.1.1 两层虚拟化管理模式3.1.2 数据分布与重构 3.2 RAID 2.0技术优势3.2.1 自…

Spring官网构建Springboot工程

注意:基于Idea的 Spring Initializr 快速构建 SpringBoot 工程时需要联网。 1.进入SpringBoot官网 Spring | Home 点击QUICKSTART 点击start.spring.io进入spring initializr 2.选择依赖 3.生成工程 下载好后解压用IDEAD导入即可。

计算机的错误计算(二百一十二)

摘要 利用两个大模型计算 实验表明,两个大模型均进行了中肯的分析。另外,其中一个大模型给出了 Python代码,运行后,结果中有7位错误数字;而一个大模型进行加减运算时出错。 例1. 计算 下面是与一个大模型的对话…