MySQL学习(十七):数据类型之文本字符串类型
文本字符串类型
类型 | 值的长度 | 长度范围 | 占用的存储空间 |
---|---|---|---|
CHAR(M) | M | 0<=M<=255 | M个字节 |
VARCHAR(M) | M | 0<=M<=65535 | 实际长度+1个字节 |
TINYTEXT | L | 0<=L<=255 | L+2个字节 |
TEXT | L | 0<=L<=65535 | L+2个字节 |
MEDIUMTEXT | L | 0<=L<=16777215 | L+3个字节 |
LONGTEXT | L | 0<=L<=4294967295 | L+4个字节 |
ENUM | L | 0<=L<=65535 | 1或2个字节 |
SET | L | 0<=L<=64 | 1,2,3,4或8个字节 |
1、CHAR与VARCHAR类型
CHAR
和VARCHAR
类型都可以存储比较短的字符串。CHAR固定长度
,VARCHAR可变长度
。
CHAR:
CHAR(M) 类型一般需要预先定义字符串长度。如果不指定(M),则表示长度默认是1个字符。
如果保存时,数据的实际长度比CHAR类型声明的长度小,则会在右侧填充
空格以达到指定的长度。当MySQL检索CHAR类型的数据时,CHAR类型的字段会去除尾部的空格。
定义CHAR类型字段时,声明的字段长度即为CHAR类型字段所占的存储空间的字节数。VARCHAR:
VARCHAR(M) 定义时,必须指定
长度M,否则报错。
MySQL4.0版本以下,varchar(20):指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) ;MySQL5.0版本以上,varchar(20):指的是20字符。
检索VARCHAR类型的字段数据时,会保留数据尾部的空格。VARCHAR类型的字段所占用的存储空间为字符串实际长度加1个字节。
2、TEXT类型
- 在MySQL中,TEXT用来保存文本类型的字符串,总共包含4种类型,分别为
TINYTEXT
、TEXT
、MEDIUMTEXT
和
LONGTEXT
类型。 - 在向TEXT类型的字段保存和查询数据时,系统自动按照实际长度存储,不需要预先定义长度。这一点和VARCHAR类型相同。
- 由于实际存储的长度不确定,
MySQL 不允许 TEXT 类型的字段做主键
。遇到这种情况,你只能采用CHAR(M),或者 VARCHAR(M)。
TEXT文本类型,可以存比较大的文本段,搜索速度稍慢,因此如果不是特别大的内容,建议使用CHAR,VARCHAR来代替。还有TEXT类型不用加默认值,加了也没用。而且text和blob类型的数据删除后容易导致“空洞”,使得文件碎片比较多,所以频繁使用的表不建议包含TEXT类型字段,建议单独分出去,单独用一个表。
3、ENUM类型
ENUM
类型也叫作枚举
类型,ENUM类型的取值范围需要在定义字段时进行指定。设置字段值时,ENUM类型只允许从成员中选取单个值,不能一次选取多个值
。其所需要的存储空间由定义ENUM类型时指定的成员个数决定。
当ENUM类型包含1~255个成员时,需要1个字节的存储空间;
当ENUM类型包含256~65535个成员时,需要2个字节的存储空间。
举例:
#创建表如下:
CREATE TABLE test_enum(
season ENUM('春','夏','秋','冬','unknow')
);
#添加数据:
INSERT INTO test_enum
VALUES('春'),('秋');# 忽略大小写
INSERT INTO test_enum
VALUES('UNKNOW');# 允许按照角标的方式获取指定索引位置的枚举值
INSERT INTO test_enum
VALUES('1'),(3);# 当ENUM类型的字段没有声明为NOT NULL时,插入NULL也是有效的
INSERT INTO test_enum
VALUES(NULL);#报错:Data truncated for column 'season' at row 1
INSERT INTO test_enum
VALUES('ab');
4、SET类型
SET表示一个字符串对象,可以包含0个或多个成员,但成员个数的上限为64
。设置字段值时,可以取取值范围内的0个或多个值
。
当SET类型包含的成员个数不同时,其所占用的存储空间也是不同的,体如下:
成员个数范围 | 占用的存储空间 |
---|---|
1<=L<=8 | 1个字节 |
9<=L<=16 | 2个字节 |
17<=L<=24 | 3个字节 |
25<=L<=32 | 4个字节 |
33<=L<=64 | 8个字节 |
SET类型在存储数据时成员个数越多,其占用的存储空间越大。注意:SET类型在选取成员时,可以一次选择多个成员,这一点与ENUM类型不同。
举例:
#创建表如下:
CREATE TABLE test_set(
s SET ('A', 'B', 'C')
);
#添加数据:
INSERT INTO test_set (s) VALUES ('A'), ('A,B');#插入重复的SET类型成员时,MySQL会自动删除重复的成员
INSERT INTO test_set (s) VALUES ('A,B,C,A');#向SET类型的字段插入SET成员中不存在的值时,MySQL会抛出错误。
INSERT INTO test_set (s) VALUES ('A,B,C,D');
MySQL学习(十七):数据类型之文本字符串类型相关推荐
- MySQL数据库基础:数据类型详解-文本字符串类型
前言 正好趁着这次一起学习复习一下MySQL数据库的基本知识.也是一直在用这个数据库,有些基础的知识点长久不用就会遗忘,就比如数据类型溢出的问题,很多时候建表的时候随便给定个类似,结果导入数据的时候报 ...
- MySQL 学习笔记(3)— 字符串函数、数值函数、日期时间函数、流程函数、聚集函数以及分组数据
1. 字符串函数 MySQL 的常用函数包括字符串函数.数值函数.日期时间函数.流程函数等. SELECT ascii("abc"),char(97),concat("h ...
- MySQL学习笔记:全文本搜索
本文为本人学习书籍<MySQL必知必会>笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~ 18 全文本搜索 并非所有搜索引擎都支持全文搜索.最常用的两个搜索引擎MyISAM(支持 ...
- Redis数据类型-String(字符串类型)
String是redis最基本的类型,你可以理解成Memcached一模一样的类型,一个key对应一个value. String类型是二进制安全的,意思是redis的string可以包含任何数据,比如 ...
- mysql学习-常用的函数(字符串函数)
mysql中的字符串函数 函数 功能 CONCAT(s1,s2,...sn) 连接s1,s1...sn为一个字符串 INSERT(str,x,y,instr) 将字符串str从x位置开始,y个字符长的 ...
- 前端学习(631):字符串类型
- 不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏
文章目录 1. MySQL中的数据类型 2. 整数类型 3. 浮点数类型 4. 定点数类型 5. 位类型:BIT 6. 日期与时间类型 7. 文本字符串类型 8. ENUM类型 9. SET类型 10 ...
- mysql数据库的字符串表示什么意思_MySQL数据库的字符串类型详解(01)
Mysql的数据类型主要分为三类:数字类型.字符串(字符)类型.日期和时间类型,由于时间紧迫,根据学习的需要 数字类型暂不做详解,等待有时间了在修改此文档,此文主要介绍mysql 数据类型中的字符串类 ...
- MySQL学习(十五):数据类型之数值型
1.MySQL中的数据类型 类型 类型举例 整数类型 TINYINT.SMALLINT.MEDIUMINT.INT(或INTEGER).BIGINT 浮点类型 FLOAT.DOUBLE 定点数类型 D ...
最新文章
- iPhone中的heic格式怎么查看,heic文件怎么打开
- JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解
- spring(3)高级装配
- Android布局加载慢,Android布局优化(四)X2C — 提升布局加载速度200%
- 51系列计算机字长,计算机等级考试之MsOffice练习题第51套
- 高校学霸情侣 双双保研中科院,3年获近9万奖学金,120余项个人荣誉……
- 半监督学习的概述与思考,及其在联邦场景下的应用(续)
- SpringBoot 分布式session
- 动态lacp和静态lacp区别_LACP学习笔记
- 【AllenNLP入门教程】: 1、基于Allennlp2.4版本的文本分类
- c语言scanf中输入根号2,C语言格式输入函数scanf()详解
- windows下发文件到linux中文名乱码解决办法
- 测试3.0u盘速度软件,SanDisk USB3.0接口的U盘测试
- source insight护眼模式颜色
- 云服务器防火墙开放端口访问--电信云服务器
- ORACLE数据库字段类型说明
- 网站建设多少钱(做一个网站需要多少钱)
- win10 软件移动位置信息服务器,如何修改win10软件默认安装位置
- 解决U盘文件变成快捷方式的最佳方法
- linux账号与群组
热门文章
- 天天生鲜Django项目①
- 神策数据首批入驻「WPS企业服务联盟」
- 3DMAX与MAYA在Unity与UE中的旋转、轴向关系梳理
- JAVA经典例题二(10 examples)
- 计算机主机后面com口,怎么查看com口?电脑的的com口(串口)更改的方法
- 雪球在股市风暴下的高可用架构改造分享
- 关于Oracle的ORA 12505错误 ORA-12505, TNS:listener does not currently know of SID given in connect descrip
- 网络工程师成长日记162-网络工程师的定位
- Polkadot的轻白皮书
- Linux利用yum仓库安装软件