MySQL——数据类型

目录

一.数据类型分类

二. 数值类型

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使用的注意事项:

  1. bit字段在显示时,是按照ASCII码对应的值显示,所以刚刚我们插入98显示的是b。
  2. 如果我们有这样的值,只存放0或1,这时可以定义bit(1)。这样可以节省空间。

3.float类型

语法:

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

案例:

小数:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入,

注意:如果我们插入的值精度上超过了小数点两位四舍五入之后的值如果超出了整数部分范围,还是会被拒绝。

插入 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.99
  • decimal(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/3=21844 [因为utf8中,一个字符占
用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符
占用2字节)。

注意:上述说的65535是包括 1 - 3 个字节用于记录长度,并且这65535是一整行共用的。

char和varchar比较:

如何选择定长或变长字符串?

  1. 如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
  2. 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
  3. 定长的磁盘空间比较浪费,但是效率高。
  4. 变长的磁盘空间比较节省,但是效率低。
  5. 定长的意义是,直接开辟好对应的空间
  6. 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。 

四.日期和时间类型 

常用的日期有如下三个:

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 t1='2000-1-1';

时间戳就会跟着改变。

五.enum和set

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

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

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

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

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

案例:

对即合类型进行插入时,可以采用插入数字的方式,按照数字的比特位0或1,来决定对应位置上的集合元素是否插入。

find_in_set函数:

我们可以使用where进行判断某一个条件:

select * from person where level=2;

在person表中筛选出level等于2的数据。

 如果我们向筛选出hobby中有rap的数据:

我们发现不太对劲,为什么想要的是hobby中包含rap的,不是只有rap的。

所以我们就要使用一个函数find_in_set:

find_in_set本身就可以用来查找集合,并返回结果再(1)或者不在(0);

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

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

相关文章

Java 实现汉字转拼音带音调

代码 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; import net.sourcefo…

【亲测】获取百度智能云access_token并存储,百度智能云access_token有效期

百度智能云服务内置很多api接口(文字识别,企业信息识别,等),所有百度智能云自带的接口都会用到百度的access_token 第一步:登录百度智能云管理中心 第二步:创建账户,完整身份认证 …

Stm32最小系统板电路设计

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…

鸿蒙OS应用开发之登录界面

在前面学习了输入文本组件和按钮组件,可以使用这两种组件来实现一些常用的功能,比如登录界面,这种界面是每个程序员经常会到遇到的,比如让用户输入用户名称和密码。 在这里我们就来实现如下面的界面: 在上面界面里,第一个文本框用来输入用户名称,第二个用来输入用户密码…

【CAN】在linux中读取监听控制器局域网CAN数据帧操作 (二) 之 C++代码实现

可以使用 SocketCAN 接口库来实现对 can0 接口的数据帧读取&#xff0c;使用 SocketCAN 接口&#xff0c;将其绑定到 can0 接口&#xff0c;并循环读取接收到的 CAN 数据帧。 #include <iostream> #include <cstring> #include <unistd.h> #include <net…

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻

我的博客即将同步至腾讯云开发者社区&#xff0c;邀请大家一同入驻&#xff1a;https://cloud.tencent.com/developer/support-plan?invite_code654o7zhrylh8

TypeScript基础知识

目录 关键字 JavaScript关键字 TypeScript关键字 TypeScript 基础类型 声明变量 声明变量的方式 变量命名规则 变量作用域 TypeScript 运算符 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 三元运算符 类型运算符 关键字 JavaScript关键字 abstract …

2023西工大NOJ (C语言版) 持续更新ing

目前更新到70题&#xff01; 目前WA&#xff1a;飞机起飞速度&#xff1b;字符串替换&#xff1b;GPS通信协议。 前言 代码均可AC&#xff0c;解析参见我的博客 NOJ(C)易错总结 (annesede.github.io)。&#xff08;已更新到70题&#xff01;&#xff09; 部分题目由于过于简…

python玩具电商销售数据可视化和商品推荐系统设计与实现(django框架)

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

老杨说运维 | 年末大盘点!擎创CEO实时盘点运维大干货,不容错过

2023年即将走到尾声&#xff0c;对于擎创而言&#xff0c;这一年是颇具成长和成就的一年。我们庆幸获得了更多客户的信任&#xff0c;也为他们达到下一个运维阶段提供了充足的助力。 越多的实践就会带来越多新的理解和可优化的经验。这一年来&#xff0c;擎创在运维数据治理、智…

docker搭建maven私库Nexus3

什么是Maven私服&#xff1f; Maven 私服是一种特殊的Maven远程仓库&#xff0c;它是架设在局域网内的仓库服务&#xff0c;用来代理位于外部的远程仓库&#xff08;中央仓库、其他远程公共仓库&#xff09;。 当然也并不是说私服只能建立在局域网&#xff0c;也有很多公司会…

唯创知音WTN6xxx-8S语音芯片:精准内部震荡与无需外部震荡的优势及应用

在当前的集成电路市场中&#xff0c;唯创知音推出的WTN6xxx-8S语音芯片以其独特的优势和应用领域&#xff0c;吸引了众多工程师和设计师的关注。这款语音芯片不仅具有精准的/-1%内部震荡&#xff0c;还消除了对外部震荡器的需求&#xff0c;从而在语音处理和控制方面达到了新的…

使用静态HTTP提供动态内容

在Web开发中&#xff0c;静态HTTP和动态HTTP常被视作两种截然不同的技术。静态HTTP主要用于传输不变的内容&#xff0c;如HTML、CSS和JavaScript文件&#xff0c;而动态HTTP则能处理用户交互、实时数据等动态需求。但鲜为人知的是&#xff0c;我们其实可以通过一些技巧&#xf…

vue中 把vue页面导出为 html页面

vue导出文件后缀为html的页面 震惊&#xff01;我司要求我把数据融合起来&#xff0c;导出用html的方式展示&#xff0c;请看下面示例 <template><div><el-button click"gethtml">导出报告</el-button><div id"main"><…

高通8255芯片烧写方法

目录 一&#xff1a;高通官方提供软件下载 QPM&#xff08;Qualcomm Package Manager&#xff09; 二&#xff1a;烧写驱动程序下载 USB Drivers 三&#xff1a;烧写工具下载QCAT 四&#xff1a;QCAT软件使用 4.1串口选择 4.2 烧写选项配置 4.3 开始烧写下载 4.4烧写成…

若依打包将vue放到.jar里面部署

1.vue静态文件&#xff0c;以及单页面 ruoyi-admin\src\main\resources\static \ruoyi-admin\src\main\resources\templates 2.后台开放白名单 "/cms", "/cms#/login" 3. mvc访问vue页面入口&#xff0c;接口 package com.ruoyi.web.controller.syst…

基于springboot实现的健身房管理系统

一、系统架构 前端&#xff1a;html | js | css | jquery | bootstrap 后端&#xff1a;springboot | springdata-jdbc 环境&#xff1a;jdk1.7 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 管理员-首页 03. 管理员-会员卡查询 04. 管理员-会员管理…

新零售ERP软件功能有哪些?新零售ERP系统哪个操作简单

新零售企业通常存在多仓库、多营销渠道、多业务模式、价格策略灵活、供应链复杂等情况&#xff0c;如何实现配送、财务、客户、订单、仓储等业务数据一体化和智能化管理&#xff0c;是不少新零售企业需要解决的难点。 随着新零售企业数量不断增多&#xff0c;行业之间的竞争也…

酷开科技丨出“奇”不意,酷开系统给客厅多点颜色!

对现代人来说&#xff0c;关于“家”的含义&#xff0c;有了更多的认识。家&#xff0c;不仅要遮风挡雨&#xff0c;温暖适意&#xff0c;更要能让人摆脱高负荷生活&#xff0c;成为一个可以汲取能量、重获元气的安心乐园。品质不单单是简单的一个词&#xff0c;更是一个美好家…

mysql 与mssql 命令有那些区别

use databasename 进入指定数据库名 命令一致 select databse() 查询当前进入数据库的名 mssql无法使用&#xff0c;mysql正常 mssql 暂无 C知道介绍 以下是MySQL和MSSQL命令的一些区别&#xff1a; 1. 连接数据库的命令不同&#xff1a; - MySQL&#xff1a;…