广告
返回顶部
首页 > 资讯 > 数据库 >【⑭MySQL | 数据类型(二)】字符串 | 二进制类型
  • 382
分享到

【⑭MySQL | 数据类型(二)】字符串 | 二进制类型

mysqlandroid数据库 2023-08-30 11:08:22 382人浏览 薄情痞子
摘要

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL字符串 | 二进制类型类型的分享✨ 目录 前言5 字符串类型6 二进制类型总结 5 字符串类型 字符串类型用来存储字符串数据,还可以存储图片和声

前言

✨欢迎来到小KMySQL专栏,本节将为大家带来MySQL字符串 | 二进制类型类型的分享


在这里插入图片描述

5 字符串类型

字符串类型用来存储字符串数据,还可以存储图片和声音的二进制数据。字符串可以区分或者不区分大小写的串比较,还可以进行正则表达式的匹配查找。

下表中列出了 Mysql 中的字符串数据类型,括号中的M表示可以为其指定长度。

类型名称说明长度范围占用的存储空间
CHAR(M)固定长度0<=M<=255M 个字节
VARCHAR(M)变长字符串0<=M<=65535M+1个字节
TINYTEXT非常小字符串0<=L<=255L+1字节
TEXT小的字符串0<=L<=65535L+2字节
MEDIUMTEXT中等大小的字符串0<=L<=16777215L+3字节
LONGTEXT大的字符串0<=L<=4294967295L+4字节
ENUM枚举类型,只能有一个枚举字符串值0<=L<=655351或2个字节,取决于枚举值的数目 (最大值为65535)
SET字符串集合,字符串对象可以有零个或 多个SET成员0<=L<=641、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员)

CHAR 和 VARCHAR 类型

CHAR 和 VARCHAR 类型都可以存储比较短的字符串。

类型特点长度长度范围占用存储空间
CHAR(M)固定长度M0<=M<=255M个字节
VARCHAR(M)可变长度M0<=M<=65535(实际长度+1/2)个字节

CHAR类型:

  • CHAR(M) 为固定长度字符串,在定义时指定字符串长度。如果不指定,则默认为1个字符。

  • 如果保存时,数据的实际长度比CHAR类型声明的长度小,则会在右侧填充空格以达到指定的长度。当检索 CHAR 值时,尾部的空格将被删除。

  • 定义CHAR类型字段时,申明的字段长度即为CHAR类型字段所占的存储空间的字节数。

CREATE TABLE test_char(f1 CHAR,f2 CHAR(5));DESC test_char;INSERT INTO test_char(f1) VALUES('h');#Data too long for column 'f1' at row 1INSERT INTO test_char(f1) VALUES('he');INSERT INTO test_char(f1) VALUES('你');INSERT INTO test_char(f2) VALUES('C语言');#Data too long for column 'f2' at row 1INSERT INTO test_char(f2) VALUES('C语言Plus');#测试在右侧填充的空格,会在查询的时候去掉的情况SELECT CONCAT(f2,'***') FROM test_char;#注意:自己插入的空格也会被去掉INSERT INTO test_char(f2) VALUES('fk  ');SELECT * FROM test_char;

VARCHAR类型:

  • VARCHAR(M) 定义时,必须指定长度M,否则会报错。

  • VARCHAR(M)指的是能存储M个字符,而实际占用的空间为字符串的实际长度加 1或者2。

  • VARCHAR 在值保存和检索时尾部的空格仍保留。

#错误,没有指定长度CREATE TABLE test_varchar(name VARCHAR);CREATE TABLE test_varchar(name VARCHAR(5));INSERT INTO test_varchar VALUES('星星'),('太阳月亮');#Data too long forcolumn 'NAME' at row 1INSERT INTO test_varchar VALUES('星星太阳月亮');

TEXT 类型

TEXT用来保存文本类型的字符串,如文章内容、评论等。当保存或查询 TEXT 列的值时,不删除尾部空格。

TEXT 类型分为 4 种:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。不同的 TEXT 类型的存储空间和数据长度不同。

在向TEXT类型的字段插入数据时,系统自动按照实际长度存储,不需要预先定义长度。

类型说明大小(字节)
TINYTEXT小文本0<=L<=255
TEXT普通文本0<=L<=65535
MEDIUMTEXT中等大小文本0<=L<=16777215
LONGTEXT长文本0<=L<=4294967295 (相当于4GB字符)

TEXT文本类型,可以存储比较大的文本段,搜索速度稍慢,因此如果不是特别大的内容,建议使用CHAR,VARCHAR来替代。还有TEXT类型不用加默认值,加了也没用。

ENUM 类型

ENUM 类型也叫作枚举类型,ENUM类型的取值范围需要在定义字段是进行指定。设置字段值时,ENUM类型只允许从成员中选取单个值,不能一次选取多个值。如果创建的成员中有空格,尾部的空格将自动被删除。

类型长度范围占用存储空间
ENUM1<=L<=655351或2个字节
  • ENUM 值在内部用整数表示,每个枚举值均有一个索引值;
  • 列表值所允许的成员值从 1 开始编号,mysql 存储的就是这个索引编号,枚举最多可以有 65535 个元素。

ENUM 值依照列索引顺序排列,并且空字符串排在非空字符串前,NULL 值排在其他所有枚举值前。

提示:ENUM 列总有一个默认值。如果将 ENUM 列声明为 NULL,NULL 值则为该列的一个有效值,并且默认值为 NULL。如果 ENUM 列被声明为 NOT NULL,其默认值为允许的值列表的第 1 个元素。

  • 查看enum字段的所有值
SELECTcolumn_typeFROMinfORMation_schema. COLUMNSWHERE#TABLE_SCHEMA = "test" ANDDATA_TYPE = 'enum'AND table_name="test_enum"AND column_name="ch";
  • 测试
CREATE TABLE test_enum(gender ENUM('男','女','unknown'));INSERT INTO test_enum VALUES('男');#Data truncated for column 'ch' at row 1INSERT INTO test_enum VALUES('中');#可以使用索引来插入枚举元素(注意:索引从1开始)INSERT INTO test_enum VALUES(1),('2');#当enum字段没有申明为NOT NULL时,插入NULL也是合法的INSERT INTO test_enum VALUES(NULL);SELECT * FROM test_enum;

SET 类型

SET 是一个字符串的对象,可以有零或多个值,SET 列最多可以有 64 个成员,值为表创建时规定的一列值。

成员个数范围占用的存储空间
1<=L<=81个字节
9<=L<=162个字节
17<=L<=243个字节
25<=L<=324个字节
33<=L<=648个字节
  • 与 ENUM 类型相同,SET 值在内部用整数表示,列表中每个值都有一个索引编号。当创建表时,SET 成员值的尾部空格将自动删除。

  • 但与 ENUM 类型不同的是,ENUM 类型的字段只能从定义的列值中选择一个值插入,而 SET 类型的列可从定义的列值中选择多个字符的联合。

提示:如果插入 SET 字段中的列值有重复,则 MySQL 自动删除重复的值;插入 SET 字段的值的顺序并不重要,MySQL 会在存入数据库时,按照定义的顺序显示;

测试

CREATE TABLE test_set(hobby SET('吃饭','睡觉','写Bug'));INSERT INTO test_set VALUES('吃饭');INSERT INTO test_set VALUES('吃饭,睡觉');#重复插入时,会自动删除重复数据INSERT INTO test_set VALUES('吃饭,睡觉,吃饭');#插入的值在set中不存在时,会报错INSERT INTO test_set VALUES('吃饭,睡觉,花钱');SELECT * FROM test_set;

6 二进制类型

Mysql中的二进制字符串类型主要存储一些二进制数据,比如可以存储图片、音频、视频等二进制数据。

包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。

下表中列出了 MySQL 中的二进制数据类型,括号中的M表示可以为其指定长度。

类型名称说明大小(字节)
BIT(M)位字段类型大约 (M+7)/8 字节
BINARY(M)固定长度二进制字符串M 字节
VARBINARY (M)可变长度二进制字符串M+1 字节
TINYBLOB (M)非常小的BLOBL+1 字节,在此,L<2^8
BLOB (M)小 BLOBL+2 字节,在此,L<2^16
MEDIUMBLOB (M)中等大小的BLOBL+3 字节,在此,L<2^24
LONGBLOB (M)非常大的BLOBL+4 字节,在此,L<2^32

BIT 类型

位字段类型。M 表示每个值的位数,范围为 1~64。如果 M 被省略,默认值为 1。如果为 BIT(M) 列分配的值的长度小于 M 位,在值的左边用 0 填充。例如,为 BIT(6) 列分配一个值 b’101’,其效果与分配 b’000101’ 相同。

BIT 数据类型用来保存位字段值,例如以二进制的形式保存数据 13,13 的二进制形式为 1101,在这里需要位数至少为 4 位的 BIT 类型,即可以定义列类型为 BIT(4)。大于二进制 1111 的数据是不能插入 BIT(4) 类型的字段中的。

提示:默认情况下,MySQL 不可以插入超出该列允许范围的值,因而插入数据时要确保插入的值在指定的范围内。

BINARY 和 VARBINARY 类型

BINARY 和 VARBINARY 类型类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字节字符串。使用的语法格式如下:

列名称 BINARY(M) 或者 VARBINARY(M)

BINARY 类型的长度是固定的,指定长度后,不足最大长度的,将在它们右边填充 “\0” 补齐,以达到指定长度。例如,指定列数据类型为 BINARY(3),当插入 a 时,存储的内容实际为 “a\0\0”,当插入 ab 时,实际存储的内容为“ab\0”,无论存储的内容是否达到指定的长度,存储空间均为指定的值 M。

VARBINARY 类型的长度是可变的,指定好长度之后,长度可以在 0 到最大值之间。例如,指定列数据类型为 VARBINARY(20),如果插入的值长度只有 10,则实际存储空间为 10 加 1,实际占用的空间为字符串的实际长度加 1。

BLOB 类型

BLOB 是一个二进制的对象,用来存储可变数量的数据。BLOB 类型分为 4 种:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB,它们可容纳值的最大长度不同,如下表所示。

数据类型存储范围
TINYBLOB最大长度为255 (28-1)字节
BLOB最大长度为65535 (216-1)字节
MEDIUMBLOB最大长度为16777215 (224-1)字节
LONGBLOB最大长度为4294967295或4GB (231-1)字节

BLOB 列存储的是二进制字符串(字节字符串),TEXT 列存储的是非进制字符串(字符字符串)。BLOB 列是字符集,并且排序和比较基于列值字节的数值;TEXT 列有一个字符集,并且根据字符集对值进行排序和比较。

总结

总的来说,选择合适的数据类型可以提高数据库的性能、节省存储空间、确保数据的一致性和有效性,并方便进行数据处理和计算。因此,在设计数据库时,选择合适的数据类型非常重要。~下节带来MySQL视图的分享

来源地址:https://blog.csdn.net/qq_72157449/article/details/132396010

您可能感兴趣的文档:

--结束END--

本文标题: 【⑭MySQL | 数据类型(二)】字符串 | 二进制类型

本文链接: https://www.lsjlt.com/news/382794.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 【⑭MySQL | 数据类型(二)】字符串 | 二进制类型
    前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL字符串 | 二进制类型类型的分享✨ 目录 前言5 字符串类型6 二进制类型总结 5 字符串类型 字符串类型用来存储字符串数据,还可以存储图片和声...
    99+
    2023-08-30
    mysql android 数据库
  • MySQL数据类型--------字符串类型实战
    1. 背景  * MySQL支持的字符串类型有CHAR、VARCHAR、二进制、var二进制、BLOB、文本等等。2. 字符串类型所需的存储和值范围类型说明N的含义是否有字符集最大长度C...
    99+
    2022-10-18
  • Mysql 字符串转数字类型
    使用场景: 在数据库中进行数字比较,但是数字的存储格式是varchar的时候可以使用以下方法进行转换,然后进行比较 方法一:SELECT CAST('123' AS SIGNED); 方法二:SELECT CONVERT...
    99+
    2019-04-11
    Mysql 字符串转数字类型
  • day05(数字类型,字符串类型,列表类
    一,复习: 1.顺序结构、分支结构、循环结构 2.if分支结构 if 条件: 代码块 elif 条件: 代码块 else: 代码块 # 可以被if转换为False:0 | '' | None | [] | {} ...
    99+
    2023-01-31
    类型 字符串 数字
  • MySQL基础教程3 —— 数据类型之字符串类型
    字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。 1. CHAR和VARCHAR类型 CHAR和V...
    99+
    2022-05-28
    enum MySQL set varchar 字符串 数据类型
  • 当我们为字符串数据类型指定 CHARACTER SET 二进制属性时,MySQL 如何反应?
    On specifying a CHARACTER SET binary attribute for a character string data type, MySQL creates that column as its subseq...
    99+
    2023-10-22
  • MySQL数据类型之浅谈字符串(string)
    目录字符类型(CHAR Types)可变字符类型(Varchar Types)二进制类型(BINARY Types)可变二进制类型(VARBINARY Types)二进制大对象类型(BLOB Types)文本类型(Tex...
    99+
    2022-10-01
  • 二进制相关数据类型有哪些
    这篇文章主要介绍“二进制相关数据类型有哪些”,在日常操作中,相信很多人在二进制相关数据类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”二进制相关数据类型有哪些”的疑惑...
    99+
    2022-10-19
  • python第二周 数字类型
    数字类型Python中,数字并不是一个真正的对象类型,而是一组类似类型的分类。Python不仅支持通常的数字类型(整数和浮点数),而且能够通过常量去直接创建数字以及处理数字的表达式,还通过模块和第三方库提供更多的数字类型支持。Python数...
    99+
    2023-01-31
    类型 数字 python
  • SQL Server中怎么将二进制转换为字符类型
    这期内容当中小编将会给大家带来有关SQL Server中怎么将二进制转换为字符类型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。问题描述:在SQL Server 数据库中...
    99+
    2022-10-18
  • python如何将字符类型、数值类型等转换为字符串类型
    这篇文章主要为大家展示了“python如何将字符类型、数值类型等转换为字符串类型”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何将字符类型、数值类...
    99+
    2022-10-19
  • 数据类型内置(二)
    list 1,用途:多个装备,多个爱好,多门课程, 2.定义:[]内可以有多个任意类型的值,逗号分隔元素 优先掌握 1.安索引取值 2.切片 3.长度 4.成员运算in和not in 5.追 加append 6.删除del 7.循环 需...
    99+
    2023-01-31
    数据类型
  • 基本数据类型(二)
      列表是 Python 最常用的数据类型,它是有序元素的集合,元素之间以逗号分隔,用中括号括起来,可以是任何数据类型。同时它也是一种序列,支持索引、切片、加、乘和成员检查等。 数组:数据类型必须一致,有序的元素序列。 列表:Py...
    99+
    2023-01-31
    数据类型
  • mysql学习笔记(二)--- MySQL数据类型
    【正文】上一章节中,我们学习了MySQL软件的安装,既然软件都装好了,现在就正式开始MySQL的基础知识的学习吧,即使是零基础,也要一步一个脚印。恩,首先要学习的就是MySQL的数据类型。一、数据类型:1、...
    99+
    2022-10-18
  • 【Python3】基本数据类型-字符串
    字符串常用功能: 移除空白 分割 长度 索引 切片 下面来详细介绍下 ~ capitalize 字符串首字母大写 name = 'xmzncc' v = name.capitalize() print(v) casefold 将所有大...
    99+
    2023-01-31
    字符串 数据类型
  • php怎么将数据类型转换为字符串类型
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php将数据类型转换为字符串类型方法1:使用strval()函数strval() 函数用于获取变量的字符串值。<php $num=3.21; var_dump($...
    99+
    2021-11-24
    php 数据类型转换 字符串类型
  • php如何将数据类型转换为字符串类型
    今天小编给大家分享一下php如何将数据类型转换为字符串类型的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。转换方法:1、使用s...
    99+
    2023-06-29
  • c++ 数字类型和字符串类型互转详解
    目录一级目录 数字转为字符串二级目录 字符串转为数字总结一级目录 数字转为字符串 二级目录 字符串转为数字 1.数字转为字符串 (1).首先要加头文件 #include <...
    99+
    2022-11-12
  • php如何实现字符串类型数字转数字类型
    这篇文章主要为大家展示了“php如何实现字符串类型数字转数字类型”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何实现字符串类型数字转数字类型”这篇文章吧...
    99+
    2022-10-19
  • JavaScript数据类型转换实例(其他类型转字符串、数值型、布尔类型)
    前言  什么是数据类型转换? 使用表单、prompt 获取过来的数据默认类型是字符串类型的,此时就不能直接进行加减法运算,而需要转换变量的数据类型。 通俗来说,数据类型转...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作