数据库(MySQL)—— 数据类型

数据库(MySQL)—— 数据类型

  • MySQL中的数据类型
    • 数值类型
    • 字符串类型
    • 时间戳类型
  • 一个实例

我们今天来看MySQL中的数据类型:

MySQL中的数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

数值类型

类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT1 byte(-128, 127)(0, 255)小整数值
SMALLINT2 bytes(-32768, 32767)(0, 65535)大整数值
MEDIUMINT3 bytes(-8388608, 8388607)(0, 16777215)大整数值
INT/INTEGER4 bytes(-2147483648, 2147483647)(0, 4294967295)大整数值
BIGINT8 bytes(-2^63, 2^63-1)(0, 2^64-1)极大整数值
FLOAT4 bytes(-3.402823466 E+38, 3.402823466351 E+38)0和(1.175494351 E-38, 3.402823466 E+38)单精度浮点数值
DOUBLE8 bytes(-1.7976931348623157 E+308, 1.7976931348623157 E+308)0和(2.2250738585072014 E-308, 1.7976931348623157 E+308)双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度的值小数值(精确定点数),M为精度,D为标度

这里简单介绍一下精度和标度:

小数的精度(Precision)和标度(Scale)是描述数字数据存储和表示时两个重要的概念,尤其是在数据库和一些编程环境中。

  • 精度(Precision) 指的是一个数字中所有数字的总数,包括整数部分和小数部分的所有位数。换句话说,它是数字能够表示的总的位数,不区分小数点前后。例如,数字 123.456 的精度是 6(包括三位整数和三位小数)。
  • 标度(Scale) 特别指定了小数点后面数字的位数。它代表小数部分的有效位数。在上述例子中,123.456 的标度是 3,因为有三位小数。

我们可以根据上面的信息在创建表时选择适合的数据类型:

比如我们可以看看之前创建的staff表:
在这里插入图片描述一个人的年龄不可能是小数,而且一个人最大的年龄也不过一百来岁,也不会为负数,所以我们使用 无符号的TINYINT是最合适的:

-- 修改 staff的age数据类型
ALTER TABLE staff MODIFY COLUMN age TINYINT UNSIGNED;

在这里插入图片描述

字符串类型

类型大小描述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

字符串的数据类型分为两类,带BLOB和不带BLOB的,带BLOB是储存二进制的,但一般不常用。

我们再来看看char和varchar:

char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和
字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。

如:
1). 用户名 username ------> 长度不定, 最长不会超过50username varchar(50)
2). 性别 gender ---------> 存储值, 不是男,就是女gender char(1)
3). 手机号 phone --------> 固定长度为11phone char(11)

时间戳类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
如:
1). 生日字段 birthdaybirthday date
2). 创建时间 createtimecreatetime datetime

一个实例

设计一张员工信息表,要求如下:

  1. 编号(纯数字)
  2. 员工工号 (字符串类型,长度不超过10位)
  3. 员工姓名(字符串类型,长度不超过10位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
  7. 入职时间(取值年月日即可)
CREATE TABLE staff(-- 编号id INT  COMMENT '编号',work_id VARCHAR(10) COMMENT '员工工号',worker_name VARCHAR(10) COMMENT '员工姓名',worker_genger CHAR(1) COMMENT '姓名',age TINYINT UNSIGNED COMMENT '年龄',identity CHAR(18) COMMENT '身份证号',entry_date DATE COMMENT '入职时间'
) COMMENT '员工表';

在这里插入图片描述

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

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

相关文章

Linux的学习之路:21、线程(1)

摘要: 本章说一下线程 目录 摘要: 一、回忆一下 二、如何理解线程 三、命令行看线程 四、利用函数进行使用 五、本章总结 1、线程的优点 2、线程的缺点 3、线程的异常 4、线程的用途 一、回忆一下 1、exe就是一个文件 2、我们的可执行程序…

监控摄像机如何选购?

在选购监控摄像机时,需了解其基本知识,如分辨率、帧率、存储方式等。根据需求选择合适的产品,关注夜视功能、品牌和售后服务。预算和性价比同样重要。这样才能选到实用又安全的监控摄像机,提高生活品质。摘要由作者通过智能技术生…

JavaScript(四)

一、JavaScript变量 在 JavaScript 中,你可以使用几种不同的方式来声明变量。以下是主要的几种方式: 使用 var 关键字: 在 ES5 (ECMAScript 5) 及之前的版本中,var 是最常用的声明变量的方式。但是,var 有一个问题&am…

Scott Brinker:16年后,当前的(而非未来的)Martech已经出现,但分布不均。

杜克大学、德勤和美国营销协会共同开展的名为「CMO调查」 的两年一度的项目,是营销行业内的一项重要研究项目,已经持续了十多年。该调查的组织工作做得非常好,每次发布我都迫不及待地想要阅读。 我特别兴奋地阅读了刚刚发布的2024年春季版&a…

Elasticsearch内存占用分析

目录 1. 堆内存 (Heap Memory) 2. 索引缓存 (Index Cache) 3. 段缓存 (Segment Cache) 4. 文件系统缓存 (File System Cache) 5. 分片和副本 (Shards and Replicas) 6. 分析器和令牌器 (Analyzers and Tokenizers) 7. 过度配置 (Over-Allocation) 8. 垃圾回收 (Garbage…

MySQL加减间隔时间函数DATE_ADD和DATE_SUB的详解

目录 前言语法示例代码运用 前言 mysql中内置函数date_add 和 date_sub能对指定的时间进行增加或减少一个指定的时间间隔,返回的是一个日期。 语法 添加时间间隔 DATE_ADD(date,INTERVAL expr type)SELECT DATE_add(NOW(),INTERVAL -7 DAY);//获取7天前的日期 S…

java基础郎波版chapter4习题

文章目录 1.试说明Java语言是如何支持多重继承的。2.类的构造方法和成员方法之间有什么区别?构造方法:成员方法: 3.编写程序片段,定义表示课程的类Course。4.编写程序创建习题3中的Course类的对象,设置并打印输出该对象的课程名、编号以及先修课号。5.J…

Python数组类+AI插件

目录 规划实现初始化插入删除查找 AI插件单测注释调优建议 小结 规划 先想清楚都写哪些,然后再动手操作 用Python写了一个简单数组类,首先思考下都写哪些功能: 插入删除查找用插件做单元测试和写注释 目的只是实现一个简单的数组类&#x…

ffplay支持mac/iOS硬解码实践

1. ffmpeg编译开启videotoolbox的支持。 ./configure --enable-videotoolbox --enable-hwaccels 2. stream_component_open方法中开启硬件解码器。 int FSPlay::stream_component_open(VideoState *is, int stream_index) {//...codec avcodec_find_decoder(avctx->code…

Python自学篇3-PyCharm开发工具下载、安装及应用

一、Python开发工具 自学篇1中讲到了安装Python之后出现的几个应用程序,其中IDLE、Python.exe都可以用来编写python程序,也可以进行调试;但是比较基础,比较原始,调试不方便,界面也不友好,需要更…

Unity List底层源码剖析

文章目录 前言一、List源码二、Add接口三、Remove接口四、Insert接口五、其他接口1、[]接口2、Clear接口3、Contains接口4、ToArray接口5、Find接口6、Enumerator接口7、Sort接口 六、线程安全总结 前言 没有扎实的基础,很多编写的程序会随着软件规模的扩大或扩展而…

(06)vite与ts的结合

文章目录 系列全集package.json在根目录创建 tsconfig.json 文件在根目录创建 vite.config.ts 文件index.html额外的类型声明 系列全集 (01)vite 从启动服务器开始 (02)vite环境变量配置 (03)vite 处理 c…

R语言 数据整理篇之结构重塑

《Cookbook for R》Manipulating Data ~ Restructuring 数据整理篇之数据结构重塑 Converting between data frames and contingency tables 在数据框和列联表之间转换 表示同样的内容但是三种不同的表现形式: 1、呈现个案观测值的数据框 cases :每行代…

【报错】Could not autowire. No beans of ‘SysUserRoleService‘ type found

1.查看对应service层是否添加Service 2.可以修改成Resource注入, Autowired和Resource区别一个是默认按照类型,一个默认按照名字 3.解决办法是:降低Autowired检测的级别,将Severity的级别由之前的error改成warning或其它可以忽略…

【C++干货基地】探索C++模板的魅力:如何构建高性能、灵活且通用的代码库(文末送书)

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 哈喽各位铁汁们好啊,我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的…

http1.1和http2.0的同源请求数限制

判断协议版本 :scheme: 在请求头中表示使用的是HTTP/2协议。即 出现 :开头的请求头Chrome 只支持查看 HTTP/1.x 的 Raw Headers,对这种请求,会给出 view source 选项。HTTP2.0不给出。可继续学习 https://www.cnblogs.com/kirito-c/p/10360868.html抓包…

App在某个页面静止造成卡死假象

今天遇到一个bug记录下来,供后续积累经验。 预期结果:App在冷启动时会加载一个“广告页”,“广告页”有个定时器,定时器结束后会自动跳转到App首页;然而当用户开启指纹或人脸识别登录之后,App直接进入验证界面,验证通过后直接进入App首页。 bug场景:进入App需要指纹识别…

用什么模型算法可以预测足球胜平负

预测足球胜平负的模型算法有很多种,每种算法都有其特点和适用场景。以下是一些常见的模型算法: Elo预测法: 这是一种通过研究主客场球队在比赛前的积分情况来预测胜负的方法。Elo预测法通过计算两队之间的积分差,根据特定的公式&…

uTorrent Pro一款轻量级的Torrent磁力下载工具去广告绿色版 v3.6.0.47044

01 uTorrent Pro v3.6.0.47044 Torrent是一款俄罗斯号称全球排名第一的免费BT下载工具,海外最受欢迎的BT下载客户端软件。支持UPnP,支持流行的 BT 扩展协议,磁力链接(Magnet Links),IPv6,用户来源交换,DHT和uTP&#…

【python】python基础-常用方法

通用方法: del obj:删除对象,不能删除可变对象的元素 li [1,2,3,4,5] del li :删除列表 del li[0]:删除列表中第一个元素 max(obj):返回对象中的最大值 字符串方法: 语法:字符串.方法名([参数]) str.upper():将字符…