一、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) | 不要写入外部文件。 |
(\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个。但具体到每一个存储引擎,及其使用的行存储格式,还有其各列的设置及表设置,就各有各的最大值了。