MYSQL不小心CTRL+C的处理 及 varchar字段类型最多可存储多少字节内容?65535?65533?65532

一、MYSQL命令行下取消命令执行的小功能-不要一不小心CTRL+C了

    在LINUX上输入了堆字母后终于连接上了MYSQL,但在输入MYSQL命令的时候发现自己输入错了,这时一不小心使用了Linux命令里经常使用的CTRL+C快捷键,于是悲剧的表情立马展现在你的脸上了。当然实际你可以通过回删删除一堆的字母来达到目的,但肯定的是那是一个很无味的枯燥的活。其实是有方法来处理这样的情况的:

    记住命令:c (注意没有分号)

    使用c要注意两点:一是前面的命令行里不要有命令结束符号(默认是分号),二是c命令一定是要重启一行。如下,在一条MYSQL之后(未输入分号前)另起一行输入c,则此条命令不行执行,并且会重新进入到MYSQL命令行模式。

mysql> select * from fw_city where city_id <10 and city_status = 1       
    -> c
mysql> select * from fw_city where city_id <10 and city_status = 1
    -> p
--------------
select * from fw_city where city_id <10 and city_status = 1
--------------

     上面的示例中输入了一个p,p的作用是先把这个MYSQL以完全字符串的形式(不带有MYSQL命令箭头)打印出来,以方便我们后面利用。MYSQL还有其它很多的命令,附表如下:

命令行命令多行编辑等效命令说明
?(\?)和`help'一样,会在命令行下操作的人都应该清楚这个东东的重要性。
clear(\c)清理当前输入的语句,在多行编辑时,需要中途退出,在回车后,输入c试试。
connect(\r)重新连接到数据库服务器,可选参数db和host。
delimiter(\d)设置语句的定界符。
ego(\G)发送命令到MySQL服务器,并将结果列纵向显示。(译注:可参看Mitchell的上一篇求整型的最大值中的用法)
exit(\q)退出MySQL,和quit的作用一样。
go(\g)将命令发送到MySQL服务器。
help(\h)显示帮助。
notee(\t)不要写入外部文件。
print(\p)打印当前的命令。
prompt(\R)改变你mysql的提示。
quit(\q)退出mysql。
rehash(\#)重建已经完成的hash.
source(\.)执行SQL脚本文件。需要一个文件名作为参数。
status(\s)从服务器获取状态信息。
tee(\T)设置外部文件[to_outfile]. 所有的信息将附加到给定的外部文件中。
use(\u)使用另外一个数据库,需要database的名称作为惨呼。
charset(\C)切换到另外的字符集。 可能在处理多字节字符集binlog的时候需要。
warnings(\W)在每个语句后面显示警告。
nowarning(\w)不要在每个语句后面显示警告。

 二、mysql的varchar字段类型最多可存储多少字节内容?65535?65533?65532

    mysql的varchar字段类型最多可存储多少字节内容?

    网上有人写了一些答案,但我多看了几篇文章,最后感觉得网上很多人写的也不对。因为有很多种情况,并非一个655**就完事。

    第一:varchar最多可存储多少字节内容和MYSQL的行采用什么格式存储有关。有一种叫格式是COMPACT,compact格式首部是一个非NULL的变长字段长度数据,当存储数据的长度小于255字节,用1字节表示,若大于255个字节。用2个字节表示,mysql个行空间最大值65535。所以varchar最多也就能存65533个字节,但还未完,COMPACT格式还需要存放另外还有一个信息:NULL标志位,该位指示了该行是否有NULL值,如果没有的话就是65533,如果有允许为null的字段,此时就是65532。不同的行存储格式的前面的数据意义规划是不一样的,比如其它的行存储格式:redundant。

    第二:采用什么存储格式是存储引擎有关。innodb和myisam就不一样,InnoDB行格式分两种(COMPACT和redundant)默觉是COMPACT compact存储格式;而myisam的存储格式有:fixed/dynamic/compressed;默认是fixed存储格式。这些不同的存储格式。网上算的这些65533/65532长度基本都是对Innodb引擎的长度的测试值。

    第三:不一样的情况下还要考虑的事情:比如Innodb引擎,本身行存储格式中还有两个隐藏列,事务ID(6字节),会滚指针列(7字节)这些是否会占用行空间我也未测试,即便如此除了这些明确的数据外,还有如果INNODB表未定义Primay key,那么每行会自动添加一个6字节的rowid数据,又会占用空间。

    综上:mysql的varchar字段类型最多可存储多少字节内容?这些行存储格式我也未去试,但也许相对其它的存储格式,compact格式或许其它信息占用的空间最少,于是留出了最多的空间存储数据。那可以说在所有的行存储格式中最多可存储65533个。但具体到每一个存储引擎,及其使用的行存储格式,还有其各列的设置及表设置,就各有各的最大值了。

  • 55
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 在 MySQL 中,varchar(64) 类型字段存储长度为 10 的英文字母会占用 10 个字节的空间。需要注意的是,额外的一些字节用于存储字符串的长度信息。因此,实际空间使用量可能略微高于 10 字节。 ### 回答2: 在MySQL中,字段类型varchar(64)表示该字段的长度为最多64个字符。对于英文字母来说,一个字符占用一个字节的空间。因此,如果将长度为10的英文字母存入该字段中,占用的空间为10个字节。这是因为每个英文字母占用一个字节的空间。 ### 回答3: MySQL字段类型varchar(64)存入长度为10的英文字母占用10个字节存储空间。 varchar是一种可变长度的字符类型,它在存储时只占用实际文本长度所需要的空间,而不是固定长度。在MySQL中,每个字符占用一个字节存储空间,加上一个字节的指针来记录实际长度。 在这种情况下,假设我们将一个长度为10的英文字母"abcdefghij"存入varchar(64)字段中,那么它实际上只需要占用10个字节存储空间。因为每个字符只需要1个字节,而长度为10的字符串正好是10个字节。 值得注意的是,如果该字段存储的是中文字符或其他占用多个字节的字符,那么不同的字符将占用不同的存储空间。例如,如果该字段存储的是长度为10的中文字符,那么它将占用20个字节存储空间,因为每个中文字符通常需要占用2个字节存储空间。 综上所述,MySQL字段类型varchar(64)存入长度为10的英文字母占用10个字节存储空间。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值