MySQL查询表结构以及varchar和char的区别与说明

 更新时间:2025年10月24日 16:11:53   作者:希尤  
文章介绍了MySQL中表结构的查看方法,以及CHAR和VARCHAR类型的区别,CHAR类型存储固定长度的字符,而VARCHAR类型存储可变长度的字符,其长度前缀表示字符的字节数,MySQL和Java中字符的编码方式也有所不同

MySQL 查看设计时的表结构

desc 表名称 ;
show create table 表名称 ;

MySQL查询当前字段,所有列的长度

SELECT LENGTH(title) FROM nx_blog
title是某一列  nx_blog是表名

CHARVARCHAR`类型相似,但它们被存储和检索的方式不同

VARCHAR值存储为1字节或2字节长度前缀加数据。长度前缀表示值中的字节数。

如果值不超过255个字节,则列使用一个长度字节;如果值可能需要超过255个字节,则列使用两个长度字节

CHAR(4)需要存储VARCHAR(4)需要存储
''' '4字节''1个字节
'ab''ab '4字节'ab'3个字节
'abcd''abcd'4字节'abcd'5个字节
'abcdefgh''abcd'4字节'abcd'5个字节

MySQL字节

其实MySQL无论是char还是varchar指定的长度都是字符的长度,也就是能存储多少个字符

字符是什么?

扩展,但是没必要记住,我们只要知道上面utf-8的就行了,因为一般设计MySQL数据库表都是utf-8

  • ①ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。
  • ②UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
  • ③Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。

符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。

  • ④UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。
  • ⑤UTF-32编码中,世界上任何字符的存储都需要4个字节

字节是什么?

比特是什么?

  • 计算机存储信息的最小单位,称之为位(bit)
  • 也就是二进制的一个0或者1叫一位​

上面说完了MySQL,但是Java里面的默认编码方式是什么呢?

java采用unicode,2个字节(16位)来表示一个字符

String.getBytes(encoding)方法是获取指定编码的byte数组表示

通常一个汉字在gbk/gb2312是2个字节,utf-8是3个字节。

如果不指定encoding则取系统默认的encoding。但是可以更改​

  public static void main(String[] args) throws UnsupportedEncodingException {
        String str = "琬";
        System.out.println("str:"+str.length());
        System.out.println("unicode:"+str.getBytes("unicode").length);
        System.out.println("utf-8:"+str.getBytes("utf-8").length);
        //其实每页所谓的系统默认不默认,编码方式都可以改的
        //你网上搜索IDEA更改默认编码方式,一大堆,所以这里默认的是IDEA默认的,不是Java默认的
        System.out.println("系统默认:"+str.getBytes().length);

    }

输出结果:
str:1
unicode:4
utf-8:3
系统默认:3

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL数据库用户权限管理

    MySQL数据库用户权限管理

    这篇文章主要介绍了MySQL数据库用户权限管理,文章主要内容就是在不同的项目中,给不同的角色(开发者)不同的操作权限,保证数据库数据的安全,需要的朋友可以参考一下
    2022-06-06
  • Mysql8.0不存在mysql.proc表的解决

    Mysql8.0不存在mysql.proc表的解决

    MySQL 8.0中官方移除了proc表,MySQL 5.7版本中还是存在proc表的,本文就介绍MySQL 8.0的替代方案,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Mysql 日期时间 DATE_FORMAT(date,format)

    Mysql 日期时间 DATE_FORMAT(date,format)

    Mysql 日期时间 DATE_FORMAT(date,format) ,需要的朋友可以参考下。
    2010-12-12
  • mysql的group by使用及多字段分组

    mysql的group by使用及多字段分组

    Group By是一种SQL查询语句,常用于根据一个或多个列对查询结果进行分组,本文主要介绍了mysql的group by使用及多字段分组,感兴趣的可以了解一下
    2023-09-09
  • MySQL修改数据表存储引擎的3种方法介绍

    MySQL修改数据表存储引擎的3种方法介绍

    这篇文章主要介绍了MySQL修改数据表存储引擎的3种方法介绍,分别是直接修改、导出导入、创建插入3种方法,需要的朋友可以参考下
    2014-07-07
  • MySQL Workbench中的权限设置不生效

    MySQL Workbench中的权限设置不生效

    MySQL账号即使只被授予特定数据库权限,仍可能因拥有全局权限而查看所有数据库,本文分析该现象成因,提供排查方法,并给出三种解决方案,感兴趣的可以了解一下
    2026-04-04
  • MySql索引和事务定义到使用全面涵盖

    MySql索引和事务定义到使用全面涵盖

    这篇文章主要介绍了MySQL数据库索引事务,索引是为了加速对表中数据行的检索而创建的一种分散的存储结;事物是属于计算机中一个很广泛的概念,一般是指要做的或所做的事情,下面我们就一起进入文章了解具体内容吧
    2022-07-07
  • MySQL的常见存储引擎介绍与参数设置调优

    MySQL的常见存储引擎介绍与参数设置调优

    这篇文章主要介绍了MySQL的常见存储引擎介绍与参数设置调优,需要的朋友可以参考下
    2018-03-03
  • 在MySQL中分析平均响应时间最长的SQL的六种方法

    在MySQL中分析平均响应时间最长的SQL的六种方法

    这篇文章主要介绍了在MySQL中分析平均响应时间最长的SQL的六种方法,主要方法包括使用PerformanceSchema、SysSchema、慢查询日志、详细性能分析、按模式分类、实时监控和快照对比,推荐结合使用,需要的朋友可以参考下
    2025-10-10
  • 浅谈mysql返回Boolean类型的几种情况

    浅谈mysql返回Boolean类型的几种情况

    这篇文章主要介绍了mysql返回Boolean类型的几种情况,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论