视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Mysql命令行技巧汇总
2020-11-09 13:04:53 责编:小采
文档

1) pager pager真是一个很神奇的东西,它可以控制mysql的输出。默认值是stdout,直接输出。艾,貌似讲不清楚啊,还是看几个例子吧: mysql SELECT mobile FROM profile WHERE mobile!='';+-------------+| mobile |+-------------+| 13719001986 || 12321423

1) pager

pager真是一个很神奇的东西,它可以控制mysql的输出。默认值是stdout,直接输出。 艾,貌似讲不清楚啊,还是看几个例子吧:

mysql> SELECT mobile FROM profile WHERE mobile!='';
+-------------+
| mobile |
+-------------+
| 13719001986 |
| 123214234 |
+-------------+
2 ROWS IN SET (0.00 sec)
?
mysql> 
mysql> pager grep "137"
PAGER SET TO 'grep "137"'
mysql> 
mysql> SELECT mobile FROM profile WHERE mobile!='';
| 13719001986 |
2 ROWS IN SET (0.00 sec)
?
mysql> pager
DEFAULT pager wasn't set, using stdout

相当于在输出之后附加了 | grep “137″ ,是不是很震憾。 不止是grep, 所有linux上面的命令都可以的,自由发挥吧。 比如select很多行数据,就可以设置pager more,一页一页地看。 再比如要比较二次select的结果是否相同,可以设置pager md5sum,实在是太赞了。 再比如,只想看select语句运行需要多长时间,而不想看到select出来的结果集,可以使用
pager cat > /dev/null
再比如,看一下processlist里面Sleep的线程有多少,可以使用
pager grep Sleep | wc -l

2) edit

肯定有人会有这样的想法:在mysql命令行里面编辑一个复杂点的sql语句实在是太费神了,光标只能左右移动,要是有个vi就好多啦。 其实真的有…. mysql> edit 就这么简单,谁用谁知道。

3) tee

如果想记录下来您所有的操作及输出,除了屏幕录象软件之外,还有这么一个神奇的东西tee。

mysql> tee /tmp/h.log
Logging TO file '/tmp/h.log'
mysql> 
mysql> 
mysql> SHOW engine innodb STATUS;
.........
mysql> exit

所有的一切都被记录在 /tmp/h.log文件中了。

4) prompt

快要去吃午饭了, 这时如果你又想看一条UPDATE语句究竟会执行多久,怎么办? 等下去就要饿死啦。 修改一下mysql的prompt提示符,轻松解决这个问题:

mysql> prompt \r:\m:\s\P>\_
PROMPT SET TO '\r:\m:\s\P>\_'
11:30:10am> 
11:30:11am> 
11:30:11am> 
11:30:12am> 
11:30:12am> 
11:30:12am> 
11:30:12am>

输入UPDATE语句,回车走人。 吃完饭回来就可以看到执行结束的时间了。

5) ctrl+z

作为一个dba,每天都要在命令行中登陆mysql,运行完sql语句,随手就logout了,(快捷键是ctrl+d), 过一段时间又要login,又随手logout…… 重复重复再重复,不仅浪费时间,而且输入mysql root的复杂密码也会烦死个人。 这个logout的坏习惯,一定要改掉。。,哥已经改掉了。

mysql> 
mysql> 
mysql> SELECT now();
+---------------------+
| now() |
+---------------------+
| 2012-12-25 15:33:16 |
+---------------------+
1 ROW IN SET (0.00 sec)
?
mysql> 
不要按ctrl+d了, 换成Ctrl+z , 暂停任务。
[1]+ Stopped /home/mysql/bin/mysql -uroot -p
[MODIFY@www 8p]$ 
[MODIFY@www 8p]$ 
[MODIFY@www 8p]$ 
需要用到mysql的时候,
输入fg回车:
[MODIFY@www 8p]$ fg
/home/mysql/bin/mysql -uroot -p
mysql> 
mysql>

是不是很爽。。

6) html输出

-H

[root@www ~]# /home/mysql/bin/mysql -uroot -p -H -e "select host from mysql.user";
Enter password: 
hostlocalhostlocalhostlocalhostlocalhostlocalhostlocalhost[root@www ~]#

7) 最简化输出

如果只想要结果,不要那些边框,字段名称之类的东西,可以使用 –skip-line-numbers –skip-column-names

[root@www ~]# /home/mysql/bin/mysql -uroot -p -e "select count(*) from shipincon.share where add_time >= current_date()"; 
+----------+
| COUNT(*) |
+----------+
| 850 |
+----------+
?
[root@www ~]# /home/mysql/bin/mysql --silent --skip-line-numbers --skip-column-names -uroot -p -e "select count(*) from shipincon.share where add_time >= current_date()";
850

8) help

在不方便上网查找mysql文档的情况下,help还是很靠谱的。

mysql> help string functions;
You asked FOR help about help category: "String Functions"
FOR more information, TYPE 'help ', WHERE IS one OF the following
topics:
 ASCII
 BIN
 BINARY OPERATOR
 BIT_LENGTH
 CAST
 CHAR FUNCTION
 CHARACTER_LENGTH
 CHAR_LENGTH
 CONCAT
 CONCAT_WS
 CONVERT
 ELT
 EXPORT_SET
 EXTRACTVALUE
 FIELD
 FIND_IN_SET
 FORMAT
 HEX
........
?
mysql> help instr;
Name: 'INSTR'
Description:
Syntax:
INSTR(str,substr)
?
RETURNS the POSITION OF the FIRST occurrence OF SUBSTRING substr IN
string str. This IS the same AS the two-argument form OF LOCATE(),
EXCEPT that the ORDER OF the arguments IS reversed.
?
URL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html
?
Examples:
mysql> SELECT INSTR('foobarbar', 'bar');
 -> 4
mysql> SELECT INSTR('xbar', 'foobar');
 -> 0

下载本文
显示全文
专题