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
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

林戈的IT生涯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值