【MySQL】--数据类型

news2024/12/23 13:46:42

文章目录

  • 1. 选择数据库
    • 1.1 语法
  • 2. 查询当前选中的数据库
    • 2.1 语法
  • 3. 常见数据类型分类
  • 4. 数据值类型
    • 4.1 类型列表
    • 4.2 数据类型取值范围
  • 5. 字符串类型
    • 5.1 类型列表
    • 5.2 关于排序
    • 5.3 CHAR和VARCHAR的区别
    • 5.4 如何选择CHAR和VARCHAR
    • 5.5 VARCHAR与TEXT的区别
  • 6. 日期类型
    • 6.1 类型列表
    • 6.2 其他

1. 选择数据库

1.1 语法

use 数据库名;

可以加分号,也可以不加分号。因为这个语句不是一个指令,SQL的指令是以分号结束的,但是它是一个客户端工具的一个命令选项。

2. 查询当前选中的数据库

2.1 语法

select 数据库名;

3. 常见数据类型分类

在⾯向对象软件开发的过程中,通常会先进⾏需求分析从⽽得到类和属性,类是⾯向对象中的概念,对应到数据库中的概念就是实体,类中的属性对应实体中的属性。实体通常以表的形式存在,每个实体对应⼀张表,表中的每条记录(数据⾏)就是实体的⼀个实例,每条记录⼜包含若⼲字段(或称为列),每个字段代表实体的⼀个属性。
在这里插入图片描述

如果要定义实体的属性,就要为属性命名并指定合适的数据类型。与其他编程语言类似,SQL中规定了用于描述属性的数据类型。常⽤的数据类型有以下几类:
• 数据值类型
• 字符串类型
• 二进制类型
• 日期类型

4. 数据值类型


4.1 类型列表

类型大小说明
BIT[(M)] 默认bit位值类型。M表⽰每个值的位数,取值范围为 1 ~ 64 。如果省略M,则默认为1 。
TINYINT[(M)]1byte取值范围 -2^7 ~ 2^7-1 (-128 ~ 127),⽆符号取值范围 2^8-1(255~1)
BOOL1byteTINYINT(1)的同义词。值为零被认为是假,⾮零值被认为是true
SMALLINT[(M)]2byte取值范围 -2^15 ~ 2^15-1 ,⽆符号取值范围 2^16-1 。
MEDIUMINT[(M)]3byte取值范围 -2^23 ~ 2^23-1 ,⽆符号取值范围 2^24-1
INT[(M)]4byte取值范围 -2^31 ~ 2^31-1 (正负21亿左右),⽆符号取值范围 2^32-1(42亿左右)
INTEGER[(M)]4byteINT[(M)]的同义词
BIGINT[(M)]8byte取值范围 -2^63 ~ 2^63-1 ,⽆符号取值范围 2^64-1
FLOAT[(M,D)]4byte单精度浮点型,M是总位数,D是⼩数点后⾯的位数,⼤约可以精确到⼩数点后7位
DOUBLE[(M,D)]8byte双精度浮点型,M是总位数,D是⼩数点后⾯的位数,⼤约可以精确到⼩数点后15位。
DECIMAL[(M[,D])]动态不存在精度损失,M是总位数,D是⼩数点后的位数。DECIMAL的最⼤位数(M)为65,最⼤⼩数位数(D)为30。如果省略M,则默认为10,如果省略D,则默认为0。M中不计算⼩数点和负数的-号,如果D为0,则值没有⼩数点和⼩数部分。

由于float 和double的精度问题,一般在开发中不使用这两个数据类型,一般使用decimal。
在这里插入图片描述

4.2 数据类型取值范围

在这里插入图片描述

5. 字符串类型


5.1 类型列表

类型说明
CHAR[(M)] 固定⻓度字符串, M 表⽰⻓度,以字符为单位,取值范围 0 ~ 255 , M 省略则⻓度为 1
VARCHAR(M)可变⻓度字符串, M 表⽰字符最大个数,它的范围 0 ~ 65535 ,有效字符个数取决于实际字符数和使⽤的字符集
TINYTEXT ⼩⽂本类型,最⼤⻓度为 255 (2^8 - 1)个字符,有效字符个数取决于使⽤的字符集
TEXT[(M)] ⽂本类型,最⼤⻓度为 65535 (2^16 - 1)个字节,有效字符个数取决于使⽤的字符集
MEDIUMTEXT 中⽂本类型,最⼤⻓度为 16,777,215 (2^24 - 1)个字节,有效字符个数取决于使⽤的字符集
LONGTEXT⼤⽂本类型,最⼤⻓度为 4,294,967,295 即 4GB (2^32 - 1)个字节,有效字符个数取决于使⽤的字符集
BINARY[(M)] 固定⻓度⼆进制字节,于CHAR类似,但存储的是⼆进制字节⽽不是字符串。 M 表⽰⻓度,以字节为单位,取值范围 0 ~ 255 , M 省略则⻓度为 1
VARBINARY(M) 可变⻓度⼆进制字节,于VARCHAR类似,但存储的是⼆进制字节⽽不是字符串。M 表⽰⻓度,以字节为单位
TINYBLOB⼩⼆进制字节类型,最⼤⻓度为 255 (2^8 - 1)个字节
BLOB[(M)] ⼆进制字节类型,最⼤⻓度为 65535 (2^16 - 1)个字节
MEDIUMBLOB 中⼆进制字节类型,最⼤⻓度为 16,777,215 (2^24 - 1)个字节
LONGBLOB⼤⼆进制字节类型,最⼤⻓度为 4,294,967,295 即 4GB (2^8 - 1)个字节
ENUM('value1','value2',...)• 枚举
• 从值列表 ‘value1’,‘value2’ 或 ‘’(空字符串) 和 NULL 中选⼀个值
• 最多可以有 65,535 个不同的元素
• 单个元素的最⼤⻓度是 M <= 255 或 (M x w) <= 1020 ,其中 M 是元素字符⻓度, w 是字符集中字符所需的最⼤字节数
• ENUM的值在内部表⽰为整数
SET('value1','value2',...)• 集合
• 从值列表 ‘value1’,‘value2’ 中选零个或多个值
• 最多64个元素
• 单个元素的最⼤⻓度是 M <= 255 或 (M x w) <= 1020 ,其中 M 是元素字符⻓度, w 是字符集中字符所需的最⼤字节数
• SET值在内部表⽰为整数

varchar真正使用的字节数是字符的个数*字符编码集表示一个字符所用的字节数。例如:varchar在utf8mb4的编码集下所能保存的最多字符的个数是(65535/4=16383)个。

如果我们使用的是text类型,并且在定义时指定m,如果内容超出最大长度,会自动升级一个类型,mediumtext类型同理。

5.2 关于排序

• 字符串类型的列以字符为单位,并且可以单独指定字符集和排序规则,⽐如字符集是 utf8mb4 ,排序规则是 utf8_0900_ai_ci
• ⼆进制的列以字节为单位,可以指定_bin结尾的排序规则,⽐如排序规则是 utf8mb4_bin ,这时以⽐较和排序基于数字字符代码值

5.3 CHAR和VARCHAR的区别

• CHAR 固定⻓度的字符串, M 表⽰以字符为单位的列⻓度,取值范围 0 ~ 255 ,省略则⻓度为1 ,在存储时总是⽤空格向右填充到指定的⻓度,获取列的值时会从尾部删除空格。允许定义CHAR(0),此时列的值只能为NULL或空字符串,主要的⽬的是为了旧系兼容,⽐如类中必须有这个
属性,但不使⽤这个属性的值,也就是说值并没有意义,但列⼜不能没有。
• VARCHAR 可变⻓度字符串。 M 表⽰以字符为单位的最⼤列⻓度,取值范围 0 ~ 65,535 (在所有列中共享),有效⻓度取决于实际字符数和使⽤的字符集,并且⽤额外的⼀或两个字节记录实际使⽤的字节数,当实际字节数不超过 255 个字节⽤⼀个字节记录⻓度,超过 255 个字节时,使⽤两个字节记录⻓度,获取列的值时不会从尾部删除空格,插⼊数据时会删除超出⻓度的空格。

5.4 如何选择CHAR和VARCHAR

• 如果数据确定⻓度都⼀样,就使⽤定⻓ CHAR 类型,⽐如:⾝份证,md5,学号,邮编。
• 如果数据⻓度有变化,就使⽤变⻓ VARCHAR , ⽐如:名字,地址,但要规划好⻓度,保证最⻓的字符串能存的进去。
• 定⻓ CHAR 类型⽐较浪费磁盘空间,但是效率⾼。(只需要按照固定的长度去存储即可)
• 变⻓ VARCHAR 类型⽐较节省磁盘空间,但是效率低。(需要计算不同内容的长度,然后再根据这个长度来进行存取)
• 定⻓ CHAR 类型会直接开辟好对应的存储空间。
• 变⻓ VARCHAR 类型在不超过定义⻓度范围的情况下⽤多少开辟多少存储空间。

5.5 VARCHAR与TEXT的区别

• 容量⼤⼩: VARCHAR 最⼤⽀持 65535 个字节; TEXT 最⼤⽀持 65535 个字节,在指定TEXT⻓度时,当超过 65535 时⾃动转换为 MEDIUMTEXT 类型,当超过 16,777,215 时⾃动转换为LONGTEXT 类型
• 存储位置: VARCHAR 类型的列实际内容⼩于768个字节时存在当前⾏,⼤于768时存在溢出⻚,当前⾏保存溢出⻚的地址; TEXT 类型的列整体保存在溢出⻚,当前⾏只保存溢出⻚地址
• 查询性能:对于频繁查询的 VARCHAR 列可以创建索引,提升查询性能; TEXT 类型的列⽆法直接创建普通索引,但可以使⽤ FULLTEXT 索引,由于索引的⽀持和存储位置的不同, VARCHAR列的性能⾼于 TEXT 类型的列
• 适⽤场景:如果存储的数据⻓度较⼩且需要创建索引进⾏检索,可以选择 VARCHAR 类型,⽐如姓名,⽤⼾,邮箱等;如果存储的数据⻓度较⼤且不需要频繁以该列为条件进⾏检索可以选择 TEXT类型,⽐如⽂章内容等。

6. 日期类型


6.1 类型列表

类型大小说明0值
TIMESTAMP[(fsp)]4bytes• 时间戳类型
• ⽀持范围 1970-01-01 00:00:01.000000 ~ 20388-01-19 03:14:07.499999
• 0值为 0000-00-00 00:00:00
0000-00-0000:00:00
DATETIME[(fsp)]8bytes• ⽇期类型和时间类型的组合
• ⽀持范围 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.499999
• 显⽰格式为 YYYY-MM-DD hh:mm:ss[.fraction]
• 0值为 0000-00-00 00:00:00
0000-00-0000:00:00
DATE3bytes• ⽇期类型
• ⽀持范围 1000-01-01 ~ 9999-12-31
• 显⽰格式为 YYYY-MM-DD
• 0值为 0000-00-00
TIME[(fsp)]3bytes• 时间类型
• ⽀持范围 -838:59:59.000000 ~ 838:59:59.000000
• 显⽰格式为 hh:mm:ss[.fraction]
• 0值为 00:00:00
00:00:00
YEAR[(4)]1byte• 4位格式的年份
• ⽀持范围 1901 ~ 2155
• 显⽰格式为 YYYY
• 0值为 0
0

6.2 其他

• fsp 为可选设置,⽤来指定⼩数秒精度,范围从0到6,值为0表⽰没有⼩数部分,如果省略,默认精度为0。
• CURRENT_DATE 和 CURRENT_DATE() 是 CURDATE() 的同义词⽤于获取当前⽇期。
• CURRENT_TIME 和 CURRENT_TIME([fsp]) 是 CURTIME() 的同义词⽤于获取当前时间。
• CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP([fsp]) 是 NOW() 的同义词⽤于获取当前⽇期和时间。

在这里插入图片描述

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

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

相关文章

基于SSM的仿win10界面的酒店管理系统

基于SSM的仿win10界面的酒店管理系统 运行环境: jdk1.8 eclipse tomcat7 mysql5.7 项目技术: jspssm&#xff08;springspringmvcmybatis&#xff09;mysql 项目功能模块&#xff1a;基础功能、房间类型、楼层信息、附属功能

重学SpringBoot3-集成Redis(六)之消息队列

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis&#xff08;六&#xff09;之消息队列 1. 什么是发布/订阅&#xff08;Pub/Sub&#xff09;&#xff1f;2. 场景应用3. Spring Boot 3 整合 R…

EtherNet/IP 转 EtherNet/IP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899 协议转换通信网关 EtherNet/IP 转 EtherNet/IP GW系列型号 MS-GW22 概述 简介 MS-GW22 是 EtherNet/IP 和 EtherNet/IP 协议转换网关&#xff0c;…

4.扩散模型的似然函数最大化(1)

1.似然函数最大化 扩散模型的训练目标是负的对数似然的一个变分下界(VLB)。在本节中&#xff0c;我们总结并调查最近关于扩散模型的似然最大化的工作。首先我们介绍似然函数最大化的意义&#xff0c;然后重点讨论3种类型的方法:噪声调度优化、逆向方差学习和精确的对数似然估计…

20年408数据结构

第一题&#xff1a; 解析&#xff1a;这种题可以先画个草图分析一下&#xff0c;一下就看出来了。 这里的m(7,2)对应的是这图里的m(2,7),第一列存1个元素&#xff0c;第二列存2个元素&#xff0c;第三列存3个元素&#xff0c;第四列存4个元素&#xff0c;第五列存5个元素&#…

胤娲科技:00后揭秘——AI大模型的可靠性迷局

当智能不再“靠谱”&#xff0c;我们该何去何从&#xff1f; 想象一下&#xff0c;你向最新的GPT模型提问&#xff1a;“9.9和9.11哪个大&#xff1f;”这本应是个小菜一碟的问题&#xff0c;却足以让不少高科技的“大脑”陷入沉思&#xff0c; 甚至给出令人啼笑皆非的答案。近…

卡码网104.建造最大岛屿

题目 104. 建造最大岛屿 (kamacoder.com) 代码&#xff08;ACM 首刷看解析&#xff09;&#xff1a; #include<iostream> #include<vector> #include<unordered_map> #include<unordered_set> using namespace std;int dir[4][2] {1,0,-1,0,0,1,0,-…

C++ 算法学习——1.8 悬线法

1.问题引入&#xff1a;对于一个矩形图&#xff0c;图中放置着不少障碍&#xff0c;要求出最大的不含障碍的矩形。 2.分析&#xff1a;显然一个极大矩形是左右上下都被障碍挡住&#xff0c;无法再扩大的矩形&#xff0c;此时障碍也包括边界。 3.方法&#xff1a;悬线法考虑以…

计算机组成原理实验三 数据寄存器组R0..R3, MAR, ST, OUT

实验目的和要求 目的&#xff1a;了解模型机中各种寄存器结构、工作原理及其控制方法。 要求&#xff1a;利用CP226 实验系统上的K16..K23 开关做为DBUS 的数据&#xff0c;其它开关做为控制信号&#xff0c;将数据写入寄存器&#xff0c;数据寄存器组R0..R3&#xff0c;地址…

【大数据】Flink CDC 实时同步mysql数据

目录 一、前言 二、Flink CDC介绍 2.1 什么是Flink CDC 2.2 Flink CDC 特点 2.3 Flink CDC 核心工作原理 2.4 Flink CDC 使用场景 三、常用的数据同步方案对比 3.1 数据同步概述 3.1.1 数据同步来源 3.2 常用的数据同步方案汇总 3.3 为什么推荐Flink CDC 3.4 Flink …

进程间通信(匿名管道 创建管道及分配任务代码)

文章目录 一.进程间通信进程为什么要通信&#xff1f;进程如何通信 二.管道匿名管道pipe写端慢写入&#xff0c;读端等待写端写入&#xff0c;读端不读 && 管道的大小写端关闭&#xff0c;读端不会读取写端写入&#xff0c;读端关闭字节流 总结安全问题 三.进程池创建管…

VADv2 论文学习

VADv2: End-to-End Vectorized Autonomous Driving via Probabilistic Planning 解决了什么问题&#xff1f;相关工作感知运动预测规划自动驾驶领域的大语言模型 提出了什么方法&#xff1f;场景编码器概率规划训练分布损失冲突损失场景 Token 损失 推理 实验实验设定指标消融实…

AI类课程的笔记

信息论、导论、模式识别&#xff08;数据挖掘&#xff09;、语义网络与知识图谱、深度学习、强化学习 &#xff08;零&#xff09;信息论 详见另一篇博文 信息论自总结笔记(仍然在更新)_信息论也更新了-CSDN博客https://blog.csdn.net/sinat_27382047/article/details/12690…

【Unity踩坑】Unity导出的UWP项目编译失败

在Unity中导出了UWP平台的项目后&#xff08;Xaml或D3D&#xff09;&#xff0c;使用Visual Studio编译时发生错误&#xff1a; Error: Unity.IL2CPP.Building.BuilderFailedException: Lump_libil2cpp_vm.cpp 查找后发现是Visual Studio 与Unity兼容的问题 原贴&#xff1a;…

数据分析案例-机器学习工程师薪资数据可视化分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

bus中设备驱动的probe触发逻辑和device、driver的添加逻辑

注&#xff1a;以下的代码皆摘自于linux 4.9.88版本的内核源码&#xff0c;不同版本可能有所出入。 往期内容&#xff1a; 驱动中的device和device_driver结构体bus总线的相关结构体和注册逻辑 1. driver的probe触发方式 在 Linux 设备模型中&#xff0c;probe() 函数是驱动…

自动驾驶系列—智能驾驶中的“换挡革命”:线控换挡技术详解

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

Java垃圾回收简述

什么是Java的垃圾回收&#xff1f; 自动管理内存的机制&#xff0c;负责自动释放不再被程序引用的对象所占用的内存。 怎么触发垃圾回收&#xff1f; 内存不足时&#xff1a;JVM检测到堆内存不足时&#xff0c;无法为新的对象分配内存时&#xff0c;会自动触发垃圾回收。手动…

UDP协议【网络】

文章目录 UDP协议格式 UDP协议格式 16位源端口号&#xff1a;表示数据从哪里来。16位目的端口号&#xff1a;表示数据要到哪里去。16位UDP长度&#xff1a;表示整个数据报&#xff08;UDP首部UDP数据&#xff09;的长度。16位UDP检验和&#xff1a;如果UDP报文的检验和出错&…

【电路】1.2 电流和电压的参考方向

1.2 电流和电压的参考方向 参考方向就是一个假设的方向&#xff08;类似中学物理的正方形&#xff09;&#xff0c;选参考方向的原因是电路结构略显复杂&#xff0c; 无法直接看出支路电压、电流的实际方向&#xff0c;参考方向可以任意选择&#xff0c;任意支路电压、电流只有…