按照隐藏功能的悠久传统,让我们列出 MySQL 中的隐藏功能。
请每个答案添加一个特征。
另请参阅:
Linux 的隐藏功能
PowerShell 的隐藏功能
Oracle 数据库的隐藏功能
Windows 2008 的隐藏功能
Solaris/OpenSolaris 的隐藏功能
SQL Server 的隐藏功能
IIS 的隐藏功能(6.0 / 7.0)
答案1
一个经常不使用但更冗长的
很方便,但不如 awesome非企业查询分析器- 像这样启用
mysql> 设置分析=1; 查询成功,影响 0 行(0.00 秒)
这两个是用于填充配置文件表的垃圾查询,
mysql>从_test.customers中选择*; 错误 1146 (42S02):表 '_test.customers' 不存在 mysql> 从 test.customers 中选择 * 限制 0; 空集(0.00 秒)
获取所有查询的列表及其持续时间
mysql>显示配置文件; +----------+------------+-------------------------------+ | Query_ID | 持续时间 | 查询 | +----------+------------+-------------------------------+ | 1 | 0.00013400 | 从 _test.customers 中选择 * | | 2 | 0.01546500 | 从测试.客户中选择*| +----------+------------+-------------------------------+
上次查询的显示信息只是“显示个人资料” - 或者您可以指定查询
mysql>显示查询 2 的配置文件; +----------------------+----------+ | 状态 | 持续时间 | +----------------------+----------+ | 开始 | 0.000053 | | 检查权限 | 0.000007 | | 打开表 | 0.000014 | | 系统锁定 | 0.000006 | | 表锁 | 0.000008 | | 初始化 | 0.000065 | | 优化 | 0.000003 | | 正在执行 | 0.000201 | | 结束 | 0.000003 | | 查询结束 | 0.000002 | | 释放物品 | 0.000020 | | 记录慢速查询 | 0.000002 | | 清理 | 0.000004 | +----------------------+----------+ 共 13 行 (0.00 秒)
您还可以请求特定信息,例如 CPU、BLOCK IO 和 SWAPS 等(全部在手册页上)
mysql> 显示查询 2 的 CPU 配置文件; +----------------------+----------+----------+------------+ | 状态 | 持续时间 | CPU_用户 | CPU_系统 | +----------------------+----------+----------+------------+ | 开始 | 0.000056 | 0.001000 | 0.000000 | | 检查权限 | 0.000007 | 0.000000 | 0.000000 | | 打开表格 | 0.000010 | 0.000000 | 0.000000 | | 系统锁 | 0.000005 | 0.000000 | 0.000000 | | 表锁 | 0.000007 | 0.000000 | 0.000000 | | 初始化 | 0.000059 | 0.000000 | 0.000000 | | 优化 | 0.000003 | 0.000000 | 0.000000 | | 统计 | 0.015022 | 0.000000 | 0.000000 | | 准备 | 0.000014 | 0.001000 | 0.000000 | | 正在执行 | 0.000004 | 0.000000 | 0.000000 | | 发送数据 | 0.000245 | 0.000000 | 0.000000 | | 结束 | 0.000004 | 0.000000 | 0.000000 | | 查询结束 | 0.000002 | 0.000000 | 0.000000 | | 释放物品 | 0.000021 | 0.000000 | 0.000000 | | 记录慢速查询 | 0.000002 | 0.000000 | 0.000000 | | 清理 | 0.000004 | 0.000000 | 0.000000 | +----------------------+----------+----------+------------+ 共 16 行 (0.00 秒)
不要忘记随后禁用它,因为日志记录会增加开销。
mysql> 设置分析=0; 查询成功,影响 0 行(0.00 秒)
答案2
一些MySQL 命令并不总是被人们熟知或记住的。
将结果集方向更改为垂直以便于阅读和粘贴。
mysql> SELECT CURDATE(), CURTIME()\G
*************************** 1. row ***************************
CURDATE(): 2009-06-26
CURTIME(): 12:10:37
取消当前正在输入的查询,但将其保留在历史记录中。
mysql> SELECT CURDATE(), CURTIME()\c
mysql>
使用您最喜欢的 $EDITOR 编辑查询或最后一个查询(分别)。
mysql> SELECT CURDATE(), CURTIME()\e
mysql> \e
清除控制台的输出。
mysql> \! clear
通过 MD5 哈希比较结果集。
mysql> pager md5sum -
PAGER set to 'md5sum -'
mysql> SELECT CURDATE(), CURTIME();
d24e22e4e2d33dfda9f01ba934b7676a -
mysql> nopager
PAGER set to stdout
更改你的提示。
mysql> prompt (\u@\h) [\d]>\_
PROMPT set to '(\u@\h) [\d]>\_'
(dan@localhost) [test]>
在命令历史记录中搜索给定的字符串(如 Bash)。
开始输入搜索词并重复 ^R 以循环显示结果。
^R
(reverse-i-search)`DATE': SELECT CURDATE(), CURTIME();
答案3
我学到的一些技巧可能对某些人有用:
要运行先前保存的文件:
source filename # Alternatively you can enter "\\. filename".
使用“\!”来访问 shell 命令。例如:
\\! ls c*sql # To list all your SQL files in directory starting with "c".
因此,如果您想将语句写入文件(不使用编辑器选项),您可以输入:
\\! echo 'select * from emp where job ="salesman" ' > test2.sql # Editor option seems easier to me though!
如果你输入
\\T filename
然后,您的语句和查询结果将被定向/打印到您指定的文件名。使用\\t
关闭此功能。
使用“;”而不是“;”来终止查询,\\G
以便以行格式而不是列格式显示输出。
不要排除在 SHOW 语句中使用 Where...LIKE 子句。例如:
SHOW STATUS LIKE '%cache%';
最后,要找到 MySQL 数据目录的位置而不查看文件,my.cnf
请使用:
SHOW VARIABLES LIKE 'datadir';
答案4
实际上记录,但非常烦人:自动日期转换的数据不正确。
在 MySQL 5.0.2 之前,MySQL 会容忍非法或不正确的数据值,并将它们强制转换为合法值以供数据输入。在 MySQL 5.0.2 及更高版本中,这仍然是默认行为,但您可以更改服务器 SQL 模式以选择更传统的错误值处理方式,以便服务器拒绝这些错误值并中止出现这些错误的语句。
有时您会“幸运”,因为 MySQL 不会将输入调整为附近的有效日期,而是将其存储为根据0000-00-00
定义无效的日期。但是,即便如此,您可能也希望 MySQL 失败,而不是默默地为您存储此值。