
可见,该文档涵盖了数据库操作的大部分主题。
文档分为以上几大类,每个大类又包括更小粒度的类,类最后有具体的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#定义输出的格式, 输出tab,相当于backspace一个空格,参考了tree命令的输出方式。format="| "#删除第一行和最后一行sed -i "1d;$d" /tmp/test/test.txtcd /tmp/test#引入number的作用在于后续格式的输出number=0#后续用了递归调用,这里定义的是函数function recursive(){filename=$1number=$[$number+1]while read linedo#name要做为文件名,譬如Account Management,利用tr函数是去掉字符中间的空格name=`echo $line|tr -d [:blank:]`#输出每个分类中的内容,可能是topic,可能是categoriesmysql -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"" ];thenfor i in `seq $[$number-1]`do echo -ne $formatdoneecho "├── $line"else#如果不是topic,则代表是categories,可递归进行判断,唯一的例外就是Numeric Functions#下面的echo "├── $line"打印出的是categories的名字for i in `seq $[$number-1]`do echo -ne $formatdoneecho "├── $line"#遇到Numeric Functions,就直接打印出该类中的topicif [ "$line" = "Numeric Functions" ];thensed -i "1d;$d" $namewhile read functions dofor i in `seq $number`do echo -ne $formatdoneecho "├── $functions"done < $nameelse#其它的categories,递归调用该函数进行判断。sed -i "1d;$d" $namerecursive $namenumber=$[$number-1]fifidone < $filename}#主函数recursive /tmp/test/test.txt#处理完毕,删除文件夹rm -rf /tmp/test因MySQL客户端登录数据库的时候,直接指定了密码,如果直接执行的话,会输出很多“Warning: Using a password on the command line interface can be insecure.”,├── 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总结: