mysql 创建表 varchar和char_MySQL查询表结构以及varchar和char的区别

MySQL 查看设计时的表结构

desc 表名称 ;

show create table 表名称 ;

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

SELECT LENGTH(title) FROM nx_blog

title是某一列 nx_blog是表名

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

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里面的默认编码方式是什么呢?

1. 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值