设计数据库时,不禁有这样的疑问,varchar()最大可以设置多大呢?与什么有关呢?

字符集

为什么要有字符集?

简单讲,数据在网络上传输与硬盘中储存,都是以二进制的形式存在的。我们熟知的文字、图片以及视频想要存储与传输,必然需要一套规则,使其成为可以被储存和传输的二进制数据,而字符集则是文字编解码的规则。

详情可参考字符编码的历史演变。

在数据的储存上,mysql提供了不同的字符集支持。

查看mysql支持的字符集:

mysql> show character set;

+----------+---------------------------------+---------------------+--------+

| Charset | Description | Default collation | Maxlen |

+----------+---------------------------------+---------------------+--------+

| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |

| ascii | US ASCII | ascii_general_ci | 1 |

...

| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 |

| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |

| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |

| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |

| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |

| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |

| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |

| utf8mb4 | UTF-8 Unicode | utf8mb4_0900_ai_ci | 4 |

+----------+---------------------------------+---------------------+--------+

41 rows in set (0.01 sec)

Mysql 提供了server、database、table、column级字符集设置。

字符集规则是可以继承的,也就是说:

column 没有设置则继承 table 的字符集设置。

table 没有设置则继承 database 的字符集设置。

database 没有设置则继承 server 的字符集设置。

查看全局字符集设置:

mysql> show global variables like'%character_set%';

+--------------------------+--------------------------------+

| Variable_name | Value |

+--------------------------+--------------------------------+

| character_set_client | utf8mb4 |

| character_set_connection | utf8mb4 |

| character_set_database | utf8mb4 |

| character_set_filesystem | binary |

| character_set_results | utf8mb4 |

| character_set_server | utf8mb4 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql-8.0/charsets/ |

+--------------------------+--------------------------------+

8 rows in set (0.01 sec)

note:字符集设置不当会出现汉字乱码。

char与varchar

char:固定长度类型,char(n)则表示只能储存n字节数据,不足n则在末尾填充空格,最大存储255字符。占用储存空间n × 字符集最大占用字节。

varchar:可变长度类型,varchar(n)则表示可存储char_length(n)长度的字符,储存空间占用(字符集最大占用 × n + 1 or 2长度字节),字节数 > 255 时用2字节表示长度。

length() 与 char_length()

char_length():返回字符长度,与空间占用大小无关

mysql> select char_length('a'),char_length('1'),char_length('hello world'),char_length('你好');

+------------------+------------------+----------------------------+-----------------------+

| char_length('a') | char_length('1') | char_length('hello world') | char_length('你好') |

+------------------+------------------+----------------------------+-----------------------+

| 1 | 1 | 11 | 2 |

+------------------+------------------+----------------------------+-----------------------+

1 row in set (0.00 sec)

length(): 返回占用字节数

mysql> select length('a'),length('1'),length('hello world'),length('我'),length("你好"),length('

mysql dcn_Mysql varchar(max)相关推荐

  1. MySQL中varchar最大长度是多少

    一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)  5.0版本以上,varchar(20),指的是20字符, ...

  2. MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚

    MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚 一.关于UTF-8 UTF-8 Unicode Transformation Format-8bit.是用以解决 ...

  3. mysql varchar类型实例_Mysql实例MySQL数据类型varchar详解

    <Mysql实例MySQL数据类型varchar详解>要点: 本文介绍了Mysql实例MySQL数据类型varchar详解,希望对您有用.如果有疑问,可以联系我们.1.varchar(N) ...

  4. varchar(n)跟varchar(max)的区别

    varchar n跟varchar max的区别与CLOB与BLOB的区别 varchar(n)跟varchar(max)的区别 CLOB与BLOB的区别 CLOB 定义 BLOB的含义 CLOB和B ...

  5. 关于varchar(max), nvarchar(max)和varbinary(max)

    在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max).nvarchar(max).varbinary(max) ).大值数据类型最多可以存储2^30-1个字节的数据. 这几 ...

  6. mysql 的 VARCHAR VARCHAR2

    mysql 的 VARCHAR VARCHAR2 mysql 里面竟然没有 VARCHAR2 ?? posted on 2015-08-19 17:37 CanntBelieve 阅读(...) 评论 ...

  7. mysql中int最大多少,int(11)最大長度是多少,MySQL中varchar最大長度是多少(轉)

    int(11)最大長度是多少,MySQL中varchar最大長度是多少? int(11)最大長度是多少? 在SQL語句中int代表你要創建字段的類型,int代表整型,11代表字段的長度. 這個11代表 ...

  8. Mysql UTF8 varchar与Oracle ZHS16GBK varchar2同长度下存汉字的差异

    目录 1简介... 1 2 准备... 1 2.1 环境说明... 1 3 安装... 2 4 配置... 2 5 使用... 3 5.1 验证实验... 3 5.2 问题分析... 5 6 延展.. ...

  9. SQL Server 2005 的nvarchar(max),varchar(max)来救火

    今天处理组织架构部分的代码出错了,还好数据库迁移到了SQL Server 2005,原来系统使用的是SQL Server 2000,随着公司规模的扩大,公司人员的急速增长,系统不断的发生了问题,经常在 ...

最新文章

  1. 零起点学算法03——超简单模仿算术题
  2. 五年级上册计算机课如何拉表格,川教版小学信息技术五年级上册第八课 调整表格...
  3. nessus安全工具主要用途_发电技术 | 发电厂DCS 网络安全评估与防护
  4. python读取.edf文件
  5. Redis 性能优化的 13 条军规!史上最全
  6. sqlite3用python家外键_Django/Sqlite3为带有外键的模型添加一行
  7. win10 iot core java_Windows 10 IoT Core开发环境
  8. oracle把列数据串成一个字符串,一组数据,如何根据一个字段值分组后,把另一字段的字符串累加连接起来?...
  9. centos7查看当前系统时间、_CentOS 7修改系统时间及硬件时间
  10. JavaScript 高级程序设计 笔记
  11. MyBatis源码阅读指南
  12. linuxcan之kvaser使用笔记
  13. 单元格里的字怎样居中_word表格中文字如何设置左右和上下居中(水平和垂直居中)...
  14. # DZY Love Math 系列
  15. html鼠标经过图片放大
  16. 《卓有成效的管理者》——学习心得(八)
  17. EZ-USB FX2单片机原理、编程及应用 读书笔记
  18. (转)JPVideoPlayer 基于avplayer的音视频列表播放
  19. 如何获取所有股票代码
  20. 7-1 求e的近似值 (15 分)

热门文章

  1. 如何在 ASP.NET MVC 中集成 AngularJS(2)
  2. .NET Core VS Code 环境配置
  3. 框架实现修改功能的原理_JAVA集合框架的特点及实现原理简介
  4. ArcGIS实验教程——实验十八:叠置分析(Overlay Analysis)
  5. C语言试题七十六之请编写函实现百钱买百鸡
  6. IOS之学习笔记十五(协议和委托的使用)
  7. (三)python3 只需3小时带你轻松入门—— 变量的简单运算
  8. 【C语言简单说】十九:二维数组循环嵌套(1)
  9. mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?
  10. 球体表面积原来还可以这么求!