将MySQL help contents的内容有层次的输出方法推荐_Mysql

经常会遇到这种情况,在一个不能上网的环境通过MySQL客户端登录数据库,想执行一个操作,却忘了操作的具体语法,各种不方便。

其实,MySQL数据库内置了帮助文档,通过help contents即可查看。

如下所示:

可见,该文档涵盖了数据库操作的大部分主题。

文档分为以上几大类,每个大类又包括更小粒度的类,类最后有具体的topic组成。

那么这之间的层级关系如何呢?

昨天想执行一个操作

mysql> backup table emp to '/tmp/mysqlbackup';

因为这个backup操作以前没有使用过,准备用MySQL自带的帮助文档来查看具体的用法。本来这个命令所属的类别就有点模糊,譬如Administration和Utility都有可能。最后找了一通,还是没有找到。

想了想,这样查看帮助文档确实没有太大的效率,如果知道这之间的层级关系就好办了。

于是,动手写了个脚本,可直观的显示帮助文档中大类与小类,小类与topic之间的关系。

具体如下:

#!/bin/bash
#所有操作都是在/tmp/test中操作,因为中间新建了很多临时文件,方便后续的删除。
mkdir /tmp/test
#获取上图的内容重定向到/tmp/test/test.txt文件中
mysql -uroot -p123456 -e "help contents " > /tmp/test/test.txt
#定义输出的格式,\t输出tab,\b相当于backspace一个空格,参考了tree命令的输出方式。
format="|\t\b"
#删除第一行和最后一行
sed -i '1d;$d' /tmp/test/test.txt
cd /tmp/test
#引入number的作用在于后续格式的输出
number=0

#后续用了递归调用,这里定义的是函数
function recursive(){
filename=$1
number=$[$number+1]

while read line
do
#name要做为文件名,譬如Account Management,利用tr函数是去掉字符中间的空格
name=`echo $line|tr -d [:blank:]`
#输出每个分类中的内容,可能是topic,可能是categories
mysql -uroot -p123456 -e "help $line" > $name
#取输出文件的第一行的内容,如果是具体的topic,则第一行的内容为:Name: 'ALTER USER',不然就还是categories,需要递归调用
firstline=`head -1 $name`
#整个逻辑比较复杂的有两类,一个是Numeric Functions,另一个是PLUGINS。先说PLUGINS,一般对于一个具体的topic,它的输出类似于Name: 'ALTER USER',而PLUGINS
#对应的输出却是Name: 'SHOW PLUGINS',所以下面的判断语句多了一个"$firstline" = "Name: 'SHOW PLUGINS'",针对的即是PLUGINS。另一比较复杂的是Numeric Functions
#它下面的topic有除号“/”,而这基本上是不能作为文件名的。所以在下面的判断逻辑中,如果遇到Numeric Functions,就直接打印出该类中的topic,而不进行Name: 'ALTER USER'这样的判断
if [ "$firstline" = "Name: '$line'" -o "$firstline" = "Name: 'SHOW PLUGINS'" ];then

for i in `seq $[$number-1]`
do
 echo -ne $format
done
echo "├── $line"

else
#如果不是topic,则代表是categories,可递归进行判断,唯一的例外就是Numeric Functions
#下面的echo "├── $line"打印出的是categories的名字
for i in `seq $[$number-1]`
do
 echo -ne $format
done
echo "├── $line"

#遇到Numeric Functions,就直接打印出该类中的topic
if [ "$line" = "Numeric Functions" ];then
sed -i '1d;$d' $name
while read functions
do
for i in `seq $number`
do
 echo -ne $format
done
echo "├── $functions"
done < $name

else
#其它的categories,递归调用该函数进行判断。
sed -i '1d;$d' $name
recursive $name
number=$[$number-1]

fi
fi
done < $filename
}

#主函数
recursive /tmp/test/test.txt
#处理完毕,删除文件夹
rm -rf /tmp/test

因MySQL客户端登录数据库的时候,直接指定了密码,如果直接执行的话,会输出很多“Warning: Using a password on the command line interface can be insecure.”,

可重定向到一个文件

# sh 2.sh > 1.txt

最后文件中的结果如下:

├── Account Management
|   ├── ALTER USER
|   ├── CREATE USER
|   ├── DROP USER
|   ├── GRANT
|   ├── RENAME USER
|   ├── REVOKE
|   ├── SET PASSWORD
├── Administration
|   ├── BINLOG
|   ├── CACHE INDEX
|   ├── FLUSH
|   ├── FLUSH QUERY CACHE
|   ├── HELP COMMAND
|   ├── KILL
|   ├── LOAD INDEX
|   ├── RESET
|   ├── SET
|   ├── SHOW
|   ├── SHOW AUTHORS
|   ├── SHOW BINARY LOGS
|   ├── SHOW BINLOG EVENTS
|   ├── SHOW CHARACTER SET
|   ├── SHOW COLLATION
|   ├── SHOW COLUMNS
|   ├── SHOW CONTRIBUTORS
|   ├── SHOW CREATE DATABASE
|   ├── SHOW CREATE EVENT
|   ├── SHOW CREATE FUNCTION
|   ├── SHOW CREATE PROCEDURE
|   ├── SHOW CREATE TABLE
|   ├── SHOW CREATE TRIGGER
|   ├── SHOW CREATE VIEW
|   ├── SHOW DATABASES
|   ├── SHOW ENGINE
|   ├── SHOW ENGINES
|   ├── SHOW ERRORS
|   ├── SHOW EVENTS
|   ├── SHOW FUNCTION CODE
|   ├── SHOW FUNCTION STATUS
|   ├── SHOW GRANTS
|   ├── SHOW INDEX
|   ├── SHOW MASTER STATUS
|   ├── SHOW OPEN TABLES
|   ├── SHOW PLUGINS
|   ├── SHOW PRIVILEGES
|   ├── SHOW PROCEDURE CODE
|   ├── SHOW PROCEDURE STATUS
|   ├── SHOW PROCESSLIST
|   ├── SHOW PROFILE
|   ├── SHOW PROFILES
|   ├── SHOW RELAYLOG EVENTS
|   ├── SHOW SLAVE HOSTS
|   ├── SHOW SLAVE STATUS
|   ├── SHOW STATUS
|   ├── SHOW TABLE STATUS
|   ├── SHOW TABLES
|   ├── SHOW TRIGGERS
|   ├── SHOW VARIABLES
|   ├── SHOW WARNINGS
├── Compound Statements
|   ├── BEGIN END
|   ├── CASE STATEMENT
|   ├── CLOSE
|   ├── DECLARE CONDITION
|   ├── DECLARE CURSOR
|   ├── DECLARE HANDLER
|   ├── DECLARE VARIABLE
|   ├── FETCH
|   ├── GET DIAGNOSTICS
|   ├── IF STATEMENT
|   ├── ITERATE
|   ├── LABELS
|   ├── LEAVE
|   ├── LOOP
|   ├── OPEN
|   ├── REPEAT LOOP
|   ├── RESIGNAL
|   ├── RETURN
|   ├── SIGNAL
|   ├── WHILE
├── Data Definition
|   ├── ALTER DATABASE
|   ├── ALTER EVENT
|   ├── ALTER FUNCTION
|   ├── ALTER LOGFILE GROUP
|   ├── ALTER PROCEDURE
|   ├── ALTER SERVER
|   ├── ALTER TABLE
|   ├── ALTER TABLESPACE
|   ├── ALTER VIEW
|   ├── CONSTRAINT
|   ├── CREATE DATABASE
|   ├── CREATE EVENT
|   ├── CREATE FUNCTION
|   ├── CREATE INDEX
|   ├── CREATE LOGFILE GROUP
|   ├── CREATE PROCEDURE
|   ├── CREATE SERVER
|   ├── CREATE TABLE
|   ├── CREATE TABLESPACE
|   ├── CREATE TRIGGER
|   ├── CREATE VIEW
|   ├── DROP DATABASE
|   ├── DROP EVENT
|   ├── DROP FUNCTION
|   ├── DROP INDEX
|   ├── DROP PROCEDURE
|   ├── DROP SERVER
|   ├── DROP TABLE
|   ├── DROP TABLESPACE
|   ├── DROP TRIGGER
|   ├── DROP VIEW
|   ├── RENAME TABLE
|   ├── TRUNCATE TABLE
├── Data Manipulation
|   ├── CALL
|   ├── DELETE
|   ├── DO
|   ├── DUAL
|   ├── HANDLER
|   ├── INSERT
|   ├── INSERT DELAYED
|   ├── INSERT SELECT
|   ├── JOIN
|   ├── LOAD DATA
|   ├── LOAD XML
|   ├── REPLACE
|   ├── SELECT
|   ├── UNION
|   ├── UPDATE
├── Data Types
|   ├── AUTO_INCREMENT
|   ├── BIGINT
|   ├── BINARY
|   ├── BIT
|   ├── BLOB
|   ├── BLOB DATA TYPE
|   ├── BOOLEAN
|   ├── CHAR
|   ├── CHAR BYTE
|   ├── DATE
|   ├── DATETIME
|   ├── DEC
|   ├── DECIMAL
|   ├── DOUBLE
|   ├── DOUBLE PRECISION
|   ├── ENUM
|   ├── FLOAT
|   ├── INT
|   ├── INTEGER
|   ├── LONGBLOB
|   ├── LONGTEXT
|   ├── MEDIUMBLOB
|   ├── MEDIUMINT
|   ├── MEDIUMTEXT
|   ├── SET DATA TYPE
|   ├── SMALLINT
|   ├── TEXT
|   ├── TIME
|   ├── TIMESTAMP
|   ├── TINYBLOB
|   ├── TINYINT
|   ├── TINYTEXT
|   ├── VARBINARY
|   ├── VARCHAR
|   ├── YEAR DATA TYPE
├── Functions
|   ├── Bit Functions
|   |    ├── &
|   |    ├── <<
|   |    ├── >>
|   |    ├── BIT_COUNT
|   |    ├── ^
|   |    ├── |
|   |    ├── ~
|   ├── Comparison operators
|   |    ├── !=
|   |    ├── <
|   |    ├── <=
|   |    ├── <=>
|   |    ├── =
|   |    ├── >
|   |    ├── >=
|   |    ├── BETWEEN AND
|   |    ├── COALESCE
|   |    ├── GREATEST
|   |    ├── IN
|   |    ├── INTERVAL
|   |    ├── IS
|   |    ├── IS NOT
|   |    ├── IS NOT NULL
|   |    ├── IS NULL
|   |    ├── ISNULL
|   |    ├── LEAST
|   |    ├── NOT BETWEEN
|   |    ├── NOT IN
|   ├── Control flow functions
|   |    ├── CASE OPERATOR
|   |    ├── IF FUNCTION
|   |    ├── IFNULL
|   |    ├── NULLIF
|   ├── Date and Time Functions
|   |    ├── ADDDATE
|   |    ├── ADDTIME
|   |    ├── CONVERT_TZ
|   |    ├── CURDATE
|   |    ├── CURRENT_DATE
|   |    ├── CURRENT_TIME
|   |    ├── CURRENT_TIMESTAMP
|   |    ├── CURTIME
|   |    ├── DATE FUNCTION
|   |    ├── DATEDIFF
|   |    ├── DATE_ADD
|   |    ├── DATE_FORMAT
|   |    ├── DATE_SUB
|   |    ├── DAY
|   |    ├── DAYNAME
|   |    ├── DAYOFMONTH
|   |    ├── DAYOFWEEK
|   |    ├── DAYOFYEAR
|   |    ├── EXTRACT
|   |    ├── FROM_DAYS
|   |    ├── FROM_UNIXTIME
|   |    ├── GET_FORMAT
|   |    ├── HOUR
|   |    ├── LAST_DAY
|   |    ├── LOCALTIME
|   |    ├── LOCALTIMESTAMP
|   |    ├── MAKEDATE
|   |    ├── MAKETIME
|   |    ├── MICROSECOND
|   |    ├── MINUTE
|   |    ├── MONTH
|   |    ├── MONTHNAME
|   |    ├── NOW
|   |    ├── PERIOD_ADD
|   |    ├── PERIOD_DIFF
|   |    ├── QUARTER
|   |    ├── SECOND
|   |    ├── SEC_TO_TIME
|   |    ├── STR_TO_DATE
|   |    ├── SUBDATE
|   |    ├── SUBTIME
|   |    ├── SYSDATE
|   |    ├── TIME FUNCTION
|   |    ├── TIMEDIFF
|   |    ├── TIMESTAMP FUNCTION
|   |    ├── TIMESTAMPADD
|   |    ├── TIMESTAMPDIFF
|   |    ├── TIME_FORMAT
|   |    ├── TIME_TO_SEC
|   |    ├── TO_DAYS
|   |    ├── TO_SECONDS
|   |    ├── UNIX_TIMESTAMP
|   |    ├── UTC_DATE
|   |    ├── UTC_TIME
|   |    ├── UTC_TIMESTAMP
|   |    ├── WEEK
|   |    ├── WEEKDAY
|   |    ├── WEEKOFYEAR
|   |    ├── YEAR
|   |    ├── YEARWEEK
|   ├── Encryption Functions
|   |    ├── AES_DECRYPT
|   |    ├── AES_ENCRYPT
|   |    ├── COMPRESS
|   |    ├── DECODE
|   |    ├── DES_DECRYPT
|   |    ├── DES_ENCRYPT
|   |    ├── ENCODE
|   |    ├── ENCRYPT
|   |    ├── MD5
|   |    ├── OLD_PASSWORD
|   |    ├── PASSWORD
|   |    ├── RANDOM_BYTES
|   |    ├── SHA1
|   |    ├── SHA2
|   |    ├── UNCOMPRESS
|   |    ├── UNCOMPRESSED_LENGTH
|   |    ├── VALIDATE_PASSWORD_STRENGTH
|   ├── Information Functions
|   |    ├── BENCHMARK
|   |    ├── CHARSET
|   |    ├── COERCIBILITY
|   |    ├── COLLATION
|   |    ├── CONNECTION_ID
|   |    ├── CURRENT_USER
|   |    ├── DATABASE
|   |    ├── FOUND_ROWS
|   |    ├── LAST_INSERT_ID
|   |    ├── ROW_COUNT
|   |    ├── SCHEMA
|   |    ├── SESSION_USER
|   |    ├── SYSTEM_USER
|   |    ├── USER
|   |    ├── VERSION
|   ├── Logical operators
|   |    ├── !
|   |    ├── AND
|   |    ├── ASSIGN-EQUAL
|   |    ├── ASSIGN-VALUE
|   |    ├── OR
|   |    ├── XOR
|   ├── Miscellaneous Functions
|   |    ├── DEFAULT
|   |    ├── GET_LOCK
|   |    ├── INET6_ATON
|   |    ├── INET6_NTOA
|   |    ├── INET_ATON
|   |    ├── INET_NTOA
|   |    ├── IS_FREE_LOCK
|   |    ├── IS_IPV4
|   |    ├── IS_IPV4_COMPAT
|   |    ├── IS_IPV4_MAPPED
|   |    ├── IS_IPV6
|   |    ├── IS_USED_LOCK
|   |    ├── MASTER_POS_WAIT
|   |    ├── NAME_CONST
|   |    ├── RELEASE_LOCK
|   |    ├── SLEEP
|   |    ├── UUID
|   |    ├── UUID_SHORT
|   |    ├── VALUES
|   ├── Numeric Functions
|   |    ├── %
|   |    ├── *
|   |    ├── +
|   |    ├── - BINARY
|   |    ├── - UNARY
|   |    ├── /
|   |    ├── ABS
|   |    ├── ACOS
|   |    ├── ASIN
|   |    ├── ATAN
|   |    ├── ATAN2
|   |    ├── CEIL
|   |    ├── CEILING
|   |    ├── CONV
|   |    ├── COS
|   |    ├── COT
|   |    ├── CRC32
|   |    ├── DEGREES
|   |    ├── DIV
|   |    ├── EXP
|   |    ├── FLOOR
|   |    ├── LN
|   |    ├── LOG
|   |    ├── LOG10
|   |    ├── LOG2
|   |    ├── MOD
|   |    ├── PI
|   |    ├── POW
|   |    ├── POWER
|   |    ├── RADIANS
|   |    ├── RAND
|   |    ├── ROUND
|   |    ├── SIGN
|   |    ├── SIN
|   |    ├── SQRT
|   |    ├── TAN
|   |    ├── TRUNCATE
|   ├── String Functions
|   |    ├── 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
|   |    ├── FROM_BASE64()
|   |    ├── HEX
|   |    ├── INSERT FUNCTION
|   |    ├── INSTR
|   |    ├── LCASE
|   |    ├── LEFT
|   |    ├── LENGTH
|   |    ├── LIKE
|   |    ├── LOAD_FILE
|   |    ├── LOCATE
|   |    ├── LOWER
|   |    ├── LPAD
|   |    ├── LTRIM
|   |    ├── MAKE_SET
|   |    ├── MATCH AGAINST
|   |    ├── MID
|   |    ├── NOT LIKE
|   |    ├── NOT REGEXP
|   |    ├── OCT
|   |    ├── OCTET_LENGTH
|   |    ├── ORD
|   |    ├── POSITION
|   |    ├── QUOTE
|   |    ├── REGEXP
|   |    ├── REPEAT FUNCTION
|   |    ├── REPLACE FUNCTION
|   |    ├── REVERSE
|   |    ├── RIGHT
|   |    ├── RPAD
|   |    ├── RTRIM
|   |    ├── SOUNDEX
|   |    ├── SOUNDS LIKE
|   |    ├── SPACE
|   |    ├── STRCMP
|   |    ├── SUBSTR
|   |    ├── SUBSTRING
|   |    ├── SUBSTRING_INDEX
|   |    ├── TO_BASE64()
|   |    ├── TRIM
|   |    ├── UCASE
|   |    ├── UNHEX
|   |    ├── UPDATEXML
|   |    ├── UPPER
|   |    ├── WEIGHT_STRING
├── Functions and Modifiers for Use with GROUP BY
|   ├── AVG
|   ├── BIT_AND
|   ├── BIT_OR
|   ├── BIT_XOR
|   ├── COUNT
|   ├── COUNT DISTINCT
|   ├── GROUP_CONCAT
|   ├── MAX
|   ├── MIN
|   ├── STD
|   ├── STDDEV
|   ├── STDDEV_POP
|   ├── STDDEV_SAMP
|   ├── SUM
|   ├── VARIANCE
|   ├── VAR_POP
|   ├── VAR_SAMP
├── Geographic Features
|   ├── GEOMETRY
|   ├── GEOMETRY HIERARCHY
|   ├── SPATIAL
|   ├── Geometry constructors
|   |    ├── GEOMETRYCOLLECTION
|   |    ├── LINESTRING
|   |    ├── MULTILINESTRING
|   |    ├── MULTIPOINT
|   |    ├── MULTIPOLYGON
|   |    ├── POINT
|   |    ├── POLYGON
|   ├── Geometry properties
|   |    ├── DIMENSION
|   |    ├── ENVELOPE
|   |    ├── GEOMETRYTYPE
|   |    ├── ISEMPTY
|   |    ├── ISSIMPLE
|   |    ├── SRID
|   |    ├── ST_DIMENSION
|   |    ├── ST_ENVELOPE
|   |    ├── ST_GEOMETRYTYPE
|   |    ├── ST_ISEMPTY
|   |    ├── ST_ISSIMPLE
|   |    ├── ST_SRID
|   ├── Geometry relations
|   |    ├── CONTAINS
|   |    ├── CROSSES
|   |    ├── DISJOINT
|   |    ├── EQUALS
|   |    ├── INTERSECTS
|   |    ├── OVERLAPS
|   |    ├── ST_CONTAINS
|   |    ├── ST_CROSSES
|   |    ├── ST_DISJOINT
|   |    ├── ST_DISTANCE
|   |    ├── ST_EQUALS
|   |    ├── ST_INTERSECTS
|   |    ├── ST_OVERLAPS
|   |    ├── ST_TOUCHES
|   |    ├── ST_WITHIN
|   |    ├── TOUCHES
|   |    ├── WITHIN
|   ├── LineString properties
|   |    ├── ENDPOINT
|   |    ├── GLENGTH
|   |    ├── ISCLOSED
|   |    ├── NUMPOINTS
|   |    ├── POINTN
|   |    ├── STARTPOINT
|   |    ├── ST_ENDPOINT
|   |    ├── ST_ISCLOSED
|   |    ├── ST_NUMPOINTS
|   |    ├── ST_POINTN
|   |    ├── ST_STARTPOINT
|   ├── MBR
|   |    ├── ASYMMETRIC_DECRYPT
|   |    ├── ASYMMETRIC_DERIVE
|   |    ├── ASYMMETRIC_ENCRYPT
|   |    ├── ASYMMETRIC_SIGN
|   |    ├── ASYMMETRIC_VERIFY
|   |    ├── CREATE_ASYMMETRIC_PRIV_KEY
|   |    ├── CREATE_ASYMMETRIC_PUB_KEY
|   |    ├── CREATE_DH_PARAMETERS
|   |    ├── CREATE_DIGEST
|   |    ├── GTID_SUBSET
|   |    ├── GTID_SUBTRACT
|   |    ├── MBR DEFINITION
|   |    ├── MBRCONTAINS
|   |    ├── MBRDISJOINT
|   |    ├── MBREQUAL
|   |    ├── MBRINTERSECTS
|   |    ├── MBROVERLAPS
|   |    ├── MBRTOUCHES
|   |    ├── MBRWITHIN
|   |    ├── SQL_THREAD_WAIT_AFTER_GTIDS
|   |    ├── WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS
|   ├── Point properties
|   |    ├── ST_X
|   |    ├── ST_Y
|   |    ├── X
|   |    ├── Y
|   ├── Polygon properties
|   |    ├── AREA
|   |    ├── CENTROID
|   |    ├── EXTERIORRING
|   |    ├── INTERIORRINGN
|   |    ├── NUMINTERIORRINGS
|   |    ├── ST_AREA
|   |    ├── ST_CENTROID
|   |    ├── ST_EXTERIORRING
|   |    ├── ST_INTERIORRINGN
|   |    ├── ST_NUMINTERIORRINGS
|   ├── WKB
|   |    ├── ASBINARY
|   |    ├── ASTEXT
|   |    ├── GEOMCOLLFROMWKB
|   |    ├── GEOMFROMWKB
|   |    ├── LINEFROMWKB
|   |    ├── MLINEFROMWKB
|   |    ├── MPOINTFROMWKB
|   |    ├── MPOLYFROMWKB
|   |    ├── POINTFROMWKB
|   |    ├── POLYFROMWKB
|   |    ├── ST_ASBINARY
|   |    ├── ST_ASTEXT
|   |    ├── ST_GEOMCOLLFROMWKB
|   |    ├── ST_GEOMFROMWKB
|   |    ├── ST_LINEFROMWKB
|   |    ├── ST_POINTFROMWKB
|   |    ├── ST_POLYFROMWKB
|   ├── WKT
|   |    ├── GEOMCOLLFROMTEXT
|   |    ├── GEOMFROMTEXT
|   |    ├── LINEFROMTEXT
|   |    ├── MLINEFROMTEXT
|   |    ├── MPOINTFROMTEXT
|   |    ├── MPOLYFROMTEXT
|   |    ├── POINTFROMTEXT
|   |    ├── POLYFROMTEXT
|   |    ├── ST_GEOMCOLLFROMTEXT
|   |    ├── ST_GEOMFROMTEXT
|   |    ├── ST_LINEFROMTEXT
|   |    ├── ST_POINTFROMTEXT
|   |    ├── ST_POLYFROMTEXT
|   |    ├── WKT DEFINITION
├── Help Metadata
|   ├── HELP_DATE
|   ├── HELP_VERSION
├── Language Structure
├── Plugins
├── Procedures
├── Storage Engines
├── Table Maintenance
|   ├── ANALYZE TABLE
|   ├── CHECK TABLE
|   ├── CHECKSUM TABLE
|   ├── OPTIMIZE TABLE
|   ├── REPAIR TABLE
├── Transactions
|   ├── CHANGE MASTER TO
|   ├── DEALLOCATE PREPARE
|   ├── EXECUTE STATEMENT
|   ├── ISOLATION
|   ├── LOCK
|   ├── PREPARE
|   ├── PURGE BINARY LOGS
|   ├── RESET MASTER
|   ├── RESET SLAVE
|   ├── SAVEPOINT
|   ├── SET GLOBAL SQL_SLAVE_SKIP_COUNTER
|   ├── SET SQL_LOG_BIN
|   ├── START SLAVE
|   ├── START TRANSACTION
|   ├── STOP SLAVE
|   ├── XA
├── User-Defined Functions
|   ├── CREATE FUNCTION UDF
|   ├── DROP FUNCTION UDF
├── Utility
|   ├── EXPLAIN
|   ├── HELP STATEMENT
|   ├── USE

总结:

整个脚本在写的过程有两点比较有意思。

1. 函数递归操作,以前没怎么使用Shell进行函数的递归操作。

2. 借鉴tree的输出格式,对结果进行格式化输出。

思路如下:首先定义一个number为0,每次进入一次recursive函数,都会把当前的number加1,如果只是这样的话,那number值将一直增长了,所以在上述脚本else调用recursive函数部分,会在其后执行number=$[$number-1],类似于恢复到上一层目录下。

以上这篇将MySQL help contents的内容有层次的输出方法推荐就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mysql
, help
, 层次
contents
mysql contents、mysql help、mysql层次查询、mysql help命令、mysql.help topic,以便于您获取更多的相关知识。

时间: 2024-07-30 10:56:43

将MySQL help contents的内容有层次的输出方法推荐_Mysql的相关文章

php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)_php实例

在做PHP程序时,需要使用PHP做的文件下载 那做就做呗把代码复制过来改了一改. 很多效果也出来了 那么点击下载后,恩,本以为搞定了文件下载,谁知道,图片打开的时候提示文件损坏,这我就观察了文件的大小.似乎真是多了 1KB左右. 使用PS打开,恩,提示了损坏,不过图象可以出来. 那么我就认为是 那多出来的 1kb的问题了. 然后,我把一个txt上传上去,然后下载. 果然发现,文件的前面以及后面,都多了几个 字符. 那我就在想应该怎么去掉啊.各种百度,谷歌,上论坛提问. 最后,经过我一个多小时的搜

谈两种数据库内容HTML格式的输出方法

在实际应用VFP编写各类应用系统过程中,用户可能建立了大量的数据信息,这些信息一般都是存贮在各类数据表中,随着网络技术的迅速发展,许多数据信息要求在网上共享使用,如果相关的信息已经存在数据表中,可以不需要重新输入信息,直接生成可以在网上浏览使用的HTML格式文件,下面笔者介绍两种数据库内容到HTML格式输出的方法. 一.是利用VFP提供的数据表内容转换到HTML格式文件类库实现.在VFP系统目的FFC子目录下存在一个_internet.vcx类库,其中_dbf2html为数据表到HTML格式转换

MySql 5.7.14 服务没有报告任何错误的解决方法(推荐)_Mysql

参照网上MySql 5.6的安装步骤,安装MySql服务后,使用net start mysql命令启动服务时,报错: MySQL 服务正在启动 .MySQL 服务无法启动. 服务没有报告任何错误. 请键入 NET HELPMSG 3534 以获得更多的帮助. 经过查找,找到了解决方法. 方法和步骤如下所示: 1.从官网下载MySQL http://dev.mysql.com/downloads/mysql/ ZIP Archive版本:mysql-5.7.14-winx64 2.解压到想安装到的

MySQL修改数据表存储引擎的3种方法介绍_Mysql

MySQL作为最常用的数据库,经常遇到各种各样的问题.今天要说的就是表存储引擎的修改.有三种方式,列表如下. 1.真接修改.在数据多的时候比较慢,而且在修改时会影响读取性能.my_table是操作的表,innoDB是新的存储引擎. 复制代码 代码如下: ALTER TABLE my_table ENGINE=InnoDB 2.导出,导入.这个比较容易操作,直接把导出来的sql文件给改了,然后再导回去.用mysqldump ,枫哥常用的是navicate那样更容易上手.友情提醒风险较大. 3.创建

MySQL数据库服务器逐渐变慢分析与解决方法分享_Mysql

一.检查系统的状态 通过操作系统的一些工具检查系统的状态,比如CPU.内存.交换.磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cpu可能正等待IO的完成.除此之外,还应观注那些占用系统资源(cpu.内存)的进程. 1.使用sar来检查操作系统是否存在IO问题 #sar-u210- 即每隔2秒检察一次,共执行20次. 结果示例: 注:在redhat下,%system就是所谓的%wio. Linux2.4.21-20.ELsmp (Y

安装MySQL 5后无法启动(不能Start service)解决方法小结_Mysql

安装的 MySQL 5.1.48 或是 MySQL 5.5.8,配置好最后点击 Execute 按钮了,但是进行不到 Start service 这一步.检查了下 MySQL 系统服务已添加,但是无法启动,手工也不行.这时候用事件查看器可以看到程序事件里有几个来自于 MySQL 的错误: Plugin 'InnoDB' registration as a STORAGE ENGINE failed. Unknown/unsupported table type: INNODB 原来是因为这两版本

xampp中修改mysql默认空密码(root密码)的方法分享_Mysql

参考了网上提供的一些方法,发现说的都挺复杂.下面同大家分享一种简单快捷的方法. 首先说明下mysql用户的相关信息是保存在mysql数据库的user表中的,并且该表的密码字段(Password)是通过PASSWORD方法加密存储的. 明白了以上提示,那么修改密码就简单了,直接运行如下SQL语句即可(这里将密码修改为jb51.net): 复制代码 代码如下: UPDATE user SET password=PASSWORD('jb51.net') WHERE user='root'; 经过以上操

mysql 5.5 开启慢日志slow log的方法(log_slow_queries)_Mysql

1.MySQL 5.5命令行里面 复制代码 代码如下: set global log_slow_queries = on;                               # 开启慢日志 set [session|global]  long_query_time =0.2               # 设置时间.精确的毫秒 set global  log_queries_not_using_indexes = on;   # 设置无索引的查询 2.查看存放日志的形式 mysql>

mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结_Mysql

下面写一下,这两个要是有no了,怎么恢复.. 如果是slave_io_running no了,那么就我个人看有三种情况,一个是网络有问题,连接不上,像有一次我用虚拟机搭建replication,使用了nat的网络结构,就是死都连不上,第二个是有可能my.cnf有问题,配置文件怎么写就不说了,网上太多了,最后一个是授权的问题,replication slave和file权限是必须的.如果不怕死就all咯.. 一旦io为no了先看err日志,看看爆什么错,很可能是网络,也有可能是包太大收不了,这个时