mysql ------ 字符串类型

大家好,今天我们总结一下字符串类型的知识点。

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

下面主要聊一下:
备注:

一个汉字占多少长度与编码有关:
UTF-8:一个汉字=3个字节
GBK:一个汉字=2个字节
char(n)  varchar(n) 表示 n 个字符,无论汉字和英文,Mysql 都能存入 n 个字符,仅是实际字节长度有所区别

一 、 VARCHAR

  1. VARCHAR 最主要的字符串类型。是用于存储可变长字符串。它比定长类型更节省空间,因为他仅使用必要的空间。如果它使用ROW_FORMAT=FIXBD;即静态表创建的话,每一行都会使用定长存储,这会很浪费空间。
  2. VARCHAR 需要使用1或2个字节记录字符串的长度;如果列的最大的长度小于或等于255字节,则使用1个字节表示,否则使用2个字节,
  3. 在检索的时候,CHAR列会删除尾部的空格而VARCHAR则保留了这些空格。
  `thumb` char(4) NOT NULL,
  `email` varchar(4) NOT NULL,

mysql>  select id,thumb,email from yii_user where id=6;
+----+-------+-------+
| id | thumb | email |
+----+-------+-------+
| 6  | ab    | ab    |
+----+-------+-------+
1 rows in set (0.04 sec)

mysql> select id,LENGTH(thumb),LENGTH(email) from yii_user where id=6;
+----+---------------+---------------+
| id | LENGTH(thumb) | LENGTH(email) |
+----+---------------+---------------+
| 6  | 2             | 4             |
+----+---------------+---------------+
1 rows in set (0.05 sec)

  1. MyISAM 会将行拆成不同的片段存储, InnoDB 则需要分裂页来使行可以放进页内。

二、CHAR类型

  1. char是定长的,
  2. char 类型的字符串检索速度要比 varchar 类型的快。
  3. 在检索的时候,CHAR列会删除尾部的空格而VARCHAR则保留了这些空格。
  4. char(n) 固定长度,char(4) 不管是存入几个字符,都将占用 4 个字节

三、 BLOB 和 TEXT

  1. 都是为了存储很大的数据而设计的数据类型,分为采用二进制和字符方式存储
  2. mysql 把每个BLOB和TEXT值当做一个独立的对象处理,当它们的值太大时,InnoDB会使用专门的外部存储区域进行存储,此时每个值都会有1~4个字节存储指针,然后在外部存储区域存储实际的值。
  3. TEXT类型有字符集和排序规则 ,BLOBM 没有字符集和排序规则

先写到这供大家参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值