当前位置: 代码网 > it编程>数据库>Mysql > MySQL查询表结构以及varchar和char的区别与说明

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

2025年10月25日 Mysql 我要评论
mysql 查看设计时的表结构desc 表名称 ;show create table 表名称 ;mysql查询当前字段,所有列的长度select length(title) from nx_blogt

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com