概述:

  MySQL有许多实用的技巧,利用这些技巧能提高工作的效率,减少一些不必要的麻烦。以下是几个我在MySQL日常维护从常用的技巧。

一、prompt 命令

功能:设置mysql客户端提示符
说明:默认使用mysql命令行登录MySQL服务器后只会有[mysql>]的提示符,利用prompt命令则可以修改默认提示符,有利于数据库的维护,也能有效的防止误操作的发生。
用法:可在配置文件中配置,也可在命令行手动设定,写法有些许不同,详细参数说明如下,也可访问官方文档查看细节,链接如下:
http://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html 详细选项说明:(红色为常用选项)
Option Description
\C The current connection identifier (MySQL 5.7.6 and up)
\c A counter that increments for each statement you issue
\D The full current date
\d The default database
\h The server host
\l The current delimiter
\m Minutes of the current time
\n A newline character
\O The current month in three-letter format (Jan, Feb, …)
\o The current month in numeric format
\P am/pm
\p The current TCP/IP port or socket file
\R The current time, in 24-hour military time (0–23)
\r The current time, standard 12-hour time (1–12)
\S Semicolon
\s Seconds of the current time
\t A tab character
\U

Your full user_name@host_name account name

\u Your user name
\v The server version
\w The current day of the week in three-letter format (Mon, Tue, …)
\Y The current year, four digits
\y The current year, two digits
\_ A space
A space (a space follows the backslash)
\' Single quote
\" Double quote
\\ A literal “\” backslash character
\x

x, for any “x” not listed above

以下为配置示例:
1、在my.cnf配置文件[client]部分中增加以下配置
prompt="[\\r:\\m:\\s](\\U)[\\d] > " -- 在配置文件中配置都需要用\对配置的参数进行转义
[root@manager ~]# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.7.10-log MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. [03:11:57](root@localhost)[(none)] >  -- 显示时间 + 登录用户 + 当前使用的数据库(未使用则为none)
[03:15:40](root@localhost)[test] >
2、在mysql客户端内直接配置
mysql>prompt [\r:\m:\s](\U)[\d] >    
PROMPT set to '[\r:\m:\s](\U)[\d] >'
[03:22:31](root@localhost)[(none)] > -- 显示时间 + 登录用户 + 当前使用的数据库
[03:22:31](root@localhost)[(none)] >prompt (\U)[\d] >
PROMPT set to '(\U)[\d] >'
(root@localhost)[(none)] > -- 只显示 登录用户 + 当前使用的数据库
 

二、tee/notee命令

功能:tee实现将命令行中的输入输出结果保存到文本文件中,使用该命令能方便的将命令进行日志记录。
用法:tee /tmp/command.log
以下为使用示例:
[::](root@localhost)[(none)] > tee /tmp/command.log    -- 设置将输出的结果保存到文件中
Logging to file '/tmp/command.log'
[::](root@localhost)[(none)] > show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| paralleldb |
| performance_schema |
| web |
+--------------------+
rows in set (0.00 sec) [::](root@localhost)[(none)] > system cat /tmp/command.log -- 通过system 命令查看系统文件内容与数据库中内容一致
[::](root@localhost)[(none)] > show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| paralleldb |
| performance_schema |
| web |
+--------------------+
rows in set (0.00 sec)

[03:46:55](root@localhost)[(none)] > notee         -- 使用notee可结束文件的输出
Outfile disabled.

三、pager less/pager命令

功能:实现返回结果页面的分页显示,类似于Linux less 命令,可对分页进行上下翻页,搜索等操作,对返回结果过长很方便,如使用show engine innodb status命令时。
用法:
pager less -i 表示设置页面分页显示,-i表示不区分大小写,在搜索时十分实用。
pager       直接输入pager表示恢复默认值,也就是不分页显示。
示例:略,可自行测试效果

四、concat函数

功能:concat函数能对查询返回的结果进行拼接
用法:concat(s1,s2,...sn)
常用场景:批量生成对数据库的相关修改语句或导出语句
以下为具体示例: 1、批量生成将test数据库中所有表导出为.txt或csv文本的命令
-- 注意需要对单引号用反斜杠(\)进行转义
[04:06:57](root@localhost)[(none)] > select concat('select * into outfile \'/tmp/',table_name,'.csv\' from ',table_schema,'.',table_name,';') 
from information_schema.tables where  table_schema='test';
+---------------------------------------------------------------------------------------------------+
| concat('select * into outfile \'/tmp/',table_name,'.csv\' from ',table_schema,'.',table_name,';') |
+---------------------------------------------------------------------------------------------------+
| select * into outfile '/tmp/address.csv' from test.address; |
| select * into outfile '/tmp/address1.csv' from test.address1; |
| select * into outfile '/tmp/clone_t.csv' from test.clone_t; |
| select * into outfile '/tmp/lock_test.csv' from test.lock_test; |
| select * into outfile '/tmp/query_history.csv' from test.query_history; |
| select * into outfile '/tmp/query_review.csv' from test.query_review; |
| select * into outfile '/tmp/ram.csv' from test.ram; |
| select * into outfile '/tmp/t.csv' from test.t; |
| select * into outfile '/tmp/t1.csv' from test.t1; |
| select * into outfile '/tmp/t2.csv' from test.t2; |
| select * into outfile '/tmp/t3.csv' from test.t3; |
| select * into outfile '/tmp/z.csv' from test.z; |
+---------------------------------------------------------------------------------------------------+ 当需要对数据库的表进行批量操作时,通过这种方式批量生成语句能大大提高效率 2、去除结果的虚线框并将结果输出到文件中
-- 通常我们需要将生成的语句保存到一个文件中,并且运行,这时就需要配合tee命令以及mysql客户端的参数了
mysql --skip-column-names --silent (简写为 mysql -ss)能以静默方式登录MySQL服务器并不显示输出结果的虚线框
tee /tmp/export.sql     将执行的结果保存到文件中
[root@manager ~]# mysql -uroot -p -ss      -- 使用静默方式登录数据库
Enter password:
[04:18:55](root@localhost)[(none)] > tee /tmp/export.sql -- 将结果保存到外部文件中
Logging to file '/tmp/export.sql'
[04:19:04](root@localhost)[(none)] > select concat('select * into outfile \'/tmp/',table_name,'.csv\' from ',table_schema,'.',table_name,';')
from information_schema.tables where table_schema='test';
-- 可以看到输出的结果没有虚线框
select * into outfile '/tmp/address.csv' from test.address;
select * into outfile '/tmp/address1.csv' from test.address1;
select * into outfile '/tmp/clone_t.csv' from test.clone_t;
select * into outfile '/tmp/lock_test.csv' from test.lock_test;
select * into outfile '/tmp/query_history.csv' from test.query_history;
select * into outfile '/tmp/query_review.csv' from test.query_review;
select * into outfile '/tmp/ram.csv' from test.ram;
select * into outfile '/tmp/t.csv' from test.t;
select * into outfile '/tmp/t1.csv' from test.t1;
select * into outfile '/tmp/t2.csv' from test.t2;
select * into outfile '/tmp/t3.csv' from test.t3;
select * into outfile '/tmp/z.csv' from test.z;
[04:19:08](root@localhost)[(none)] > exit -- 查看tee输出文件中的内容
[root@manager ~]# cat /tmp/export.sql
[04:19:04](root@localhost)[(none)] > select concat('select * into outfile \'/tmp/',table_name,'.csv\' from ',table_schema,'.',table_name,';') from information_schema.tables where table_schema='test';
select * into outfile '/tmp/address.csv' from test.address;
select * into outfile '/tmp/address1.csv' from test.address1;
select * into outfile '/tmp/clone_t.csv' from test.clone_t;
select * into outfile '/tmp/lock_test.csv' from test.lock_test;
select * into outfile '/tmp/query_history.csv' from test.query_history;
select * into outfile '/tmp/query_review.csv' from test.query_review;
select * into outfile '/tmp/ram.csv' from test.ram;
select * into outfile '/tmp/t.csv' from test.t;
select * into outfile '/tmp/t1.csv' from test.t1;
select * into outfile '/tmp/t2.csv' from test.t2;
select * into outfile '/tmp/t3.csv' from test.t3;
select * into outfile '/tmp/z.csv' from test.z;
[04:19:08](root@localhost)[(none)] > exit
-- 文件内容记录了所有的操作及输出的结果,可以编辑文件,将文件头的查询语句及文件尾的退出语句删除,则完成了一个将数据库导出成文本文件的的脚本。


MySQL 实用技巧的更多相关文章

  1. MySQL实用技巧

    自增Id重新计数  TRUNCATE TABLE 表名 获取最后插入数据的ID   SELECT LAST_INSERT_ID(); 使用"id1,id2,id3"当参数  FIN ...

  2. PowerDesigner实用技巧小结(3)

    PowerDesigner实用技巧小结(3) PowerDesigner 技巧小结 sqlserver数据库databasevbscriptsqldomain 1.PowerDesigner 使用 M ...

  3. .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中

    目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...

  4. Notepad++ 实用技巧

    Notepad++是一款开源的文本编辑器,功能强大.很适合用于编辑.注释代码.它支持绝大部分主流的编程语言. 本文主要列举了本人在实际使用中遇到的一些技巧. 快捷键 自定义快捷键 首先,需要知道的是: ...

  5. javascript实用技巧、javascript高级技巧

    字号+作者:H5之家 来源:H5之家 2016-10-31 11:00 我要评论( ) 三零网提供网络编程. JavaScript 的技术文章javascript实用技巧.javascript高级技巧 ...

  6. 您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧

    转载至: http://www.cnblogs.com/Imaigne/p/4153397.html 您的项目引用了最新实体框架:但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mys ...

  7. iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

  8. iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示

    iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示 本文介绍其简单使用: 第一步:在本地建立一个访问的服务端.  打开本地终端,在本地新建一个文件夹,在该文件夹中存放测试的html页面.   ...

  9. iOS开发实用技巧—项目新特性页面的处理

    iOS开发实用技巧篇—项目新特性页面的处理 说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理. 代码示例: 新建一个专门的处理新特性 ...

随机推荐

  1. sql server 跨数据库调用存储过程

    A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( ) =null , ) =null ) AS BEGIN select N'A' AS a , N'B' ...

  2. HDU 5773 The All-purpose Zero(O(nlgn)求LIS)

    http://acm.hdu.edu.cn/showproblem.php?pid=5773 题意: 求LIS,其中的0可以看做任何数. 思路: 因为0可以看做任何数,所以我们可以先不管0,先求一遍L ...

  3. 关于Google play无法下载应用

    查看网络连接是否正常 查看账号信息 以上两种都没有问题,那可能是缓存的问题,去应用里面清楚缓存以后,重启手机. 如果还是不行,就在应用程序中 清除全部数据,重启手机,这样就可以了. ps:不管你行不行 ...

  4. 无法启动此程序,因为计算机丢失MSVCP120.dll

    这种错误是由于未安装** vcredist **引起的(而且版本是 2013版):https://www.microsoft.com/zh-CN/download/details.aspx?id=40 ...

  5. 【三小时学会Kubernetes!(三) 】Service实践

    服务Service Kubernetes 服务资源可以作为一组提供相同服务的 Pod 的入口.这个资源肩负发现服务和平衡 Pod 之间负荷的重任,如图 16 所示. 图16:Kubernetes 服务 ...

  6. python的os.urandom 的用途

    Python中os.urandom(n)的作用 随机产生n个字节(0-255)的字符串,可以作为随机加密key使用~ >>> index = os.urandom(2) >&g ...

  7. Mysql5.7基于日志转为基于事务主从复制

    将基于日志的复制变更为基于事务的复制 mysql版本要高于5.7.6 gtid_mode要设为off 处理步骤 详细步骤 1.查看主从mysql版本是否高于5.7.6 show variables l ...

  8. 玲珑oj 1121 思维

    1121 - Reverse the lights Time Limit:2s Memory Limit:256MByte Submissions:376Solved:111 DESCRIPTION ...

  9. Python 序列化pickle/cPickle模块整理

    Python序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人.你会怎么做?这取决于你想要怎么保存,怎么重用,发送给谁.很多游戏允许你在退出的时候保存进度,然后你再 ...

  10. linux 字符串查找

    获取指定目录文件名包含指定字符的文件,然后遍历是否有包含特定字符串,有的话打出文件名 #!/bin/sh COMMAND=`find /data/home/ftp/data/20/201704/27/ ...