¢mÃ<":@€!)ÿÿÿÿÿÿÿÿžžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ÿÿÿÿÿÿÿÿªªªªªªªªªªþÿÿÿÿÿÿÿÿÿÿÿÿÿªªªªªêÿÿÿÿÿÿÿÿÿÿ¢mÃ<":M Á ¤ÌM Á ¤ÌkNV":ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖiÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÆÿÿÿÿÿÿÿÿÖiÒ  !"#$%&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖiÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖiÒ'(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkNV":èëT„ÿÿÿÿÿÿÿÿ":E¿ Û€1Ó./ò2infimum supremum  ! ) "1 / 9 D A R I aQ qY wa ‹i ™q ¨y ¶� lj Ù‘ â™ ó¡  © !± "¹ #Á #$É 0%Ñ A&Ù O@á mAé ‡Bñ –Cù ŸD ¬E ·F ÁG ÎI! ÖJ) ÜK1 çL9 îMA öNI OQ PY %Qa 7Ri ISq ^Ty lU�ý�zVpxDܨt@ ؤcèëT„":Áh9Vÿÿÿÿÿÿÿÿ ¤ÌE¿°€hr²infimum supremum@N! @NCRC32 m@!NMAKE_SET G'@)ÿST_MPOINTFROMTEXT !(pcÁh9V ¤Ì%)>œÿÿÿÿ8äE¿;Æ€%Ôû  infimum supremum=³€Á€@"¾6ª! Syntax: NOT, ! Logical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is nonzero, and NOT NULL returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/logical-operators.html mysql> SELECT NOT 10; -> 0 mysql> SELECT NOT 0; -> 1 mysql> SELECT NOT NULL; -> NULL mysql> SELECT ! (1+1); -> 0 mysql> SELECT ! 1+1; -> 1 http://dev.mysql.com/doc/refman/5.7/en/logical-operators.html@„€c@„"¾6¶!= Syntax: <>, != Not equal: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT '.01' <> '0.01'; -> 1 mysql> SELECT .01 <> '0.01'; -> 0 mysql> SELECT 'zapp' <> 'zappp'; -> 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@#�@ À"¾6Â% Syntax: N % M, N MOD M Modulo operation. Returns the remainder of N divided by M. For more information, see the description for the MOD() function in http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html. URL: http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html9%„€@(?"¾6Î& Syntax: & Bitwise AND. The result is an unsigned 64-bit integer. URL: http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html mysql> SELECT 29 & 15; -> 13 http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html@Ö€c@0Õ"¾6Ú* Syntax: * Multiplication: URL: http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html mysql> SELECT 3*5; -> 15 mysql> SELECT 18014398509481984*18014398509481984.0; -> 324518553658426726783156020576256.0 mysql> SELECT 18014398509481984*18014398509481984; -> out-of-range error http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html@ ]@8"¾6æ+ Syntax: + Addition: URL: http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html mysql> SELECT 3+5; -> 8 http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html@!`@@"¾6ò- BINARY Syntax: - Subtraction: URL: http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html mysql> SELECT 3-5; -> -2 http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html@!�€@HN"¾6þ- UNARY Syntax: - Unary minus. This operator changes the sign of the operand. URL: http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html mysql> SELECT - 2; -> -2 http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.htmlAŒ‰º�@P å"¾6 -> Syntax: column->path In MySQL 5.7.9 and later, the -> operator serves as an alias for the JSON_EXTRACT() function when used with two arguments, a column identifier on the left and a JSON path on the right that is evaluated against the JSON document (the column value). You can use such expressions in place of column identifiers wherever they occur in SQL statements. URL: http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html mysql> SELECT c, JSON_EXTRACT(c, "$.id"), g > FROM jemp > WHERE JSON_EXTRACT(c, "$.id") > 1 > ORDER BY JSON_EXTRACT(c, "$.name"); +-------------------------------+-----------+------+ | c | c->"$.id" | g | +-------------------------------+-----------+------+ | {"id": "3", "name": "Barney"} | "3" | 3 | | {"id": "4", "name": "Betty"} | "4" | 4 | | {"id": "2", "name": "Wilma"} | "2" | 2 | +-------------------------------+-----------+------+ 3 rows in set (0.00 sec) mysql> SELECT c, c->"$.id", g > FROM jemp > WHERE c->"$.id" > 1 > ORDER BY c->"$.name"; +-------------------------------+-----------+------+ | c | c->"$.id" | g | +-------------------------------+-----------+------+ | {"id": "3", "name": "Barney"} | "3" | 3 | | {"id": "4", "name": "Betty"} | "4" | 4 | | {"id": "2", "name": "Wilma"} | "2" | 2 | +-------------------------------+-----------+------+ 3 rows in set (0.00 sec) mysql> ALTER TABLE jemp ADD COLUMN n INT; Query OK, 0 rows affected (0.68 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> UPDATE jemp SET n=1 WHERE c->"$.id" = "4"; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT c, c->"$.id", g, n > FROM jemp > WHERE JSON_EXTRACT(c, "$.id") > 1 > ORDER BY c->"$.name"; +-------------------------------+-----------+------+------+ | c | c->"$.id" | g | n | +-------------------------------+-----------+------+------+ | {"id": "3", "name": "Barney"} | "3" | 3 | NULL | | {"id": "4", "name": "Betty"} | "4" | 4 | 1 | | {"id": "2", "name": "Wilma"} | "2" | 2 | NULL | +-------------------------------+-----------+------+------+ 3 rows in set (0.00 sec) mysql> DELETE FROM jemp WHERE c->"$.id" = "4"; Query OK, 1 row affected (0.04 sec) mysql> SELECT c, c->"$.id", g, n > FROM jemp > WHERE JSON_EXTRACT(c, "$.id") > 1 > ORDER BY c->"$.name"; +-------------------------------+-----------+------+------+ | c | c->"$.id" | g | n | +-------------------------------+-----------+------+------+ | {"id": "3", "name": "Barney"} | "3" | 3 | NULL | | {"id": "2", "name": "Wilma"} | "2" | 2 | NULL | +-------------------------------+-----------+------+------+ 2 rows in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.htmlAùˆÏ‚@X e "¾6->> Syntax: column->>path This is an improved, unquoting extraction operator available in MySQL 5.7.13 and later. Whereas the -> operator simply extracts a value, the ->> operator in addition unquotes the extracted result. In other words, given a JSON column value column and a path expression path, the following three expressions return the same value: o JSON_UNQUOTE( JSON_EXTRACT(column, path) ) o JSON_UNQUOTE(column -> path) o column->>path The ->> operator can be used wherever JSON_UNQUOTE(JSON_EXTRACT()) would be allowed. This includes (but is not limited to) SELECT lists, WHERE and HAVING clauses, and ORDER BY and GROUP BY clauses. URL: http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html mysql> SELECT * FROM jemp WHERE g > 2; +-------------------------------+------+ | c | g | +-------------------------------+------+ | {"id": "3", "name": "Barney"} | 3 | | {"id": "4", "name": "Betty"} | 4 | +-------------------------------+------+ 2 rows in set (0.01 sec) mysql> SELECT c->'$.name' AS name -> FROM jemp WHERE g > 2; +----------+ | name | +----------+ | "Barney" | | "Betty" | +----------+ 2 rows in set (0.00 sec) mysql> SELECT JSON_UNQUOTE(c->'$.name') AS name -> FROM jemp WHERE g > 2; +--------+ | name | +--------+ | Barney | | Betty | +--------+ 2 rows in set (0.00 sec) mysql> SELECT c->>'$.name' AS name -> FROM jemp WHERE g > 2; +--------+ | name | +--------+ | Barney | | Betty | +--------+ 2 rows in set (0.00 sec) mysql> CREATE TABLE tj10 (a JSON, b INT); Query OK, 0 rows affected (0.26 sec) mysql> INSERT INTO tj10 VALUES -> ('[3,10,5,"x",44]', 33), -> ('[3,10,5,17,[22,"y",66]]', 0); Query OK, 2 rows affected (0.04 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> SELECT a->"$[3]", a->"$[4][1]" FROM tj10; +-----------+--------------+ | a->"$[3]" | a->"$[4][1]" | +-----------+--------------+ | "x" | NULL | | 17 | "y" | +-----------+--------------+ 2 rows in set (0.00 sec) mysql> SELECT a->>"$[3]", a->>"$[4][1]" FROM tj10; +------------+---------------+ | a->>"$[3]" | a->>"$[4][1]" | +------------+---------------+ | x | NULL | | 17 | y | +------------+---------------+ 2 rows in set (0.00 sec) mysql> EXPLAIN SELECT c->>'$.name' AS name -> FROM jemp WHERE g > 2\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: jemp partitions: NULL type: range possible_keys: i key: i key_len: 5 ref: NULL rows: 2 filtered: 100.00 Extra: Using where 1 row in set, 1 warning (0.00 sec) mysql> SHOW WARNINGS\G *************************** 1. row *************************** Level: Note Code: 1003 Message: /* select#1 */ select json_unquote(json_extract(`jtest`.`jemp`.`c`,'$.name')) AS `name` from `jtest`.`jemp` where (`jtest`.`jemp`.`g` > 2) 1 row in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html@#]@`Û¸ "¾6"/ Syntax: / Division: URL: http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html mysql> SELECT 3/5; -> 0.60 http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html@"^@h "¾6.< Syntax: < Less than: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 2 < 2; -> 0 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html9#?�@p÷ "¾6:<< Syntax: << Shifts a longlong (BIGINT) number to the left. The result is an unsigned 64-bit integer. The value is truncated to 64 bits. In particular, if the shift count is greater or equal to the width of an unsigned 64-bit number, the result is zero. URL: http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html mysql> SELECT 1 << 2; -> 4 http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html@%h@x+ "¾6F<= Syntax: <= Less than or equal: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 0.1 <= 2; -> 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@Š€e�@€Œ"¾6R<=> Syntax: <=> NULL-safe equal. This operator performs an equality comparison like the = operator, but returns 1 rather than NULL if both operands are NULL, and 0 rather than NULL if one operand is NULL. The <=> operator is equivalent to the standard SQL IS NOT DISTINCT FROM operator. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@¼€R@ˆª"¾6^= = Equal: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@"a@�"¾6j> Syntax: > Greater than: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 2 > 2; -> 0 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@#k@˜+"¾6v>= Syntax: >= Greater than or equal: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 2 >= 2; -> 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html9#@�@ ø"¾6‚>> Syntax: >> Shifts a longlong (BIGINT) number to the right. The result is an unsigned 64-bit integer. The value is truncated to 64 bits. In particular, if the shift count is greater or equal to the width of an unsigned 64-bit number, the result is zero. URL: http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html mysql> SELECT 4 >> 2; -> 1 http://dev.mysql.com/doc/refman/5.7/en/bit-functions.htmlBI{@¨d"¾6ŽABS Syntax: ABS(X) Returns the absolute value of X. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT ABS(2); -> 2 mysql> SELECT ABS(-32); -> 32 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlB‚€Í€@°î"¾6šACOS Syntax: ACOS(X) Returns the arc cosine of X, that is, the value whose cosine is X. Returns NULL if X is not in the range -1 to 1. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT ACOS(1); -> 0 mysql> SELECT ACOS(1.0001); -> NULL mysql> SELECT ACOS(0); -> 1.5707963267949 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlCAÁ‚@¸£"¾6¦ADDDATE Syntax: ADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days) When invoked with the INTERVAL form of the second argument, ADDDATE() is a synonym for DATE_ADD(). The related function SUBDATE() is a synonym for DATE_SUB(). For information on the INTERVAL unit argument, see http://dev.mysql.com/doc/refman/5.7/en/expressions.html#temporal-interv als. mysql> SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY); -> '2008-02-02' mysql> SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY); -> '2008-02-02' When invoked with the days form of the second argument, MySQL treats it as an integer number of days to be added to expr. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT ADDDATE('2008-01-02', 31); -> '2008-02-02' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCÉ€ç€@À"¾6²ADDTIME Syntax: ADDTIME(expr1,expr2) ADDTIME() adds expr2 to expr1 and returns the result. expr1 is a time or datetime expression, and expr2 is a time expression. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002'); -> '2008-01-02 01:01:01.000001' mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998'); -> '03:00:01.999997' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlp,Ÿp Õc%)>œ8äz¬g|¥E¿:×€6Winfimum supremum@"^@ "¾6.< Syntax: < Less than: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 2 < 2; -> 0 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html9#?�@÷ "¾6:<< Syntax: << Shifts a longlong (BIGINT) number to the left. The result is an unsigned 64-bit integer. The value is truncated to 64 bits. In particular, if the shift count is greater or equal to the width of an unsigned 64-bit number, the result is zero. URL: http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html mysql> SELECT 1 << 2; -> 4 http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html@%h@ + "¾6F<= Syntax: <= Less than or equal: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 0.1 <= 2; -> 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@Š€e�@(Œ"¾6R<=> Syntax: <=> NULL-safe equal. This operator performs an equality comparison like the = operator, but returns 1 rather than NULL if both operands are NULL, and 0 rather than NULL if one operand is NULL. The <=> operator is equivalent to the standard SQL IS NOT DISTINCT FROM operator. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@¼€R@0ª"¾6^= = Equal: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@"a@8"¾6j> Syntax: > Greater than: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 2 > 2; -> 0 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@#k@@+"¾6v>= Syntax: >= Greater than or equal: URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 2 >= 2; -> 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html9#@�@Hø"¾6‚>> Syntax: >> Shifts a longlong (BIGINT) number to the right. The result is an unsigned 64-bit integer. The value is truncated to 64 bits. In particular, if the shift count is greater or equal to the width of an unsigned 64-bit number, the result is zero. URL: http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html mysql> SELECT 4 >> 2; -> 1 http://dev.mysql.com/doc/refman/5.7/en/bit-functions.htmlBI{@Pd"¾6ŽABS Syntax: ABS(X) Returns the absolute value of X. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT ABS(2); -> 2 mysql> SELECT ABS(-32); -> 32 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlB‚€Í€@Xî"¾6šACOS Syntax: ACOS(X) Returns the arc cosine of X, that is, the value whose cosine is X. Returns NULL if X is not in the range -1 to 1. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT ACOS(1); -> 0 mysql> SELECT ACOS(1.0001); -> NULL mysql> SELECT ACOS(0); -> 1.5707963267949 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlCAÁ‚@`£"¾6¦ADDDATE Syntax: ADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days) When invoked with the INTERVAL form of the second argument, ADDDATE() is a synonym for DATE_ADD(). The related function SUBDATE() is a synonym for DATE_SUB(). For information on the INTERVAL unit argument, see http://dev.mysql.com/doc/refman/5.7/en/expressions.html#temporal-interv als. mysql> SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY); -> '2008-02-02' mysql> SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY); -> '2008-02-02' When invoked with the days form of the second argument, MySQL treats it as an integer number of days to be added to expr. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT ADDDATE('2008-01-02', 31); -> '2008-02-02' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCÉ€ç€@hP"¾6²ADDTIME Syntax: ADDTIME(expr1,expr2) ADDTIME() adds expr2 to expr1 and returns the result. expr1 is a time or datetime expression, and expr2 is a time expression. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002'); -> '2008-01-02 01:01:01.000001' mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998'); -> '03:00:01.999997' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html@ü�@pš"¾6¾AES_DECRYPT Syntax: AES_DECRYPT(crypt_str,key_str[,init_vector]) This function decrypts data using the official AES (Advanced Encryption Standard) algorithm. For more information, see the description of AES_ENCRYPT(). The optional initialization vector argument, init_vector, is available as of MySQL 5.7.4. As of that version, statements that use AES_DECRYPT() are unsafe for statement-based replication and cannot be stored in the query cache. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html@‚’Œ@x?"¾6ÊAES_ENCRYPT Syntax: AES_ENCRYPT(str,key_str[,init_vector]) AES_ENCRYPT() and AES_DECRYPT() implement encryption and decryption of data using the official AES (Advanced Encryption Standard) algorithm, previously known as "Rijndael." The AES standard permits various key lengths. By default these functions implement AES with a 128-bit key length. As of MySQL 5.7.4, key lengths of 196 or 256 bits can be used, as described later. The key length is a trade off between performance and security. AES_ENCRYPT() encrypts the string str using the key string key_str and returns a binary string containing the encrypted output. AES_DECRYPT() decrypts the encrypted string crypt_str using the key string key_str and returns the original cleartext string. If either function argument is NULL, the function returns NULL. The str and crypt_str arguments can be any length, and padding is automatically added to str so it is a multiple of a block as required by block-based algorithms such as AES. This padding is automatically removed by the AES_DECRYPT() function. The length of crypt_str can be calculated using this formula: 16 * (trunc(string_length / 16) + 1) For a key length of 128 bits, the most secure way to pass a key to the key_str argument is to create a truly random 128-bit value and pass it as a binary value. For example: INSERT INTO t VALUES (1,AES_ENCRYPT('text',UNHEX('F3229A0B371ED2D9441B830D21A390C3'))); A passphrase can be used to generate an AES key by hashing the passphrase. For example: INSERT INTO t VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512)))); Do not pass a password or passphrase directly to crypt_str, hash it first. Previous versions of this documentation suggested the former approach, but it is no longer recommended as the examples shown here are more secure. If AES_DECRYPT() detects invalid data or incorrect padding, it returns NULL. However, it is possible for AES_DECRYPT() to return a non-NULL value (possibly garbage) if the input data or the key is invalid. As of MySQL 5.7.4, AES_ENCRYPT() and AES_DECRYPT() permit control of the block encryption mode and take an optional init_vector initialization vector argument: o The block_encryption_mode system variable controls the mode for block-based encryption algorithms. Its default value is aes-128-ecb, which signifies encryption using a key length of 128 bits and ECB mode. For a description of the permitted values of this variable, see http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. o The optional init_vector argument provides an initialization vector for block encryption modes that require it. For modes that require the optional init_vector argument, it must be 16 bytes or longer (bytes in excess of 16 are ignored). An error occurs if init_vector is missing. For modes that do not require init_vector, it is ignored and a warning is generated if it is specified. A random string of bytes to use for the initialization vector can be produced by calling RANDOM_BYTES(16). For encryption modes that require an initialization vector, the same vector must be used for encryption and decryption. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html mysql> SET block_encryption_mode = 'aes-256-cbc'; mysql> SET @key_str = SHA2('My secret passphrase',512); mysql> SET @init_vector = RANDOM_BYTES(16); mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector); mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector); +-----------------------------------------------+ | AES_DECRYPT(@crypt_str,@key_str,@init_vector) | +-----------------------------------------------+ | text | +-----------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html:j�@€"¾6ÖALTER DATABASE Syntax: ALTER {DATABASE | SCHEMA} [db_name] alter_specification ... ALTER {DATABASE | SCHEMA} db_name UPGRADE DATA DIRECTORY NAME alter_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name ALTER DATABASE enables you to change the overall characteristics of a database. These characteristics are stored in the db.opt file in the database directory. To use ALTER DATABASE, you need the ALTER privilege on the database. ALTER SCHEMA is a synonym for ALTER DATABASE. The database name can be omitted from the first syntax, in which case the statement applies to the default database. National Language Characteristics The CHARACTER SET clause changes the default database character set. The COLLATE clause changes the default database collation. http://dev.mysql.com/doc/refman/5.7/en/charset.html, discusses character set and collation names. You can see what character sets and collations are available using, respectively, the SHOW CHARACTER SET and SHOW COLLATION statements. See [HELP SHOW CHARACTER SET], and [HELP SHOW COLLATION], for more information. If you change the default character set or collation for a database, stored routines that use the database defaults must be dropped and recreated so that they use the new defaults. (In a stored routine, variables with character data types use the database defaults if the character set or collation are not specified explicitly. See [HELP CREATE PROCEDURE].) Upgrading from Versions Older than MySQL 5.1 The syntax that includes the UPGRADE DATA DIRECTORY NAME clause updates the name of the directory associated with the database to use the encoding implemented in MySQL 5.1 for mapping database names to database directory names (see http://dev.mysql.com/doc/refman/5.7/en/identifier-mapping.html). This clause is for use under these conditions: o It is intended when upgrading MySQL to 5.1 or later from older versions. o It is intended to update a database directory name to the current encoding format if the name contains special characters that need encoding. o The statement is used by mysqlcheck (as invoked by mysql_upgrade). For example, if a database in MySQL 5.0 has the name a-b-c, the name contains instances of the - (dash) character. In MySQL 5.0, the database directory is also named a-b-c, which is not necessarily safe for all file systems. In MySQL 5.1 and later, the same database name is encoded as a@002db@002dc to produce a file system-neutral directory name. When a MySQL installation is upgraded to MySQL 5.1 or later from an older version,the server displays a name such as a-b-c (which is in the old format) as #mysql50#a-b-c, and you must refer to the name using the #mysql50# prefix. Use UPGRADE DATA DIRECTORY NAME in this case to explicitly tell the server to re-encode the database directory name to the current encoding format: ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME; After executing this statement, you can refer to the database as a-b-c without the special #mysql50# prefix. *Note*: The UPGRADE DATA DIRECTORY NAME clause is deprecated in MySQL 5.7.6 and will be removed in a future version of MySQL. If it is necessary to convert MySQL 5.0 database or table names, a workaround is to upgrade a MySQL 5.0 installation to MySQL 5.1 before upgrading to a more recent release. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-database.html http://dev.mysql.com/doc/refman/5.7/en/alter-database.html7öƒ@ˆÊ"¾6âALTER EVENT Syntax: ALTER [DEFINER = user] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'string'] [DO event_body] The ALTER EVENT statement changes one or more of the characteristics of an existing event without the need to drop and recreate it. The syntax for each of the DEFINER, ON SCHEDULE, ON COMPLETION, COMMENT, ENABLE / DISABLE, and DO clauses is exactly the same as when used with CREATE EVENT. (See [HELP CREATE EVENT].) Any user can alter an event defined on a database for which that user has the EVENT privilege. When a user executes a successful ALTER EVENT statement, that user becomes the definer for the affected event. ALTER EVENT works only with an existing event: mysql> ALTER EVENT no_such_event > ON SCHEDULE > EVERY '2:3' DAY_HOUR; ERROR 1517 (HY000): Unknown event 'no_such_event' URL: http://dev.mysql.com/doc/refman/5.7/en/alter-event.html http://dev.mysql.com/doc/refman/5.7/en/alter-event.htmlp- @Àcz¬g|¥’_öºSE¿;À .Finfimum supremum:¬ƒ@C"¾6îALTER FUNCTION Syntax: ALTER FUNCTION func_name [characteristic ...] characteristic: COMMENT 'string' | LANGUAGE SQL | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } This statement can be used to change the characteristics of a stored function. More than one change may be specified in an ALTER FUNCTION statement. However, you cannot change the parameters or body of a stored function using this statement; to make such changes, you must drop and re-create the function using DROP FUNCTION and CREATE FUNCTION. You must have the ALTER ROUTINE privilege for the function. (That privilege is granted automatically to the function creator.) If binary logging is enabled, the ALTER FUNCTION statement might also require the SUPER privilege, as described in http://dev.mysql.com/doc/refman/5.7/en/stored-programs-logging.html. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-function.html http://dev.mysql.com/doc/refman/5.7/en/alter-function.html:…@ª"¾6úALTER INSTANCE Syntax: ALTER INSTANCE ROTATE INNODB MASTER KEY ALTER INSTANCE, introduced in MySQL 5.7.11, defines actions applicable to a MySQL server instance. The ALTER INSTANCE ROTATE INNODB MASTER KEY statement is used to rotate the master encryption key used for InnoDB tablespace encryption. A keyring plugin must be installed and configured to use this statement. For information about keyring plugins, see http://dev.mysql.com/doc/refman/5.7/en/keyring.html. Key rotation requires the SUPER privilege. ALTER INSTANCE ROTATE INNODB MASTER KEY supports concurrent DML. However, it cannot be run concurrently with CREATE TABLE ... ENCRYPTION or ALTER TABLE ... ENCRYPTION operations, and locks are taken to prevent conflicts that could arise from concurrent execution of these statements. If one of the conflicting statements is running, it must complete before another can proceed. ALTER INSTANCE actions are written to the binary log so that they can be executed on replicated servers. For additional ALTER INSTANCE ROTATE INNODB MASTER KEY usage information, see http://dev.mysql.com/doc/refman/5.7/en/innodb-tablespace-encryption.htm l. For information about keyring plugins, see http://dev.mysql.com/doc/refman/5.7/en/keyring.html. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-instance.html http://dev.mysql.com/doc/refman/5.7/en/alter-instance.html?¨†@ D"¾6ALTER LOGFILE GROUP Syntax: ALTER LOGFILE GROUP logfile_group ADD UNDOFILE 'file_name' [INITIAL_SIZE [=] size] [WAIT] ENGINE [=] engine_name This statement adds an UNDO file named 'file_name' to an existing log file group logfile_group. An ALTER LOGFILE GROUP statement has one and only one ADD UNDOFILE clause. No DROP UNDOFILE clause is currently supported. *Note*: All NDB Cluster Disk Data objects share the same namespace. This means that each Disk Data object must be uniquely named (and not merely each Disk Data object of a given type). For example, you cannot have a tablespace and an undo log file with the same name, or an undo log file and a data file with the same name. The optional INITIAL_SIZE parameter sets the UNDO file's initial size in bytes; if not specified, the initial size defaults to 134217728 (128 MB). You may optionally follow size with a one-letter abbreviation for an order of magnitude, similar to those used in my.cnf. Generally, this is one of the letters M (megabytes) or G (gigabytes). (Bug #13116514, Bug #16104705, Bug #62858) On 32-bit systems, the maximum supported value for INITIAL_SIZE is 4294967296 (4 GB). (Bug #29186) The minimum allowed value for INITIAL_SIZE is 1048576 (1 MB). (Bug #29574) *Note*: WAIT is parsed but otherwise ignored. This keyword currently has no effect, and is intended for future expansion. The ENGINE parameter (required) determines the storage engine which is used by this log file group, with engine_name being the name of the storage engine. Currently, the only accepted values for engine_name are "NDBCLUSTER" and "NDB". The two values are equivalent. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-logfile-group.html http://dev.mysql.com/doc/refman/5.7/en/alter-logfile-group.html;«ƒ@(C"¾6ALTER PROCEDURE Syntax: ALTER PROCEDURE proc_name [characteristic ...] characteristic: COMMENT 'string' | LANGUAGE SQL | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } This statement can be used to change the characteristics of a stored procedure. More than one change may be specified in an ALTER PROCEDURE statement. However, you cannot change the parameters or body of a stored procedure using this statement; to make such changes, you must drop and re-create the procedure using DROP PROCEDURE and CREATE PROCEDURE. You must have the ALTER ROUTINE privilege for the procedure. By default, that privilege is granted automatically to the procedure creator. This behavior can be changed by disabling the automatic_sp_privileges system variable. See http://dev.mysql.com/doc/refman/5.7/en/stored-routines-privileges.html. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-procedure.html http://dev.mysql.com/doc/refman/5.7/en/alter-procedure.html8'w�@03"¾6ALTER SERVER Syntax: ALTER SERVER server_name OPTIONS (option [, option] ...) Alters the server information for server_name, adjusting any of the options permitted in the CREATE SERVER statement. The corresponding fields in the mysql.servers table are updated accordingly. This statement requires the SUPER privilege. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-server.html ALTER SERVER s OPTIONS (USER 'sally'); http://dev.mysql.com/doc/refman/5.7/en/alter-server.html7‰•@8 "¾6*ALTER TABLE Syntax: ALTER TABLE tbl_name [alter_specification [, alter_specification] ...] [partition_options] alter_specification: table_options | ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name] | ADD [COLUMN] (col_name column_definition,...) | ADD {INDEX|KEY} [index_name] [index_type] (key_part,...) [index_option] ... | ADD {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (key_part,...) [index_option] ... | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (key_part,...) [index_option] ... | ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (key_part,...) [index_option] ... | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (col_name,...) reference_definition | ADD CHECK (expr) | ALGORITHM [=] {DEFAULT|INPLACE|COPY} | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name] | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name] | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] | {DISABLE|ENABLE} KEYS | {DISCARD|IMPORT} TABLESPACE | DROP [COLUMN] col_name | DROP {INDEX|KEY} index_name | DROP PRIMARY KEY | DROP FOREIGN KEY fk_symbol | FORCE | LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE} | MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name] | ORDER BY col_name [, col_name] ... | RENAME {INDEX|KEY} old_index_name TO new_index_name | RENAME [TO|AS] new_tbl_name | {WITHOUT|WITH} VALIDATION | ADD PARTITION (partition_definition) | DROP PARTITION partition_names | DISCARD PARTITION {partition_names | ALL} TABLESPACE | IMPORT PARTITION {partition_names | ALL} TABLESPACE | TRUNCATE PARTITION {partition_names | ALL} | COALESCE PARTITION number | REORGANIZE PARTITION partition_names INTO (partition_definitions) | EXCHANGE PARTITION partition_name WITH TABLE tbl_name [{WITH|WITHOUT} VALIDATION] | ANALYZE PARTITION {partition_names | ALL} | CHECK PARTITION {partition_names | ALL} | OPTIMIZE PARTITION {partition_names | ALL} | REBUILD PARTITION {partition_names | ALL} | REPAIR PARTITION {partition_names | ALL} | REMOVE PARTITIONING | UPGRADE PARTITIONING key_part: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH} index_option: KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name | COMMENT 'string' table_options: table_option [[,] table_option] ... table_option: AUTO_INCREMENT [=] value | AVG_ROW_LENGTH [=] value | [DEFAULT] CHARACTER SET [=] charset_name | CHECKSUM [=] {0 | 1} | [DEFAULT] COLLATE [=] collation_name | COMMENT [=] 'string' | COMPRESSION [=] {'ZLIB'|'LZ4'|'NONE'} | CONNECTION [=] 'connect_string' | {DATA|INDEX} DIRECTORY [=] 'absolute path to directory' | DELAY_KEY_WRITE [=] {0 | 1} | ENCRYPTION [=] {'Y' | 'N'} | ENGINE [=] engine_name | INSERT_METHOD [=] { NO | FIRST | LAST } | KEY_BLOCK_SIZE [=] value | MAX_ROWS [=] value | MIN_ROWS [=] value | PACK_KEYS [=] {0 | 1 | DEFAULT} | PASSWORD [=] 'string' | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} | STATS_AUTO_RECALC [=] {DEFAULT|0|1} | STATS_PERSISTENT [=] {DEFAULT|0|1} | STATS_SAMPLE_PAGES [=] value | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY}] | UNION [=] (tbl_name[,tbl_name]...) partition_options: (see CREATE TABLE options) ALTER TABLE changes the structure of a table. For example, you can add or delete columns, create or destroy indexes, change the type of existing columns, or rename columns or the table itself. You can also change characteristics such as the storage engine used for the table or the table comment. o To use ALTER TABLE, you need ALTER, CREATE, and INSERT privileges for the table. Renaming a table requires ALTER and DROP on the old table, ALTER, CREATE, and INSERT on the new table. o Following the table name, specify the alterations to be made. If none are given, ALTER TABLE does nothing. o The syntax for many of the permissible alterations is similar to clauses of the CREATE TABLE statement. column_definition clauses use the same syntax for ADD and CHANGE as for CREATE TABLE. For more information, see [HELP CREATE TABLE]. o The word COLUMN is optional and can be omitted. o Multiple ADD, ALTER, DROP, and CHANGE clauses are permitted in a single ALTER TABLE statement, separated by commas. This is a MySQL extension to standard SQL, which permits only one of each clause per ALTER TABLE statement. For example, to drop multiple columns in a single statement, do this: ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d; o If a storage engine does not support an attempted ALTER TABLE operation, a warning may result. Such warnings can be displayed with SHOW WARNINGS. See [HELP SHOW WARNINGS]. For information on troubleshooting ALTER TABLE, see http://dev.mysql.com/doc/refman/5.7/en/alter-table-problems.html. o For information about generated columns, see http://dev.mysql.com/doc/refman/5.7/en/alter-table-generated-columns. html. o For usage examples, see http://dev.mysql.com/doc/refman/5.7/en/alter-table-examples.html. o With the mysql_info() C API function, you can find out how many rows were copied by ALTER TABLE. See http://dev.mysql.com/doc/refman/5.7/en/mysql-info.html. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-table.html http://dev.mysql.com/doc/refman/5.7/en/alter-table.html<îŒ@@Ò*!"¾66ALTER TABLESPACE Syntax: ALTER TABLESPACE tablespace_name {ADD|DROP} DATAFILE 'file_name' [INITIAL_SIZE [=] size] [WAIT] ENGINE [=] engine_name This statement is used either to add a new data file, or to drop a data file from a tablespace. The ADD DATAFILE variant enables you to specify an initial size using an INITIAL_SIZE clause, where size is measured in bytes; the default value is 134217728 (128 MB). You may optionally follow size with a one-letter abbreviation for an order of magnitude, similar to those used in my.cnf. Generally, this is one of the letters M (megabytes) or G (gigabytes). *Note*: All NDB Cluster Disk Data objects share the same namespace. This means that each Disk Data object must be uniquely named (and not merely each Disk Data object of a given type). For example, you cannot have a tablespace and a data file with the same name, or an undo log file and a tablespace with the same name. On 32-bit systems, the maximum supported value for INITIAL_SIZE is 4294967296 (4 GB). (Bug #29186) INITIAL_SIZE is rounded, explicitly, as for CREATE TABLESPACE. Once a data file has been created, its size cannot be changed; however, you can add more data files to the tablespace using additional ALTER TABLESPACE ... ADD DATAFILE statements. Using DROP DATAFILE with ALTER TABLESPACE drops the data file 'file_name' from the tablespace. You cannot drop a data file from a tablespace which is in use by any table; in other words, the data file must be empty (no extents used). See http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-disk-data-objects. html. In addition, any data file to be dropped must previously have been added to the tablespace with CREATE TABLESPACE or ALTER TABLESPACE. Both ALTER TABLESPACE ... ADD DATAFILE and ALTER TABLESPACE ... DROP DATAFILE require an ENGINE clause which specifies the storage engine used by the tablespace. Currently, the only accepted values for engine_name are NDB and NDBCLUSTER. WAIT is parsed but otherwise ignored, and so has no effect in MySQL 5.7. It is intended for future expansion. When ALTER TABLESPACE ... ADD DATAFILE is used with ENGINE = NDB, a data file is created on each Cluster data node. You can verify that the data files were created and obtain information about them by querying the INFORMATION_SCHEMA.FILES table. For example, the following query shows all data files belonging to the tablespace named newts: mysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA -> FROM INFORMATION_SCHEMA.FILES -> WHERE TABLESPACE_NAME = 'newts' AND FILE_TYPE = 'DATAFILE'; +--------------------+--------------+----------------+ | LOGFILE_GROUP_NAME | FILE_NAME | EXTRA | +--------------------+--------------+----------------+ | lg_3 | newdata.dat | CLUSTER_NODE=3 | | lg_3 | newdata.dat | CLUSTER_NODE=4 | | lg_3 | newdata2.dat | CLUSTER_NODE=3 | | lg_3 | newdata2.dat | CLUSTER_NODE=4 | +--------------------+--------------+----------------+ 2 rows in set (0.03 sec) See http://dev.mysql.com/doc/refman/5.7/en/files-table.html. ALTER TABLESPACE is useful only with Disk Data storage for NDB Cluster. See http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-disk-data.html. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-tablespace.html http://dev.mysql.com/doc/refman/5.7/en/alter-tablespace.htmlpc’_öºS©,�Ú ÿE¿7ç€4| infimum supremum6`†@ó""¾6BALTER USER Syntax: ALTER USER [IF EXISTS] user [auth_option] [, user [auth_option]] ... [REQUIRE {NONE | tls_option [[AND] tls_option] ...}] [WITH resource_option [resource_option] ...] [password_option | lock_option] ... ALTER USER [IF EXISTS] USER() IDENTIFIED BY 'auth_string' user: (see ) auth_option: { IDENTIFIED BY 'auth_string' | IDENTIFIED WITH auth_plugin | IDENTIFIED WITH auth_plugin BY 'auth_string' | IDENTIFIED WITH auth_plugin AS 'hash_string' } tls_option: { SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject' } resource_option: { MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count } password_option: { PASSWORD EXPIRE | PASSWORD EXPIRE DEFAULT | PASSWORD EXPIRE NEVER | PASSWORD EXPIRE INTERVAL N DAY } lock_option: { ACCOUNT LOCK | ACCOUNT UNLOCK } The ALTER USER statement modifies MySQL accounts. It enables authentication, SSL/TLS, resource-limit, and password-management properties to be modified for existing accounts. It can also be used to lock and unlock accounts. To use ALTER USER, you must have the global CREATE USER privilege or the UPDATE privilege for the mysql system database. When the read_only system variable is enabled, ALTER USER additionally requires the SUPER privilege. By default, an error occurs if you try to modify a user that does not exist. If the IF EXISTS clause is given, the statement produces a warning for each named user that does not exist, rather than an error. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-user.html http://dev.mysql.com/doc/refman/5.7/en/alter-user.html6Ž‚@!#"¾6NALTER VIEW Syntax: ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = user] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] This statement changes the definition of a view, which must exist. The syntax is similar to that for CREATE VIEW see [HELP CREATE VIEW]). This statement requires the CREATE VIEW and DROP privileges for the view, and some privilege for each column referred to in the SELECT statement. ALTER VIEW is permitted only to the definer or users with the SUPER privilege. URL: http://dev.mysql.com/doc/refman/5.7/en/alter-view.html http://dev.mysql.com/doc/refman/5.7/en/alter-view.html9„@ ¦$"¾6ZANALYZE TABLE $Syntax: ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [, tbl_name] ... ANALYZE TABLE performs a key distribution analysis and stores the distribution for the named table or tables. For MyISAM tables, this statement is equivalent to using myisamchk --analyze. This statement requires SELECT and INSERT privileges for the table. ANALYZE TABLE works with InnoDB, NDB, and MyISAM tables. It does not work with views. ANALYZE TABLE is supported for partitioned tables, and you can use ALTER TABLE ... ANALYZE PARTITION to analyze one or more partitions; for more information, see [HELP ALTER TABLE], and http://dev.mysql.com/doc/refman/5.7/en/partitioning-maintenance.html. During the analysis, the table is locked with a read lock for InnoDB and MyISAM. By default, the server writes ANALYZE TABLE statements to the binary log so that they replicate to replication slaves. To suppress logging, specify the optional NO_WRITE_TO_BINLOG keyword or its alias LOCAL. URL: http://dev.mysql.com/doc/refman/5.7/en/analyze-table.html http://dev.mysql.com/doc/refman/5.7/en/analyze-table.html=À€Ü€@(6%"¾6fAND Syntax: AND, && Logical AND. Evaluates to 1 if all operands are nonzero and not NULL, to 0 if one or more operands are 0, otherwise NULL is returned. URL: http://dev.mysql.com/doc/refman/5.7/en/logical-operators.html mysql> SELECT 1 AND 1; -> 1 mysql> SELECT 1 AND 0; -> 0 mysql> SELECT 1 AND NULL; -> NULL mysql> SELECT 0 AND NULL; -> 0 mysql> SELECT NULL AND 0; -> 0 http://dev.mysql.com/doc/refman/5.7/en/logical-operators.htmlCŽ�@0.&"¾6rANY_VALUE ANY_VALUE(arg) This function is useful for GROUP BY queries when the ONLY_FULL_GROUP_BY SQL mode is enabled, for cases when MySQL rejects a query that you know is valid for reasons that MySQL cannot determine. The function return value and type are the same as the return value and type of its argument, but the function result is not checked for the ONLY_FULL_GROUP_BY SQL mode. For example, if name is a nonindexed column, the following query fails with ONLY_FULL_GROUP_BY enabled: mysql> SELECT name, address, MAX(age) FROM t GROUP BY name; ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mydb.t.address' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by The failure occurs because address is a nonaggregated column that is neither named among GROUP BY columns nor functionally dependent on them. As a result, the address value for rows within each name group is nondeterministic. There are multiple ways to cause MySQL to accept the query: o Alter the table to make name a primary key or a unique NOT NULL column. This enables MySQL to determine that address is functionally dependent on name; that is, address is uniquely determined by name. (This technique is inapplicable if NULL must be permitted as a valid name value.) o Use ANY_VALUE() to refer to address: SELECT name, ANY_VALUE(address), MAX(age) FROM t GROUP BY name; In this case, MySQL ignores the nondeterminism of address values within each name group and accepts the query. This may be useful if you simply do not care which value of a nonaggregated column is chosen for each group. ANY_VALUE() is not an aggregate function, unlike functions such as SUM() or COUNT(). It simply acts to suppress the test for nondeterminism. o Disable ONLY_FULL_GROUP_BY. This is equivalent to using ANY_VALUE() with ONLY_FULL_GROUP_BY enabled, as described in the previous item. ANY_VALUE() is also useful if functional dependence exists between columns but MySQL cannot determine it. The following query is valid because age is functionally dependent on the grouping column age-1, but MySQL cannot tell that and rejects the query with ONLY_FULL_GROUP_BY enabled: SELECT age FROM t GROUP BY age-1; To cause MySQL to accept the query, use ANY_VALUE(): SELECT ANY_VALUE(age) FROM t GROUP BY age-1; ANY_VALUE() can be used for queries that refer to aggregate functions in the absence of a GROUP BY clause: mysql> SELECT name, MAX(age) FROM t; ERROR 1140 (42000): In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'mydb.t.name'; this is incompatible with sql_mode=only_full_group_by Without GROUP BY, there is a single group and it is nondeterministic which name value to choose for the group. ANY_VALUE() tells MySQL to accept the query: SELECT ANY_VALUE(name), MAX(age) FROM t; It may be that, due to some property of a given data set, you know that a selected nonaggregated column is effectively functionally dependent on a GROUP BY column. For example, an application may enforce uniqueness of one column with respect to another. In this case, using ANY_VALUE() for the effectively functionally dependent column may make sense. For additional discussion, see http://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlJÁ€@8h'"¾6~AREA Area({poly|mpoly}) ST_Area() and Area() are synonyms. For more information, see the description of ST_Area(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.htmlKç€@@�("¾6ŠASBINARY (AsBinary(g), AsWKB(g) ST_AsBinary(), ST_AsWKB(), AsBinary(), and AsWKB() are synonyms. For more information, see the description of ST_AsBinary(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-format-conversion-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-format-conversion-functions.html SELECT ASCII('2'); -> 50 mysql> SELECT ASCII(2); -> 50 mysql> SELECT ASCII('dx'); -> 100 http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlB ‚É€@Pu*"¾6¢ASIN Syntax: ASIN(X) Returns the arc sine of X, that is, the value whose sine is X. Returns NULL if X is not in the range -1 to 1. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT ASIN(0.2); -> 0.20135792079033 mysql> SELECT ASIN('foo'); +-------------+ | ASIN('foo') | +-------------+ | 0 | +-------------+ 1 row in set, 1 warning (0.00 sec) mysql> SHOW WARNINGS; +---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'foo' | +---------+------+-----------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html@ö€r„@X+"¾6®ASSIGN-EQUAL Syntax: = This operator is used to perform value assignments in two cases, described in the next two paragraphs. Within a SET statement, = is treated as an assignment operator that causes the user variable on the left hand side of the operator to take on the value to its right. (In other words, when used in a SET statement, = is treated identically to :=.) The value on the right hand side may be a literal value, another variable storing a value, or any legal expression that yields a scalar value, including the result of a query (provided that this value is a scalar value). You can perform multiple assignments in the same SET statement. In the SET clause of an UPDATE statement, = also acts as an assignment operator; in this case, however, it causes the column named on the left hand side of the operator to assume the value given to the right, provided any WHERE conditions that are part of the UPDATE are met. You can make multiple assignments in the same SET clause of an UPDATE statement. In any other context, = is treated as a comparison operator. URL: http://dev.mysql.com/doc/refman/5.7/en/assignment-operators.html mysql> SELECT @var1, @var2; -> NULL, NULL mysql> SELECT @var1 := 1, @var2; -> 1, NULL mysql> SELECT @var1, @var2; -> 1, NULL mysql> SELECT @var1, @var2 := @var1; -> 1, 1 mysql> SELECT @var1, @var2; -> 1, 1 http://dev.mysql.com/doc/refman/5.7/en/assignment-operators.html@M�á‚@`Ë,"¾6ºASSIGN-VALUE Syntax: := Assignment operator. Causes the user variable on the left hand side of the operator to take on the value to its right. The value on the right hand side may be a literal value, another variable storing a value, or any legal expression that yields a scalar value, including the result of a query (provided that this value is a scalar value). You can perform multiple assignments in the same SET statement. You can perform multiple assignments in the same statement. Unlike =, the := operator is never interpreted as a comparison operator. This means you can use := in any valid SQL statement (not just in SET statements) to assign a value to a variable. URL: http://dev.mysql.com/doc/refman/5.7/en/assignment-operators.html mysql> SELECT @var1, @var2; -> NULL, NULL mysql> SELECT @var1 := 1, @var2; -> 1, NULL mysql> SELECT @var1, @var2; -> 1, NULL mysql> SELECT @var1, @var2 := @var1; -> 1, 1 mysql> SELECT @var1, @var2; -> 1, 1 mysql> SELECT @var1:=COUNT(*) FROM t1; -> 4 mysql> SELECT @var1; -> 4 http://dev.mysql.com/doc/refman/5.7/en/assignment-operators.htmlK߀@h‡-"¾6ÆASTEXT (AsText(g), AsWKT(g) ST_AsText(), ST_AsWKT(), AsText(), and AsWKT() are synonyms. For more information, see the description of ST_AsText(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-format-conversion-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-format-conversion-functions.htmlKÍ‚@pËô."¾6ÒASYMMETRIC_DECRYPT Syntax: ASYMMETRIC_DECRYPT(algorithm, crypt_str, key_str) Decrypts an encrypted string using the given algorithm and key string, and returns the resulting cleartext as a binary string. If decryption fails, the result is NULL. key_str must be a valid key string in PEM format. For successful decryption, it must be the public or private key string corresponding to the private or public key string used with ASYMMETRIC_ENCRYPT() to produce the encrypted string. algorithm indicates the encryption algorithm used to create the key. Supported algorithm values: 'RSA' For a usage example, see the description of ASYMMETRIC_ENCRYPT(). URL: http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.htmlp"—<c©,�Úÿû:"   ÎE¿;u€9Éinfimum supremumKîƒ@—/"¾6ÞASYMMETRIC_DERIVE Syntax: ASYMMETRIC_DERIVE(pub_key_str, priv_key_str) Derives a symmetric key using the private key of one party and the public key of another, and returns the resulting key as a binary string. If key derivation fails, the result is NULL. pub_key_str and priv_key_str must be valid key strings in PEM format. They must be created using the DH algorithm. Suppose that you have two pairs of public and private keys: SET @dhp = CREATE_DH_PARAMETERS(1024); SET @priv1 = CREATE_ASYMMETRIC_PRIV_KEY('DH', @dhp); SET @pub1 = CREATE_ASYMMETRIC_PUB_KEY('DH', @priv1); SET @priv2 = CREATE_ASYMMETRIC_PRIV_KEY('DH', @dhp); SET @pub2 = CREATE_ASYMMETRIC_PUB_KEY('DH', @priv2); Suppose further that you use the private key from one pair and the public key from the other pair to create a symmetric key string. Then this symmetric key identity relationship holds: ASYMMETRIC_DERIVE(@pub1, @priv2) = ASYMMETRIC_DERIVE(@pub2, @priv1) URL: http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.htmlK‚0ƒ@é0"¾6êASYMMETRIC_ENCRYPT Syntax: ASYMMETRIC_ENCRYPT(algorithm, str, key_str) Encrypts a string using the given algorithm and key string, and returns the resulting ciphertext as a binary string. If encryption fails, the result is NULL. The str length cannot be greater than the key_str length − 11, in bytes key_str must be a valid key string in PEM format. algorithm indicates the encryption algorithm used to create the key. Supported algorithm values: 'RSA' To encrypt a string, pass a private or public key string to ASYMMETRIC_ENCRYPT(). To recover the original unencrypted string, pass the encrypted string to ASYMMETRIC_DECRYPT(), along with the public or private key string correponding to the private or public key string used for encryption. URL: http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.html -- Generate private/public key pair SET @priv = CREATE_ASYMMETRIC_PRIV_KEY('RSA', 1024); SET @pub = CREATE_ASYMMETRIC_PUB_KEY('RSA', @priv); -- Encrypt using private key, decrypt using public key SET @ciphertext = ASYMMETRIC_ENCRYPT('RSA', 'The quick brown fox', @priv); SET @cleartext = ASYMMETRIC_DECRYPT('RSA', @ciphertext, @pub); -- Encrypt using public key, decrypt using private key SET @ciphertext = ASYMMETRIC_ENCRYPT('RSA', 'The quick brown fox', @pub); SET @cleartext = ASYMMETRIC_DECRYPT('RSA', @ciphertext, @priv); http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.htmlK7ƒ@ à1"¾6öASYMMETRIC_SIGN Syntax: ASYMMETRIC_SIGN(algorithm, digest_str, priv_key_str, digest_type) Signs a digest string using a private key string, and returns the signature as a binary string. If signing fails, the result is NULL. digest_str is the digest string. It can be generated by calling CREATE_DIGEST(). digest_type indicates the digest algorithm used to generate the digest string. priv_key_str is the private key string to use for signing the digest string. It must be a valid key string in PEM format. algorithm indicates the encryption algorithm used to create the key. Supported algorithm values: 'RSA', 'DSA' Supported digest_type values: 'SHA224', 'SHA256', 'SHA384', 'SHA512' For a usage example, see the description of ASYMMETRIC_VERIFY(). URL: http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.htmlK ‚žƒ@(O2"¾6ASYMMETRIC_VERIFY Syntax: ASYMMETRIC_VERIFY(algorithm, digest_str, sig_str, pub_key_str, digest_type) Verifies whether the signature string matches the digest string, and returns 1 or 0 to indicate whether verification succeeded or failed. digest_str is the digest string. It can be generated by calling CREATE_DIGEST(). digest_type indicates the digest algorithm used to generate the digest string. sig_str is the signature string. It can be generated by calling ASYMMETRIC_SIGN(). pub_key_str is the public key string of the signer. It corresponds to the private key passed to ASYMMETRIC_SIGN() to generate the signature string and must be a valid key string in PEM format. algorithm indicates the encryption algorithm used to create the key. Supported algorithm values: 'RSA', 'DSA' Supported digest_type values: 'SHA224', 'SHA256', 'SHA384', 'SHA512' URL: http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.html -- Set the encryption algorithm and digest type SET @algo = 'RSA'; SET @dig_type = 'SHA224'; -- Create private/public key pair SET @priv = CREATE_ASYMMETRIC_PRIV_KEY(@algo, 1024); SET @pub = CREATE_ASYMMETRIC_PUB_KEY(@algo, @priv); -- Generate digest from string SET @dig = CREATE_DIGEST(@dig_type, 'The quick brown fox'); -- Generate signature for digest and verify signature against digest SET @sig = ASYMMETRIC_SIGN(@algo, @dig, @priv, @dig_type); SET @verf = ASYMMETRIC_VERIFY(@algo, @dig, @sig, @pub, @dig_type); http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.htmlBf €@0¥3"¾6ATAN Syntax: ATAN(X) Returns the arc tangent of X, that is, the value whose tangent is X. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT ATAN(2); -> 1.1071487177941 mysql> SELECT ATAN(-2); -> -1.1071487177941 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlBo0�@8?4"¾6ATAN2 Syntax: ATAN(Y,X), ATAN2(Y,X) Returns the arc tangent of the two variables X and Y. It is similar to calculating the arc tangent of Y / X, except that the signs of both arguments are used to determine the quadrant of the result. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT ATAN(-2,2); -> -0.78539816339745 mysql> SELECT ATAN2(PI(),0); -> 1.5707963267949 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlB÷€Ÿ€@@55"¾6&AUTO_INCREMENT The AUTO_INCREMENT attribute can be used to generate a unique identity for new rows: URL: http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); INSERT INTO animals (name) VALUES ('dog'),('cat'),('penguin'), ('lax'),('whale'),('ostrich'); SELECT * FROM animals; http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html>^�@H 6"¾62AVG Syntax: AVG([DISTINCT] expr) Returns the average value of expr. The DISTINCT option can be used to return the average of the distinct values of expr. If there are no matching rows, AVG() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html mysql> SELECT student_name, AVG(test_score) FROM student GROUP BY student_name; http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html56„@PÉ7"¾6>BEGIN END Syntax: [begin_label:] BEGIN [statement_list] END [end_label] BEGIN ... END syntax is used for writing compound statements, which can appear within stored programs (stored procedures and functions, triggers, and events). A compound statement can contain multiple statements, enclosed by the BEGIN and END keywords. statement_list represents a list of one or more statements, each terminated by a semicolon (;) statement delimiter. The statement_list itself is optional, so the empty compound statement (BEGIN END) is legal. BEGIN ... END blocks can be nested. Use of multiple statements requires that a client is able to send statement strings containing the ; statement delimiter. In the mysql command-line client, this is handled with the delimiter command. Changing the ; end-of-statement delimiter (for example, to //) permit ; to be used in a program body. For an example, see http://dev.mysql.com/doc/refman/5.7/en/stored-programs-defining.html. A BEGIN ... END block can be labeled. See [HELP labels]. URL: http://dev.mysql.com/doc/refman/5.7/en/begin-end.html http://dev.mysql.com/doc/refman/5.7/en/begin-end.htmlAg�n�@Xt8"¾6JBENCHMARK Syntax: BENCHMARK(count,expr) The BENCHMARK() function executes the expression expr repeatedly count times. It may be used to time how quickly MySQL processes the expression. The result value is always 0. The intended use is from within the mysql client, which reports query execution times: URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye')); +---------------------------------------------------+ | BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye')) | +---------------------------------------------------+ | 0 | +---------------------------------------------------+ 1 row in set (4.74 sec) http://dev.mysql.com/doc/refman/5.7/en/information-functions.html@�‚@`¦9"¾6VBETWEEN AND Syntax: expr BETWEEN min AND max If expr is greater than or equal to min and expr is less than or equal to max, BETWEEN returns 1, otherwise it returns 0. This is equivalent to the expression (min <= expr AND expr <= max) if all the arguments are of the same type. Otherwise type conversion takes place according to the rules described in http://dev.mysql.com/doc/refman/5.7/en/type-conversion.html, but applied to all the three arguments. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1; -> 1, 0 mysql> SELECT 1 BETWEEN 2 AND 3; -> 0 mysql> SELECT 'b' BETWEEN 'a' AND 'c'; -> 1 mysql> SELECT 2 BETWEEN 2 AND '3'; -> 1 mysql> SELECT 2 BETWEEN 2 AND 'x-3'; -> 0 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.htmlA7�@hÕ:"¾6bBIGINT BIGINT[(M)] [UNSIGNED] [ZEROFILL] A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615. SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html<)ô€@p¶;"¾6nBIN #Syntax: BIN(N) Returns a string representation of the binary value of N, where N is a longlong (BIGINT) number. This is equivalent to CONV(N,10,2). Returns NULL if N is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT BIN(12); -> '1100' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html@#�@xÁ<"¾6zBINARY BINARY[(M)] The BINARY type is similar to the CHAR type, but stores binary byte strings rather than nonbinary character strings. An optional length M represents the column length in bytes. If omitted, M defaults to 1. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html:¨€Š�@€É="¾6†BINARY OPERATOR #Syntax: BINARY expr The BINARY operator converts the expression to a binary string. A common use for BINARY is to force a character string comparison to be done byte by byte rather than character by character, in effect becoming case-sensitive. The BINARY operator also causes trailing spaces in comparisons to be significant. URL: http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html mysql> SELECT 'a' = 'A'; -> 1 mysql> SELECT BINARY 'a' = 'A'; -> 0 mysql> SELECT 'a' = 'a '; -> 1 mysql> SELECT BINARY 'a' = 'a '; -> 0 http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html2Ú�@ˆi>"¾6’BINLOG Syntax: BINLOG 'str' BINLOG is an internal-use statement. It is generated by the mysqlbinlog program as the printable representation of certain events in binary log files. (See http://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html.) The 'str' value is a base 64-encoded string the that server decodes to determine the data change indicated by the corresponding event. This statement requires the SUPER privilege. URL: http://dev.mysql.com/doc/refman/5.7/en/binlog.html http://dev.mysql.com/doc/refman/5.7/en/binlog.htmlA¿€@�]?"¾6žBIT BIT[(M)] A bit-value type. M indicates the number of bits per value, from 1 to 64. The default is 1 if M is omitted. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html>�@˜¹@"¾6ªBIT_AND Syntax: BIT_AND(expr) Returns the bitwise AND of all bits in expr. The calculation is performed with 64-bit (BIGINT) precision. If there are no matching rows, BIT_AND() returns a neutral value (all bits set to 1). URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html9CÑ€@ ªA"¾6¶BIT_COUNT Syntax: BIT_COUNT(N) Returns the number of bits that are set in the argument N as an unsigned 64-bit integer, or NULL if the argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html mysql> SELECT BIT_COUNT(29), BIT_COUNT(b'101010'); -> 4, 3 http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html<0‹€@¨TB"¾6ÂBIT_LENGTH #Syntax: BIT_LENGTH(str) Returns the length of the string str in bits. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT BIT_LENGTH('text'); -> 32 http://dev.mysql.com/doc/refman/5.7/en/string-functions.html>�@°Æ§C"¾6ÎBIT_OR Syntax: BIT_OR(expr) Returns the bitwise OR of all bits in expr. The calculation is performed with 64-bit (BIGINT) precision. If there are no matching rows, BIT_OR() returns a neutral value (all bits set to 0). URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.htmlp1L)7Jâcû:" Î U…ø ÐQE¿-‰€,æ infimum supremum>�@¹D"¾6ÚBIT_XOR Syntax: BIT_XOR(expr) Returns the bitwise XOR of all bits in expr. The calculation is performed with 64-bit (BIGINT) precision. If there are no matching rows, BIT_XOR() returns a neutral value (all bits set to 0). URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html@œ�@9E"¾6æBLOB BLOB[(M)] A BLOB column with a maximum length of 65,535 (216 − 1) bytes. Each BLOB value is stored using a 2-byte length prefix that indicates the number of bytes in the value. An optional length M can be given for this type. If this is done, MySQL creates the column as the smallest BLOB type large enough to hold values M bytes long. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html0ô�@ �F"¾6òBLOB DATA TYPE A BLOB is a binary large object that can hold a variable amount of data. The four BLOB types are TINYBLOB, BLOB, MEDIUMBLOB, and LONGBLOB. These differ only in the maximum length of the values they can hold. The four TEXT types are TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT. These correspond to the four BLOB types and have the same maximum lengths and storage requirements. See http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html. URL: http://dev.mysql.com/doc/refman/5.7/en/blob.html http://dev.mysql.com/doc/refman/5.7/en/blob.htmlAû†@(™G"¾6þBOOLEAN BOOL, BOOLEAN These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true: mysql> SELECT IF(0, 'true', 'false'); +------------------------+ | IF(0, 'true', 'false') | +------------------------+ | false | +------------------------+ mysql> SELECT IF(1, 'true', 'false'); +------------------------+ | IF(1, 'true', 'false') | +------------------------+ | true | +------------------------+ mysql> SELECT IF(2, 'true', 'false'); +------------------------+ | IF(2, 'true', 'false') | +------------------------+ | true | +------------------------+ However, the values TRUE and FALSE are merely aliases for 1 and 0, respectively, as shown here: mysql> SELECT IF(0 = FALSE, 'true', 'false'); +--------------------------------+ | IF(0 = FALSE, 'true', 'false') | +--------------------------------+ | true | +--------------------------------+ mysql> SELECT IF(1 = TRUE, 'true', 'false'); +-------------------------------+ | IF(1 = TRUE, 'true', 'false') | +-------------------------------+ | true | +-------------------------------+ mysql> SELECT IF(2 = TRUE, 'true', 'false'); +-------------------------------+ | IF(2 = TRUE, 'true', 'false') | +-------------------------------+ | false | +-------------------------------+ mysql> SELECT IF(2 = FALSE, 'true', 'false'); +--------------------------------+ | IF(2 = FALSE, 'true', 'false') | +--------------------------------+ | false | +--------------------------------+ The last two statements display the results shown because 2 is equal to neither 1 nor 0. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.htmlFä€@0‡H"¾6 BUFFER Buffer(g, d[, strategy1[, strategy2[, strategy3]]]) ST_Buffer() and Buffer() are synonyms. For more information, see the description of ST_Buffer(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html7/„@8ÃI"¾6CACHE INDEX Syntax: CACHE INDEX tbl_index_list [, tbl_index_list] ... [PARTITION (partition_list | ALL)] IN key_cache_name tbl_index_list: tbl_name [[INDEX|KEY] (index_name[, index_name] ...)] partition_list: partition_name[, partition_name][, ...] The CACHE INDEX statement assigns table indexes to a specific key cache. It is used only for MyISAM tables. After the indexes have been assigned, they can be preloaded into the cache if desired with LOAD INDEX INTO CACHE. The following statement assigns indexes from the tables t1, t2, and t3 to the key cache named hot_cache: mysql> CACHE INDEX t1, t2, t3 IN hot_cache; +---------+--------------------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------+--------------------+----------+----------+ | test.t1 | assign_to_keycache | status | OK | | test.t2 | assign_to_keycache | status | OK | | test.t3 | assign_to_keycache | status | OK | +---------+--------------------+----------+----------+ URL: http://dev.mysql.com/doc/refman/5.7/en/cache-index.html http://dev.mysql.com/doc/refman/5.7/en/cache-index.html0Lƒ@@ÚJ"¾6"CALL Syntax: CALL sp_name([parameter[,...]]) CALL sp_name[()] The CALL statement invokes a stored procedure that was defined previously with CREATE PROCEDURE. Stored procedures that take no arguments can be invoked without parentheses. That is, CALL p() and CALL p are equivalent. CALL can pass back values to its caller using parameters that are declared as OUT or INOUT parameters. When the procedure returns, a client program can also obtain the number of rows affected for the final statement executed within the routine: At the SQL level, call the ROW_COUNT() function; from the C API, call the mysql_affected_rows() function. For information about the effect of unhandled conditions on procedure parameters, see http://dev.mysql.com/doc/refman/5.7/en/conditions-and-parameters.html. URL: http://dev.mysql.com/doc/refman/5.7/en/call.html http://dev.mysql.com/doc/refman/5.7/en/call.htmlB�šƒ@HIK"¾6.CASE OPERATOR Syntax: CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END The first CASE syntax returns the result for the first value=compare_value comparison that is true. The second syntax returns the result for the first condition that is true. If no comparison or condition is true, the result after ELSE is returned, or NULL if there is no ELSE part. *Note*: The syntax of the CASE expr described here differs slightly from that of the SQL CASE statement described in [HELP CASE statement], for use inside stored programs. The CASE statement cannot have an ELSE NULL clause, and it is terminated with END CASE instead of END. The return type of a CASE expression result is the aggregated type of all result values. URL: http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html mysql> SELECT CASE 1 WHEN 1 THEN 'one' -> WHEN 2 THEN 'two' ELSE 'more' END; -> 'one' mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END; -> 'true' mysql> SELECT CASE BINARY 'B' -> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END; -> NULL http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html0yˆ@P L"¾6:CASE STATEMENT Syntax: CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE Or: CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE The CASE statement for stored programs implements a complex conditional construct. *Note*: There is also a CASE expr, which differs from the CASE statement described here. See http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html. The CASE statement cannot have an ELSE NULL clause, and it is terminated with END CASE instead of END. For the first syntax, case_value is an expression. This value is compared to the when_value expression in each WHEN clause until one of them is equal. When an equal when_value is found, the corresponding THEN clause statement_list executes. If no when_value is equal, the ELSE clause statement_list executes, if there is one. This syntax cannot be used to test for equality with NULL because NULL = NULL is false. See http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html. For the second syntax, each WHEN clause search_condition expression is evaluated until one is true, at which point its corresponding THEN clause statement_list executes. If no search_condition is equal, the ELSE clause statement_list executes, if there is one. If no when_value or search_condition matches the value tested and the CASE statement contains no ELSE clause, a Case not found for CASE statement error results. Each statement_list consists of one or more SQL statements; an empty statement_list is not permitted. To handle situations where no value is matched by any WHEN clause, use an ELSE containing an empty BEGIN ... END block, as shown in this example. (The indentation used here in the ELSE clause is for purposes of clarity only, and is not otherwise significant.) DELIMITER | CREATE PROCEDURE p() BEGIN DECLARE v INT DEFAULT 1; CASE v WHEN 2 THEN SELECT v; WHEN 3 THEN SELECT 0; ELSE BEGIN END; END CASE; END; | URL: http://dev.mysql.com/doc/refman/5.7/en/case.html http://dev.mysql.com/doc/refman/5.7/en/case.html:3�@XÉM"¾6FCAST #Syntax: CAST(expr AS type) The CAST() function takes an expression of any type and produces a result value of the specified type, similar to CONVERT(). For more information, see the description of CONVERT(). CAST() is standard SQL syntax. URL: http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html http://dev.mysql.com/doc/refman/5.7/en/cast-functions.htmlB~@`N"¾6RCEIL Syntax: CEIL(X) CEIL() is a synonym for CEILING(). URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlBV’€@h‡O"¾6^CEILING Syntax: CEILING(X) Returns the smallest integer value not less than X. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT CEILING(1.23); -> 2 mysql> SELECT CEILING(-1.23); -> -1 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlJÑ€@pxP"¾6jCENTROID Centroid({poly|mpoly}) ST_Centroid() and Centroid() are synonyms. For more information, see the description of ST_Centroid(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html<À@xÓŠQ"¾6vCHANGE MASTER TO % &R¼http://dev.mysql.com/doc/refman/5.7/en/change-master-to.htmlp²õc U…øÐQe¥âF ˆ\ ?Ê Syntax: CHANGE MASTER TO option [, option] ... [ channel_option ] option: MASTER_BIND = 'interface_name' | MASTER_HOST = 'host_name' | MASTER_USER = 'user_name' | MASTER_PASSWORD = 'password' | MASTER_PORT = port_num | MASTER_CONNECT_RETRY = interval | MASTER_RETRY_COUNT = count | MASTER_DELAY = interval | MASTER_HEARTBEAT_PERIOD = interval | MASTER_LOG_FILE = 'master_log_name' | MASTER_LOG_POS = master_log_pos | MASTER_AUTO_POSITION = {0|1} | RELAY_LOG_FILE = 'relay_log_name' | RELAY_LOG_POS = relay_log_pos | MASTER_SSL = {0|1} | MASTER_SSL_CA = 'ca_file_name' | MASTER_SSL_CAPATH = 'ca_directory_name' | MASTER_SSL_CERT = 'cert_file_name' | MASTER_SSL_CRL = 'crl_file_name' | MASTER_SSL_CRLPATH = 'crl_directory_name' | MASTER_SSL_KEY = 'key_file_name' | MASTER_SSL_CIPHER = 'cipher_list' | MASTER_SSL_VERIFY_SERVER_CERT = {0|1} | MASTER_TLS_VERSION = 'protocol_list' | IGNORE_SERVER_IDS = (server_id_list) channel_option: FOR CHANNEL channel server_id_list: [server_id [, server_id] ... ] CHANGE MASTER TO changes the parameters that the slave server uses for connecting to the master server, for reading the master binary log, and reading the slave relay log. It also updates the contents of the master info and relay log info repositories (see http://dev.mysql.com/doc/refman/5.7/en/slave-logs.html). CHANGE MASTER TO requires the SUPER privilege. Prior to MySQL 5.7.4, the slave replication threads must be stopped, using STOP SLAVE if necessary, before issuing this statement. In MySQL 5.7.4 and later, you can issue CHANGE MASTER TO statements on a running slave without doing this, depending on the states of the slave SQL thread and slave I/O thread. The rules governing such use are provided later in this section. When using a multithreaded slave (in other words slave_parallel_workers is greater than 0), stopping the slave can cause "gaps" in the sequence of transactions that have been executed from the relay log, regardless of whether the slave was stopped intentionally or otherwise. When such gaps exist, issuing CHANGE MASTER TO fails. The solution in this situation is to issue START SLAVE UNTIL SQL_AFTER_MTS_GAPS which ensures that the gaps are closed. The optional FOR CHANNEL channel clause enables you to name which replication channel the statement applies to. Providing a FOR CHANNEL channel clause applies the CHANGE MASTER TO statement to a specific replication channel, and is used to add a new channel or modify an existing channel. For example, to add a new channel called channel2: CHANGE MASTER TO MASTER_HOST=host1, MASTER_PORT=3002 FOR CHANNEL 'channel2' If no clause is named and no extra channels exist, the statement applies to the default channel. When using multiple replication channels, if a CHANGE MASTER TO statement does not name a channel using a FOR CHANNEL channel clause, an error occurs. See http://dev.mysql.com/doc/refman/5.7/en/replication-channels.html for more information. Options not specified retain their value, except as indicated in the following discussion. Thus, in most cases, there is no need to specify options that do not change. For example, if the password to connect to your MySQL master has changed, issue this statement to tell the slave about the new password: CHANGE MASTER TO MASTER_PASSWORD='new3cret'; MASTER_HOST, MASTER_USER, MASTER_PASSWORD, and MASTER_PORT provide information to the slave about how to connect to its master: o MASTER_HOST and MASTER_PORT are the host name (or IP address) of the master host and its TCP/IP port. *Note*: Replication cannot use Unix socket files. You must be able to connect to the master MySQL server using TCP/IP. If you specify the MASTER_HOST or MASTER_PORT option, the slave assumes that the master server is different from before (even if the option value is the same as its current value.) In this case, the old values for the master binary log file name and position are considered no longer applicable, so if you do not specify MASTER_LOG_FILE and MASTER_LOG_POS in the statement, MASTER_LOG_FILE='' and MASTER_LOG_POS=4 are silently appended to it. Setting MASTER_HOST='' (that is, setting its value explicitly to an empty string) is not the same as not setting MASTER_HOST at all. Beginning with MySQL 5.5, trying to set MASTER_HOST to an empty string fails with an error. Previously, setting MASTER_HOST to an empty string caused START SLAVE subsequently to fail. (Bug #28796) Values used for MASTER_HOST and other CHANGE MASTER TO options are checked for linefeed (\n or 0x0A) characters; the presence of such characters in these values causes the statement to fail with ER_MASTER_INFO. (Bug #11758581, Bug #50801) o MASTER_USER and MASTER_PASSWORD are the user name and password of the account to use for connecting to the master. MASTER_USER cannot be made empty; setting MASTER_USER = '' or leaving it unset when setting a value for MASTER_PASSWORD causes an error (Bug #13427949). The password used for a MySQL Replication slave account in a CHANGE MASTER TO statement is limited to 32 characters in length; prior to MySQL 5.7.5, if the password was longer, the statement succeeded, but any excess characters were silently truncated. In MySQL 5.7.5 and later, trying to use a password of more than 32 characters causes CHANGE MASTER TO to fail. (Bug #11752299, Bug #43439) The text of a running CHANGE MASTER TO statement, including values for MASTER_USER and MASTER_PASSWORD, can be seen in the output of a concurrent SHOW PROCESSLIST statement. (The complete text of a START SLAVE statement is also visible to SHOW PROCESSLIST.) The MASTER_SSL_xxx options, and the MASTER_TLS_VERSION option, specify how the slave uses encryption and ciphers to secure the replication connection. These options can be changed even on slaves that are compiled without SSL support. They are saved to the master info repository, but are ignored if the slave does not have SSL support enabled. The MASTER_SSL_xxx and MASTER_TLS_VERSION options perform the same functions as the --ssl-xxx and --tls-version client options described in http://dev.mysql.com/doc/refman/5.7/en/encrypted-connection-options.htm l. The correspondence between the two sets of options, and the use of the MASTER_SSL_xxx and MASTER_TLS_VERSION options to set up a secure connection, is explained in http://dev.mysql.com/doc/refman/5.7/en/replication-solutions-encrypted- connections.html. As of MySQL 5.7.3, setting MASTER_SSL=1 means that the slave connection to the master must use SSL, or the connection attempt fails. Before 5.7.3, the use of an SSL connection by the slave was not enforced with MASTER_SSL=1. This is analogous to the client-side meaning of the --ssl command-line option; see http://dev.mysql.com/doc/refman/5.7/en/encrypted-connection-options.htm l. The MASTER_HEARTBEAT_PERIOD, MASTER_CONNECT_RETRY, and MASTER_RETRY_COUNT options control how the slave recognizes that the connection to the master has been lost and makes attempts to reconnect. o The slave_net_timeout system variable specifies the number of seconds that the slave waits for either more data or a heartbeat signal from the master, before the slave considers the connection broken, aborts the read, and tries to reconnect. The default value is 60 seconds (one minute). Prior to MySQL 5.7.7, the default was 3600 seconds (one hour). o The heartbeat interval, which stops the connection timeout occurring in the absence of data if the connection is still good, is controlled by the MASTER_HEARTBEAT_PERIOD option. A heartbeat signal is sent to the slave after that number of seconds, and the waiting period is reset whenever the master's binary log is updated with an event. Heartbeats are therefore sent by the master only if there are no unsent events in the binary log file for a period longer than this. The heartbeat interval interval is a decimal value having the range 0 to 4294967 seconds and a resolution in milliseconds; the smallest nonzero value is 0.001. Setting interval to 0 disables heartbeats altogether. The heartbeat interval defaults to half the value of the slave_net_timeout system variable. It is recorded in the master info log and shown in the replication_connection_configuration Performance Schema table. Issuing RESET SLAVE resets the heartbeat interval to the default value. o Prior to MySQL 5.7.4, not including MASTER_HEARTBEAT_PERIOD caused CHANGE MASTER TO to reset the heartbeat interval to the default (half the value of the slave_net_timeout system variable), and Slave_received_heartbeats to 0. The heartbeat interval is now not reset except by RESET SLAVE. (Bug #18185490) o Note that a change to the value or default setting of slave_net_timeout does not automatically change the heartbeat interval, whether that has been set explicitly or is using a previously calculated default. A warning is issued if you set @@GLOBAL.slave_net_timeout to a value less than that of the current heartbeat interval. If slave_net_timeout is changed, you must also issue CHANGE MASTER TO to adjust the heartbeat interval to an appropriate value so that the heartbeat signal occurs before the connection timeout. If you do not do this, the heartbeat signal has no effect, and if no data is received from the master, the slave can make repeated reconnection attempts, creating zombie dump threads. o If the slave does need to reconnect, the first retry occurs immediately after the timeout. MASTER_CONNECT_RETRY specifies the interval between reconnection attempts, and MASTER_RETRY_COUNT limits the number of reconnection attempts. If both the default settings are used, the slave waits 60 seconds between reconnection attempts (MASTER_CONNECT_RETRY=60), and keeps attempting to reconnect at this rate for 24 hours (MASTER_RETRY_COUNT=86400). These values are recorded in the master info log and shown in the replication_connection_configuration Performance Schema table. MASTER_RETRY_COUNT supersedes the --master-retry-count server startup option. MASTER_DELAY specifies how many seconds behind the master the slave must lag. An event received from the master is not executed until at least interval seconds later than its execution on the master. The default is 0. An error occurs if interval is not a nonnegative integer in the range from 0 to 231−1. For more information, see http://dev.mysql.com/doc/refman/5.7/en/replication-delayed.html. From MySQL 5.7, a CHANGE MASTER TO statement employing the MASTER_DELAY option can be executed on a running slave when the slave SQL thread is stopped. MASTER_BIND is for use on replication slaves having multiple network interfaces, and determines which of the slave's network interfaces is chosen for connecting to the master. The address configured with this option, if any, can be seen in the Master_Bind column of the output from SHOW SLAVE STATUS. If you are using slave status log tables (server started with --master-info-repository=TABLE), the value can also be seen as the Master_bind column of the mysql.slave_master_info table. The ability to bind a replication slave to a specific network interface is also supported by NDB Cluster. MASTER_LOG_FILE and MASTER_LOG_POS are the coordinates at which the slave I/O thread should begin reading from the master the next time the thread starts. RELAY_LOG_FILE and RELAY_LOG_POS are the coordinates at which the slave SQL thread should begin reading from the relay log the next time the thread starts. If you specify either of MASTER_LOG_FILE or MASTER_LOG_POS, you cannot specify RELAY_LOG_FILE or RELAY_LOG_POS. If you specify either of MASTER_LOG_FILE or MASTER_LOG_POS, you also cannot specify MASTER_AUTO_POSITION = 1 (described later in this section). If neither of MASTER_LOG_FILE or MASTER_LOG_POS is specified, the slave uses the last coordinates of the slave SQL thread before CHANGE MASTER TO was issued. This ensures that there is no discontinuity in replication, even if the slave SQL thread was late compared to the slave I/O thread, when you merely want to change, say, the password to use. From MySQL 5.7, a CHANGE MASTER TO statement employing RELAY_LOG_FILE, RELAY_LOG_POS, or both options can be executed on a running slave when the slave SQL thread is stopped. Prior to MySQL 5.7.4, CHANGE MASTER TO deletes all relay log files and starts a new one, unless you specify RELAY_LOG_FILE or RELAY_LOG_POS. In that case, relay log files are kept; the relay_log_purge global variable is set silently to 0. In MySQL 5.7.4 and later, relay logs are preserved if at least one of the slave SQL thread and the slave I/O thread is running; if both threads are stopped, all relay log files are deleted unless at least one of RELAY_LOG_FILE or RELAY_LOG_POS is specified. RELAY_LOG_FILE can use either an absolute or relative path, and uses the same base name as MASTER_LOG_FILE. (Bug #12190) When MASTER_AUTO_POSITION = 1 is used with CHANGE MASTER TO, the slave attempts to connect to the master using the GTID-based replication protocol. From MySQL 5.7, this option can be employed by CHANGE MASTER TO only if both the slave SQL and slave I/O threads are stopped. Both the slave and the master must have GTIDs enabled (GTID_MODE=ON, ON_PERMISSIVE, or OFF_PERMISSIVE on the slave, and GTID_MODE=ON on the master). Auto-positioning is used for the connection, so the coordinates represented by MASTER_LOG_FILE and MASTER_LOG_POS are not used, and the use of either or both of these options together with MASTER_AUTO_POSITION = 1 causes an error. If multi-source replication is enabled on the slave, you need to set the MASTER_AUTO_POSITION = 1 option for each applicable replication channel. With MASTER_AUTO_POSITION = 1 set, in the initial connection handshake, the slave sends a GTID set containing the transactions that it has already received, committed, or both. The master responds by sending all transactions recorded in its binary log whose GTID is not included in the GTID set sent by the slave. This exchange ensures that the master only sends the transactions with a GTID that the slave has not already recorded or committed. If the slave receives transactions from more than one master, as in the case of a diamond topology, the auto-skip function ensures that the transactions are not applied twice. For details of how the GTID set sent by the slave is computed, see http://dev.mysql.com/doc/refman/5.7/en/replication-gtids-auto-positioni ng.html. If any of the transactions that should be sent by the master have been purged from the master's binary log, or added to the set of GTIDs in the gtid_purged system variable by another method, the master sends the error ER_MASTER_HAS_PURGED_REQUIRED_GTIDS to the slave, and replication does not start. Also, if during the exchange of transactions it is found that the slave has recorded or committed transactions with the master's UUID in the GTID, but the master itself has not committed them, the master sends the error ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER to the slave and replication does not start. For information on how to handle these situations, see http://dev.mysql.com/doc/refman/5.7/en/replication-gtids-auto-positioni ng.html. You can see whether replication is running with auto-positioning enabled by checking the Performance Schema replication_connection_status table or the output of SHOW SLAVE STATUS. Disabling the MASTER_AUTO_POSITION option again makes the slave revert to file-based replication, in which case you must also specify one or both of the MASTER_LOG_FILE or MASTER_LOG_POS options. IGNORE_SERVER_IDS takes a comma-separated list of 0 or more server IDs. Events originating from the corresponding servers are ignored, with the exception of log rotation and deletion events, which are still recorded in the relay log. In circular replication, the originating server normally acts as the terminator of its own events, so that they are not applied more than once. Thus, this option is useful in circular replication when one of the servers in the circle is removed. Suppose that you have a circular replication setup with 4 servers, having server IDs 1, 2, 3, and 4, and e¥âFˆ\”&q ˆ\ òÿÿÿÿserver 3 fails. When bridging the gap by starting replication from server 2 to server 4, you can include IGNORE_SERVER_IDS = (3) in the CHANGE MASTER TO statement that you issue on server 4 to tell it to use server 2 as its master instead of server 3. Doing so causes it to ignore and not to propagate any statements that originated with the server that is no longer in use. If a CHANGE MASTER TO statement is issued without any IGNORE_SERVER_IDS option, any existing list is preserved. To clear the list of ignored servers, it is necessary to use the option with an empty list: CHANGE MASTER TO IGNORE_SERVER_IDS = (); Prior to MySQL 5.7.5, RESET SLAVE ALL has no effect on the server ID list. In MySQL 5.7.5 and later, RESET SLAVE ALL clears IGNORE_SERVER_IDS. (Bug #18816897) If IGNORE_SERVER_IDS contains the server's own ID and the server was started with the --replicate-same-server-id option enabled, an error results. The master info repository and the output of SHOW SLAVE STATUS provide the list of servers that are currently ignored. For more information, see http://dev.mysql.com/doc/refman/5.7/en/slave-logs-status.html, and [HELP SHOW SLAVE STATUS]. Invoking CHANGE MASTER TO causes the previous values for MASTER_HOST, MASTER_PORT, MASTER_LOG_FILE, and MASTER_LOG_POS to be written to the error log, along with other information about the slave's state prior to execution. CHANGE MASTER TO causes an implicit commit of an ongoing transaction. See http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html. In MySQL 5.7.4 and later, the strict requirement to execute STOP SLAVE prior to issuing any CHANGE MASTER TO statement (and START SLAVE afterward) is removed. Instead of depending on whether the slave is stopped, the behavior of CHANGE MASTER TO depends (in MySQL 5.7.4 and later) on the states of the slave SQL thread and slave I/O threads; which of these threads is stopped or running now determines the options that can or cannot be used with a CHANGE MASTER TO statement at a given point in time. The rules for making this determination are listed here: o If the SQL thread is stopped, you can execute CHANGE MASTER TO using any combination that is otherwise allowed of RELAY_LOG_FILE, RELAY_LOG_POS, and MASTER_DELAY options, even if the slave I/O thread is running. No other options may be used with this statement when the I/O thread is running. o If the I/O thread is stopped, you can execute CHANGE MASTER TO using any of the options for this statement (in any allowed combination) except RELAY_LOG_FILE, RELAY_LOG_POS, or MASTER_DELAY, even when the SQL thread is running. These three options may not be used when the I/O thread is running. o Both the SQL thread and the I/O thread must be stopped before issuing a CHANGE MASTER TO statement that employs MASTER_AUTO_POSITION = 1. You can check the current state of the slave SQL and I/O threads using SHOW SLAVE STATUS. For more information, see http://dev.mysql.com/doc/refman/5.7/en/replication-solutions-switch.htm l. If you are using statement-based replication and temporary tables, it is possible for a CHANGE MASTER TO statement following a STOP SLAVE statement to leave behind temporary tables on the slave. From MySQL 5.7, a warning (ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO) is issued whenever this occurs. You can avoid this in such cases by making sure that the value of the Slave_open_temp_tables system status variable is equal to 0 prior to executing such a CHANGE MASTER TO statement. CHANGE MASTER TO is useful for setting up a slave when you have the snapshot of the master and have recorded the master binary log coordinates corresponding to the time of the snapshot. After loading the snapshot into the slave to synchronize it with the master, you can run CHANGE MASTER TO MASTER_LOG_FILE='log_name', MASTER_LOG_POS=log_pos on the slave to specify the coordinates at which the slave should begin reading the master binary log. The following example changes the master server the slave uses and establishes the master binary log coordinates from which the slave begins reading. This is used when you want to set up the slave to replicate the master: CHANGE MASTER TO MASTER_HOST='master2.example.com', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_PORT=3306, MASTER_LOG_FILE='master2-bin.001', MASTER_LOG_POS=4, MASTER_CONNECT_RETRY=10; The next example shows an operation that is less frequently employed. It is used when the slave has relay log files that you want it to execute again for some reason. To do this, the master need not be reachable. You need only use CHANGE MASTER TO and start the SQL thread (START SLAVE SQL_THREAD): CHANGE MASTER TO RELAY_LOG_FILE='slave-relay-bin.006', RELAY_LOG_POS=4025; URL: http://dev.mysql.com/doc/refman/5.7/en/change-master-to.html ”&qˆ\¸¬Ñ% „E¿:�€7~infimum supremumE-–@ÏR"¾6‚CHANGE REPLICATION FILTER %Syntax: CHANGE REPLICATION FILTER filter[, filter][, ...] filter: REPLICATE_DO_DB = (db_list) | REPLICATE_IGNORE_DB = (db_list) | REPLICATE_DO_TABLE = (tbl_list) | REPLICATE_IGNORE_TABLE = (tbl_list) | REPLICATE_WILD_DO_TABLE = (wild_tbl_list) | REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list) | REPLICATE_REWRITE_DB = (db_pair_list) db_list: db_name[, db_name][, ...] tbl_list: db_name.table_name[, db_table_name][, ...] wild_tbl_list: 'db_pattern.table_pattern'[, 'db_pattern.table_pattern'][, ...] db_pair_list: (db_pair)[, (db_pair)][, ...] db_pair: from_db, to_db CHANGE REPLICATION FILTER sets one or more replication filtering rules on the slave in the same way as starting the slave mysqld with replication filtering options such as --replicate-do-db or --replicate-wild-ignore-table. Unlike the case with the server options, this statement does not require restarting the server to take effect, only that the slave SQL thread be stopped using STOP SLAVE SQL_THREAD first (and restarted with START SLAVE SQL_THREAD afterwards). CHANGE REPLICATION FILTER requires the SUPER privilege. Replication filters cannot be set on a MySQL server instance that is configured for Group Replication, because filtering transactions on some servers would make the group unable to reach agreement on a consistent state. The following list shows the CHANGE REPLICATION FILTER options and how they relate to --replicate-* server options: o REPLICATE_DO_DB: Include updates based on database name. Equivalent to --replicate-do-db. o REPLICATE_IGNORE_DB: Exclude updates based on database name. Equivalent to --replicate-ignore-db. o REPLICATE_DO_TABLE: Include updates based on table name. Equivalent to --replicate-do-table. o REPLICATE_IGNORE_TABLE: Exclude updates based on table name. Equivalent to --replicate-ignore-table. o REPLICATE_WILD_DO_TABLE: Include updates based on wildcard pattern matching table name. Equivalent to --replicate-wild-do-table. o REPLICATE_WILD_IGNORE_TABLE: Exclude updates based on wildcard pattern matching table name. Equivalent to --replicate-wild-ignore-table. o REPLICATE_REWRITE_DB: Perform updates on slave after substituting new name on slave for specified database on master. Equivalent to --replicate-rewrite-db. The precise effects of REPLICATE_DO_DB and REPLICATE_IGNORE_DB filters are dependent on whether statement-based or row-based replication is in effect. See http://dev.mysql.com/doc/refman/5.7/en/replication-rules.html, for more information. Multiple replication filtering rules can be created in a single CHANGE REPLICATION FILTER statement by separating the rules with commas, as shown here: CHANGE REPLICATION FILTER REPLICATE_DO_DB = (d1), REPLICATE_IGNORE_DB = (d2); Issuing the statement just shown is equivalent to starting the slave mysqld with the options --replicate-do-db=d1 --replicate-ignore-db=d2. If the same filtering rule is specified multiple times, only the last such rule is actually used. For example, the two statements shown here have exactly the same effect, because the first REPLICATE_DO_DB rule in the first statement is ignored: CHANGE REPLICATION FILTER REPLICATE_DO_DB = (db1, db2), REPLICATE_DO_DB = (db3, db4); CHANGE REPLICATION FILTER REPLICATE_DO_DB = (db3,db4); *Caution*: This behavior differs from that of the --replicate-* filter options where specifying the same option multiple times causes the creation of multiple filter rules. Names of tables and database not containing any special characters need not be quoted. Values used with REPLICATION_WILD_TABLE and REPLICATION_WILD_IGNORE_TABLE are string expressions, possibly containing (special) wildcard characters, and so must be quoted. This is shown in the following example statements: CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('db1.old%'); CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db1.new%', 'db2.new%'); Values used with REPLICATE_REWRITE_DB represent pairs of database names; each such value must be enclosed in parentheses. The following statement rewrites statements occurring on database db1 on the master to database db2 on the slave: CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((db1, db2)); The statement just shown contains two sets of parentheses, one enclosing the pair of database names, and the other enclosing the entire list. This is perhap more easily seen in the following example, which creates two rewrite-db rules, one rewriting database dbA to dbB, and one rewriting database dbC to dbD: CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((dbA, dbB), (dbC, dbD)); This statement leaves any existing replication filtering rules unchanged; to unset all filters of a given type, set the filter's value to an explicitly empty list, as shown in this example, which removes all existing REPLICATE_DO_DB and REPLICATE_IGNORE_DB rules: CHANGE REPLICATION FILTER REPLICATE_DO_DB = (), REPLICATE_IGNORE_DB = (); Setting a filter to empty in this way removes all existing rules, does not create any new ones, and does not restore any rules set at mysqld startup using --replicate-* options on the command line or in the configuration file. Values employed with REPLICATE_WILD_DO_TABLE and REPLICATE_WILD_IGNORE_TABLE must be in the format db_name.tbl_name. Prior to MySQL 5.7.5, this was not strictly enforced, although using nonconforming values with these options could lead to erroneous results (Bug #18095449). For more information, see http://dev.mysql.com/doc/refman/5.7/en/replication-rules.html. URL: http://dev.mysql.com/doc/refman/5.7/en/change-replication-filter.html http://dev.mysql.com/doc/refman/5.7/en/change-replication-filter.html@à�@}S"¾6ŽCHAR [NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name] A fixed-length string that is always right-padded with spaces to the specified length when stored. M represents the column length in characters. The range of M is 0 to 255. If M is omitted, the length is 1. *Note*: Trailing spaces are removed when CHAR values are retrieved unless the PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html@§€@ DT"¾6šCHAR BYTE The CHAR BYTE data type is an alias for the BINARY data type. This is a compatibility feature. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html SELECT CHARSET(CHAR(X'65')), CHARSET(CHAR(X'65' USING utf8)); +----------------------+---------------------------------+ | CHARSET(CHAR(X'65')) | CHARSET(CHAR(X'65' USING utf8)) | +----------------------+---------------------------------+ | binary | utf8 | +----------------------+---------------------------------+ If USING is given and the result string is illegal for the given character set, a warning is issued. Also, if strict SQL mode is enabled, the result from CHAR() becomes NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT CHAR(77,121,83,81,'76'); -> 'MySQL' mysql> SELECT CHAR(77,77.3,'77.3'); -> 'MMM' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<–€@00V"¾6²CHARACTER_LENGTH #Syntax: CHARACTER_LENGTH(str) CHARACTER_LENGTH() is a synonym for CHAR_LENGTH(). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlA§€‘€@8ÖW"¾6¾CHARSET Syntax: CHARSET(str) Returns the character set of the string argument. URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT CHARSET('abc'); -> 'latin1' mysql> SELECT CHARSET(CONVERT('abc' USING utf8)); -> 'utf8' mysql> SELECT CHARSET(USER()); -> 'utf8' http://dev.mysql.com/doc/refman/5.7/en/information-functions.html<F�@@ßX"¾6ËCHAR_LENGTH #Syntax: CHAR_LENGTH(str) Returns the length of the string str, measured in characters. A multibyte character counts as a single character. This means that for a string containing five 2-byte characters, LENGTH() returns 10, whereas CHAR_LENGTH() returns 5. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html7ñƒ@H…Y"¾6ØCHECK TABLE $Syntax: CHECK TABLE tbl_name [, tbl_name] ... [option] ... option: { FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED } CHECK TABLE checks a table or tables for errors. For MyISAM tables, the key statistics are updated as well. CHECK TABLE can also check views for problems, such as tables that are referenced in the view definition that no longer exist. To check a table, you must have some privilege for it. CHECK TABLE works for InnoDB, MyISAM, ARCHIVE, and CSV tables. Before running CHECK TABLE on InnoDB tables, see http://dev.mysql.com/doc/refman/5.7/en/check-table.html#check-table-inn odb. CHECK TABLE is supported for partitioned tables, and you can use ALTER TABLE ... CHECK PARTITION to check one or more partitions; for more information, see [HELP ALTER TABLE], and http://dev.mysql.com/doc/refman/5.7/en/partitioning-maintenance.html. CHECK TABLE ignores virtual generated columns that are not indexed. URL: http://dev.mysql.com/doc/refman/5.7/en/check-table.html http://dev.mysql.com/doc/refman/5.7/en/check-table.html:ö‚@P�Z"¾6åCHECKSUM TABLE $Syntax: CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED] CHECKSUM TABLE reports a checksum for the contents of a table. You can use this statement to verify that the contents are the same before and after a backup, rollback, or other operation that is intended to put the data back to a known state. This statement requires the SELECT privilege for the table. This statement is not supported for views. If you run CHECKSUM TABLE against a view, the Checksum value is always NULL, and a warning is returned. For a nonexistent table, CHECKSUM TABLE returns NULL and generates a warning. During the checksum operation, the table is locked with a read lock for InnoDB and MyISAM. URL: http://dev.mysql.com/doc/refman/5.7/en/checksum-table.html http://dev.mysql.com/doc/refman/5.7/en/checksum-table.html1i�@X÷["¾6òCLOSE Syntax: CLOSE cursor_name This statement closes a previously opened cursor. For an example, see http://dev.mysql.com/doc/refman/5.7/en/cursors.html. An error occurs if the cursor is not open. If not closed explicitly, a cursor is closed at the end of the BEGIN ... END block in which it was declared. URL: http://dev.mysql.com/doc/refman/5.7/en/close.html http://dev.mysql.com/doc/refman/5.7/en/close.html@e �@` \"¾6ÿCOALESCE Syntax: COALESCE(value,...) Returns the first non-NULL value in the list, or NULL if there are no non-NULL values. The return type of COALESCE() is the aggregated type of the argument types. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT COALESCE(NULL,1); -> 1 mysql> SELECT COALESCE(NULL,NULL,NULL); -> NULL http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.htmlAÚ€¥€@h]"¾6 COERCIBILITY Syntax: COERCIBILITY(str) Returns the collation coercibility value of the string argument. URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT COERCIBILITY('abc' COLLATE latin1_swedish_ci); -> 0 mysql> SELECT COERCIBILITY(USER()); -> 3 mysql> SELECT COERCIBILITY('abc'); -> 4 mysql> SELECT COERCIBILITY(1000); -> 5 http://dev.mysql.com/doc/refman/5.7/en/information-functions.htmlA�€�€@p¯^"¾6COLLATION Syntax: COLLATION(str) Returns the collation of the string argument. URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT COLLATION('abc'); -> 'latin1_swedish_ci' mysql> SELECT COLLATION(_utf8'abc'); -> 'utf8_general_ci' http://dev.mysql.com/doc/refman/5.7/en/information-functions.html@â€r�@xò_"¾6&COMPRESS Syntax: COMPRESS(string_to_compress) Compresses a string and returns the result as a binary string. This function requires MySQL to have been compiled with a compression library such as zlib. Otherwise, the return value is always NULL. The compressed string can be uncompressed with UNCOMPRESS(). URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000))); -> 21 mysql> SELECT LENGTH(COMPRESS('')); -> 0 mysql> SELECT LENGTH(COMPRESS('a')); -> 13 mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16))); -> 15 http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html< €Ô�@€Èò`"¾63CONCAT #Syntax: CONCAT(str1,str2,...) Returns the string that results from concatenating the arguments. May have one or more arguments. If all arguments are nonbinary strings, the result is a nonbinary string. If the arguments include any binary strings, the result is a binary string. A numeric argument is converted to its equivalent nonbinary string form. CONCAT() returns NULL if any argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT CONCAT('My', 'S', 'QL'); -> 'MySQL' mysql> SELECT CONCAT('My', NULL, 'QL'); -> NULL mysql> SELECT CONCAT(14.3); -> '14.3' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlp$ªc¸¬Ñ%„�!s wÄE¿9:€7V infimum supremum<Ñ€¶�@ a"¾6@CONCAT_WS #Syntax: CONCAT_WS(separator,str1,str2,...) CONCAT_WS() stands for Concatenate With Separator and is a special form of CONCAT(). The first argument is the separator for the rest of the arguments. The separator is added between the strings to be concatenated. The separator can be a string, as can the rest of the arguments. If the separator is NULL, the result is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name'); -> 'First name,Second name,Last Name' mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name'); -> 'First name,Last Name' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlA0ñ�@Àb"¾6MCONNECTION_ID Syntax: CONNECTION_ID() Returns the connection ID (thread ID) for the connection. Every connection has an ID that is unique among the set of currently connected clients. The value returned by CONNECTION_ID() is the same type of value as displayed in the ID column of the INFORMATION_SCHEMA.PROCESSLIST table, the Id column of SHOW PROCESSLIST output, and the PROCESSLIST_ID column of the Performance Schema threads table. URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT CONNECTION_ID(); -> 23786 http://dev.mysql.com/doc/refman/5.7/en/information-functions.htmlE©‚g‚@ ²c"¾6ZCONSTRAINT MySQL supports foreign keys, which let you cross-reference related data across tables, and foreign key constraints, which help keep this spread-out data consistent. The essential syntax for a foreign key constraint definition in a CREATE TABLE or ALTER TABLE statement looks like this: [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (col_name, ...) REFERENCES tbl_name (col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT URL: http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html CREATE TABLE product ( category INT NOT NULL, id INT NOT NULL, price DECIMAL, PRIMARY KEY(category, id) ) ENGINE=INNODB; CREATE TABLE customer ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE product_order ( no INT NOT NULL AUTO_INCREMENT, product_category INT NOT NULL, product_id INT NOT NULL, customer_id INT NOT NULL, PRIMARY KEY(no), INDEX (product_category, product_id), INDEX (customer_id), FOREIGN KEY (product_category, product_id) REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT, FOREIGN KEY (customer_id) REFERENCES customer(id) ) ENGINE=INNODB; http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.htmlJË€@(sd"¾6gCONTAINS Contains(g1, g2) MBRContains() and Contains() are synonyms. For more information, see the description of MBRContains(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlB΀A‚@0®e"¾6tCONV Syntax: CONV(N,from_base,to_base) Converts numbers between different number bases. Returns a string representation of the number N, converted from base from_base to base to_base. Returns NULL if any argument is NULL. The argument N is interpreted as an integer, but may be specified as an integer or a string. The minimum base is 2 and the maximum base is 36. If from_base is a negative number, N is regarded as a signed number. Otherwise, N is treated as unsigned. CONV() works with 64-bit precision. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT CONV('a',16,2); -> '1010' mysql> SELECT CONV('6E',18,8); -> '172' mysql> SELECT CONV(-17,10,-18); -> '-H' mysql> SELECT CONV(10+'10'+'10'+X'0a',10,10); -> '40' http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html:‹@8 ±f"¾6�CONVERT #Syntax: CONVERT(expr,type), CONVERT(expr USING transcoding_name) The CONVERT() function takes an expression of any type and produces a result value of the specified type. Discussion of CONVERT(expr, type) syntax here also applies to CAST(expr AS type), which is equivalent. CONVERT(... USING ...) is standard SQL syntax. The non-USING form of CONVERT() is ODBC syntax. CONVERT() with USING converts data between different character sets. In MySQL, transcoding names are the same as the corresponding character set names. For example, this statement converts the string 'abc' in the default character set to the corresponding string in the utf8 character set: SELECT CONVERT('abc' USING utf8); CONVERT() without USING and CAST() take an expression and a type value specifying the result type. These type values are permitted: o BINARY[(N)] Produces a string with the BINARY data type. See http://dev.mysql.com/doc/refman/5.7/en/binary-varbinary.html for a description of how this affects comparisons. If the optional length N is given, BINARY(N) causes the cast to use no more than N bytes of the argument. Values shorter than N bytes are padded with 0x00 bytes to a length of N. o CHAR[(N)] [charset_info] Produces a string with the CHAR data type. If the optional length N is given, CHAR(N) causes the cast to use no more than N characters of the argument. No padding occurs for values shorter than N characters. With no charset_info clause, CHAR produces a string with the default character set. To specify the character set explicitly, these charset_info values are permitted: o CHARACTER SET charset_name: Produces a string with the given character set. o ASCII: Shorthand for CHARACTER SET latin1. o UNICODE: Shorthand for CHARACTER SET ucs2. In all cases, the string has the default collation for the character set. o DATE Produces a DATE value. o DATETIME Produces a DATETIME value. o DECIMAL[(M[,D])] Produces a DECIMAL value. If the optional M and D values are given, they specify the maximum number of digits (the precision) and the number of digits following the decimal point (the scale). o JSON (added in MySQL 5.7.8) Produces a JSON value. For details on the rules for conversion of values between JSON and other types, see http://dev.mysql.com/doc/refman/5.7/en/json.html#json-comparison. o NCHAR[(N)] Like CHAR, but produces a string with the national character set. See http://dev.mysql.com/doc/refman/5.7/en/charset-national.html. Unlike CHAR, NCHAR does not permit trailing character set information to be specified. o SIGNED [INTEGER] Produces a signed integer value. o TIME Produces a TIME value. o UNSIGNED [INTEGER] Produces an unsigned integer value. URL: http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html http://dev.mysql.com/doc/refman/5.7/en/cast-functions.htmlC€¡�@@g"¾6ŽCONVERT_TZ Syntax: CONVERT_TZ(dt,from_tz,to_tz) CONVERT_TZ() converts a datetime value dt from the time zone given by from_tz to the time zone given by to_tz and returns the resulting value. Time zones are specified as described in http://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html. This function returns NULL if the arguments are invalid. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET'); -> '2004-01-01 13:00:00' mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00'); -> '2004-01-01 22:00:00' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlFÊ€@Hmh"¾6›CONVEXHULL ConvexHull(g) ST_ConvexHull() and ConvexHull() are synonyms. For more information, see the description of ST_ConvexHull(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.htmlB'�€@PUi"¾6¨COS Syntax: COS(X) Returns the cosine of X, where X is given in radians. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT COS(PI()); -> -1 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlBgv@X}j"¾6µCOT Syntax: COT(X) Returns the cotangent of X. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT COT(12); -> -1.5726734063977 mysql> SELECT COT(0); -> out-of-range error http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html>—€�@`Dk"¾6ÂCOUNT Syntax: COUNT(expr) Returns a count of the number of non-NULL values of expr in the rows retrieved by a SELECT statement. The result is a BIGINT value. If there are no matching rows, COUNT() returns 0. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html mysql> SELECT student.student_name,COUNT(*) FROM student,course WHERE student.student_id=course.student_id GROUP BY student_name; http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html>4ô€@hÃl"¾6ÏCOUNT DISTINCT Syntax: COUNT(DISTINCT expr,[expr...]) Returns a count of the number of rows with different non-NULL expr values. If there are no matching rows, COUNT(DISTINCT) returns 0. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html mysql> SELECT COUNT(DISTINCT results) FROM student; http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.htmlBh3�@p:m"¾6ÜCRC32 Syntax: CRC32(expr) Computes a cyclic redundancy check value and returns a 32-bit unsigned value. The result is NULL if the argument is NULL. The argument is expected to be a string and (if possible) is treated as one if it is not. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT CRC32('MySQL'); -> 3259397556 mysql> SELECT CRC32('mysql'); -> 2501908538 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html;º�@xRn"¾6éCREATE DATABASE Syntax: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name CREATE DATABASE creates a database with the given name. To use this statement, you need the CREATE privilege for the database. CREATE SCHEMA is a synonym for CREATE DATABASE. URL: http://dev.mysql.com/doc/refman/5.7/en/create-database.html http://dev.mysql.com/doc/refman/5.7/en/create-database.html8Š@€ šo"¾6öCREATE EVENT Syntax: CREATE [DEFINER = user] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'string'] DO event_body; schedule: AT timestamp [+ INTERVAL interval] ... | EVERY interval [STARTS timestamp [+ INTERVAL interval] ...] [ENDS timestamp [+ INTERVAL interval] ...] interval: quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND} This statement creates and schedules a new event. The event will not run unless the Event Scheduler is enabled. For information about checking Event Scheduler status and enabling it if necessary, see http://dev.mysql.com/doc/refman/5.7/en/events-configuration.html. CREATE EVENT requires the EVENT privilege for the schema in which the event is to be created. If the DEFINER clause is present, the privileges required depend on the user value, as discussed in http://dev.mysql.com/doc/refman/5.7/en/stored-objects-security.html. The minimum requirements for a valid CREATE EVENT statement are as follows: o The keywords CREATE EVENT plus an event name, which uniquely identifies the event in a database schema. o An ON SCHEDULE clause, which determines when and how often the event executes. o A DO clause, which contains the SQL statement to be executed by an event. This is an example of a minimal CREATE EVENT statement: CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO UPDATE myschema.mytable SET mycol = mycol + 1; The previous statement creates an event named myevent. This event executes once---one hour following its creation---by running an SQL statement that increments the value of the myschema.mytable table's mycol column by 1. The event_name must be a valid MySQL identifier with a maximum length of 64 characters. Event names are not case-sensitive, so you cannot have two events named myevent and MyEvent in the same schema. In general, the rules governing event names are the same as those for names of stored routines. See http://dev.mysql.com/doc/refman/5.7/en/identifiers.html. An event is associated with a schema. If no schema is indicated as part of event_name, the default (current) schema is assumed. To create an event in a specific schema, qualify the event name with a schema using schema_name.event_name syntax. URL: http://dev.mysql.com/doc/refman/5.7/en/create-event.html http://dev.mysql.com/doc/refman/5.7/en/create-event.html;V�@ˆÉp"¾6CREATE FUNCTION The CREATE FUNCTION statement is used to create stored functions and user-defined functions (UDFs): o For information about creating stored functions, see [HELP CREATE PROCEDURE]. o For information about creating user-defined functions, see [HELP CREATE FUNCTION UDF]. URL: http://dev.mysql.com/doc/refman/5.7/en/create-function.html http://dev.mysql.com/doc/refman/5.7/en/create-function.htmlp&mê c�!swÄÖFô±>›E¿;«€(_infimum supremum?¶„@Rq"¾6CREATE FUNCTION UDF &Syntax: CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} SONAME shared_library_name A user-defined function (UDF) is a way to extend MySQL with a new function that works like a native (built-in) MySQL function such as ABS() or CONCAT(). function_name is the name that should be used in SQL statements to invoke the function. The RETURNS clause indicates the type of the function's return value. DECIMAL is a legal value after RETURNS, but currently DECIMAL functions return string values and should be written like STRING functions. shared_library_name is the base name of the shared library file that contains the code that implements the function. The file must be located in the plugin directory. This directory is given by the value of the plugin_dir system variable. For more information, see http://dev.mysql.com/doc/refman/5.7/en/udf-loading.html. To create a function, you must have the INSERT privilege for the mysql system database. This is necessary because CREATE FUNCTION adds a row to the mysql.func system table that records the function's name, type, and shared library name. URL: http://dev.mysql.com/doc/refman/5.7/en/create-function-udf.html http://dev.mysql.com/doc/refman/5.7/en/create-function-udf.html8ƒ„@r"¾6CREATE INDEX Syntax: CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name [index_type] ON tbl_name (key_part,...) [index_option] [algorithm_option | lock_option] ... key_part: col_name [(length)] [ASC | DESC] index_option: KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name | COMMENT 'string' index_type: USING {BTREE | HASH} algorithm_option: ALGORITHM [=] {DEFAULT | INPLACE | COPY} lock_option: LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE} Normally, you create all indexes on a table at the time the table itself is created with CREATE TABLE. See [HELP CREATE TABLE]. This guideline is especially important for InnoDB tables, where the primary key determines the physical layout of rows in the data file. CREATE INDEX enables you to add indexes to existing tables. CREATE INDEX is mapped to an ALTER TABLE statement to create indexes. See [HELP ALTER TABLE]. CREATE INDEX cannot be used to create a PRIMARY KEY; use ALTER TABLE instead. For more information about indexes, see http://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html. URL: http://dev.mysql.com/doc/refman/5.7/en/create-index.html http://dev.mysql.com/doc/refman/5.7/en/create-index.html@Ö“@ ss"¾6*CREATE LOGFILE GROUP Syntax: CREATE LOGFILE GROUP logfile_group ADD UNDOFILE 'undo_file' [INITIAL_SIZE [=] initial_size] [UNDO_BUFFER_SIZE [=] undo_buffer_size] [REDO_BUFFER_SIZE [=] redo_buffer_size] [NODEGROUP [=] nodegroup_id] [WAIT] [COMMENT [=] 'string'] ENGINE [=] engine_name This statement creates a new log file group named logfile_group having a single UNDO file named 'undo_file'. A CREATE LOGFILE GROUP statement has one and only one ADD UNDOFILE clause. For rules covering the naming of log file groups, see http://dev.mysql.com/doc/refman/5.7/en/identifiers.html. *Note*: All NDB Cluster Disk Data objects share the same namespace. This means that each Disk Data object must be uniquely named (and not merely each Disk Data object of a given type). For example, you cannot have a tablespace and a log file group with the same name, or a tablespace and a data file with the same name. There can be only one log file group per NDB Cluster instance at any given time. The optional INITIAL_SIZE parameter sets the UNDO file's initial size; if not specified, it defaults to 128M (128 megabytes). The optional UNDO_BUFFER_SIZE parameter sets the size used by the UNDO buffer for the log file group; The default value for UNDO_BUFFER_SIZE is 8M (eight megabytes); this value cannot exceed the amount of system memory available. Both of these parameters are specified in bytes. You may optionally follow either or both of these with a one-letter abbreviation for an order of magnitude, similar to those used in my.cnf. Generally, this is one of the letters M (for megabytes) or G (for gigabytes). Memory used for UNDO_BUFFER_SIZE comes from the global pool whose size is determined by the value of the SharedGlobalMemory data node configuration parameter. This includes any default value implied for this option by the setting of the InitialLogFileGroup data node configuration parameter. The maximum permitted for UNDO_BUFFER_SIZE is 629145600 (600 MB). On 32-bit systems, the maximum supported value for INITIAL_SIZE is 4294967296 (4 GB). (Bug #29186) The minimum allowed value for INITIAL_SIZE is 1048576 (1 MB). The ENGINE option determines the storage engine to be used by this log file group, with engine_name being the name of the storage engine. In MySQL 5.7, this must be NDB (or NDBCLUSTER). If ENGINE is not set, MySQL tries to use the engine specified by the default_storage_engine server system variable (formerly storage_engine). In any case, if the engine is not specified as NDB or NDBCLUSTER, the CREATE LOGFILE GROUP statement appears to succeed but actually fails to create the log file group, as shown here: mysql> CREATE LOGFILE GROUP lg1 -> ADD UNDOFILE 'undo.dat' INITIAL_SIZE = 10M; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> SHOW WARNINGS; +-------+------+------------------------------------------------------------------------------------------------+ | Level | Code | Message | +-------+------+------------------------------------------------------------------------------------------------+ | Error | 1478 | Table storage engine 'InnoDB' does not support the create option 'TABLESPACE or LOGFILE GROUP' | +-------+------+------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> DROP LOGFILE GROUP lg1 ENGINE = NDB; ERROR 1529 (HY000): Failed to drop LOGFILE GROUP mysql> CREATE LOGFILE GROUP lg1 -> ADD UNDOFILE 'undo.dat' INITIAL_SIZE = 10M -> ENGINE = NDB; Query OK, 0 rows affected (2.97 sec) The fact that the CREATE LOGFILE GROUP statement does not actually return an error when a non-NDB storage engine is named, but rather appears to succeed, is a known issue which we hope to address in a future release of NDB Cluster. REDO_BUFFER_SIZE, NODEGROUP, WAIT, and COMMENT are parsed but ignored, and so have no effect in MySQL 5.7. These options are intended for future expansion. When used with ENGINE [=] NDB, a log file group and associated UNDO log file are created on each Cluster data node. You can verify that the UNDO files were created and obtain information about them by querying the INFORMATION_SCHEMA.FILES table. For example: mysql> SELECT LOGFILE_GROUP_NAME, LOGFILE_GROUP_NUMBER, EXTRA -> FROM INFORMATION_SCHEMA.FILES -> WHERE FILE_NAME = 'undo_10.dat'; +--------------------+----------------------+----------------+ | LOGFILE_GROUP_NAME | LOGFILE_GROUP_NUMBER | EXTRA | +--------------------+----------------------+----------------+ | lg_3 | 11 | CLUSTER_NODE=3 | | lg_3 | 11 | CLUSTER_NODE=4 | +--------------------+----------------------+----------------+ 2 rows in set (0.06 sec) CREATE LOGFILE GROUP is useful only with Disk Data storage for NDB Cluster. See http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-disk-data.html. URL: http://dev.mysql.com/doc/refman/5.7/en/create-logfile-group.html http://dev.mysql.com/doc/refman/5.7/en/create-logfile-group.html<À@(­t"¾67CREATE PROCEDURE &%!http://dev.mysql.com/doc/refman/5.7/en/create-procedure.html9lQ‡@0Su"¾6DCREATE SERVER Syntax: CREATE SERVER server_name FOREIGN DATA WRAPPER wrapper_name OPTIONS (option [, option] ...) option: { HOST character-literal | DATABASE character-literal | USER character-literal | PASSWORD character-literal | SOCKET character-literal | OWNER character-literal | PORT numeric-literal } This statement creates the definition of a server for use with the FEDERATED storage engine. The CREATE SERVER statement creates a new row in the servers table in the mysql database. This statement requires the SUPER privilege. The server_name should be a unique reference to the server. Server definitions are global within the scope of the server, it is not possible to qualify the server definition to a specific database. server_name has a maximum length of 64 characters (names longer than 64 characters are silently truncated), and is case insensitive. You may specify the name as a quoted string. The wrapper_name is an identifier and may be quoted with single quotation marks. For each option you must specify either a character literal or numeric literal. Character literals are UTF-8, support a maximum length of 64 characters and default to a blank (empty) string. String literals are silently truncated to 64 characters. Numeric literals must be a number between 0 and 9999, default value is 0. *Note*: The OWNER option is currently not applied, and has no effect on the ownership or operation of the server connection that is created. The CREATE SERVER statement creates an entry in the mysql.servers table that can later be used with the CREATE TABLE statement when creating a FEDERATED table. The options that you specify will be used to populate the columns in the mysql.servers table. The table columns are Server_name, Host, Db, Username, Password, Port and Socket. URL: http://dev.mysql.com/doc/refman/5.7/en/create-server.html CREATE SERVER s FOREIGN DATA WRAPPER mysql OPTIONS (USER 'Remote', HOST '198.51.100.106', DATABASE 'test'); http://dev.mysql.com/doc/refman/5.7/en/create-server.html8Á’@8Øv"¾6QCREATE TABLE Syntax: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options] CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [partition_options] [IGNORE | REPLACE] [AS] query_expression CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) } create_definition: col_name column_definition | {INDEX|KEY} [index_name] [index_type] (key_part,...) [index_option] ... | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (key_part,...) [index_option] ... | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (key_part,...) [index_option] ... | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (key_part,...) [index_option] ... | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (col_name,...) reference_definition | CHECK (expr) column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY] [COMMENT 'string'] [COLLATE collation_name] [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}] [STORAGE {DISK|MEMORY}] [reference_definition] | data_type [COLLATE collation_name] [GENERATED ALWAYS] AS (expr) [VIRTUAL | STORED] [NOT NULL | NULL] [UNIQUE [KEY]] [[PRIMARY] KEY] [COMMENT 'string'] [reference_definition] data_type: (see http://dev.mysql.com/doc/refman/5.7/en/data-types.html) key_part: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH} index_option: KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name | COMMENT 'string' reference_definition: REFERENCES tbl_name (key_part,...) [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT table_options: table_option [[,] table_option] ... table_option: AUTO_INCREMENT [=] value | AVG_ROW_LENGTH [=] value | [DEFAULT] CHARACTER SET [=] charset_name | CHECKSUM [=] {0 | 1} | [DEFAULT] COLLATE [=] collation_name | COMMENT [=] 'string' | COMPRESSION [=] {'ZLIB'|'LZ4'|'NONE'} | CONNECTION [=] 'connect_string' | {DATA|INDEX} DIRECTORY [=] 'absolute path to directory' | DELAY_KEY_WRITE [=] {0 | 1} | ENCRYPTION [=] {'Y' | 'N'} | ENGINE [=] engine_name | INSERT_METHOD [=] { NO | FIRST | LAST } | KEY_BLOCK_SIZE [=] value | MAX_ROWS [=] value | MIN_ROWS [=] value | PACK_KEYS [=] {0 | 1 | DEFAULT} | PASSWORD [=] 'string' | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} | STATS_AUTO_RECALC [=] {DEFAULT|0|1} | STATS_PERSISTENT [=] {DEFAULT|0|1} | STATS_SAMPLE_PAGES [=] value | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY}] | UNION [=] (tbl_name[,tbl_name]...) partition_options: PARTITION BY { [LINEAR] HASH(expr) | [LINEAR] KEY [ALGORITHM={1|2}] (column_list) | RANGE{(expr) | COLUMNS(column_list)} | LIST{(expr) | COLUMNS(column_list)} } [PARTITIONS num] [SUBPARTITION BY { [LINEAR] HASH(expr) | [LINEAR] KEY [ALGORITHM={1|2}] (column_list) } [SUBPARTITIONS num] ] [(partition_definition [, partition_definition] ...)] partition_definition: PARTITION partition_name [VALUES {LESS THAN {(expr | value_list) | MAXVALUE} | IN (value_list)}] [[STORAGE] ENGINE [=] engine_name] [COMMENT [=] 'string' ] [DATA DIRECTORY [=] 'data_dir'] [INDEX DIRECTORY [=] 'index_dir'] [MAX_ROWS [=] max_number_of_rows] [MIN_ROWS [=] min_number_of_rows] [TABLESPACE [=] tablespace_name] [(subpartition_definition [, subpartition_definition] ...)] subpartition_definition: SUBPARTITION logical_name [[STORAGE] ENGINE [=] engine_name] [COMMENT [=] 'string' ] [DATA DIRECTORY [=] 'data_dir'] [INDEX DIRECTORY [=] 'index_dir'] [MAX_ROWS [=] max_number_of_rows] [MIN_ROWS [=] min_number_of_rows] [TABLESPACE [=] tablespace_name] query_expression: SELECT ... (Some valid select or union statement) CREATE TABLE creates a table with the given name. You must have the CREATE privilege for the table. By default, tables are created in the default database, using the InnoDB storage engine. An error occurs if the table exists, if there is no default database, or if the database does not exist. For information about the physical representation of a table, see http://dev.mysql.com/doc/refman/5.7/en/create-table-files.html. URL: http://dev.mysql.com/doc/refman/5.7/en/create-table.html http://dev.mysql.com/doc/refman/5.7/en/create-table.htmlpcÖFô±>›{5wŒX° %!ÿÿÿÿSyntax: CREATE [DEFINER = user] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body CREATE [DEFINER = user] FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characteristic ...] routine_body proc_parameter: [ IN | OUT | INOUT ] param_name type func_parameter: param_name type type: Any valid MySQL data type characteristic: COMMENT 'string' | LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } routine_body: Valid SQL routine statement These statements create stored routines. By default, a routine is associated with the default database. To associate the routine explicitly with a given database, specify the name as db_name.sp_name when you create it. The CREATE FUNCTION statement is also used in MySQL to support UDFs (user-defined functions). See http://dev.mysql.com/doc/refman/5.7/en/adding-functions.html. A UDF can be regarded as an external stored function. Stored functions share their namespace with UDFs. See http://dev.mysql.com/doc/refman/5.7/en/function-resolution.html, for the rules describing how the server interprets references to different kinds of functions. To invoke a stored procedure, use the CALL statement (see [HELP CALL]). To invoke a stored function, refer to it in an expression. The function returns a value during expression evaluation. CREATE PROCEDURE and CREATE FUNCTION require the CREATE ROUTINE privilege. If the DEFINER clause is present, the privileges required depend on the user value, as discussed in http://dev.mysql.com/doc/refman/5.7/en/stored-objects-security.html. If binary logging is enabled, CREATE FUNCTION might require the SUPER privilege, as discussed in http://dev.mysql.com/doc/refman/5.7/en/stored-programs-logging.html. By default, MySQL automatically grants the ALTER ROUTINE and EXECUTE privileges to the routine creator. This behavior can be changed by disabling the automatic_sp_privileges system variable. See http://dev.mysql.com/doc/refman/5.7/en/stored-routines-privileges.html. The DEFINER and SQL SECURITY clauses specify the security context to be used when checking access privileges at routine execution time, as described later in this section. If the routine name is the same as the name of a built-in SQL function, a syntax error occurs unless you use a space between the name and the following parenthesis when defining the routine or invoking it later. For this reason, avoid using the names of existing SQL functions for your own stored routines. The IGNORE_SPACE SQL mode applies to built-in functions, not to stored routines. It is always permissible to have spaces after a stored routine name, regardless of whether IGNORE_SPACE is enabled. The parameter list enclosed within parentheses must always be present. If there are no parameters, an empty parameter list of () should be used. Parameter names are not case sensitive. Each parameter is an IN parameter by default. To specify otherwise for a parameter, use the keyword OUT or INOUT before the parameter name. *Note*: Specifying a parameter as IN, OUT, or INOUT is valid only for a PROCEDURE. For a FUNCTION, parameters are always regarded as IN parameters. An IN parameter passes a value into a procedure. The procedure might modify the value, but the modification is not visible to the caller when the procedure returns. An OUT parameter passes a value from the procedure back to the caller. Its initial value is NULL within the procedure, and its value is visible to the caller when the procedure returns. An INOUT parameter is initialized by the caller, can be modified by the procedure, and any change made by the procedure is visible to the caller when the procedure returns. For each OUT or INOUT parameter, pass a user-defined variable in the CALL statement that invokes the procedure so that you can obtain its value when the procedure returns. If you are calling the procedure from within another stored procedure or function, you can also pass a routine parameter or local routine variable as an OUT or INOUT parameter. If you are calling the procedure from within a trigger, you can also pass NEW.col_name as an OUT or INOUT parameter. For information about the effect of unhandled conditions on procedure parameters, see http://dev.mysql.com/doc/refman/5.7/en/conditions-and-parameters.html. Routine parameters cannot be referenced in statements prepared within the routine; see http://dev.mysql.com/doc/refman/5.7/en/stored-program-restrictions.html . The following example shows a simple stored procedure that uses an OUT parameter: mysql> delimiter // mysql> CREATE PROCEDURE simpleproc (OUT param1 INT) -> BEGIN -> SELECT COUNT(*) INTO param1 FROM t; -> END// Query OK, 0 rows affected (0.00 sec) mysql> delimiter ; mysql> CALL simpleproc(@a); Query OK, 0 rows affected (0.00 sec) mysql> SELECT @a; +------+ | @a | +------+ | 3 | +------+ 1 row in set (0.00 sec) The example uses the mysql client delimiter command to change the statement delimiter from ; to // while the procedure is being defined. This enables the ; delimiter used in the procedure body to be passed through to the server rather than being interpreted by mysql itself. See http://dev.mysql.com/doc/refman/5.7/en/stored-programs-defining.html. The RETURNS clause may be specified only for a FUNCTION, for which it is mandatory. It indicates the return type of the function, and the function body must contain a RETURN value statement. If the RETURN statement returns a value of a different type, the value is coerced to the proper type. For example, if a function specifies an ENUM or SET value in the RETURNS clause, but the RETURN statement returns an integer, the value returned from the function is the string for the corresponding ENUM member of set of SET members. The following example function takes a parameter, performs an operation using an SQL function, and returns the result. In this case, it is unnecessary to use delimiter because the function definition contains no internal ; statement delimiters: mysql> CREATE FUNCTION hello (s CHAR(20)) mysql> RETURNS CHAR(50) DETERMINISTIC -> RETURN CONCAT('Hello, ',s,'!'); Query OK, 0 rows affected (0.00 sec) mysql> SELECT hello('world'); +----------------+ | hello('world') | +----------------+ | Hello, world! | +----------------+ 1 row in set (0.00 sec) Parameter types and function return types can be declared to use any valid data type. The COLLATE attribute can be used if preceded by a CHARACTER SET specification. The routine_body consists of a valid SQL routine statement. This can be a simple statement such as SELECT or INSERT, or a compound statement written using BEGIN and END. Compound statements can contain declarations, loops, and other control structure statements. The syntax for these statements is described in http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-compound-statements.h tml. MySQL permits routines to contain DDL statements, such as CREATE and DROP. MySQL also permits stored procedures (but not stored functions) to contain SQL transaction statements such as COMMIT. Stored functions may not contain statements that perform explicit or implicit commit or rollback. Support for these statements is not required by the SQL standard, which states that each DBMS vendor may decide whether to permit them. Statements that return a result set can be used within a stored procedure but not within a stored function. This prohibition includes SELECT statements that do not have an INTO var_list clause and other statements such as SHOW, EXPLAIN, and CHECK TABLE. For statements that can be determined at function definition time to return a result set, a Not allowed to return a result set from a function error occurs (ER_SP_NO_RETSET). For statements that can be determined only at runtime to return a result set, a PROCEDURE %s can't return a result set in the given context error occurs (ER_SP_BADSELECT). USE statements within stored routines are not permitted. When a routine is invoked, an implicit USE db_name is performed (and undone when the routine terminates). The causes the routine to have the given default database while it executes. References to objects in databases other than the routine default database should be qualified with the appropriate database name. For additional information about statements that are not permitted in stored routines, see http://dev.mysql.com/doc/refman/5.7/en/stored-program-restrictions.html . For information about invoking stored procedures from within programs written in a language that has a MySQL interface, see [HELP CALL]. MySQL stores the sql_mode system variable setting in effect when a routine is created or altered, and always executes the routine with this setting in force, regardless of the current server SQL mode when the routine begins executing. The switch from the SQL mode of the invoker to that of the routine occurs after evaluation of arguments and assignment of the resulting values to routine parameters. If you define a routine in strict SQL mode but invoke it in nonstrict mode, assignment of arguments to routine parameters does not take place in strict mode. If you require that expressions passed to a routine be assigned in strict SQL mode, you should invoke the routine with strict mode in effect. URL: http://dev.mysql.com/doc/refman/5.7/en/create-procedure.html {5wŒX°,k«è{E¿:=€6rinfimum supremum=À@®w"¾6^CREATE TABLESPACE &Erhttp://dev.mysql.com/doc/refman/5.7/en/create-tablespace.html:Š@ ¯x"¾6kCREATE TRIGGER Syntax: CREATE [DEFINER = user] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW [trigger_order] trigger_body trigger_time: { BEFORE | AFTER } trigger_event: { INSERT | UPDATE | DELETE } trigger_order: { FOLLOWS | PRECEDES } other_trigger_name This statement creates a new trigger. A trigger is a named database object that is associated with a table, and that activates when a particular event occurs for the table. The trigger becomes associated with the table named tbl_name, which must refer to a permanent table. You cannot associate a trigger with a TEMPORARY table or a view. Trigger names exist in the schema namespace, meaning that all triggers must have unique names within a schema. Triggers in different schemas can have the same name. This section describes CREATE TRIGGER syntax. For additional discussion, see http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html. CREATE TRIGGER requires the TRIGGER privilege for the table associated with the trigger. If the DEFINER clause is present, the privileges required depend on the user value, as discussed in http://dev.mysql.com/doc/refman/5.7/en/stored-objects-security.html. If binary logging is enabled, CREATE TRIGGER might require the SUPER privilege, as discussed in http://dev.mysql.com/doc/refman/5.7/en/stored-programs-logging.html. The DEFINER clause determines the security context to be used when checking access privileges at trigger activation time, as described later in this section. trigger_time is the trigger action time. It can be BEFORE or AFTER to indicate that the trigger activates before or after each row to be modified. Basic column value checks occur prior to trigger activation, so you cannot use BEFORE triggers to convert values inappropriate for the column type to valid values. trigger_event indicates the kind of operation that activates the trigger. These trigger_event values are permitted: o INSERT: The trigger activates whenever a new row is inserted into the table; for example, through INSERT, LOAD DATA, and REPLACE statements. o UPDATE: The trigger activates whenever a row is modified; for example, through UPDATE statements. o DELETE: The trigger activates whenever a row is deleted from the table; for example, through DELETE and REPLACE statements. DROP TABLE and TRUNCATE TABLE statements on the table do not activate this trigger, because they do not use DELETE. Dropping a partition does not activate DELETE triggers, either. URL: http://dev.mysql.com/doc/refman/5.7/en/create-trigger.html http://dev.mysql.com/doc/refman/5.7/en/create-trigger.html7c†@ ÷y"¾6xCREATE USER Syntax: CREATE USER [IF NOT EXISTS] user [auth_option] [, user [auth_option]] ... [REQUIRE {NONE | tls_option [[AND] tls_option] ...}] [WITH resource_option [resource_option] ...] [password_option | lock_option] ... user: (see ) auth_option: { IDENTIFIED BY 'auth_string' | IDENTIFIED WITH auth_plugin | IDENTIFIED WITH auth_plugin BY 'auth_string' | IDENTIFIED WITH auth_plugin AS 'hash_string' | IDENTIFIED BY PASSWORD 'hash_string' } tls_option: { SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject' } resource_option: { MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count } password_option: { PASSWORD EXPIRE | PASSWORD EXPIRE DEFAULT | PASSWORD EXPIRE NEVER | PASSWORD EXPIRE INTERVAL N DAY } lock_option: { ACCOUNT LOCK | ACCOUNT UNLOCK } The CREATE USER statement creates new MySQL accounts. It enables authentication, SSL/TLS, resource-limit, and password-management properties to be established for new accounts, and controls whether accounts are initially locked or unlocked. To use CREATE USER, you must have the global CREATE USER privilege, or the INSERT privilege for the mysql system database. When the read_only system variable is enabled, CREATE USER additionally requires the SUPER privilege. An error occurs if you try to create an account that already exists. If the IF NOT EXISTS clause is given, the statement produces a warning for each named account that already exists, rather than an error. URL: http://dev.mysql.com/doc/refman/5.7/en/create-user.html http://dev.mysql.com/doc/refman/5.7/en/create-user.html7À@(¨z"¾6…CREATE VIEW &0”http://dev.mysql.com/doc/refman/5.7/en/create-view.htmlKiˆƒ@0™{"¾6’CREATE_ASYMMETRIC_PRIV_KEY Syntax: CREATE_ASYMMETRIC_PRIV_KEY(algorithm, {key_len|dh_secret}) Creates a private key using the given algorithm and key length or DH secret, and returns the key as a binary string in PEM format. If key generation fails, the result is NULL. Supported algorithm values: 'RSA', 'DSA', 'DH' Supported key_len values: The minimum key length in bits is 1,024. The maximum key length depends on the algorithm: 16,384 for RSA and 10,000 for DSA. These key-length limits are constraints imposed by OpenSSL. Server administrators can impose additional limits on maximum key length by setting environment variables. See http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-usage.html . For DH keys, pass a shared DH secret instead of a key length. To create the secret, pass the key length to CREATE_DH_PARAMETERS(). URL: http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.html SET @priv = CREATE_ASYMMETRIC_PRIV_KEY('DSA', 2048); SET @pub = CREATE_ASYMMETRIC_PUB_KEY('DSA', @priv); http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.htmlK5‚@8Ý|"¾6ŸCREATE_ASYMMETRIC_PUB_KEY Syntax: CREATE_ASYMMETRIC_PUB_KEY(algorithm, priv_key_str) Derives a public key from the given private key using the given algorithm, and returns the key as a binary string in PEM format. If key derivation fails, the result is NULL. priv_key_str must be a valid key string in PEM format. algorithm indicates the encryption algorithm used to create the key. Supported algorithm values: 'RSA', 'DSA', 'DH' For a usage example, see the description of CREATE_ASYMMETRIC_PRIV_KEY(). URL: http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.htmlK'ƒ@@Ö}"¾6¬CREATE_DH_PARAMETERS CREATE_DH_PARAMETERS(key_len) Creates a shared secret for generating a DH private/public key pair and returns a binary string that can be passed to CREATE_ASYMMETRIC_PRIV_KEY(). If secret generation fails, the result is null. Supported key_len values: The minimum and maximum key lengths in bits are 1,024 and 10,000. These key-length limits are constraints imposed by OpenSSL. Server administrators can impose additional limits on maximum key length by setting environment variables. See http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-usage.html . For an example showing how to use the return value for generating symmetric keys, see the description of ASYMMETRIC_DERIVE(). URL: http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.html SET @dhp = CREATE_DH_PARAMETERS(1024); http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.htmlK:a�@HC~"¾6¹CREATE_DIGEST Syntax: CREATE_DIGEST(digest_type, str) Creates a digest from the given string using the given digest type, and returns the digest as a binary string. If digest generation fails, the result is NULL. Supported digest_type values: 'SHA224', 'SHA256', 'SHA384', 'SHA512' URL: http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.html SET @dig = CREATE_DIGEST('SHA512', The quick brown fox'); http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-functions.htmlTÑ€@P‚"¾6ÆCROSSES Crosses(g1, g2) ST_Crosses() and Crosses() are synonyms. For more information, see the description of ST_Crosses(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlCbð€@Xò€"¾6ÓCURDATE Syntax: CURDATE() Returns the current date as a value in 'YYYY-MM-DD' or YYYYMMDD format, depending on whether the function is used in a string or numeric context. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT CURDATE(); -> '2008-06-13' mysql> SELECT CURDATE() + 0; -> 20080613 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC­€@`M�"¾6àCURRENT_DATE Syntax: CURRENT_DATE, CURRENT_DATE() CURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE(). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC²€@hR‚"¾6íCURRENT_TIME Syntax: CURRENT_TIME, CURRENT_TIME([fsp]) CURRENT_TIME and CURRENT_TIME() are synonyms for CURTIME(). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC€@pcƒ"¾6úCURRENT_TIMESTAMP Syntax: CURRENT_TIMESTAMP, CURRENT_TIMESTAMP([fsp]) CURRENT_TIMESTAMP and CURRENT_TIMESTAMP() are synonyms for NOW(). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlAÑ€˜�@x„"¾6 CURRENT_USER Syntax: CURRENT_USER, CURRENT_USER() Returns the user name and host name combination for the MySQL account that the server used to authenticate the current client. This account determines your access privileges. The return value is a string in the utf8 character set. The value of CURRENT_USER() can differ from the value of USER(). URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT USER(); -> 'davida@localhost' mysql> SELECT * FROM mysql.user; ERROR 1044: Access denied for user ''@'localhost' to database 'mysql' mysql> SELECT CURRENT_USER(); -> '@localhost' http://dev.mysql.com/doc/refman/5.7/en/information-functions.htmlCeÀ�@€Å…"¾6 CURTIME Syntax: CURTIME([fsp]) Returns the current time as a value in 'HH:MM:SS' or HHMMSS format, depending on whether the function is used in a string or numeric context. The value is expressed in the session time zone. If the fsp argument is given to specify a fractional seconds precision from 0 to 6, the return value includes a fractional seconds part of that many digits. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT CURTIME(); -> '23:50:26' mysql> SELECT CURTIME() + 0; -> 235026.000000 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlA,«�@ˆu†"¾6 !DATABASE Syntax: DATABASE() Returns the default (current) database name as a string in the utf8 character set. If there is no default database, DATABASE() returns NULL. Within a stored routine, the default database is the database that the routine is associated with, which is not necessarily the same as the database that is the default in the calling context. URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT DATABASE(); -> 'test' http://dev.mysql.com/doc/refman/5.7/en/information-functions.htmlG�@�»‡"¾6 .DATE DATE A date. The supported range is '1000-01-01' to '9999-12-31'. MySQL displays DATE values in 'YYYY-MM-DD' format, but permits assignment of values to DATE columns using either strings or numbers. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.htmlCCŸ€@˜ƒˆ"¾6 ;DATE FUNCTION Syntax: DATE(expr) Extracts the date part of the date or datetime expression expr. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT DATE('2003-12-31 01:02:03'); -> '2003-12-31' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC”€<�@ p‰"¾6 HDATEDIFF Syntax: DATEDIFF(expr1,expr2) DATEDIFF() returns expr1 − expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30'); -> 1 mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31'); -> -31 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlG1ƒ@¨ÉþŠ"¾6 UDATETIME DATETIME[(fsp)] A date and time combination. The supported range is '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999'. MySQL displays DATETIME values in 'YYYY-MM-DD HH:MM:SS[.fraction]' format, but permits assignment of values to DATETIME columns using either strings or numbers. An optional fsp value in the range from 0 to 6 may be given to specify fractional seconds precision. A value of 0 signifies that there is no fractional part. If omitted, the default precision is 0. Automatic initialization and updating to the current date and time for DATETIME columns can be specified using DEFAULT and ON UPDATE column definition clauses, as described in http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.htmlp.O%ÎÊÖc,k«è{Mu¹ŠÀ) ?ÊSyntax: CREATE TABLESPACE tablespace_name InnoDB and NDB: ADD DATAFILE 'file_name' InnoDB only: [FILE_BLOCK_SIZE = value] NDB only: USE LOGFILE GROUP logfile_group [EXTENT_SIZE [=] extent_size] [INITIAL_SIZE [=] initial_size] [AUTOEXTEND_SIZE [=] autoextend_size] [MAX_SIZE [=] max_size] [NODEGROUP [=] nodegroup_id] [WAIT] [COMMENT [=] 'string'] InnoDB and NDB: [ENGINE [=] engine_name] This statement is used to create a tablespace. The precise syntax and semantics depend on the storage engine used. In standard MySQL 5.7 releases, this is always an InnoDB tablespace. MySQL NDB Cluster 7.5 also supports tablespaces using the NDB storage engine in addition to those using InnoDB. o http://dev.mysql.com/doc/refman/5.7/en/create-tablespace.html#create- tablespace-innodb o http://dev.mysql.com/doc/refman/5.7/en/create-tablespace.html#create- tablespace-ndb o http://dev.mysql.com/doc/refman/5.7/en/create-tablespace.html#create- tablespace-options o http://dev.mysql.com/doc/refman/5.7/en/create-tablespace.html#create- tablespace-notes o http://dev.mysql.com/doc/refman/5.7/en/create-tablespace.html#create- tablespace-innodb-examples o http://dev.mysql.com/doc/refman/5.7/en/create-tablespace.html#create- tablespace-ndb-examples Considerations for InnoDB CREATE TABLESPACE syntax is used to create general tablespaces. A general tablespace is a shared tablespace. It can hold multiple tables, and supports all table row formats. General tablespaces can be created in a location relative to or independent of the data directory. After creating an InnoDB general tablespace, you can use CREATE TABLE tbl_name ... TABLESPACE [=] tablespace_name or ALTER TABLE tbl_name TABLESPACE [=] tablespace_name to add tables to the tablespace. For more information, see http://dev.mysql.com/doc/refman/5.7/en/general-tablespaces.html. Considerations for NDB Cluster This statement is used to create a tablespace, which can contain one or more data files, providing storage space for NDB Cluster Disk Data tables (see http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-disk-data.html). One data file is created and added to the tablespace using this statement. Additional data files may be added to the tablespace by using the ALTER TABLESPACE statement (see [HELP ALTER TABLESPACE]). *Note*: All NDB Cluster Disk Data objects share the same namespace. This means that each Disk Data object must be uniquely named (and not merely each Disk Data object of a given type). For example, you cannot have a tablespace and a log file group with the same name, or a tablespace and a data file with the same name. A log file group of one or more UNDO log files must be assigned to the tablespace to be created with the USE LOGFILE GROUP clause. logfile_group must be an existing log file group created with CREATE LOGFILE GROUP (see [HELP CREATE LOGFILE GROUP]). Multiple tablespaces may use the same log file group for UNDO logging. When setting EXTENT_SIZE or INITIAL_SIZE, you may optionally follow the number with a one-letter abbreviation for an order of magnitude, similar to those used in my.cnf. Generally, this is one of the letters M (for megabytes) or G (for gigabytes). INITIAL_SIZE and EXTENT_SIZE are subject to rounding as follows: o EXTENT_SIZE is rounded up to the nearest whole multiple of 32K. o INITIAL_SIZE is rounded down to the nearest whole multiple of 32K; this result is rounded up to the nearest whole multiple of EXTENT_SIZE (after any rounding). The rounding just described is done explicitly, and a warning is issued by the MySQL Server when any such rounding is performed. The rounded values are also used by the NDB kernel for calculating INFORMATION_SCHEMA.FILES column values and other purposes. However, to avoid an unexpected result, we suggest that you always use whole multiples of 32K in specifying these options. When CREATE TABLESPACE is used with ENGINE [=] NDB, a tablespace and associated data file are created on each Cluster data node. You can verify that the data files were created and obtain information about them by querying the INFORMATION_SCHEMA.FILES table. (See the example later in this section.) (See http://dev.mysql.com/doc/refman/5.7/en/files-table.html.) Options o ADD DATAFILE: Defines the name of a tablespace data file; this option is always required. An InnoDB tablespace supports only a single data file, whose name must include a .ibd extension. An NDB Cluster tablespace supports multiple data files which can have any legal file names; more data files can be added to an NDB Cluster tablespace following its creation by using an ALTER TABLESPACE statement. *Note*: ALTER TABLESPACE is not supported by InnoDB. To place the data file in a location outside of the data directory (datadir), include an absolute directory path or a path relative to the data directory. If you do not specify a path, the tablespace is created in the data directory. An isl file is created in the data directory when an InnoDB tablespace is created outside of the data directory. To avoid conflicts with implicitly created file-per-table tablespaces, creating a general tablespace in a subdirectory under the data directory is not supported. When creating a general tablespace outside of the data directory, the directory must exist prior to creating the tablespace. The file_name, including any specified path, must be quoted with single or double quotations marks. File names (not counting the file extension) and directory names must be at least one byte in length. Zero length file names and directory names are not supported. o FILE_BLOCK_SIZE: This option---which is specific to InnoDB, and is ignored by NDB---defines the block size for the tablespace data file. Values can be specified in bytes or kilobytes. For example, an 8 kilobyte file block size can be specified as 8192 or 8K. If you do not specify this option, FILE_BLOCK_SIZE defaults to the innodb_page_size value. FILE_BLOCK_SIZE is required when you intend to use the tablespace for storing compressed InnoDB tables (ROW_FORMAT=COMPRESSED). In this case, you must define the tablespace FILE_BLOCK_SIZE when creating the tablespace. If FILE_BLOCK_SIZE is equal the innodb_page_size value, the tablespace can contain only tables having an uncompressed row format (COMPACT, REDUNDANT, and DYNAMIC). Tables with a COMPRESSED row format have a different physical page size than uncompressed tables. Therefore, compressed tables cannot coexist in the same tablespace as uncompressed tables. For a general tablespace to contain compressed tables, FILE_BLOCK_SIZE must be specified, and the FILE_BLOCK_SIZE value must be a valid compressed page size in relation to the innodb_page_size value. Also, the physical page size of the compressed table (KEY_BLOCK_SIZE) must be equal to FILE_BLOCK_SIZE/1024. For example, if innodb_page_size=16K, and FILE_BLOCK_SIZE=8K, the KEY_BLOCK_SIZE of the table must be 8. For more information, see http://dev.mysql.com/doc/refman/5.7/en/general-tablespaces.html. o USE LOGFILE GROUP: Required for NDB, this is the name of a log file group previously created using CREATE LOGFILE GROUP. Not supported for InnoDB, where it fails with an error. o EXTENT_SIZE: This option is specific to NDB, and is not supported by InnoDB, where it fails with an error. EXTENT_SIZE sets the size, in bytes, of the extents used by any files belonging to the tablespace. The default value is 1M. The minimum size is 32K, and theoretical maximum is 2G, although the practical maximum size depends on a number of factors. In most cases, changing the extent size does not have any measurable effect on performance, and the default value is recommended for all but the most unusual situations. An extent is a unit of disk space allocation. One extent is filled with as much data as that extent can contain before another extent is used. In theory, up to 65,535 (64K) extents may used per data file; however, the recommended maximum is 32,768 (32K). The recommended maximum size for a single data file is 32G---that is, 32K extents x 1 MB per extent. In addition, once an extent is allocated to a given partition, it cannot be used to store data from a different partition; an extent cannot store data from more than one partition. This means, for example that a tablespace having a single datafile whose INITIAL_SIZE (described in the following item) is 256 MB and whose EXTENT_SIZE is 128M has just two extents, and so can be used to store data from at most two different disk data table partitions. You can see how many extents remain free in a given data file by querying the INFORMATION_SCHEMA.FILES table, and so derive an estimate for how much space remains free in the file. For further discussion and examples, see http://dev.mysql.com/doc/refman/5.7/en/files-table.html. o INITIAL_SIZE: This option is specific to NDB, and is not supported by InnoDB, where it fails with an error. The INITIAL_SIZE parameter sets the total size in bytes of the data file that was specific using ADD DATATFILE. Once this file has been created, its size cannot be changed; however, you can add more data files to the tablespace using ALTER TABLESPACE ... ADD DATAFILE. INITIAL_SIZE is optional; its default value is 134217728 (128 MB). On 32-bit systems, the maximum supported value for INITIAL_SIZE is 4294967296 (4 GB). o AUTOEXTEND_SIZE: Currently ignored by MySQL; reserved for possible future use. Has no effect in any release of MySQL 5.7 or MySQL NDB Cluster 7.5, regardless of the storage engine used. o MAX_SIZE: Currently ignored by MySQL; reserved for possible future use. Has no effect in any release of MySQL 5.7 or MySQL NDB Cluster 7.5, regardless of the storage engine used. o NODEGROUP: Currently ignored by MySQL; reserved for possible future use. Has no effect in any release of MySQL 5.7 or MySQL NDB Cluster 7.5, regardless of the storage engine used. o WAIT: Currently ignored by MySQL; reserved for possible future use. Has no effect in any release of MySQL 5.7 or MySQL NDB Cluster 7.5, regardless of the storage engine used. o COMMENT: Currently ignored by MySQL; reserved for possible future use. Has no effect in any release of MySQL 5.7 or MySQL NDB Cluster 7.5, regardless of the storage engine used. o ENGINE: Defines the storage engine which uses the tablespace, where engine_name is the name of the storage engine. Currently, only the InnoDB storage engine is supported by standard MySQL 5.7 releases. MySQL NDB Cluster 7.5 supports both NDB and InnoDB tablespaces. The value of the default_storage_engine system variable is used for ENGINE if the option is not specified. Notes o For the rules covering the naming of MySQL tablespaces, see http://dev.mysql.com/doc/refman/5.7/en/identifiers.html. In addition to these rules, the slash character ("/") is not permitted, nor can you use names beginning with innodb_, as this prefix is reserved for system use. o Tablespaces do not support temporary tables. o innodb_file_per_table, innodb_file_format, and innodb_file_format_max settings have no influence on CREATE TABLESPACE operations. innodb_file_per_table does not need to be enabled. General tablespaces support all table row formats regardless of file format settings. Likewise, general tablespaces support the addition of tables of any row format using CREATE TABLE ... TABLESPACE, regardless of file format settings. o innodb_strict_mode is not applicable to general tablespaces. Tablespace management rules are strictly enforced independently of innodb_strict_mode. If CREATE TABLESPACE parameters are incorrect or incompatible, the operation fails regardless of the innodb_strict_mode setting. When a table is added to a general tablespace using CREATE TABLE ... TABLESPACE or ALTER TABLE ... TABLESPACE, innodb_strict_mode is ignored but the statement is evaluated as if innodb_strict_mode is enabled. o Use DROP TABLESPACE to remove a tablespace. All tables must be dropped from a tablespace using DROP TABLE prior to dropping the tablespace. Before dropping an NDB Cluster tablespace you must also remove all its data files using one or more ALTER TABLESPACE ... DROP DATATFILE statements. See http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-disk-data-object s.html. o All parts of an InnoDB table added to an InnoDB general tablespace reside in the general tablespace, including indexes and BLOB pages. For an NDB table assigned to a tablespace, only those columns which are not indexed are stored on disk, and actually use the tablespace data files. Indexes and indexed columns for all NDB tables are always kept in memory. o Similar to the system tablespace, truncating or dropping tables stored in a general tablespace creates free space internally in the general tablespace .ibd data file which can only be used for new InnoDB data. Space is not released back to the operating system as it is for file-per-table tablespaces. o A general tablespace is not associated with any database or schema. o ALTER TABLE ... DISCARD TABLESPACE and ALTER TABLE ...IMPORT TABLESPACE are not supported for tables that belong to a general tablespace. o The server uses tablespace-level metadata locking for DDL that references general tablespaces. By comparison, the server uses table-level metadata locking for DDL that references file-per-table tablespaces. o A generated or existing tablespace cannot be changed to a general tablespace. o Tables stored in a general tablespace can only be opened in MySQL 5.7.6 or later due to the addition of new table flags. o There is no conflict between general tablespace names and file-per-table tablespace names. The "/" character, which is present in file-per-table tablespace names, is not permitted in general tablespace names. o mysqldump and mysqlpump do not dump InnoDB CREATE TABLESPACE statements. InnoDB Examples This example demonstrates creating a general tablespace and adding three uncompressed tables of different row formats. mysql> CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' ENGINE=INNODB; mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts1 ROW_FORMAT=REDUNDANT; mysql> CREATE TABLE t2 (c1 INT PRIMARY KEY) TABLESPACE ts1 ROW_FORMAT=COMPACT; mysql> CREATE TABLE t3 (c1 INT PRIMARY KEY) TABLESPACE ts1 ROW_FORMAT=DYNAMIC; This example demonstrates creating a general tablespace and adding a compressed table. The example assumes a default innodb_page_size value of 16K. The FILE_BLOCK_SIZE of 8192 requires that the compressed table have a KEY_BLOCK_SIZE of 8. mysql> CREATE TABLESPACE `ts2` ADD DATAFILE 'ts2.ibd' FILE_BLOCK_SIZE = 8192 Engine=InnoDB; mysql> CREATE TABLE t4 (c1 INT PRIMARY KEY) TABLESPACE ts2 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; NDB Example Suppose that you wish to create an NDB Cluster Disk Data tablespace named myts using a datafile named mydata-1.dat. An NDB tablespace always requires the use of a log file group consisting of one or more undo log files. For this example, we first create a log file group named mylg that contains one undo long file named myundo-1.dat, using the CREATE LOGFILE GROUP statement shown here: mysql> CREATE LOGFILE GROUP myg1 -> ADD UNDOFILE 'myundo-1.dat' -> ENGINE=NDB; Query OK, 0 rows affected (3.29 sec) Now you can create the tablespace previously described using the following statement: mysql> CREATE TABLESPACE myts -> ADD DATAFILE 'mydata-1.dat' -> USE LOGFILE GROUP mylg -> ENGINE=NDB; Query OK, 0 rows affected (2.98 sec) You can now create a Disk Data table using a CREATE TABLE statement with the TABLESPACE and STORAGE DISK options, similar to what is shown here: mysql> CREATE TABLE mytable ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, -> lname VARCHAR(50) NOT NULL, -> fname VARCHAR(50) NOT NULL, -> dob DATE NOT NULL, -> joined DATE NOT NULL, -> INDEX(last_name, first_name) -> ) -> TABLESPACE myts STORAGE DISK Mu¹ŠÀ)¯ì¼À) ¨ÿÿÿÿ-> ENGINE=NDB; Query OK, 0 rows affected (1.41 sec) It is important to note that only the dob and joined columns from mytable are actually stored on disk, due to the fact that the id, lname, and fname columns are all indexed. As mentioned previously, when CREATE TABLESPACE is used with ENGINE [=] NDB, a tablespace and associated data file are created on each NDB Cluster data node. You can verify that the data files were created and obtain information about them by querying the INFORMATION_SCHEMA.FILES table, as shown here: mysql> SELECT FILE_NAME, FILE_TYPE, LOGFILE_GROUP_NAME, STATUS, EXTRA -> FROM INFORMATION_SCHEMA.FILES -> WHERE TABLESPACE_NAME = 'myts'; +--------------+------------+--------------------+--------+----------------+ | file_name | file_type | logfile_group_name | status | extra | +--------------+------------+--------------------+--------+----------------+ | mydata-1.dat | DATAFILE | mylg | NORMAL | CLUSTER_NODE=5 | | mydata-1.dat | DATAFILE | mylg | NORMAL | CLUSTER_NODE=6 | | NULL | TABLESPACE | mylg | NORMAL | NULL | +--------------+------------+--------------------+--------+----------------+ 3 rows in set (0.01 sec) For additional information and examples, see http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-disk-data-objects. html. URL: http://dev.mysql.com/doc/refman/5.7/en/create-tablespace.html ¯ì¼À)mõ 0”ÿÿÿÿSyntax: CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = user] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] The CREATE VIEW statement creates a new view, or replaces an existing view if the OR REPLACE clause is given. If the view does not exist, CREATE OR REPLACE VIEW is the same as CREATE VIEW. If the view does exist, CREATE OR REPLACE VIEW replaces it. For information about restrictions on view use, see http://dev.mysql.com/doc/refman/5.7/en/view-restrictions.html. The select_statement is a SELECT statement that provides the definition of the view. (Selecting from the view selects, in effect, using the SELECT statement.) The select_statement can select from base tables or other views. The view definition is "frozen" at creation time and is not affected by subsequent changes to the definitions of the underlying tables. For example, if a view is defined as SELECT * on a table, new columns added to the table later do not become part of the view, and columns dropped from the table will result in an error when selecting from the view. The ALGORITHM clause affects how MySQL processes the view. The DEFINER and SQL SECURITY clauses specify the security context to be used when checking access privileges at view invocation time. The WITH CHECK OPTION clause can be given to constrain inserts or updates to rows in tables referenced by the view. These clauses are described later in this section. The CREATE VIEW statement requires the CREATE VIEW privilege for the view, and some privilege for each column selected by the SELECT statement. For columns used elsewhere in the SELECT statement, you must have the SELECT privilege. If the OR REPLACE clause is present, you must also have the DROP privilege for the view. If the DEFINER clause is present, the privileges required depend on the user value, as discussed in http://dev.mysql.com/doc/refman/5.7/en/stored-objects-security.html. When a view is referenced, privilege checking occurs as described later in this section. A view belongs to a database. By default, a new view is created in the default database. To create the view explicitly in a given database, use db_name.view_name syntax to qualify the view name with the database name: CREATE VIEW test.v AS SELECT * FROM t; Unqualified table or view names in the SELECT statement are also interpreted with respect to the default database. A view can refer to tables or views in other databases by qualifying the table or view name with the appropriate database name. Within a database, base tables and views share the same namespace, so a base table and a view cannot have the same name. Columns retrieved by the SELECT statement can be simple references to table columns, or expressions that use functions, constant values, operators, and so forth. A view must have unique column names with no duplicates, just like a base table. By default, the names of the columns retrieved by the SELECT statement are used for the view column names. To define explicit names for the view columns, specify the optional column_list clause as a list of comma-separated identifiers. The number of names in column_list must be the same as the number of columns retrieved by the SELECT statement. A view can be created from many kinds of SELECT statements. It can refer to base tables or other views. It can use joins, UNION, and subqueries. The SELECT need not even refer to any tables: CREATE VIEW v_today (today) AS SELECT CURRENT_DATE; The following example defines a view that selects two columns from another table as well as an expression calculated from those columns: mysql> CREATE TABLE t (qty INT, price INT); mysql> INSERT INTO t VALUES(3, 50); mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t; mysql> SELECT * FROM v; +------+-------+-------+ | qty | price | value | +------+-------+-------+ | 3 | 50 | 150 | +------+-------+-------+ A view definition is subject to the following restrictions: o The SELECT statement cannot refer to system variables or user-defined variables. o Within a stored program, the SELECT statement cannot refer to program parameters or local variables. o The SELECT statement cannot refer to prepared statement parameters. o Any table or view referred to in the definition must exist. If, after the view has been created, a table or view that the definition refers to is dropped, use of the view results in an error. To check a view definition for problems of this kind, use the CHECK TABLE statement. o The definition cannot refer to a TEMPORARY table, and you cannot create a TEMPORARY view. o You cannot associate a trigger with a view. o Aliases for column names in the SELECT statement are checked against the maximum column length of 64 characters (not the maximum alias length of 256 characters). ORDER BY is permitted in a view definition, but it is ignored if you select from a view using a statement that has its own ORDER BY. For other options or clauses in the definition, they are added to the options or clauses of the statement that references the view, but the effect is undefined. For example, if a view definition includes a LIMIT clause, and you select from the view using a statement that has its own LIMIT clause, it is undefined which limit applies. This same principle applies to options such as ALL, DISTINCT, or SQL_SMALL_RESULT that follow the SELECT keyword, and to clauses such as INTO, FOR UPDATE, LOCK IN SHARE MODE, and PROCEDURE. The results obtained from a view may be affected if you change the query processing environment by changing system variables: mysql> CREATE VIEW v (mycol) AS SELECT 'abc'; Query OK, 0 rows affected (0.01 sec) mysql> SET sql_mode = ''; Query OK, 0 rows affected (0.00 sec) mysql> SELECT "mycol" FROM v; +-------+ | mycol | +-------+ | mycol | +-------+ 1 row in set (0.01 sec) mysql> SET sql_mode = 'ANSI_QUOTES'; Query OK, 0 rows affected (0.00 sec) mysql> SELECT "mycol" FROM v; +-------+ | mycol | +-------+ | abc | +-------+ 1 row in set (0.00 sec) The DEFINER and SQL SECURITY clauses determine which MySQL account to use when checking access privileges for the view when a statement is executed that references the view. The valid SQL SECURITY characteristic values are DEFINER (the default) and INVOKER. These indicate that the required privileges must be held by the user who defined or invoked the view, respectively. If the DEFINER clause is present, the user value should be a MySQL account specified as 'user_name'@'host_name', CURRENT_USER, or CURRENT_USER(). The permitted user values depend on the privileges you hold, as discussed in http://dev.mysql.com/doc/refman/5.7/en/stored-objects-security.html. Also see that section for additional information about view security. If the DEFINER clause is omitted, the default definer is the user who executes the CREATE VIEW statement. This is the same as specifying DEFINER = CURRENT_USER explicitly. Within a view definition, the CURRENT_USER function returns the view's DEFINER value by default. For views defined with the SQL SECURITY INVOKER characteristic, CURRENT_USER returns the account for the view's invoker. For information about user auditing within views, see http://dev.mysql.com/doc/refman/5.7/en/account-activity-auditing.html. Within a stored routine that is defined with the SQL SECURITY DEFINER characteristic, CURRENT_USER returns the routine's DEFINER value. This also affects a view defined within such a routine, if the view definition contains a DEFINER value of CURRENT_USER. MySQL checks view privileges like this: o At view definition time, the view creator must have the privileges needed to use the top-level objects accessed by the view. For example, if the view definition refers to table columns, the creator must have some privilege for each column in the select list of the definition, and the SELECT privilege for each column used elsewhere in the definition. If the definition refers to a stored function, only the privileges needed to invoke the function can be checked. The privileges required at function invocation time can be checked only as it executes: For different invocations, different execution paths within the function might be taken. o The user who references a view must have appropriate privileges to access it (SELECT to select from it, INSERT to insert into it, and so forth.) o When a view has been referenced, privileges for objects accessed by the view are checked against the privileges held by the view DEFINER account or invoker, depending on whether the SQL SECURITY characteristic is DEFINER or INVOKER, respectively. o If reference to a view causes execution of a stored function, privilege checking for statements executed within the function depend on whether the function SQL SECURITY characteristic is DEFINER or INVOKER. If the security characteristic is DEFINER, the function runs with the privileges of the DEFINER account. If the characteristic is INVOKER, the function runs with the privileges determined by the view's SQL SECURITY characteristic. Example: A view might depend on a stored function, and that function might invoke other stored routines. For example, the following view invokes a stored function f(): CREATE VIEW v AS SELECT * FROM t WHERE t.id = f(t.name); Suppose that f() contains a statement such as this: IF name IS NULL then CALL p1(); ELSE CALL p2(); END IF; The privileges required for executing statements within f() need to be checked when f() executes. This might mean that privileges are needed for p1() or p2(), depending on the execution path within f(). Those privileges must be checked at runtime, and the user who must possess the privileges is determined by the SQL SECURITY values of the view v and the function f(). The DEFINER and SQL SECURITY clauses for views are extensions to standard SQL. In standard SQL, views are handled using the rules for SQL SECURITY DEFINER. The standard says that the definer of the view, which is the same as the owner of the view's schema, gets applicable privileges on the view (for example, SELECT) and may grant them. MySQL has no concept of a schema "owner", so MySQL adds a clause to identify the definer. The DEFINER clause is an extension where the intent is to have what the standard has; that is, a permanent record of who defined the view. This is why the default DEFINER value is the account of the view creator. The optional ALGORITHM clause is a MySQL extension to standard SQL. It affects how MySQL processes the view. ALGORITHM takes three values: MERGE, TEMPTABLE, or UNDEFINED. For more information, see http://dev.mysql.com/doc/refman/5.7/en/view-algorithms.html, as well as http://dev.mysql.com/doc/refman/5.7/en/derived-table-optimization.html. Some views are updatable. That is, you can use them in statements such as UPDATE, DELETE, or INSERT to update the contents of the underlying table. For a view to be updatable, there must be a one-to-one relationship between the rows in the view and the rows in the underlying table. There are also certain other constructs that make a view nonupdatable. A generated column in a view is considered updatable because it is possible to assign to it. However, if such a column is updated explicitly, the only permitted value is DEFAULT. For information about generated columns, see http://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.h tml. The WITH CHECK OPTION clause can be given for an updatable view to prevent inserts or updates to rows except those for which the WHERE clause in the select_statement is true. In a WITH CHECK OPTION clause for an updatable view, the LOCAL and CASCADED keywords determine the scope of check testing when the view is defined in terms of another view. The LOCAL keyword restricts the CHECK OPTION only to the view being defined. CASCADED causes the checks for underlying views to be evaluated as well. When neither keyword is given, the default is CASCADED. For more information about updatable views and the WITH CHECK OPTION clause, see http://dev.mysql.com/doc/refman/5.7/en/view-updatability.html, and http://dev.mysql.com/doc/refman/5.7/en/view-check-option.html. URL: http://dev.mysql.com/doc/refman/5.7/en/create-view.html mõlõ®¼ÁÙE¿9É€&³  infimum supremumC„ ‚@­‹"¾6 bDATE_ADD Syntax: DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit) These functions perform date arithmetic. The date argument specifies the starting date or datetime value. expr is an expression specifying the interval value to be added or subtracted from the starting date. expr is evaluated as a string; it may start with a - for negative intervals. unit is a keyword indicating the units in which the expression should be interpreted. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT DATE_ADD('2018-05-01',INTERVAL 1 DAY); -> '2018-05-02' mysql> SELECT DATE_SUB('2018-05-01',INTERVAL 1 YEAR); -> '2017-05-01' mysql> SELECT DATE_ADD('2020-12-31 23:59:59', -> INTERVAL 1 SECOND); -> '2021-01-01 00:00:00' mysql> SELECT DATE_ADD('2018-12-31 23:59:59', -> INTERVAL 1 DAY); -> '2019-01-01 23:59:59' mysql> SELECT DATE_ADD('2100-12-31 23:59:59', -> INTERVAL '1:1' MINUTE_SECOND); -> '2101-01-01 00:01:00' mysql> SELECT DATE_SUB('2025-01-01 00:00:00', -> INTERVAL '1 1:1:1' DAY_SECOND); -> '2024-12-30 22:58:59' mysql> SELECT DATE_ADD('1900-01-01 00:00:00', -> INTERVAL '-1 10' DAY_HOUR); -> '1899-12-30 14:00:00' mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY); -> '1997-12-02' mysql> SELECT DATE_ADD('1992-12-31 23:59:59.000002', -> INTERVAL '1.999999' SECOND_MICROSECOND); -> '1993-01-01 00:00:01.000001' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCQ‚¤€@•Œ"¾6 oDATE_FORMAT Syntax: DATE_FORMAT(date,format) Formats the date value according to the format string. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y'); -> 'Sunday October 2009' mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s'); -> '22:23:00' mysql> SELECT DATE_FORMAT('1900-10-04 22:23:00', -> '%D %y %a %d %m %b %j'); -> '4th 00 Thu 04 10 Oct 277' mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', -> '%H %k %I %r %T %S %w'); -> '22 22 10 10:23:00 PM 22:23:00 00 6' mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V'); -> '1998 52' mysql> SELECT DATE_FORMAT('2006-06-00', '%d'); -> '00' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCš€@ :�"¾6 |DATE_SUB Syntax: DATE_SUB(date,INTERVAL expr unit) See the description for DATE_ADD(). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCƒ€@(#Ž"¾6 ‰DAY Syntax: DAY(date) DAY() is a synonym for DAYOFMONTH(). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC;)�@0�"¾6 –DAYNAME Syntax: DAYNAME(date) Returns the name of the weekday for date. The language used for the name is controlled by the value of the lc_time_names system variable (http://dev.mysql.com/doc/refman/5.7/en/locale-support.html). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT DAYNAME('2007-02-03'); -> 'Saturday' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC5ñ€@8Æ�"¾6 £DAYOFMONTH Syntax: DAYOFMONTH(date) Returns the day of the month for date, in the range 1 to 31, or 0 for dates such as '0000-00-00' or '2008-00-00' that have a zero day part. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT DAYOFMONTH('2007-02-03'); -> 3 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC4è€@@¼‘"¾6 °DAYOFWEEK Syntax: DAYOFWEEK(date) Returns the weekday index for date (1 = Sunday, 2 = Monday, ..., 7 = Saturday). These index values correspond to the ODBC standard. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT DAYOFWEEK('2007-02-03'); -> 7 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC5¡€@Hv’"¾6 ½DAYOFYEAR Syntax: DAYOFYEAR(date) Returns the day of the year for date, in the range 1 to 366. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT DAYOFYEAR('2007-02-03'); -> 34 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html>7‚@PÒ“"¾6 ÊDEALLOCATE PREPARE %Syntax: {DEALLOCATE | DROP} PREPARE stmt_name To deallocate a prepared statement produced with PREPARE, use a DEALLOCATE PREPARE statement that refers to the prepared statement name. Attempting to execute a prepared statement after deallocating it results in an error. If too many prepared statements are created and not deallocated by either the DEALLOCATE PREPARE statement or the end of the session, you might encounter the upper limit enforced by the max_prepared_stmt_count system variable. URL: http://dev.mysql.com/doc/refman/5.7/en/deallocate-prepare.html http://dev.mysql.com/doc/refman/5.7/en/deallocate-prepare.htmlA/�@XÍ”"¾6 ×DEC DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL] These types are synonyms for DECIMAL. The FIXED synonym is available for compatibility with other database systems. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.htmlAØ‚@`v•"¾6 äDECIMAL DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] A packed "exact" fixed-point number. M is the total number of digits (the precision) and D is the number of digits after the decimal point (the scale). The decimal point and (for negative numbers) the - sign are not counted in M. If D is 0, values have no decimal point or fractional part. The maximum number of digits (M) for DECIMAL is 65. The maximum number of supported decimals (D) is 30. If D is omitted, the default is 0. If M is omitted, the default is 10. UNSIGNED, if specified, disallows negative values. All basic calculations (+, -, *, /) with DECIMAL columns are done with a precision of 65 digits. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html=‘…@h+–"¾6 ñDECLARE CONDITION Syntax: DECLARE condition_name CONDITION FOR condition_value condition_value: { mysql_error_code | SQLSTATE [VALUE] sqlstate_value } The DECLARE ... CONDITION statement declares a named error condition, associating a name with a condition that needs specific handling. The name can be referred to in a subsequent DECLARE ... HANDLER statement (see [HELP DECLARE HANDLER]). Condition declarations must appear before cursor or handler declarations. The condition_value for DECLARE ... CONDITION indicates the specific condition or class of conditions to associate with the condition name. It can take the following forms: o mysql_error_code: An integer literal indicating a MySQL error code. Do not use MySQL error code 0 because that indicates success rather than an error condition. For a list of MySQL error codes, see http://dev.mysql.com/doc/refman/5.7/en/server-error-reference.html. o SQLSTATE [VALUE] sqlstate_value: A 5-character string literal indicating an SQLSTATE value. Do not use SQLSTATE values that begin with '00' because those indicate success rather than an error condition. For a list of SQLSTATE values, see http://dev.mysql.com/doc/refman/5.7/en/server-error-reference.html. Condition names referred to in SIGNAL or use RESIGNAL statements must be associated with SQLSTATE values, not MySQL error codes. URL: http://dev.mysql.com/doc/refman/5.7/en/declare-condition.html http://dev.mysql.com/doc/refman/5.7/en/declare-condition.html:½ƒ@pU—"¾6 þDECLARE CURSOR Syntax: DECLARE cursor_name CURSOR FOR select_statement This statement declares a cursor and associates it with a SELECT statement that retrieves the rows to be traversed by the cursor. To fetch the rows later, use a FETCH statement. The number of columns retrieved by the SELECT statement must match the number of output variables specified in the FETCH statement. The SELECT statement cannot have an INTO clause. Cursor declarations must appear before handler declarations and after variable and condition declarations. A stored program may contain multiple cursor declarations, but each cursor declared in a given block must have a unique name. For an example, see http://dev.mysql.com/doc/refman/5.7/en/cursors.html. For information available through SHOW statements, it is possible in many cases to obtain equivalent information by using a cursor with an INFORMATION_SCHEMA table. URL: http://dev.mysql.com/doc/refman/5.7/en/declare-cursor.html http://dev.mysql.com/doc/refman/5.7/en/declare-cursor.html;g‚!�@xÙ½˜"¾6 DECLARE HANDLER Syntax: DECLARE handler_action HANDLER FOR condition_value [, condition_value] ... statement handler_action: { CONTINUE | EXIT | UNDO } condition_value: { mysql_error_code | SQLSTATE [VALUE] sqlstate_value | condition_name | SQLWARNING | NOT FOUND | SQLEXCEPTION } The DECLARE ... HANDLER statement specifies a handler that deals with one or more conditions. If one of these conditions occurs, the specified statement executes. statement can be a simple statement such as SET var_name = value, or a compound statement written using BEGIN and END (see [HELP BEGIN END]). Handler declarations must appear after variable or condition declarations. The handler_action value indicates what action the handler takes after execution of the handler statement: o CONTINUE: Execution of the current program continues. o EXIT: Execution terminates for the BEGIN ... END compound statement in which the handler is declared. This is true even if the condition occurs in an inner block. o UNDO: Not supported. The condition_value for DECLARE ... HANDLER indicates the specific condition or class of conditions that activates the handler. It can take the following forms: o mysql_error_code: An integer literal indicating a MySQL error code, such as 1051 to specify "unknown table": DECLARE CONTINUE HANDLER FOR 1051 BEGIN -- body of handler END; Do not use MySQL error code 0 because that indicates success rather than an error condition. For a list of MySQL error codes, see http://dev.mysql.com/doc/refman/5.7/en/server-error-reference.html. o SQLSTATE [VALUE] sqlstate_value: A 5-character string literal indicating an SQLSTATE value, such as '42S01' to specify "unknown table": DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' BEGIN -- body of handler END; Do not use SQLSTATE values that begin with '00' because those indicate success rather than an error condition. For a list of SQLSTATE values, see http://dev.mysql.com/doc/refman/5.7/en/server-error-reference.html. o condition_name: A condition name previously specified with DECLARE ... CONDITION. A condition name can be associated with a MySQL error code or SQLSTATE value. See [HELP DECLARE CONDITION]. o SQLWARNING: Shorthand for the class of SQLSTATE values that begin with '01'. DECLARE CONTINUE HANDLER FOR SQLWARNING BEGIN -- body of handler END; o NOT FOUND: Shorthand for the class of SQLSTATE values that begin with '02'. This is relevant within the context of cursors and is used to control what happens when a cursor reaches the end of a data set. If no more rows are available, a No Data condition occurs with SQLSTATE value '02000'. To detect this condition, you can set up a handler for it or for a NOT FOUND condition. DECLARE CONTINUE HANDLER FOR NOT FOUND BEGIN -- body of handler END; For another example, see http://dev.mysql.com/doc/refman/5.7/en/cursors.html. The NOT FOUND condition also occurs for SELECT ... INTO var_list statements that retrieve no rows. o SQLEXCEPTION: Shorthand for the class of SQLSTATE values that do not begin with '00', '01', or '02'. DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN -- body of handler END; For information about how the server chooses handlers when a condition occurs, see http://dev.mysql.com/doc/refman/5.7/en/handler-scope.html. If a condition occurs for which no handler has been declared, the action taken depends on the condition class: o For SQLEXCEPTION conditions, the stored program terminates at the statement that raised the condition, as if there were an EXIT handler. If the program was called by another stored program, the calling program handles the condition using the handler selection rules applied to its own handlers. o For SQLWARNING conditions, the program continues executing, as if there were a CONTINUE handler. o For NOT FOUND conditions, if the condition was raised normally, the action is CONTINUE. If it was raised by SIGNAL or RESIGNAL, the action is EXIT. URL: http://dev.mysql.com/doc/refman/5.7/en/declare-handler.html mysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1)); Query OK, 0 rows affected (0.00 sec) mysql> delimiter // mysql> CREATE PROCEDURE handlerdemo () BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1; SET @x = 1; INSERT INTO test.t VALUES (1); SET @x = 2; INSERT INTO test.t VALUES (1); SET @x = 3; END; // Query OK, 0 rows affected (0.00 sec) mysql> CALL handlerdemo()// Query OK, 0 rows affected (0.00 sec) mysql> SELECT @x// +------+ | @x | +------+ | 3 | +------+ 1 row in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/declare-handler.htmlp¨ ÿclõ®¼ÁÙÚ^8]E¿;u€8“infimum supremumB�„@ ™"¾6 DECLARE VARIABLE Syntax: DECLARE var_name [, var_name] ... type [DEFAULT value] This statement declares local variables within stored programs. To provide a default value for a variable, include a DEFAULT clause. The value can be specified as an expression; it need not be a constant. If the DEFAULT clause is missing, the initial value is NULL. Local variables are treated like stored routine parameters with respect to data type and overflow checking. See [HELP CREATE PROCEDURE]. Variable declarations must appear before cursor or handler declarations. Local variable names are not case-sensitive. Permissible characters and quoting rules are the same as for other identifiers, as described in http://dev.mysql.com/doc/refman/5.7/en/identifiers.html. The scope of a local variable is the BEGIN ... END block within which it is declared. The variable can be referred to in blocks nested within the declaring block, except those blocks that declare a variable with the same name. For examples of variable declarations, see http://dev.mysql.com/doc/refman/5.7/en/local-variable-scope.html. URL: http://dev.mysql.com/doc/refman/5.7/en/declare-local-variable.html http://dev.mysql.com/doc/refman/5.7/en/declare-local-variable.html@¾�@[š"¾6 %DECODE Syntax: DECODE(crypt_str,pass_str) DECODE() decrypts the encrypted string crypt_str using pass_str as the password. crypt_str should be a string returned from ENCODE(). *Note*: The ENCODE() and DECODE() functions are deprecated in MySQL 5.7, will be removed in a future MySQL release, and should no longer be used. Consider using AES_ENCRYPT() and AES_DECRYPT() instead. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.htmlC5É€@ ž›"¾6 2DEFAULT Syntax: DEFAULT(col_name) Returns the default value for a table column. An error results if the column has no default value. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> UPDATE t SET i = DEFAULT(i)+1 WHERE id < 100; http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlB[™€@(“œ"¾6 ?DEGREES Syntax: DEGREES(X) Returns the argument X, converted from radians to degrees. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT DEGREES(PI()); -> 180 mysql> SELECT DEGREES(PI() / 2); -> 90 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html2Ž@0Ÿ�"¾6 LDELETE Syntax: DELETE is a DML statement that removes rows from a table. Single-Table Syntax DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [PARTITION (partition_name [, partition_name] ...)] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] The DELETE statement deletes rows from tbl_name and returns the number of deleted rows. To check the number of deleted rows, call the ROW_COUNT() function described in http://dev.mysql.com/doc/refman/5.7/en/information-functions.html. Main Clauses The conditions in the optional WHERE clause identify which rows to delete. With no WHERE clause, all rows are deleted. where_condition is an expression that evaluates to true for each row to be deleted. It is specified as described in http://dev.mysql.com/doc/refman/5.7/en/select.html. If the ORDER BY clause is specified, the rows are deleted in the order that is specified. The LIMIT clause places a limit on the number of rows that can be deleted. These clauses apply to single-table deletes, but not multi-table deletes. Multiple-Table Syntax DELETE [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name[.*] [, tbl_name[.*]] ... FROM table_references [WHERE where_condition] DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name[.*] [, tbl_name[.*]] ... USING table_references [WHERE where_condition] Privileges You need the DELETE privilege on a table to delete rows from it. You need only the SELECT privilege for any columns that are only read, such as those named in the WHERE clause. Performance When you do not need to know the number of deleted rows, the TRUNCATE TABLE statement is a faster way to empty a table than a DELETE statement with no WHERE clause. Unlike DELETE, TRUNCATE TABLE cannot be used within a transaction or if you have a lock on the table. See [HELP TRUNCATE TABLE] and [HELP LOCK]. The speed of delete operations may also be affected by factors discussed in http://dev.mysql.com/doc/refman/5.7/en/delete-optimization.html. To ensure that a given DELETE statement does not take too much time, the MySQL-specific LIMIT row_count clause for DELETE specifies the maximum number of rows to be deleted. If the number of rows to delete is larger than the limit, repeat the DELETE statement until the number of affected rows is less than the LIMIT value. Subqueries You cannot delete from a table and select from the same table in a subquery. Partitioned Table Support DELETE supports explicit partition selection using the PARTITION option, which takes a list of the comma-separated names of one or more partitions or subpartitions (or both) from which to select rows to be dropped. Partitions not included in the list are ignored. Given a partitioned table t with a partition named p0, executing the statement DELETE FROM t PARTITION (p0) has the same effect on the table as executing ALTER TABLE t TRUNCATE PARTITION (p0); in both cases, all rows in partition p0 are dropped. PARTITION can be used along with a WHERE condition, in which case the condition is tested only on rows in the listed partitions. For example, DELETE FROM t PARTITION (p0) WHERE c < 5 deletes rows only from partition p0 for which the condition c < 5 is true; rows in any other partitions are not checked and thus not affected by the DELETE. The PARTITION option can also be used in multiple-table DELETE statements. You can use up to one such option per table named in the FROM option. For more information and examples, see http://dev.mysql.com/doc/refman/5.7/en/partitioning-selection.html. URL: http://dev.mysql.com/doc/refman/5.7/en/delete.html http://dev.mysql.com/doc/refman/5.7/en/delete.html@‚„@8ž"¾6 YDES_DECRYPT Syntax: DES_DECRYPT(crypt_str[,key_str]) Decrypts a string encrypted with DES_ENCRYPT(). If an error occurs, this function returns NULL. This function works only if MySQL has been configured with SSL support. See http://dev.mysql.com/doc/refman/5.7/en/encrypted-connections.html. If no key_str argument is given, DES_DECRYPT() examines the first byte of the encrypted string to determine the DES key number that was used to encrypt the original string, and then reads the key from the DES key file to decrypt the message. For this to work, the user must have the SUPER privilege. The key file can be specified with the --des-key-file server option. If you pass this function a key_str argument, that string is used as the key for decrypting the message. If the crypt_str argument does not appear to be an encrypted string, MySQL returns the given crypt_str. *Note*: The DES_ENCRYPT() and DES_DECRYPT() functions are deprecated as of MySQL 5.7.6, will be removed in a future MySQL release, and should no longer be used. Consider using AES_ENCRYPT() and AES_DECRYPT() instead. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html@zú‡@@ Ÿ"¾6 fDES_ENCRYPT Syntax: DES_ENCRYPT(str[,{key_num|key_str}]) Encrypts the string with the given key using the Triple-DES algorithm. This function works only if MySQL has been configured with SSL support. See http://dev.mysql.com/doc/refman/5.7/en/encrypted-connections.html. The encryption key to use is chosen based on the second argument to DES_ENCRYPT(), if one was given. With no argument, the first key from the DES key file is used. With a key_num argument, the given key number (0 to 9) from the DES key file is used. With a key_str argument, the given key string is used to encrypt str. The key file can be specified with the --des-key-file server option. The return string is a binary string where the first character is CHAR(128 | key_num). If an error occurs, DES_ENCRYPT() returns NULL. The 128 is added to make it easier to recognize an encrypted key. If you use a string key, key_num is 127. The string length for the result is given by this formula: new_len = orig_len + (8 - (orig_len % 8)) + 1 Each line in the DES key file has the following format: key_num des_key_str Each key_num value must be a number in the range from 0 to 9. Lines in the file may be in any order. des_key_str is the string that is used to encrypt the message. There should be at least one space between the number and the key. The first key is the default key that is used if you do not specify any key argument to DES_ENCRYPT(). You can tell MySQL to read new key values from the key file with the FLUSH DES_KEY_FILE statement. This requires the RELOAD privilege. One benefit of having a set of default keys is that it gives applications a way to check for the existence of encrypted column values, without giving the end user the right to decrypt those values. *Note*: The DES_ENCRYPT() and DES_DECRYPT() functions are deprecated as of MySQL 5.7.6, will be removed in a future MySQL release, and should no longer be used. Consider using AES_ENCRYPT() and AES_DECRYPT() instead. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html mysql> SELECT customer_address FROM customer_table > WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number'); http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.htmlJÊ€@Hq "¾6 sDIMENSION Dimension(g) ST_Dimension() and Dimension() are synonyms. For more information, see the description of ST_Dimension(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.htmlJË€@Pr¡"¾6 €DISJOINT Disjoint(g1, g2) MBRDisjoint() and Disjoint() are synonyms. For more information, see the description of MBRDisjoint(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlTÕ€@X†¢"¾6 �DISTANCE Distance(g1, g2) ST_Distance() and Distance() are synonyms. For more information, see the description of ST_Distance(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html@N’�@`}£"¾6 šDIV Syntax: DIV Integer division. Discards from the division result any fractional part to the right of the decimal point. If either operand has a noninteger type, the operands are converted to DECIMAL and divided using DECIMAL arithmetic before converting the result to BIGINT. If the result exceeds BIGINT range, an error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html mysql> SELECT 5 DIV 2, -5 DIV 2, 5 DIV -2, -5 DIV -2; -> 2, -2, -2, 2 http://dev.mysql.com/doc/refman/5.7/en/arithmetic-functions.html.Áƒ@hL¤"¾6 §DO Syntax: DO expr [, expr] ... DO executes the expressions but does not return any results. In most respects, DO is shorthand for SELECT expr, ..., but has the advantage that it is slightly faster when you do not care about the result. DO is useful primarily with functions that have side effects, such as RELEASE_LOCK(). Example: This SELECT statement pauses, but also produces a result set: mysql> SELECT SLEEP(5); +----------+ | SLEEP(5) | +----------+ | 0 | +----------+ 1 row in set (5.02 sec) DO, on the other hand, pauses without producing a result set.: mysql> DO SLEEP(5); Query OK, 0 rows affected (4.99 sec) This could be useful, for example in a stored function or trigger, which prohibit statements that produce result sets. DO only executes expressions. It cannot be used in all cases where SELECT can be used. For example, DO id FROM t1 is invalid because it references a table. URL: http://dev.mysql.com/doc/refman/5.7/en/do.html http://dev.mysql.com/doc/refman/5.7/en/do.htmlAƒ@p¡¥"¾6 ´DOUBLE DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] A normal-size (double-precision) floating-point number. Permissible values are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308. These are the theoretical limits, based on the IEEE standard. The actual range might be slightly smaller depending on your hardware or operating system. M is the total number of digits and D is the number of digits following the decimal point. If M and D are omitted, values are stored to the limits permitted by the hardware. A double-precision floating-point number is accurate to approximately 15 decimal places. UNSIGNED, if specified, disallows negative values. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.htmlA%�@xæ"¾6 ÁDOUBLE PRECISION DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL] These types are synonyms for DOUBLE. Exception: If the REAL_AS_FLOAT SQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html9V‚@€Çݧ"¾6 ÎDROP DATABASE Syntax: DROP {DATABASE | SCHEMA} [IF EXISTS] db_name DROP DATABASE drops all tables in the database and deletes the database. Be very careful with this statement! To use DROP DATABASE, you need the DROP privilege on the database. DROP SCHEMA is a synonym for DROP DATABASE. *Important*: When a database is dropped, privileges granted specifically for the database are not automatically dropped. They must be dropped manually. See [HELP GRANT]. IF EXISTS is used to prevent an error from occurring if the database does not exist. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-database.html http://dev.mysql.com/doc/refman/5.7/en/drop-database.htmlp'ý ›cÚ^8] —VR)E¿:k€7] infimum supremum6*‚@½¨"¾6 ÛDROP EVENT Syntax: DROP EVENT [IF EXISTS] event_name This statement drops the event named event_name. The event immediately ceases being active, and is deleted completely from the server. If the event does not exist, the error ERROR 1517 (HY000): Unknown event 'event_name' results. You can override this and cause the statement to generate a warning for nonexistent events instead using IF EXISTS. This statement requires the EVENT privilege for the schema to which the event to be dropped belongs. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-event.html http://dev.mysql.com/doc/refman/5.7/en/drop-event.html9L�@â©"¾6 èDROP FUNCTION The DROP FUNCTION statement is used to drop stored functions and user-defined functions (UDFs): o For information about dropping stored functions, see [HELP DROP PROCEDURE]. o For information about dropping user-defined functions, see [HELP DROP FUNCTION UDF]. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-function.html http://dev.mysql.com/doc/refman/5.7/en/drop-function.html=™�@ 3ª"¾6 õDROP FUNCTION UDF &Syntax: DROP FUNCTION function_name This statement drops the user-defined function (UDF) named function_name. To drop a function, you must have the DELETE privilege for the mysql system database. This is because DROP FUNCTION removes a row from the mysql.func system table that records the function's name, type, and shared library name. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-function-udf.html http://dev.mysql.com/doc/refman/5.7/en/drop-function-udf.html6W‚@(ê«"¾6 DROP INDEX Syntax: DROP INDEX index_name ON tbl_name [algorithm_option | lock_option] ... algorithm_option: ALGORITHM [=] {DEFAULT|INPLACE|COPY} lock_option: LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE} DROP INDEX drops the index named index_name from the table tbl_name. This statement is mapped to an ALTER TABLE statement to drop the index. See [HELP ALTER TABLE]. To drop a primary key, the index name is always PRIMARY, which must be specified as a quoted identifier because PRIMARY is a reserved word: DROP INDEX `PRIMARY` ON t; URL: http://dev.mysql.com/doc/refman/5.7/en/drop-index.html http://dev.mysql.com/doc/refman/5.7/en/drop-index.html:ƒ@0­¬"¾6 DROP PROCEDURE Syntax: DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name This statement is used to drop a stored procedure or function. That is, the specified routine is removed from the server. You must have the ALTER ROUTINE privilege for the routine. (If the automatic_sp_privileges system variable is enabled, that privilege and EXECUTE are granted automatically to the routine creator when the routine is created and dropped from the creator when the routine is dropped. See http://dev.mysql.com/doc/refman/5.7/en/stored-routines-privileges.html. ) The IF EXISTS clause is a MySQL extension. It prevents an error from occurring if the procedure or function does not exist. A warning is produced that can be viewed with SHOW WARNINGS. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-procedure.html http://dev.mysql.com/doc/refman/5.7/en/drop-procedure.html7²�@8F­"¾6 DROP SERVER Syntax: DROP SERVER [ IF EXISTS ] server_name Drops the server definition for the server named server_name. The corresponding row in the mysql.servers table is deleted. This statement requires the SUPER privilege. Dropping a server for a table does not affect any FEDERATED tables that used this connection information when they were created. See [HELP CREATE SERVER]. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-server.html http://dev.mysql.com/doc/refman/5.7/en/drop-server.html6Ôˆ@@ g®"¾6 )DROP TABLE Syntax: DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE] DROP TABLE removes one or more tables. You must have the DROP privilege for each table. Be careful with this statement! It removes the table definition and all table data. For a partitioned table, it permanently removes the table definition, all its partitions, and all data stored in those partitions. It also removes partition definitions associated with the dropped table. Dropping a table also drops any triggers for the table. DROP TABLE causes an implicit commit, except when used with the TEMPORARY keyword. See http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html. *Important*: When a table is dropped, privileges granted specifically for the table are not automatically dropped. They must be dropped manually. See [HELP GRANT]. If any tables named in the argument list do not exist, the statement returns an error indicating by name which nonexisting tables it was unable to drop, but also drops all tables in the list that do exist. Use IF EXISTS to prevent an error from occurring for tables that do not exist. Instead of an error, a NOTE is generated for each nonexistent table; these notes can be displayed with SHOW WARNINGS. See [HELP SHOW WARNINGS]. IF EXISTS can also be useful for dropping tables in unusual circumstances under which there is an .frm file but no table managed by the storage engine. (For example, if an abnormal server exit occurs after removal of the table from the storage engine but before .frm file removal.) The TEMPORARY keyword has the following effects: o The statement drops only TEMPORARY tables. o The statement does not cause an implicit commit. o No access rights are checked. A TEMPORARY table is visible only with the session that created it, so no check is necessary. Using TEMPORARY is a good way to ensure that you do not accidentally drop a non-TEMPORARY table. The RESTRICT and CASCADE keywords do nothing. They are permitted to make porting easier from other database systems. DROP TABLE is not supported with all innodb_force_recovery settings. See http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-table.html http://dev.mysql.com/doc/refman/5.7/en/drop-table.html;}Œ@H ¯"¾6 6DROP TABLESPACE Syntax: DROP TABLESPACE tablespace_name [ENGINE [=] engine_name] This statement drops a tablespace that was previously created using CREATE TABLESPACE. It is supported with all MySQL NDB Cluster 7.5 releases, and with InnoDB in the standard MySQL Server as well. ENGINE sets the storage engine that uses the tablespace, where engine_name is the name of the storage engine. Currently, the values InnoDB and NDB are supported. If not set, the value of default_storage_engine is used. If it is not the same as the storage engine used to create the tablespace, the DROP TABLESPACE statement fails. For an InnoDB tablespace, all tables must be dropped from the tablespace prior to a DROP TABLESPACE operation. If the tablespace is not empty, DROP TABLESPACE returns an error. As with the InnoDB system tablespace, truncating or dropping InnoDB tables stored in a general tablespace creates free space in the tablespace .ibd data file, which can only be used for new InnoDB data. Space is not released back to the operating system by such operations as it is for file-per-table tablespaces. An NDB tablespace to be dropped must not contain any data files; in other words, before you can drop an NDB tablespace, you must first drop each of its data files using ALTER TABLESPACE ... DROP DATAFILE. Notes o Tablespaces are not deleted automatically. A tablespace must be dropped explicitly using DROP TABLESPACE. DROP DATABASE has no effect in this regard, even if the operation drops all tables belonging to the tablespace. o A DROP DATABASE operation can drop tables that belong to a general tablespace but it cannot drop the tablespace, even if the operation drops all tables that belong to the tablespace. The tablespace must be dropped explicitly using DROP TABLESPACE tablespace_name. o Similar to the system tablespace, truncating or dropping tables stored in a general tablespace creates free space internally in the general tablespace .ibd data file which can only be used for new InnoDB data. Space is not released back to the operating system as it is for file-per-table tablespaces. InnoDB Example This example demonstrates how to drop an InnoDB general tablespace. The general tablespace ts1 is created with a single table. Before dropping the tablespace, the table must be dropped. mysql> CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' Engine=InnoDB; mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts10 Engine=InnoDB; mysql> DROP TABLE t1; mysql> DROP TABLESPACE ts1; NDB Example This example shows how to drop an NDB tablespace myts having a data file named mydata-1.dat after first creating the tablespace, and assumes the existence of a log file group named mylg (see [HELP CREATE LOGFILE GROUP]). mysql> CREATE TABLESPACE myts -> ADD DATAFILE 'mydata-1.dat' -> USE LOGFILE GROUP mylg -> ENGINE=NDB; You must remove all data files from the tablespace using ALTER TABLESPACE, as shown here, before it can be dropped: mysql> ALTER TABLESPACE myts -> DROP DATAFILE 'mydata-1.dat' -> ENGINE=NDB; mysql> DROP TABLESPACE myts; URL: http://dev.mysql.com/doc/refman/5.7/en/drop-tablespace.html http://dev.mysql.com/doc/refman/5.7/en/drop-tablespace.html8W‚@Pì°"¾6 CDROP TRIGGER Syntax: DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name This statement drops a trigger. The schema (database) name is optional. If the schema is omitted, the trigger is dropped from the default schema. DROP TRIGGER requires the TRIGGER privilege for the table associated with the trigger. Use IF EXISTS to prevent an error from occurring for a trigger that does not exist. A NOTE is generated for a nonexistent trigger when using IF EXISTS. See [HELP SHOW WARNINGS]. Triggers for a table are also dropped if you drop the table. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-trigger.html http://dev.mysql.com/doc/refman/5.7/en/drop-trigger.html5„ƒ@X±"¾6 PDROP USER Syntax: DROP USER [IF EXISTS] user [, user] ... The DROP USER statement removes one or more MySQL accounts and their privileges. It removes privilege rows for the account from all grant tables. To use DROP USER, you must have the global CREATE USER privilege, or the DELETE privilege for the mysql system database. When the read_only system variable is enabled, DROP USER additionally requires the SUPER privilege. An error occurs if you try to drop an account that does not exist. If the IF EXISTS clause is given, the statement produces a warning for each named user that does not exist, rather than an error. Each account name uses the format described in http://dev.mysql.com/doc/refman/5.7/en/account-names.html. For example: DROP USER 'jeffrey'@'localhost'; The host name part of the account name, if omitted, defaults to '%'. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-user.html http://dev.mysql.com/doc/refman/5.7/en/drop-user.html5™„@`+²"¾6 ]DROP VIEW Syntax: DROP VIEW [IF EXISTS] view_name [, view_name] ... [RESTRICT | CASCADE] DROP VIEW removes one or more views. You must have the DROP privilege for each view. If any views named in the argument list do not exist, the statement returns an error indicating by name which nonexisting views it was unable to drop, but also drops all views in the list that do exist. *Note*: In MySQL 8.0, DROP VIEW fails if any views named in the argument list do not exist. Due to the change in behavior, a partially completed DROP VIEW operation on a MySQL 5.7 master fails when replicated to a MySQL 8.0 slave. To avoid this failure scenario, use IF EXISTS syntax in DROP VIEW statements to prevent an error from occurring for views that do not exist. For more information, see Atomic Data Definition Statement Support (http://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html). The IF EXISTS clause prevents an error from occurring for views that don't exist. When this clause is given, a NOTE is generated for each nonexistent view. See [HELP SHOW WARNINGS]. RESTRICT and CASCADE, if given, are parsed and ignored. URL: http://dev.mysql.com/doc/refman/5.7/en/drop-view.html http://dev.mysql.com/doc/refman/5.7/en/drop-view.html2«�@h:³"¾6 jDUAL You are permitted to specify DUAL as a dummy table name in situations where no tables are referenced: mysql> SELECT 1 + 1 FROM DUAL; -> 2 DUAL is purely for the convenience of people who require that all SELECT statements should have FROM and possibly other clauses. MySQL may ignore the clauses. MySQL does not require FROM DUAL if no tables are referenced. URL: http://dev.mysql.com/doc/refman/5.7/en/select.html http://dev.mysql.com/doc/refman/5.7/en/select.html<|4�@pI´"¾6 wELT #Syntax: ELT(N,str1,str2,str3,...) ELT() returns the Nth element of the list of strings: str1 if N = 1, str2 if N = 2, and so on. Returns NULL if N is less than 1 or greater than the number of arguments. ELT() is the complement of FIELD(). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT ELT(1, 'Aa', 'Bb', 'Cc', 'Dd'); -> 'Aa' mysql> SELECT ELT(4, 'Aa', 'Bb', 'Cc', 'Dd'); -> 'Dd' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html@{‚@xɵ"¾6 „ENCODE Syntax: ENCODE(str,pass_str) ENCODE() encrypts str using pass_str as the password. The result is a binary string of the same length as str. To decrypt the result, use DECODE(). *Note*: The ENCODE() and DECODE() functions are deprecated in MySQL 5.7, will be removed in a future MySQL release, and should no longer be used. If you still need to use ENCODE(), a salt value must be used with it to reduce risk. For example: ENCODE('cleartext', CONCAT('my_random_salt','my_secret_password')) A new random salt value must be used whenever a password is updated. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.htmlp˜Tc —VR)–q>·òE¿;°€:Oinfimum supremum@;‚@Û¶"¾6 ‘ENCRYPT Syntax: ENCRYPT(str[,salt]) Encrypts str using the Unix crypt() system call and returns a binary string. The salt argument must be a string with at least two characters or the result will be NULL. If no salt argument is given, a random value is used. *Note*: The ENCRYPT() function is deprecated as of MySQL 5.7.6, will be removed in a future MySQL release, and should no longer be used. For one-way hashing, consider using SHA2() instead. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html mysql> SELECT ENCRYPT('hello'); -> 'VxuFAJXVARROc' http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.htmlMÊ€@t·"¾6 žENDPOINT EndPoint(ls) ST_EndPoint() and EndPoint() are synonyms. For more information, see the description of ST_EndPoint(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html@±‚@ N¸"¾6 «ENUM ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name] An enumeration. A string object that can have only one value, chosen from the list of values 'value1', 'value2', ..., NULL or the special '' error value. ENUM values are represented internally as integers. An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.) A table can have no more than 255 unique element list definitions among its ENUM and SET columns considered as a group. For more information on these limits, see http://dev.mysql.com/doc/refman/5.7/en/limits-frm-file.html. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.htmlJÆ€@(m¹"¾6 ¸ENVELOPE Envelope(g) ST_Envelope() and Envelope() are synonyms. For more information, see the description of ST_Envelope(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.htmlJÀ@0jº"¾6 ÅEQUALS Equals(g1, g2) MBREquals() and Equals() are synonyms. For more information, see the description of MBREquals(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html3î‚@8»"¾6 ÒEXECUTE STATEMENT %Syntax: EXECUTE stmt_name [USING @var_name [, @var_name] ...] After preparing a statement with PREPARE, you execute it with an EXECUTE statement that refers to the prepared statement name. If the prepared statement contains any parameter markers, you must supply a USING clause that lists user variables containing the values to be bound to the parameters. Parameter values can be supplied only by user variables, and the USING clause must name exactly as many variables as the number of parameter markers in the statement. You can execute a given prepared statement multiple times, passing different variables to it or setting the variables to different values before each execution. URL: http://dev.mysql.com/doc/refman/5.7/en/execute.html http://dev.mysql.com/doc/refman/5.7/en/execute.htmlB‡€ú€@@ ¼"¾6 ßEXP Syntax: EXP(X) Returns the value of e (the base of natural logarithms) raised to the power of X. The inverse of this function is LOG() (using a single argument only) or LN(). URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT EXP(2); -> 7.3890560989307 mysql> SELECT EXP(-2); -> 0.13533528323661 mysql> SELECT EXP(0); -> 1 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html3ä‚@Hu½"¾6 ìEXPLAIN 'Syntax: {EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild] {EXPLAIN | DESCRIBE | DESC} [explain_type] {explainable_stmt | FOR CONNECTION connection_id} explain_type: { EXTENDED | PARTITIONS | FORMAT = format_name } format_name: { TRADITIONAL | JSON } explainable_stmt: { SELECT statement | DELETE statement | INSERT statement | REPLACE statement | UPDATE statement } The DESCRIBE and EXPLAIN statements are synonyms. In practice, the DESCRIBE keyword is more often used to obtain information about table structure, whereas EXPLAIN is used to obtain a query execution plan (that is, an explanation of how MySQL would execute a query). URL: http://dev.mysql.com/doc/refman/5.7/en/explain.html http://dev.mysql.com/doc/refman/5.7/en/explain.html<�€á‚@P¾"¾6 ùEXPORT_SET #Syntax: EXPORT_SET(bits,on,off[,separator[,number_of_bits]]) Returns a string such that for every bit set in the value bits, you get an on string and for every bit not set in the value, you get an off string. Bits in bits are examined from right to left (from low-order to high-order bits). Strings are added to the result from left to right, separated by the separator string (the default being the comma character ,). The number of bits examined is given by number_of_bits, which has a default of 64 if not specified. number_of_bits is silently clipped to 64 if larger than 64. It is treated as an unsigned integer, so a value of −1 is effectively the same as 64. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT EXPORT_SET(5,'Y','N',',',4); -> 'Y,N,Y,N' mysql> SELECT EXPORT_SET(6,'1','0',',',10); -> '0,1,1,0,0,0,0,0,0,0' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlJÙ€@X�¿"¾6 EXTERIORRING ExteriorRing(poly) ST_ExteriorRing() and ExteriorRing() are synonyms. For more information, see the description of ST_ExteriorRing(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.htmlCI�‡�@`qÀ"¾6 EXTRACT Syntax: EXTRACT(unit FROM date) The EXTRACT() function uses the same kinds of unit specifiers as DATE_ADD() or DATE_SUB(), but extracts parts from the date rather than performing date arithmetic. For information on the unit argument, see http://dev.mysql.com/doc/refman/5.7/en/expressions.html#temporal-interv als. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT EXTRACT(YEAR FROM '2019-07-02'); -> 2019 mysql> SELECT EXTRACT(YEAR_MONTH FROM '2019-07-02 01:02:03'); -> 201907 mysql> SELECT EXTRACT(DAY_MINUTE FROM '2019-07-02 01:02:03'); -> 20102 mysql> SELECT EXTRACT(MICROSECOND -> FROM '2003-01-02 10:30:00.000123'); -> 123 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html9‚;‹@h çÁ"¾6 EXTRACTVALUE #Syntax: ExtractValue(xml_frag, xpath_expr) ExtractValue() takes two string arguments, a fragment of XML markup xml_frag and an XPath expression xpath_expr (also known as a locator); it returns the text (CDATA) of the first text node which is a child of the element or elements matched by the XPath expression. Using this function is the equivalent of performing a match using the xpath_expr after appending /text(). In other words, ExtractValue('Sakila', '/a/b') and ExtractValue('Sakila', '/a/b/text()') produce the same result. If multiple matches are found, the content of the first child text node of each matching element is returned (in the order matched) as a single, space-delimited string. If no matching text node is found for the expression (including the implicit /text())---for whatever reason, as long as xpath_expr is valid, and xml_frag consists of elements which are properly nested and closed---an empty string is returned. No distinction is made between a match on an empty element and no match at all. This is by design. If you need to determine whether no matching element was found in xml_frag or such an element was found but contained no child text nodes, you should test the result of an expression that uses the XPath count() function. For example, both of these statements return an empty string, as shown here: mysql> SELECT ExtractValue('', '/a/b'); +-------------------------------------+ | ExtractValue('', '/a/b') | +-------------------------------------+ | | +-------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT ExtractValue('', '/a/b'); +-------------------------------------+ | ExtractValue('', '/a/b') | +-------------------------------------+ | | +-------------------------------------+ 1 row in set (0.00 sec) However, you can determine whether there was actually a matching element using the following: mysql> SELECT ExtractValue('', 'count(/a/b)'); +-------------------------------------+ | ExtractValue('', 'count(/a/b)') | +-------------------------------------+ | 1 | +-------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT ExtractValue('', 'count(/a/b)'); +-------------------------------------+ | ExtractValue('', 'count(/a/b)') | +-------------------------------------+ | 0 | +-------------------------------------+ 1 row in set (0.01 sec) *Important*: ExtractValue() returns only CDATA, and does not return any tags that might be contained within a matching tag, nor any of their content (see the result returned as val1 in the following example). URL: http://dev.mysql.com/doc/refman/5.7/en/xml-functions.html mysql> SELECT -> ExtractValue('cccddd', '/a') AS val1, -> ExtractValue('cccddd', '/a/b') AS val2, -> ExtractValue('cccddd', '//b') AS val3, -> ExtractValue('cccddd', '/b') AS val4, -> ExtractValue('cccdddeee', '//b') AS val5; +------+------+------+------+---------+ | val1 | val2 | val3 | val4 | val5 | +------+------+------+------+---------+ | ccc | ddd | ddd | | ddd eee | +------+------+------+------+---------+ http://dev.mysql.com/doc/refman/5.7/en/xml-functions.html1„@p¬Â"¾6 -FETCH Syntax: FETCH [[NEXT] FROM] cursor_name INTO var_name [, var_name] ... This statement fetches the next row for the SELECT statement associated with the specified cursor (which must be open), and advances the cursor pointer. If a row exists, the fetched columns are stored in the named variables. The number of columns retrieved by the SELECT statement must match the number of output variables specified in the FETCH statement. If no more rows are available, a No Data condition occurs with SQLSTATE value '02000'. To detect this condition, you can set up a handler for it (or for a NOT FOUND condition). For an example, see http://dev.mysql.com/doc/refman/5.7/en/cursors.html. Be aware that another operation, such as a SELECT or another FETCH, may also cause the handler to execute by raising the same condition. If it is necessary to distinguish which operation raised the condition, place the operation within its own BEGIN ... END block so that it can be associated with its own handler. URL: http://dev.mysql.com/doc/refman/5.7/en/fetch.html http://dev.mysql.com/doc/refman/5.7/en/fetch.html<Œ€‚@x6Ã"¾6 :FIELD #Syntax: FIELD(str,str1,str2,str3,...) Returns the index (position) of str in the str1, str2, str3, ... list. Returns 0 if str is not found. If all arguments to FIELD() are strings, all arguments are compared as strings. If all arguments are numbers, they are compared as numbers. Otherwise, the arguments are compared as double. If str is NULL, the return value is 0 because NULL fails equality comparison with any value. FIELD() is the complement of ELT(). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff'); -> 2 mysql> SELECT FIELD('Gg', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff'); -> 0 http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<7�‚@€QÄ"¾6 GFIND_IN_SET #Syntax: FIND_IN_SET(str,strlist) Returns a value in the range of 1 to N if the string str is in the string list strlist consisting of N substrings. A string list is a string composed of substrings separated by , characters. If the first argument is a constant string and the second is a column of type SET, the FIND_IN_SET() function is optimized to use bit arithmetic. Returns 0 if str is not in strlist or if strlist is the empty string. Returns NULL if either argument is NULL. This function does not work properly if the first argument contains a comma (,) character. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT FIND_IN_SET('b','a,b,c,d'); -> 2 http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlA”ƒ@ˆ2Å"¾6 TFLOAT FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] A small (single-precision) floating-point number. Permissible values are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38. These are the theoretical limits, based on the IEEE standard. The actual range might be slightly smaller depending on your hardware or operating system. M is the total number of digits and D is the number of digits following the decimal point. If M and D are omitted, values are stored to the limits permitted by the hardware. A single-precision floating-point number is accurate to approximately 7 decimal places. UNSIGNED, if specified, disallows negative values. Using FLOAT might give you some unexpected problems because all calculations in MySQL are done with double precision. See http://dev.mysql.com/doc/refman/5.7/en/no-matching-rows.html. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.htmlB:’€@�Æ!Æ"¾6 aFLOOR Syntax: FLOOR(X) Returns the largest integer value not greater than X. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT FLOOR(1.23), FLOOR(-1.23); -> 1, -2 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlp•c–q>·òk·–¢FcE¿3â€1‰infimum supremum1òˆ@ €Ç"¾6 nFLUSH Syntax: FLUSH [NO_WRITE_TO_BINLOG | LOCAL] { flush_option [, flush_option] ... | tables_option } flush_option: { BINARY LOGS | DES_KEY_FILE | ENGINE LOGS | ERROR LOGS | GENERAL LOGS | HOSTS | LOGS | PRIVILEGES | OPTIMIZER_COSTS | QUERY CACHE | RELAY LOGS [FOR CHANNEL channel] | SLOW LOGS | STATUS | USER_RESOURCES } tables_option: { TABLES | TABLES tbl_name [, tbl_name] ... | TABLES WITH READ LOCK | TABLES tbl_name [, tbl_name] ... WITH READ LOCK | TABLES tbl_name [, tbl_name] ... FOR EXPORT } The FLUSH statement has several variant forms that clear or reload various internal caches, flush tables, or acquire locks. To execute FLUSH, you must have the RELOAD privilege. Specific flush options might require additional privileges, as described later. *Note*: It is not possible to issue FLUSH statements within stored functions or triggers. However, you may use FLUSH in stored procedures, so long as these are not called from stored functions or triggers. See http://dev.mysql.com/doc/refman/5.7/en/stored-program-restrictions.html . By default, the server writes FLUSH statements to the binary log so that they replicate to replication slaves. To suppress logging, specify the optional NO_WRITE_TO_BINLOG keyword or its alias LOCAL. *Note*: FLUSH LOGS, FLUSH BINARY LOGS, FLUSH TABLES WITH READ LOCK (with or without a table list), and FLUSH TABLES tbl_name ... FOR EXPORT are not written to the binary log in any case because they would cause problems if replicated to a slave. The FLUSH statement causes an implicit commit. See http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html. The mysqladmin utility provides a command-line interface to some flush operations, using commands such as flush-hosts, flush-logs, flush-privileges, flush-status, and flush-tables. See http://dev.mysql.com/doc/refman/5.7/en/mysqladmin.html. Sending a SIGHUP signal to the server causes several flush operations to occur that are similar to various forms of the FLUSH statement. See http://dev.mysql.com/doc/refman/5.7/en/server-signal-response.html. The RESET statement is similar to FLUSH. See [HELP RESET], for information about using the RESET statement with replication. URL: http://dev.mysql.com/doc/refman/5.7/en/flush.html http://dev.mysql.com/doc/refman/5.7/en/flush.htmlNr�@È"¾6 {FLUSH QUERY CACHE You can defragment the query cache to better utilize its memory with the FLUSH QUERY CACHE statement. The statement does not remove any queries from the cache. The RESET QUERY CACHE statement removes all query results from the query cache. The FLUSH TABLES statement also does this. URL: http://dev.mysql.com/doc/refman/5.7/en/query-cache-status-and-maintenance.html http://dev.mysql.com/doc/refman/5.7/en/query-cache-status-and-maintenance.html<‚@ É"¾6 ˆFORMAT #Syntax: FORMAT(X,D[,locale]) Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part. The optional third parameter enables a locale to be specified to be used for the result number's decimal point, thousands separator, and grouping between separators. Permissible locale values are the same as the legal values for the lc_time_names system variable (see http://dev.mysql.com/doc/refman/5.7/en/locale-support.html). If no locale is specified, the default is 'en_US'. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT FORMAT(12332.123456, 4); -> '12,332.1235' mysql> SELECT FORMAT(12332.1,4); -> '12,332.1000' mysql> SELECT FORMAT(12332.2,0); -> '12,332' mysql> SELECT FORMAT(12332.2,2,'de_DE'); -> '12.332,20' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlAnâ�@(îÊ"¾6 •FOUND_ROWS Syntax: FOUND_ROWS() A SELECT statement may include a LIMIT clause to restrict the number of rows the server returns to the client. In some cases, it is desirable to know how many rows the statement would have returned without the LIMIT, but without running the statement again. To obtain this row count, include an SQL_CALC_FOUND_ROWS option in the SELECT statement, and then invoke FOUND_ROWS() afterward: URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name -> WHERE id > 100 LIMIT 10; mysql> SELECT FOUND_ROWS(); http://dev.mysql.com/doc/refman/5.7/en/information-functions.html SELECT TO_BASE64('abc'), FROM_BASE64(TO_BASE64('abc')); -> 'JWJj', 'abc' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlC9�€@8gÌ"¾6 ¯FROM_DAYS Syntax: FROM_DAYS(N) Given a day number N, returns a DATE value. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT FROM_DAYS(730669); -> '2000-07-03' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC� ƒ@@ÆÍ"¾6 ¼FROM_UNIXTIME Syntax: FROM_UNIXTIME(unix_timestamp[,format]) Returns a representation of the unix_timestamp argument as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is used in a string or numeric context. unix_timestamp is an internal timestamp value representing seconds since '1970-01-01 00:00:00' UTC, such as produced by the UNIX_TIMESTAMP() function. The return value is expressed in the session time zone. (Clients can set the session time zone as described in http://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html.) The format string, if given, is used to format the result the same way as described in the entry for the DATE_FORMAT() function. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT FROM_UNIXTIME(1447430881); -> '2015-11-13 10:08:01' mysql> SELECT FROM_UNIXTIME(1447430881) + 0; -> 20151113100801 mysql> SELECT FROM_UNIXTIME(1447430881, -> '%Y %D %M %h:%i:%s %x'); -> '2015 13th November 10:08:01 2015' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html=b�@HüÎ"¾6 ÉGEOMCOLLFROMTEXT )GeomCollFromText(wkt[, srid]), GeometryCollectionFromText(wkt[, srid]) ST_GeomCollFromText(), ST_GeometryCollectionFromText(), ST_GeomCollFromTxt(), GeomCollFromText(), and GeometryCollectionFromText() are synonyms. For more information, see the description of ST_GeomCollFromText(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=E�@PßÏ"¾6 ÖGEOMCOLLFROMWKB (GeomCollFromWKB(wkb[, srid]), GeometryCollectionFromWKB(wkb[, srid]) ST_GeomCollFromWKB(), ST_GeometryCollectionFromWKB(), GeomCollFromWKB(), and GeometryCollectionFromWKB() are synonyms. For more information, see the description of ST_GeomCollFromWKB(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlD S�@XÐ"¾6 ãGEOMETRY MySQL provides a standard way of creating spatial columns for geometry types, for example, with CREATE TABLE or ALTER TABLE. Spatial columns are supported for MyISAM, InnoDB, NDB, and ARCHIVE tables. See also the notes about spatial indexes under [HELP SPATIAL]. URL: http://dev.mysql.com/doc/refman/5.7/en/creating-spatial-columns.html CREATE TABLE geom (g GEOMETRY); http://dev.mysql.com/doc/refman/5.7/en/creating-spatial-columns.htmlHà…@`…Ñ"¾6 ðGEOMETRY HIERARCHY Geometry is the base class. It is an abstract class. The instantiable subclasses of Geometry are restricted to zero-, one-, and two-dimensional geometric objects that exist in two-dimensional coordinate space. All instantiable geometry classes are defined so that valid instances of a geometry class are topologically closed (that is, all defined geometries include their boundary). The base Geometry class has subclasses for Point, Curve, Surface, and GeometryCollection: o Point represents zero-dimensional objects. o Curve represents one-dimensional objects, and has subclass LineString, with sub-subclasses Line and LinearRing. o Surface is designed for two-dimensional objects and has subclass Polygon. o GeometryCollection has specialized zero-, one-, and two-dimensional collection classes named MultiPoint, MultiLineString, and MultiPolygon for modeling geometries corresponding to collections of Points, LineStrings, and Polygons, respectively. MultiCurve and MultiSurface are introduced as abstract superclasses that generalize the collection interfaces to handle Curves and Surfaces. Geometry, Curve, Surface, MultiCurve, and MultiSurface are defined as noninstantiable classes. They define a common set of methods for their subclasses and are included for extensibility. Point, LineString, Polygon, GeometryCollection, MultiPoint, MultiLineString, and MultiPolygon are instantiable classes. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-geometry-class-hierarchy.html http://dev.mysql.com/doc/refman/5.7/en/gis-geometry-class-hierarchy.htmlHŽ�@h3Ò"¾6 ýGEOMETRYCOLLECTION GeometryCollection(g [, g] ...) Constructs a GeometryCollection value from the geometry arguments. GeometryCollection() returns all the proper geometries contained in the arguments even if a nonsupported geometry is present. GeometryCollection() with no arguments is permitted as a way to create an empty geometry. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.htmlUÙ€@p‹Ó"¾6 GEOMETRYN GeometryN(gc, N) ST_GeometryN() and GeometryN() are synonyms. For more information, see the description of ST_GeometryN(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.htmlJÖ€@x}Ô"¾6 GEOMETRYTYPE GeometryType(g) ST_GeometryType() and GeometryType() are synonyms. For more information, see the description of ST_GeometryType(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html=�@€¸Õ"¾6 $GEOMFROMTEXT )GeomFromText(wkt[, srid]), GeometryFromText(wkt[, srid]) ST_GeomFromText(), ST_GeometryFromText(), GeomFromText(), and GeometryFromText() are synonyms. For more information, see the description of ST_GeomFromText(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=�@ˆ±Ö"¾6 1GEOMFROMWKB (GeomFromWKB(wkb[, srid]), GeometryFromWKB(wkb[, srid]) ST_GeomFromWKB(), ST_GeometryFromWKB(), GeomFromWKB(), and GeometryFromWKB() are synonyms. For more information, see the description of ST_GeomFromWKB(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html;À@�­×"¾6 >GET DIAGNOSTICS & jhttp://dev.mysql.com/doc/refman/5.7/en/get-diagnostics.htmlC°€�@˜ÎçØ"¾6 KGET_FORMAT Syntax: GET_FORMAT({DATE|TIME|DATETIME}, {'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL'}) Returns a format string. This function is useful in combination with the DATE_FORMAT() and the STR_TO_DATE() functions. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR')); -> '03.10.2003' mysql> SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA')); -> '2003-10-31' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlp(8Ä=ck·–¢Fcg€¤§  jÿÿÿÿSyntax: GET [CURRENT | STACKED] DIAGNOSTICS { statement_information_item [, statement_information_item] ... | CONDITION condition_number condition_information_item [, condition_information_item] ... } statement_information_item: target = statement_information_item_name condition_information_item: target = condition_information_item_name statement_information_item_name: NUMBER | ROW_COUNT condition_information_item_name: { CLASS_ORIGIN | SUBCLASS_ORIGIN | RETURNED_SQLSTATE | MESSAGE_TEXT | MYSQL_ERRNO | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | CATALOG_NAME | SCHEMA_NAME | TABLE_NAME | COLUMN_NAME | CURSOR_NAME } condition_number, target: (see following discussion) SQL statements produce diagnostic information that populates the diagnostics area. The GET DIAGNOSTICS statement enables applications to inspect this information. (You can also use SHOW WARNINGS or SHOW ERRORS to see conditions or errors.) No special privileges are required to execute GET DIAGNOSTICS. The keyword CURRENT means to retrieve information from the current diagnostics area. The keyword STACKED means to retrieve information from the second diagnostics area, which is available only if the current context is a condition handler. If neither keyword is given, the default is to use the current diagnostics area. The GET DIAGNOSTICS statement is typically used in a handler within a stored program. It is a MySQL extension that GET [CURRENT] DIAGNOSTICS is permitted outside handler context to check the execution of any SQL statement. For example, if you invoke the mysql client program, you can enter these statements at the prompt: mysql> DROP TABLE test.no_such_table; ERROR 1051 (42S02): Unknown table 'test.no_such_table' mysql> GET DIAGNOSTICS CONDITION 1 @p1 = RETURNED_SQLSTATE, @p2 = MESSAGE_TEXT; mysql> SELECT @p1, @p2; +-------+------------------------------------+ | @p1 | @p2 | +-------+------------------------------------+ | 42S02 | Unknown table 'test.no_such_table' | +-------+------------------------------------+ This extension applies only to the current diagnostics area. It does not apply to the second diagnostics area because GET STACKED DIAGNOSTICS is permitted only if the current context is a condition handler. If that is not the case, a GET STACKED DIAGNOSTICS when handler not active error occurs. For a description of the diagnostics area, see http://dev.mysql.com/doc/refman/5.7/en/diagnostics-area.html. Briefly, it contains two kinds of information: o Statement information, such as the number of conditions that occurred or the affected-rows count. o Condition information, such as the error code and message. If a statement raises multiple conditions, this part of the diagnostics area has a condition area for each one. If a statement raises no conditions, this part of the diagnostics area is empty. For a statement that produces three conditions, the diagnostics area contains statement and condition information like this: Statement information: row count ... other statement information items ... Condition area list: Condition area 1: error code for condition 1 error message for condition 1 ... other condition information items ... Condition area 2: error code for condition 2: error message for condition 2 ... other condition information items ... Condition area 3: error code for condition 3 error message for condition 3 ... other condition information items ... GET DIAGNOSTICS can obtain either statement or condition information, but not both in the same statement: o To obtain statement information, retrieve the desired statement items into target variables. This instance of GET DIAGNOSTICS assigns the number of available conditions and the rows-affected count to the user variables @p1 and @p2: GET DIAGNOSTICS @p1 = NUMBER, @p2 = ROW_COUNT; o To obtain condition information, specify the condition number and retrieve the desired condition items into target variables. This instance of GET DIAGNOSTICS assigns the SQLSTATE value and error message to the user variables @p3 and @p4: GET DIAGNOSTICS CONDITION 1 @p3 = RETURNED_SQLSTATE, @p4 = MESSAGE_TEXT; The retrieval list specifies one or more target = item_name assignments, separated by commas. Each assignment names a target variable and either a statement_information_item_name or condition_information_item_name designator, depending on whether the statement retrieves statement or condition information. Valid target designators for storing item information can be stored procedure or function parameters, stored program local variables declared with DECLARE, or user-defined variables. Valid condition_number designators can be stored procedure or function parameters, stored program local variables declared with DECLARE, user-defined variables, system variables, or literals. A character literal may include a _charset introducer. A warning occurs if the condition number is not in the range from 1 to the number of condition areas that have information. In this case, the warning is added to the diagnostics area without clearing it. When a condition occurs, MySQL does not populate all condition items recognized by GET DIAGNOSTICS. For example: mysql> GET DIAGNOSTICS CONDITION 1 @p5 = SCHEMA_NAME, @p6 = TABLE_NAME; mysql> SELECT @p5, @p6; +------+------+ | @p5 | @p6 | +------+------+ | | | +------+------+ In standard SQL, if there are multiple conditions, the first condition relates to the SQLSTATE value returned for the previous SQL statement. In MySQL, this is not guaranteed. To get the main error, you cannot do this: GET DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO; Instead, retrieve the condition count first, then use it to specify which condition number to inspect: GET DIAGNOSTICS @cno = NUMBER; GET DIAGNOSTICS CONDITION @cno @errno = MYSQL_ERRNO; For information about permissible statement and condition information items, and which ones are populated when a condition occurs, see http://dev.mysql.com/doc/refman/5.7/en/diagnostics-area.html#diagnostic s-area-information-items. Here is an example that uses GET DIAGNOSTICS and an exception handler in stored procedure context to assess the outcome of an insert operation. If the insert was successful, the procedure uses GET DIAGNOSTICS to get the rows-affected count. This shows that you can use GET DIAGNOSTICS multiple times to retrieve information about a statement as long as the current diagnostics area has not been cleared. CREATE PROCEDURE do_insert(value INT) BEGIN -- Declare variables to hold diagnostics area information DECLARE code CHAR(5) DEFAULT '00000'; DECLARE msg TEXT; DECLARE rows INT; DECLARE result TEXT; -- Declare exception handler for failed insert DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT; END; -- Perform the insert INSERT INTO t1 (int_col) VALUES(value); -- Check whether the insert was successful IF code = '00000' THEN GET DIAGNOSTICS rows = ROW_COUNT; SET result = CONCAT('insert succeeded, row count = ',rows); ELSE SET result = CONCAT('insert failed, error = ',code,', message = ',msg); END IF; -- Say what happened SELECT result; END; Suppose that t1.int_col is an integer column that is declared as NOT NULL. The procedure produces these results when invoked to insert non-NULL and NULL values, respectively: mysql> CALL do_insert(1); +---------------------------------+ | result | +---------------------------------+ | insert succeeded, row count = 1 | +---------------------------------+ mysql> CALL do_insert(NULL); +-------------------------------------------------------------------------+ | result | +-------------------------------------------------------------------------+ | insert failed, error = 23000, message = Column 'int_col' cannot be null | +-------------------------------------------------------------------------+ URL: http://dev.mysql.com/doc/refman/5.7/en/get-diagnostics.html g€¤§˜€:M“~E¿;�€ 1A infimum supremum=]Ž@÷Ù"¾6 XGET_LOCK Syntax: GET_LOCK(str,timeout) Tries to obtain a lock with a name given by the string str, using a timeout of timeout seconds. A negative timeout value means infinite timeout. The lock is exclusive. While held by one session, other sessions cannot obtain a lock of the same name. Returns 1 if the lock was obtained successfully, 0 if the attempt timed out (for example, because another client has previously locked the name), or NULL if an error occurred (such as running out of memory or the thread was killed with mysqladmin kill). A lock obtained with GET_LOCK() is released explicitly by executing RELEASE_LOCK() or implicitly when your session terminates (either normally or abnormally). Locks obtained with GET_LOCK() are not released when transactions commit or roll back. In MySQL 5.7, GET_LOCK() was reimplemented using the metadata locking (MDL) subsystem and its capabilities were extended. Multiple simultaneous locks can be acquired and GET_LOCK() does not release any existing locks. It is even possible for a given session to acquire multiple locks for the same name. Other sessions cannot acquire a lock with that name until the acquiring session releases all its locks for the name. As a result of the MDL reimplementation, uniquely named locks acquired with GET_LOCK() appear in the Performance Schema metadata_locks table. The OBJECT_TYPE column says USER LEVEL LOCK and the OBJECT_NAME column indicates the lock name. In the case that multiple locks are acquired for the same name, only the first lock for the name registers a row in the metadata_locks table. Subsequent locks for the name increment a counter in the lock but do not acquire additional metadata locks. The metadata_locks row for the lock is deleted when the last lock instance on the name is released. The capability of acquiring multiple locks means there is the possibility of deadlock among clients. When this happens, the server chooses a caller and terminates its lock-acquisition request with an ER_USER_LOCK_DEADLOCK error. This error does not cause transactions to roll back. Before MySQL 5.7, only a single simultaneous lock can be acquired and GET_LOCK() releases any existing lock. The difference in lock acquisition behavior as of MySQL 5.7 can be seen by the following example. Suppose that you execute these statements: SELECT GET_LOCK('lock1',10); SELECT GET_LOCK('lock2',10); SELECT RELEASE_LOCK('lock2'); SELECT RELEASE_LOCK('lock1'); In MySQL 5.7 or later, the second GET_LOCK() acquires a second lock and both RELEASE_LOCK() calls return 1 (success). Before MySQL 5.7, the second GET_LOCK() releases the first lock ('lock1') and the second RELEASE_LOCK() returns NULL (failure) because there is no 'lock1' to release. MySQL 5.7 and later enforces a maximum length on lock names of 64 characters. Previously, no limit was enforced. GET_LOCK() can be used to implement application locks or to simulate record locks. Names are locked on a server-wide basis. If a name has been locked within one session, GET_LOCK() blocks any request by another session for a lock with the same name. This enables clients that agree on a given lock name to use the name to perform cooperative advisory locking. But be aware that it also enables a client that is not among the set of cooperating clients to lock a name, either inadvertently or deliberately, and thus prevent any of the cooperating clients from locking that name. One way to reduce the likelihood of this is to use lock names that are database-specific or application-specific. For example, use lock names of the form db_name.str or app_name.str. URL: http://dev.mysql.com/doc/refman/5.7/en/locking-functions.html http://dev.mysql.com/doc/refman/5.7/en/locking-functions.htmlM�@»Ú"¾6 eGLENGTH GLength(ls) GLength() is a nonstandard name. It corresponds to the OpenGIS ST_Length() function. (There is an existing SQL function Length() that calculates the length of string values.) URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html1”Œ@ #Û"¾6 rGRANT Syntax: GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user [auth_option] [, user [auth_option]] ... [REQUIRE {NONE | tls_option [[AND] tls_option] ...}] [WITH {GRANT OPTION | resource_option} ...] GRANT PROXY ON user TO user [, user] ... [WITH GRANT OPTION] object_type: { TABLE | FUNCTION | PROCEDURE } priv_level: { * | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_name } user: (see http://dev.mysql.com/doc/refman/5.7/en/account-names.html) auth_option: { IDENTIFIED BY 'auth_string' | IDENTIFIED WITH auth_plugin | IDENTIFIED WITH auth_plugin BY 'auth_string' | IDENTIFIED WITH auth_plugin AS 'hash_string' | IDENTIFIED BY PASSWORD 'hash_string' } tls_option: { SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject' } resource_option: { | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count } The GRANT statement grants privileges to MySQL user accounts. To use GRANT, you must have the GRANT OPTION privilege, and you must have the privileges that you are granting. When the read_only system variable is enabled, GRANT additionally requires the SUPER privilege. The REVOKE statement is related to GRANT and enables administrators to remove account privileges. See [HELP REVOKE]. Each account name uses the format described in http://dev.mysql.com/doc/refman/5.7/en/account-names.html. For example: GRANT ALL ON db1.* TO 'jeffrey'@'localhost'; The host name part of the account, if omitted, defaults to '%'. Normally, a database administrator first uses CREATE USER to create an account and define its nonprivilege characteristics such as its password, whether it uses secure connections, and limits on access to server resources, then uses GRANT to define its privileges. ALTER USER may be used to change the nonprivilege characteristics of existing accounts. For example: CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON db1.* TO 'jeffrey'@'localhost'; GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost'; ALTER USER 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90; *Note*: Examples shown here include no IDENTIFIED clause. It is assumed that you establish passwords with CREATE USER at account-creation time to avoid creating insecure accounts. *Note*: If an account named in a GRANT statement does not already exist, GRANT may create it under the conditions described later in the discussion of the NO_AUTO_CREATE_USER SQL mode. It is also possible to use GRANT to specify nonprivilege account characteristics such as whether it uses secure connections and limits on access to server resources. However, use of GRANT to create accounts or define nonprivilege characteristics is deprecated as of MySQL 5.7.6. Instead, perform these tasks using CREATE USER or ALTER USER. From the mysql program, GRANT responds with Query OK, 0 rows affected when executed successfully. To determine what privileges result from the operation, use SHOW GRANTS. See [HELP SHOW GRANTS]. URL: http://dev.mysql.com/doc/refman/5.7/en/grant.html http://dev.mysql.com/doc/refman/5.7/en/grant.html@›€ø€@(0Ü"¾6 GREATEST Syntax: GREATEST(value1,value2,...) With two or more arguments, returns the largest (maximum-valued) argument. The arguments are compared using the same rules as for LEAST(). URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT GREATEST(2,0); -> 2 mysql> SELECT GREATEST(34.0,3.0,5.0,767.0); -> 767.0 mysql> SELECT GREATEST('B','A','C'); -> 'C' http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html>pÃ�@0ÏÝ"¾6 ŒGROUP_CONCAT Syntax: GROUP_CONCAT(expr) This function returns a string result with the concatenated non-NULL values from a group. It returns NULL if there are no non-NULL values. The full syntax is as follows: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val]) URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html mysql> SELECT student_name, GROUP_CONCAT(test_score) FROM student GROUP BY student_name; http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html:׃ç€@8VÞ"¾6 ™GTID_SUBSET Syntax: GTID_SUBSET(set1,set2) Given two sets of global transaction IDs set1 and set2, returns true if all GTIDs in set1 are also in set2. Returns false otherwise. URL: http://dev.mysql.com/doc/refman/5.7/en/gtid-functions.html mysql> SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G *************************** 1. row *************************** GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'): 1 1 row in set (0.00 sec) mysql> SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23-25', -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G *************************** 1. row *************************** GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23-25', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'): 1 1 row in set (0.00 sec) mysql> SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25', -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G *************************** 1. row *************************** GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'): 0 1 row in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/gtid-functions.html:d„Õ€@@Ðß"¾6 ¦GTID_SUBTRACT Syntax: GTID_SUBTRACT(set1,set2) Given two sets of global transaction IDs set1 and set2, returns only those GTIDs from set1 that are not in set2. URL: http://dev.mysql.com/doc/refman/5.7/en/gtid-functions.html mysql> SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:21')\G *************************** 1. row *************************** GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:22-57 1 row in set (0.00 sec) mysql> SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25')\G *************************** 1. row *************************** GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', '3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:26-57 1 row in set (0.00 sec) mysql> SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:23-24')\G *************************** 1. row *************************** GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', '3E11FA47-71CA-11E1-9E33-C80AA9429562:23-24'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:21-22:25-57 1 row in set (0.01 sec) http://dev.mysql.com/doc/refman/5.7/en/gtid-functions.html35‚@HÅà"¾6 ³HANDLER Syntax: HANDLER tbl_name OPEN [ [AS] alias] HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...) [ WHERE where_condition ] [LIMIT ... ] HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST } [ WHERE where_condition ] [LIMIT ... ] HANDLER tbl_name READ { FIRST | NEXT } [ WHERE where_condition ] [LIMIT ... ] HANDLER tbl_name CLOSE The HANDLER statement provides direct access to table storage engine interfaces. It is available for InnoDB and MyISAM tables. URL: http://dev.mysql.com/doc/refman/5.7/en/handler.html http://dev.mysql.com/doc/refman/5.7/en/handler.htmlBlj@PÏ/á"¾6 ÀHELP COMMAND Syntax: mysql> help search_string If you provide an argument to the help command, mysql uses it as a search string to access server-side help from the contents of the MySQL Reference Manual. The proper operation of this command requires that the help tables in the mysql database be initialized with help topic information (see http://dev.mysql.com/doc/refman/5.7/en/server-side-help-support.html). If there is no match for the search string, the search fails: mysql> help me Nothing found Please try to run 'help contents' for a list of all accessible topics Use help contents to see a list of the help categories: mysql> help contents You asked for help about help category: "Contents" For more information, type 'help ', where is one of the following categories: Account Management Administration Data Definition Data Manipulation Data Types Functions Functions and Modifiers for Use with GROUP BY Geographic Features Language Structure Plugins Storage Engines Stored Routines Table Maintenance Transactions Triggers If the search string matches multiple items, mysql shows a list of matching topics: mysql> help logs Many help items for your request exist. To make a more specific request, please type 'help ', where is one of the following topics: SHOW SHOW BINARY LOGS SHOW ENGINE SHOW LOGS Use a topic as the search string to see the help entry for that topic: mysql> help show binary logs Name: 'SHOW BINARY LOGS' Description: Syntax: SHOW BINARY LOGS SHOW MASTER LOGS Lists the binary log files on the server. This statement is used as part of the procedure described in [purge-binary-logs], that shows how to determine which logs can be purged. mysql> SHOW BINARY LOGS; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000015 | 724935 | | binlog.000016 | 733481 | +---------------+-----------+ The search string can contain the wildcard characters % and _. These have the same meaning as for pattern-matching operations performed with the LIKE operator. For example, HELP rep% returns a list of topics that begin with rep: mysql> HELP rep% Many help items for your request exist. To make a more specific request, please type 'help ', where is one of the following topics: REPAIR TABLE REPEAT FUNCTION REPEAT LOOP REPLACE REPLACE FUNCTION URL: http://dev.mysql.com/doc/refman/5.7/en/mysql-server-side-help.html http://dev.mysql.com/doc/refman/5.7/en/mysql-server-side-help.htmlpWc˜€:M“~_hðïÿÿÿÿW E¿?|€Ü ‚m"infimum supremum@J! @J!= @ J% @(J& @0J* @8J+ @@J- BINARY @HJ- UNARY @PJ-> @XJ->> @`J/ @hJ< @pJ<< @xJ<= @€J<=> @ˆJ= @�J> @˜J>= @ J>> @¨JABS @°JACOS @¸JADDDATE @ÀJADDTIME @ÈJAES_DECRYPT @ÐJAES_ENCRYPT @ØJALTER DATABASE @àJALTER EVENT @èJALTER FUNCTION @ðJALTER INSTANCE @øJALTER LOGFILE GROUP @JALTER PROCEDURE @JALTER SERVER @JALTER TABLE @JALTER TABLESPACE !@ JALTER USER "@(JALTER VIEW #@0JANALYZE TABLE $@8JAND %@@JANY_VALUE &@HJAREA '@PJASBINARY (@XJASCII )@`JASIN *@hJASSIGN-EQUAL +@pJASSIGN-VALUE ,@xJASTEXT -@€JASYMMETRIC_DECRYPT .@ˆJASYMMETRIC_DERIVE /@�JASYMMETRIC_ENCRYPT 0@˜JASYMMETRIC_SIGN 1@ JASYMMETRIC_VERIFY 2@¨JATAN 3@°JATAN2 4@¸JAUTO_INCREMENT 5@ÀJAVG 6@ÈJBEGIN END 7@ÐJBENCHMARK 8@ØJBETWEEN AND 9@àJBIGINT :@èJBIN ;@ðJBINARY <@øJBINARY OPERATOR =@JBINLOG >@JBIT ?@JBIT_AND @@JBIT_COUNT A@ JBIT_LENGTH B@(JBIT_OR C@0JBIT_XOR D@8JBLOB E@@JBLOB DATA TYPE F@HJBOOLEAN G@PJBUFFER H@XJCACHE INDEX I@`JCALL J@hJCASE OPERATOR K@pJCASE STATEMENT L@xJCAST M@€JCEIL N@ˆJCEILING O@�JCENTROID P@˜JCHANGE MASTER TO Q@ JCHANGE REPLICATION FILTER R@¨JCHAR S@°JCHAR BYTE T@¸JCHAR FUNCTION U@ÀJCHARACTER_LENGTH V@ÈJCHARSET W@ÐJCHAR_LENGTH X@ØJCHECK TABLE Y@àJCHECKSUM TABLE Z@èJCLOSE [@ðJCOALESCE \@øJCOERCIBILITY ]@JCOLLATION ^@JCOMPRESS _@JCONCAT `@JCONCAT_WS a@ JCONNECTION_ID b@(JCONSTRAINT c@0JCONTAINS d@8JCONV e@@JCONVERT f@HJCONVERT_TZ g@PJCONVEXHULL h@XJCOS i@`JCOT j@hJCOUNT k@pàºCOUNT DISTINCT l@xJCRC32 m@€JCREATE DATABASE n@ˆJCREATE EVENT o@�JCREATE FUNCTION p@˜JCREATE FUNCTION UDF q@ JCREATE INDEX r@¨JCREATE LOGFILE GROUP s@°JCREATE PROCEDURE t@¸JCREATE SERVER u@ÀJCREATE TABLE v@ÈJCREATE TABLESPACE w@ÐJCREATE TRIGGER x@ØJCREATE USER y@àJCREATE VIEW z@èJCREATE_ASYMMETRIC_PRIV_KEY {@ðJCREATE_ASYMMETRIC_PUB_KEY |@øJCREATE_DH_PARAMETERS }@JCREATE_DIGEST ~@JCROSSES @JCURDATE €@JCURRENT_DATE �@ JCURRENT_TIME ‚@(JCURRENT_TIMESTAMP ƒ@0JCURRENT_USER „@8JCURTIME …@@JDATABASE †@HJDATE ‡@PJDATE FUNCTION ˆ@XJDATEDIFF ‰@`JDATETIME Š@hJDATE_ADD ‹@pJDATE_FORMAT Œ@xJDATE_SUB �@€JDAY Ž@ˆJDAYNAME �@�JDAYOFMONTH �@˜JDAYOFWEEK ‘@ JDAYOFYEAR ’@¨JDEALLOCATE PREPARE “@°JDEC ”@¸JDECIMAL •@ÀJDECLARE CONDITION –@ÈJDECLARE CURSOR —@ÐJDECLARE HANDLER ˜@ØJDECLARE VARIABLE ™@àJDECODE š@èJDEFAULT ›@ðJDEGREES œ@øJDELETE �@JDES_DECRYPT ž@JDES_ENCRYPT Ÿ@JDIMENSION  @JDISJOINT ¡@ JDISTANCE ¢@(JDIV £@0JDO ¤@8JDOUBLE ¥@@JDOUBLE PRECISION ¦@HJDROP DATABASE §@PJDROP EVENT ¨@XJDROP FUNCTION ©@`JDROP FUNCTION UDF ª@hJDROP INDEX «@pJDROP PROCEDURE ¬@xJDROP SERVER ­@€JDROP TABLE ®@ˆJDROP TABLESPACE ¯@�JDROP TRIGGER °@˜JDROP USER ±@ JDROP VIEW ²@¨JDUAL ³@°JELT ´@¸JENCODE µ@ÀJENCRYPT ¶@ÈJENDPOINT ·@ÐJENUM ¸@ØJENVELOPE ¹@àJEQUALS º@èJEXECUTE STATEMENT »@ðJEXP ¼@øJEXPLAIN ½@JEXPORT_SET ¾@JEXTERIORRING ¿@JEXTRACT À@JEXTRACTVALUE Á@ JFETCH Â@(JFIELD Ã@0JFIND_IN_SET Ä@8JFLOAT Å@@JFLOOR Æ@HJFLUSH Ç@PJFLUSH QUERY CACHE È@XJFORMAT É@`JFOUND_ROWS Ê@hJFROM_BASE64 Ë@pJFROM_DAYS Ì@xJFROM_UNIXTIME Í@€JGEOMCOLLFROMTEXT Î@ˆJGEOMCOLLFROMWKB Ï@�JGEOMETRY Ð@˜JGEOMETRY HIERARCHY Ñ@ JGEOMETRYCOLLECTION Ò@¨JGEOMETRYN Ó@°JGEOMETRYTYPE Ô@¸JGEOMFROMTEXT Õ@ÀJGEOMFROMWKB Ö@ÈJGET DIAGNOSTICS ×@ÐJGET_FORMAT Ø@ØGET_LOCK Ùp=|@ JLONGBLOB ?@¨JLONGTEXT @@°JLOOP A@¸JLOWER B@ÀJLPAD C@ÈJLTRIM D@ÐJMAKEDATE E@ØÁ8MAKETIME Fp=| SELECT X'616263', HEX('abc'), UNHEX(HEX('abc')); -> 'abc', 616263, 'abc' mysql> SELECT HEX(255), CONV(HEX(255),16,10); -> 'FF', 255 http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlC^!�@0 æ"¾6HOUR Syntax: HOUR(time) Returns the hour for time. The range of the return value is 0 to 23 for time-of-day values. However, the range of TIME values actually is much larger, so HOUR can return values greater than 23. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT HOUR('10:05:03'); -> 10 mysql> SELECT HOUR('272:59:59'); -> 272 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlB €ƒƒ@8Âç"¾6IF FUNCTION Syntax: IF(expr1,expr2,expr3) If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL), IF() returns expr2. Otherwise, it returns expr3. *Note*: There is also an IF statement, which differs from the IF() function described here. See [HELP IF statement]. If only one of expr2 or expr3 is explicitly NULL, the result type of the IF() function is the type of the non-NULL expression. The default return type of IF() (which may matter when it is stored into a temporary table) is calculated as follows: o If expr2 or expr3 produce a string, the result is a string. If expr2 and expr3 are both strings, the result is case-sensitive if either string is case sensitive. o If expr2 or expr3 produce a floating-point value, the result is a floating-point value. o If expr2 or expr3 produce an integer, the result is an integer. URL: http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html mysql> SELECT IF(1>2,2,3); -> 3 mysql> SELECT IF(1<2,'yes','no'); -> 'yes' mysql> SELECT IF(STRCMP('test','test1'),'no','yes'); -> 'no' http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html.0ƒ@@¼è"¾6IF STATEMENT Syntax: IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF The IF statement for stored programs implements a basic conditional construct. *Note*: There is also an IF() function, which differs from the IF statement described here. See http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html. The IF statement can have THEN, ELSE, and ELSEIF clauses, and it is terminated with END IF. If a given search_condition evaluates to true, the corresponding THEN or ELSEIF clause statement_list executes. If no search_condition matches, the ELSE clause statement_list executes. Each statement_list consists of one or more SQL statements; an empty statement_list is not permitted. URL: http://dev.mysql.com/doc/refman/5.7/en/if.html http://dev.mysql.com/doc/refman/5.7/en/if.htmlB³€±€@Hé"¾6(IFNULL Syntax: IFNULL(expr1,expr2) If expr1 is not NULL, IFNULL() returns expr1; otherwise it returns expr2. URL: http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html mysql> SELECT IFNULL(1,0); -> 1 mysql> SELECT IFNULL(NULL,10); -> 10 mysql> SELECT IFNULL(1/0,10); -> 10 mysql> SELECT IFNULL(1/0,'yes'); -> 'yes' http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html@hF‚@PLê"¾65IN Syntax: expr IN (value,...) Returns 1 if expr is equal to any of the values in the IN list, else returns 0. If all values are constants, they are evaluated according to the type of expr and sorted. The search for the item then is done using a binary search. This means IN is very quick if the IN value list consists entirely of constants. Otherwise, type conversion takes place according to the rules described in http://dev.mysql.com/doc/refman/5.7/en/type-conversion.html, but applied to all the arguments. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 2 IN (0,3,5,7); -> 0 mysql> SELECT 'wefwf' IN ('wee','wefwf','weg'); -> 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.htmlC«€0‚@X|ë"¾6BINET6_ATON Syntax: INET6_ATON(expr) Given an IPv6 or IPv4 network address as a string, returns a binary string that represents the numeric value of the address in network byte order (big endian). Because numeric-format IPv6 addresses require more bytes than the largest integer type, the representation returned by this function has the VARBINARY data type: VARBINARY(16) for IPv6 addresses and VARBINARY(4) for IPv4 addresses. If the argument is not a valid address, INET6_ATON() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089')); -> 'FDFE0000000000005A55CAFFFEFA9089' mysql> SELECT HEX(INET6_ATON('10.0.5.9')); -> '0A000509' http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlCb�4ƒ@`6ì"¾6OINET6_NTOA Syntax: INET6_NTOA(expr) Given an IPv6 or IPv4 network address represented in numeric form as a binary string, returns the string representation of the address as a string in the connection character set. If the argument is not a valid address, INET6_NTOA() returns NULL. INET6_NTOA() has these properties: o It does not use operating system functions to perform conversions, thus the output string is platform independent. o The return string has a maximum length of 39 (4 x 8 + 7). Given this statement: CREATE TABLE t AS SELECT INET6_NTOA(expr) AS c1; The resulting table would have this definition: CREATE TABLE t (c1 VARCHAR(39) CHARACTER SET utf8 DEFAULT NULL); o The return string uses lowercase letters for IPv6 addresses. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT INET6_NTOA(INET6_ATON('fdfe::5a55:caff:fefa:9089')); -> 'fdfe::5a55:caff:fefa:9089' mysql> SELECT INET6_NTOA(INET6_ATON('10.0.5.9')); -> '10.0.5.9' mysql> SELECT INET6_NTOA(UNHEX('FDFE0000000000005A55CAFFFEFA9089')); -> 'fdfe::5a55:caff:fefa:9089' mysql> SELECT INET6_NTOA(UNHEX('0A000509')); -> '10.0.5.9' http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlC:Z�@h4í"¾6\INET_ATON Syntax: INET_ATON(expr) Given the dotted-quad representation of an IPv4 network address as a string, returns an integer that represents the numeric value of the address in network byte order (big endian). INET_ATON() returns NULL if it does not understand its argument. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT INET_ATON('10.0.5.9'); -> 167773449 http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlC:K�@p%î"¾6iINET_NTOA Syntax: INET_NTOA(expr) Given a numeric IPv4 network address in network byte order, returns the dotted-quad string representation of the address as a string in the connection character set. INET_NTOA() returns NULL if it does not understand its argument. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT INET_NTOA(167773449); -> '10.0.5.9' http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html2PŠ@x ßï"¾6vINSERT Syntax: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] {VALUES | VALUE} (value_list) [, (value_list)] ... [ON DUPLICATE KEY UPDATE assignment_list] INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] SET assignment_list [ON DUPLICATE KEY UPDATE assignment_list] INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] SELECT ... [ON DUPLICATE KEY UPDATE assignment_list] value: {expr | DEFAULT} value_list: value [, value] ... assignment: col_name = value assignment_list: assignment [, assignment] ... INSERT inserts new rows into an existing table. The INSERT ... VALUES and INSERT ... SET forms of the statement insert rows based on explicitly specified values. The INSERT ... SELECT form inserts rows selected from another table or tables. INSERT with an ON DUPLICATE KEY UPDATE clause enables existing rows to be updated if a row to be inserted would cause a duplicate value in a UNIQUE index or PRIMARY KEY. For additional information about INSERT ... SELECT and INSERT ... ON DUPLICATE KEY UPDATE, see [HELP INSERT SELECT], and http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html. In MySQL 5.7, the DELAYED keyword is accepted but ignored by the server. For the reasons for this, see [HELP INSERT DELAYED], Inserting into a table requires the INSERT privilege for the table. If the ON DUPLICATE KEY UPDATE clause is used and a duplicate key causes an UPDATE to be performed instead, the statement requires the UPDATE privilege for the columns to be updated. For columns that are read but not modified you need only the SELECT privilege (such as for a column referenced only on the right hand side of an col_name=expr assignment in an ON DUPLICATE KEY UPDATE clause). When inserting into a partitioned table, you can control which partitions and subpartitions accept new rows. The PARTITION option takes a list of the comma-separated names of one or more partitions or subpartitions (or both) of the table. If any of the rows to be inserted by a given INSERT statement do not match one of the partitions listed, the INSERT statement fails with the error Found a row not matching the given partition set. For more information and examples, see http://dev.mysql.com/doc/refman/5.7/en/partitioning-selection.html. URL: http://dev.mysql.com/doc/refman/5.7/en/insert.html http://dev.mysql.com/doc/refman/5.7/en/insert.html:Lƒ@€äð"¾6ƒINSERT DELAYED Syntax: INSERT DELAYED ... The DELAYED option for the INSERT statement is a MySQL extension to standard SQL. In previous versions of MySQL, it can be used for certain kinds of tables (such as MyISAM), such that when a client uses INSERT DELAYED, it gets an okay from the server at once, and the row is queued to be inserted when the table is not in use by any other thread. DELAYED inserts and replaces were deprecated in MySQL 5.6. In MySQL 5.7, DELAYED is not supported. The server recognizes but ignores the DELAYED keyword, handles the insert as a nondelayed insert, and generates an ER_WARN_LEGACY_SYNTAX_CONVERTED warning ("INSERT DELAYED is no longer supported. The statement was converted to INSERT"). The DELAYED keyword is scheduled for removal in a future release. URL: http://dev.mysql.com/doc/refman/5.7/en/insert-delayed.html http://dev.mysql.com/doc/refman/5.7/en/insert-delayed.html<Ø€Â�@ˆ3ñ"¾6�INSERT FUNCTION #Syntax: INSERT(str,pos,len,newstr) Returns the string str, with the substring beginning at position pos and len characters long replaced by the string newstr. Returns the original string if pos is not within the length of the string. Replaces the rest of the string from position pos if len is not within the length of the rest of the string. Returns NULL if any argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT INSERT('Quadratic', 3, 4, 'What'); -> 'QuWhattic' mysql> SELECT INSERT('Quadratic', -1, 4, 'What'); -> 'Quadratic' mysql> SELECT INSERT('Quadratic', 3, 100, 'What'); -> 'QuWhat' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html9°‚@�È6ò"¾6�INSERT SELECT Syntax: INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] SELECT ... [ON DUPLICATE KEY UPDATE assignment_list] value: {expr | DEFAULT} assignment: col_name = value assignment_list: assignment [, assignment] ... With INSERT ... SELECT, you can quickly insert many rows into a table from the result of a SELECT statement, which can select from one or many tables. For example: INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100; URL: http://dev.mysql.com/doc/refman/5.7/en/insert-select.html http://dev.mysql.com/doc/refman/5.7/en/insert-select.htmlp!ëê¦c <ƒÖÀc:”  zE¿2Ý€1œinfimum supremum:ý‰@ ”ó"¾6ªINSTALL PLUGIN Syntax: INSTALL PLUGIN plugin_name SONAME 'shared_library_name' This statement installs a server plugin. It requires the INSERT privilege for the mysql.plugin system table. plugin_name is the name of the plugin as defined in the plugin descriptor structure contained in the library file (see http://dev.mysql.com/doc/refman/5.7/en/plugin-data-structures.html). Plugin names are not case-sensitive. For maximal compatibility, plugin names should be limited to ASCII letters, digits, and underscore because they are used in C source files, shell command lines, M4 and Bourne shell scripts, and SQL environments. shared_library_name is the name of the shared library that contains the plugin code. The name includes the file name extension (for example, libmyplugin.so, libmyplugin.dll, or libmyplugin.dylib). The shared library must be located in the plugin directory (the directory named by the plugin_dir system variable). The library must be in the plugin directory itself, not in a subdirectory. By default, plugin_dir is the plugin directory under the directory named by the pkglibdir configuration variable, but it can be changed by setting the value of plugin_dir at server startup. For example, set its value in a my.cnf file: [mysqld] plugin_dir=/path/to/plugin/directory If the value of plugin_dir is a relative path name, it is taken to be relative to the MySQL base directory (the value of the basedir system variable). INSTALL PLUGIN loads and initializes the plugin code to make the plugin available for use. A plugin is initialized by executing its initialization function, which handles any setup that the plugin must perform before it can be used. When the server shuts down, it executes the deinitialization function for each plugin that is loaded so that the plugin has a chance to perform any final cleanup. INSTALL PLUGIN also registers the plugin by adding a line that indicates the plugin name and library file name to the mysql.plugin system table. At server startup, the server loads and initializes any plugin that is listed in mysql.plugin. This means that a plugin is installed with INSTALL PLUGIN only once, not every time the server starts. Plugin loading at startup does not occur if the server is started with the --skip-grant-tables option. A plugin library can contain multiple plugins. For each of them to be installed, use a separate INSTALL PLUGIN statement. Each statement names a different plugin, but all of them specify the same library name. URL: http://dev.mysql.com/doc/refman/5.7/en/install-plugin.html http://dev.mysql.com/doc/refman/5.7/en/install-plugin.html SELECT INSTR('foobarbar', 'bar'); -> 4 mysql> SELECT INSTR('xbar', 'foobar'); -> 0 http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlAÖ€@ tõ"¾6ÄINT INT[(M)] [UNSIGNED] [ZEROFILL] A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.htmlA�€@(+ö"¾6ÑINTEGER INTEGER[(M)] [UNSIGNED] [ZEROFILL] This type is a synonym for INT. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.htmlJà€@0‡÷"¾6ÞINTERIORRINGN InteriorRingN(poly, N) ST_InteriorRingN() and InteriorRingN() are synonyms. For more information, see the description of ST_InteriorRingN(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.htmlJÓ€@8{ø"¾6ëINTERSECTS Intersects(g1, g2) MBRIntersects() and Intersects() are synonyms. For more information, see the description of MBRIntersects(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html@¶€V�@@©ù"¾6øINTERVAL Syntax: INTERVAL(N,N1,N2,N3,...) Returns 0 if N < N1, 1 if N < N2 and so on or -1 if N is NULL. All arguments are treated as integers. It is required that N1 < N2 < N3 < ... < Nn for this function to work correctly. This is because a binary search is used (very fast). URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200); -> 3 mysql> SELECT INTERVAL(10, 1, 10, 100, 1000); -> 2 mysql> SELECT INTERVAL(22, 23, 30, 44, 200); -> 0 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@I½€@H£ú"¾6IS Syntax: IS boolean_value Tests a value against a boolean value, where boolean_value can be TRUE, FALSE, or UNKNOWN. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN; -> 1, 1, 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@ZÁ€@P¸û"¾6IS NOT Syntax: IS NOT boolean_value Tests a value against a boolean value, where boolean_value can be TRUE, FALSE, or UNKNOWN. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN; -> 1, 1, 0 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@Q€€@Xmü"¾6IS NOT NULL Syntax: IS NOT NULL Tests whether a value is not NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL; -> 1, 1, 0 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html@Ex@`Zý"¾6,IS NULL Syntax: IS NULL Tests whether a value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL; -> 0, 0, 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.htmlMÊ€@htþ"¾69ISCLOSED IsClosed(ls) ST_IsClosed() and IsClosed() are synonyms. For more information, see the description of ST_IsClosed(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.htmlJ€@piÿ"¾6FISEMPTY IsEmpty(g) ST_IsEmpty() and IsEmpty() are synonyms. For more information, see the description of ST_IsEmpty(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html@P›€@xˆ"¾6SISNULL Syntax: ISNULL(expr) If expr is NULL, ISNULL() returns 1, otherwise it returns 0. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT ISNULL(1+1); -> 0 mysql> SELECT ISNULL(1/0); -> 1 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html;fƒ@€þ"¾6`ISOLATION %Syntax: SET [GLOBAL | SESSION] TRANSACTION transaction_characteristic [, transaction_characteristic] ... transaction_characteristic: { ISOLATION LEVEL level | access_mode } level: { REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE } access_mode: { READ WRITE | READ ONLY } This statement specifies transaction characteristics. It takes a list of one or more characteristic values separated by commas. Each characteristic value sets the transaction isolation level or access mode. The isolation level is used for operations on InnoDB tables. The access mode specifies whether transactions operate in read/write or read-only mode. In addition, SET TRANSACTION can include an optional GLOBAL or SESSION keyword to indicate the scope of the statement. URL: http://dev.mysql.com/doc/refman/5.7/en/set-transaction.html http://dev.mysql.com/doc/refman/5.7/en/set-transaction.htmlJÆ€@ˆm"¾6mISSIMPLE IsSimple(g) ST_IsSimple() and IsSimple() are synonyms. For more information, see the description of ST_IsSimple(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html=8�@�Ò"¾6zIS_FREE_LOCK Syntax: IS_FREE_LOCK(str) Checks whether the lock named str is free to use (that is, not locked). Returns 1 if the lock is free (no one is using the lock), 0 if the lock is in use, and NULL if an error occurs (such as an incorrect argument). URL: http://dev.mysql.com/doc/refman/5.7/en/locking-functions.html http://dev.mysql.com/doc/refman/5.7/en/locking-functions.htmlCJ¸€@˜£"¾6‡IS_IPV4 Syntax: IS_IPV4(expr) Returns 1 if the argument is a valid IPv4 address specified as a string, 0 otherwise. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT IS_IPV4('10.0.5.9'), IS_IPV4('10.0.5.256'); -> 1, 0 http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlC�€e�@ •"¾6”IS_IPV4_COMPAT Syntax: IS_IPV4_COMPAT(expr) This function takes an IPv6 address represented in numeric form as a binary string, as returned by INET6_ATON(). It returns 1 if the argument is a valid IPv4-compatible IPv6 address, 0 otherwise. IPv4-compatible addresses have the form ::ipv4_address. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT IS_IPV4_COMPAT(INET6_ATON('::10.0.5.9')); -> 1 mysql> SELECT IS_IPV4_COMPAT(INET6_ATON('::ffff:10.0.5.9')); -> 0 http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlC�€b�@¨‘"¾6¡IS_IPV4_MAPPED Syntax: IS_IPV4_MAPPED(expr) This function takes an IPv6 address represented in numeric form as a binary string, as returned by INET6_ATON(). It returns 1 if the argument is a valid IPv4-mapped IPv6 address, 0 otherwise. IPv4-mapped addresses have the form ::ffff:ipv4_address. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT IS_IPV4_MAPPED(INET6_ATON('::10.0.5.9')); -> 0 mysql> SELECT IS_IPV4_MAPPED(INET6_ATON('::ffff:10.0.5.9')); -> 1 http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlCC�@°æ"¾6®IS_IPV6 Syntax: IS_IPV6(expr) Returns 1 if the argument is a valid IPv6 address specified as a string, 0 otherwise. This function does not consider IPv4 addresses to be valid IPv6 addresses. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT IS_IPV6('10.0.5.9'), IS_IPV6('::1'); -> 0, 1 http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html=�@¸¬"¾6»IS_USED_LOCK Syntax: IS_USED_LOCK(str) Checks whether the lock named str is in use (that is, locked). If so, it returns the connection identifier of the client session that holds the lock. Otherwise, it returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/locking-functions.html http://dev.mysql.com/doc/refman/5.7/en/locking-functions.html3»€@ÀÎÔ "¾6ÈITERATE Syntax: ITERATE label ITERATE can appear only within LOOP, REPEAT, and WHILE statements. ITERATE means "start the loop again." URL: http://dev.mysql.com/doc/refman/5.7/en/iterate.html http://dev.mysql.com/doc/refman/5.7/en/iterate.htmlp$Ÿ}§c€c:” zsÜ;º !JñE¿6O€ +›infimum supremum0rÏŒ@ Î "¾6ÕJOIN MySQL supports the following JOIN syntax for the table_references part of SELECT statements and multiple-table DELETE and UPDATE statements: table_references: escaped_table_reference [, escaped_table_reference] ... escaped_table_reference: table_reference | { OJ table_reference } table_reference: table_factor | joined_table table_factor: tbl_name [PARTITION (partition_names)] [[AS] alias] [index_hint_list] | table_subquery [AS] alias | ( table_references ) joined_table: table_reference [INNER | CROSS] JOIN table_factor [join_specification] | table_reference STRAIGHT_JOIN table_factor | table_reference STRAIGHT_JOIN table_factor ON search_condition | table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_specification | table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor join_specification: ON search_condition | USING (join_column_list) join_column_list: column_name [, column_name] ... index_hint_list: index_hint [, index_hint] ... index_hint: USE {INDEX|KEY} [FOR {JOIN|ORDER BY|GROUP BY}] ([index_list]) | {IGNORE|FORCE} {INDEX|KEY} [FOR {JOIN|ORDER BY|GROUP BY}] (index_list) index_list: index_name [, index_name] ... A table reference is also known as a join expression. A table reference (when it refers to a partitioned table) may contain a PARTITION option, including a list of comma-separated partitions, subpartitions, or both. This option follows the name of the table and precedes any alias declaration. The effect of this option is that rows are selected only from the listed partitions or subpartitions. Any partitions or subpartitions not named in the list are ignored. For more information and examples, see http://dev.mysql.com/doc/refman/5.7/en/partitioning-selection.html. The syntax of table_factor is extended in MySQL in comparison with standard SQL. The standard accepts only table_reference, not a list of them inside a pair of parentheses. This is a conservative extension if each comma in a list of table_reference items is considered as equivalent to an inner join. For example: SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c) is equivalent to: SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ON (t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c) In MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents (they can replace each other). In standard SQL, they are not equivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise. In general, parentheses can be ignored in join expressions containing only inner join operations. MySQL also supports nested joins. See http://dev.mysql.com/doc/refman/5.7/en/nested-join-optimization.html. Index hints can be specified to affect how the MySQL optimizer makes use of indexes. For more information, see http://dev.mysql.com/doc/refman/5.7/en/index-hints.html. Optimizer hints and the optimizer_switch system variable are other ways to influence optimizer use of indexes. See http://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html, and http://dev.mysql.com/doc/refman/5.7/en/switchable-optimizations.html. URL: http://dev.mysql.com/doc/refman/5.7/en/join.html SELECT left_tbl.* FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id WHERE right_tbl.id IS NULL; http://dev.mysql.com/doc/refman/5.7/en/join.htmlG��@& "¾6âJSON_APPEND Syntax: JSON_APPEND(json_doc, path, val[, path, val] ...) Appends values to the end of the indicated arrays within a JSON document and returns the result. This function was renamed to JSON_ARRAY_APPEND() in MySQL 5.7.9; the alias JSON_APPEND() is now deprecated in MySQL 5.7, and is removed in MySQL 8.0. URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlC+�Ï€@ › "¾6ïJSON_ARRAY Syntax: JSON_ARRAY([val[, val] ...]) Evaluates a (possibly empty) list of values and returns a JSON array containing those values. URL: http://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html mysql> SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME()); +---------------------------------------------+ | JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME()) | +---------------------------------------------+ | [1, "abc", null, true, "11:30:24.000000"] | +---------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html>]‚Š�@(ƒ "¾6üJSON_ARRAYAGG Syntax: JSON_ARRAYAGG(col_or_expr) Aggregates a result set as a single JSON array whose elements consist of the rows. The order of elements in this array is undefined. The function acts on a column or an expression that evaluates to a single value. Returns NULL if the result contains no rows, or in the event of an error. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html mysql> SELECT o_id, attribute, value FROM t3; +------+-----------+-------+ | o_id | attribute | value | +------+-----------+-------+ | 2 | color | red | | 2 | fabric | silk | | 3 | color | green | | 3 | shape | square| +------+-----------+-------+ 4 rows in set (0.00 sec) mysql> SELECT o_id, JSON_ARRAYAGG(attribute) AS attributes > FROM t3 GROUP BY o_id; +------+---------------------+ | o_id | attributes | +------+---------------------+ | 2 | ["color", "fabric"] | | 3 | ["color", "shape"] | +------+---------------------+ 2 rows in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.htmlG†)ƒ@0 é"¾6 JSON_ARRAY_APPEND Syntax: JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...) Appends values to the end of the indicated arrays within a JSON document and returns the result. Returns NULL if any argument is NULL. An error occurs if the json_doc argument is not a valid JSON document or any path argument is not a valid path expression or contains a * or ** wildcard. The path-value pairs are evaluated left to right. The document produced by evaluating one pair becomes the new value against which the next pair is evaluated. If a path selects a scalar or object value, that value is autowrapped within an array and the new value is added to that array. Pairs for which the path does not identify any value in the JSON document are ignored. URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SET @j = '["a", ["b", "c"], "d"]'; mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1]', 1); +----------------------------------+ | JSON_ARRAY_APPEND(@j, '$[1]', 1) | +----------------------------------+ | ["a", ["b", "c", 1], "d"] | +----------------------------------+ mysql> SELECT JSON_ARRAY_APPEND(@j, '$[0]', 2); +----------------------------------+ | JSON_ARRAY_APPEND(@j, '$[0]', 2) | +----------------------------------+ | [["a", 2], ["b", "c"], "d"] | +----------------------------------+ mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1][0]', 3); +-------------------------------------+ | JSON_ARRAY_APPEND(@j, '$[1][0]', 3) | +-------------------------------------+ | ["a", [["b", 3], "c"], "d"] | +-------------------------------------+ mysql> SET @j = '{"a": 1, "b": [2, 3], "c": 4}'; mysql> SELECT JSON_ARRAY_APPEND(@j, '$.b', 'x'); +------------------------------------+ | JSON_ARRAY_APPEND(@j, '$.b', 'x') | +------------------------------------+ | {"a": 1, "b": [2, 3, "x"], "c": 4} | +------------------------------------+ mysql> SELECT JSON_ARRAY_APPEND(@j, '$.c', 'y'); +--------------------------------------+ | JSON_ARRAY_APPEND(@j, '$.c', 'y') | +--------------------------------------+ | {"a": 1, "b": [2, 3], "c": [4, "y"]} | +--------------------------------------+ mysql> SET @j = '{"a": 1}'; mysql> SELECT JSON_ARRAY_APPEND(@j, '$', 'z'); +---------------------------------+ | JSON_ARRAY_APPEND(@j, '$', 'z') | +---------------------------------+ | [{"a": 1}, "z"] | +---------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlG•…äƒ@8 "¾6JSON_ARRAY_INSERT Syntax: JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...) Updates a JSON document, inserting into an array within the document and returning the modified document. Returns NULL if any argument is NULL. An error occurs if the json_doc argument is not a valid JSON document or any path argument is not a valid path expression or contains a * or ** wildcard or does not end with an array element identifier. The path-value pairs are evaluated left to right. The document produced by evaluating one pair becomes the new value against which the next pair is evaluated. Pairs for which the path does not identify any array in the JSON document are ignored. If a path identifies an array element, the corresponding value is inserted at that element position, shifting any following values to the right. If a path identifies an array position past the end of an array, the value is inserted at the end of the array. URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SET @j = '["a", {"b": [1, 2]}, [3, 4]]'; mysql> SELECT JSON_ARRAY_INSERT(@j, '$[1]', 'x'); +------------------------------------+ | JSON_ARRAY_INSERT(@j, '$[1]', 'x') | +------------------------------------+ | ["a", "x", {"b": [1, 2]}, [3, 4]] | +------------------------------------+ mysql> SELECT JSON_ARRAY_INSERT(@j, '$[100]', 'x'); +--------------------------------------+ | JSON_ARRAY_INSERT(@j, '$[100]', 'x') | +--------------------------------------+ | ["a", {"b": [1, 2]}, [3, 4], "x"] | +--------------------------------------+ mysql> SELECT JSON_ARRAY_INSERT(@j, '$[1].b[0]', 'x'); +-----------------------------------------+ | JSON_ARRAY_INSERT(@j, '$[1].b[0]', 'x') | +-----------------------------------------+ | ["a", {"b": ["x", 1, 2]}, [3, 4]] | +-----------------------------------------+ mysql> SELECT JSON_ARRAY_INSERT(@j, '$[2][1]', 'y'); +---------------------------------------+ | JSON_ARRAY_INSERT(@j, '$[2][1]', 'y') | +---------------------------------------+ | ["a", {"b": [1, 2]}, [3, "y", 4]] | +---------------------------------------+ mysql> SELECT JSON_ARRAY_INSERT(@j, '$[0]', 'x', '$[2][1]', 'y'); +----------------------------------------------------+ | JSON_ARRAY_INSERT(@j, '$[0]', 'x', '$[2][1]', 'y') | +----------------------------------------------------+ | ["x", "a", {"b": [1, 2]}, [3, 4]] | +----------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlAÃ]†@@ÔÕ"¾6#JSON_CONTAINS Syntax: JSON_CONTAINS(target, candidate[, path]) Indicates by returning 1 or 0 whether a given candidate JSON document is contained within a target JSON document, or---if a path argument was supplied---whether the candidate is found at a specific path within the target. Returns NULL if any argument is NULL, or if the path argument does not identify a section of the target document. An error occurs if target or candidate is not a valid JSON document, or if the path argument is not a valid path expression or contains a * or ** wildcard. To check only whether any data exists at the path, use JSON_CONTAINS_PATH() instead. The following rules define containment: o A candidate scalar is contained in a target scalar if and only if they are comparable and are equal. Two scalar values are comparable if they have the same JSON_TYPE() types, with the exception that values of types INTEGER and DECIMAL are also comparable to each other. o A candidate array is contained in a target array if and only if every element in the candidate is contained in some element of the target. o A candidate nonarray is contained in a target array if and only if the candidate is contained in some element of the target. o A candidate object is contained in a target object if and only if for each key in the candidate there is a key with the same name in the target and the value associated with the candidate key is contained in the value associated with the target key. Otherwise, the candidate value is not contained in the target document. URL: http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html mysql> SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}'; mysql> SET @j2 = '1'; mysql> SELECT JSON_CONTAINS(@j, @j2, '$.a'); +-------------------------------+ | JSON_CONTAINS(@j, @j2, '$.a') | +-------------------------------+ | 1 | +-------------------------------+ mysql> SELECT JSON_CONTAINS(@j, @j2, '$.b'); +-------------------------------+ | JSON_CONTAINS(@j, @j2, '$.b') | +-------------------------------+ | 0 | +-------------------------------+ mysql> SET @j2 = '{"d": 4}'; mysql> SELECT JSON_CONTAINS(@j, @j2, '$.a'); +-------------------------------+ | JSON_CONTAINS(@j, @j2, '$.a') | +-------------------------------+ | 0 | +-------------------------------+ mysql> SELECT JSON_CONTAINS(@j, @j2, '$.c'); +-------------------------------+ | JSON_CONTAINS(@j, @j2, '$.c') | +-------------------------------+ | 1 | +-------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.htmlpcsÜ;ºJñ šì! "} E¿/�€ +¯ infimum supremumA£„ƒ@J"¾60JSON_CONTAINS_PATH Syntax: JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...) Returns 0 or 1 to indicate whether a JSON document contains data at a given path or paths. Returns NULL if any argument is NULL. An error occurs if the json_doc argument is not a valid JSON document, any path argument is not a valid path expression, or one_or_all is not 'one' or 'all'. To check for a specific value at a path, use JSON_CONTAINS() instead. The return value is 0 if no specified path exists within the document. Otherwise, the return value depends on the one_or_all argument: o 'one': 1 if at least one path exists within the document, 0 otherwise. o 'all': 1 if all paths exist within the document, 0 otherwise. URL: http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html mysql> SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}'; mysql> SELECT JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e'); +---------------------------------------------+ | JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e') | +---------------------------------------------+ | 1 | +---------------------------------------------+ mysql> SELECT JSON_CONTAINS_PATH(@j, 'all', '$.a', '$.e'); +---------------------------------------------+ | JSON_CONTAINS_PATH(@j, 'all', '$.a', '$.e') | +---------------------------------------------+ | 0 | +---------------------------------------------+ mysql> SELECT JSON_CONTAINS_PATH(@j, 'one', '$.c.d'); +----------------------------------------+ | JSON_CONTAINS_PATH(@j, 'one', '$.c.d') | +----------------------------------------+ | 1 | +----------------------------------------+ mysql> SELECT JSON_CONTAINS_PATH(@j, 'one', '$.a.d'); +----------------------------------------+ | JSON_CONTAINS_PATH(@j, 'one', '$.a.d') | +----------------------------------------+ | 0 | +----------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.htmlD�ƒë�@"¾6=JSON_DEPTH Syntax: JSON_DEPTH(json_doc) Returns the maximum depth of a JSON document. Returns NULL if the argument is NULL. An error occurs if the argument is not a valid JSON document. An empty array, empty object, or scalar value has depth 1. A nonempty array containing only elements of depth 1 or nonempty object containing only member values of depth 1 has depth 2. Otherwise, a JSON document has depth greater than 2. URL: http://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html mysql> SELECT JSON_DEPTH('{}'), JSON_DEPTH('[]'), JSON_DEPTH('true'); +------------------+------------------+--------------------+ | JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH('true') | +------------------+------------------+--------------------+ | 1 | 1 | 1 | +------------------+------------------+--------------------+ mysql> SELECT JSON_DEPTH('[10, 20]'), JSON_DEPTH('[[], {}]'); +------------------------+------------------------+ | JSON_DEPTH('[10, 20]') | JSON_DEPTH('[[], {}]') | +------------------------+------------------------+ | 2 | 2 | +------------------------+------------------------+ mysql> SELECT JSON_DEPTH('[10, {"a": 20}]'); +-------------------------------+ | JSON_DEPTH('[10, {"a": 20}]') | +-------------------------------+ | 3 | +-------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.htmlA±ƒã‚@ 3"¾6JJSON_EXTRACT Syntax: JSON_EXTRACT(json_doc, path[, path] ...) Returns data from a JSON document, selected from the parts of the document matched by the path arguments. Returns NULL if any argument is NULL or no paths locate a value in the document. An error occurs if the json_doc argument is not a valid JSON document or any path argument is not a valid path expression. The return value consists of all values matched by the path arguments. If it is possible that those arguments could return multiple values, the matched values are autowrapped as an array, in the order corresponding to the paths that produced them. Otherwise, the return value is the single matched value. URL: http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html mysql> SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]'); +--------------------------------------------+ | JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]') | +--------------------------------------------+ | 20 | +--------------------------------------------+ mysql> SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]', '$[0]'); +----------------------------------------------------+ | JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]', '$[0]') | +----------------------------------------------------+ | [20, 10] | +----------------------------------------------------+ mysql> SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[2][*]'); +-----------------------------------------------+ | JSON_EXTRACT('[10, 20, [30, 40]]', '$[2][*]') | +-----------------------------------------------+ | [30, 40] | +-----------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.htmlGAƒ.…@( "¾6WJSON_INSERT Syntax: JSON_INSERT(json_doc, path, val[, path, val] ...) Inserts data into a JSON document and returns the result. Returns NULL if any argument is NULL. An error occurs if the json_doc argument is not a valid JSON document or any path argument is not a valid path expression or contains a * or ** wildcard. The path-value pairs are evaluated left to right. The document produced by evaluating one pair becomes the new value against which the next pair is evaluated. A path-value pair for an existing path in the document is ignored and does not overwrite the existing document value. A path-value pair for a nonexisting path in the document adds the value to the document if the path identifies one of these types of values: o A member not present in an existing object. The member is added to the object and associated with the new value. o A position past the end of an existing array. The array is extended with the new value. If the existing value is not an array, it is autowrapped as an array, then extended with the new value. Otherwise, a path-value pair for a nonexisting path in the document is ignored and has no effect. For a comparison of JSON_INSERT(), JSON_REPLACE(), and JSON_SET(), see the discussion of JSON_SET(). URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SET @j = '{ "a": 1, "b": [2, 3]}'; mysql> SELECT JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]'); +----------------------------------------------------+ | JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]') | +----------------------------------------------------+ | {"a": 1, "b": [2, 3], "c": "[true, false]"} | +----------------------------------------------------+ mysql> SELECT JSON_INSERT(@j, '$.a', 10, '$.c', CAST('[true, false]' AS JSON)); +------------------------------------------------------------------+ | JSON_INSERT(@j, '$.a', 10, '$.c', CAST('[true, false]' AS JSON)) | +------------------------------------------------------------------+ | {"a": 1, "b": [2, 3], "c": [true, false]} | +------------------------------------------------------------------+ 1 row in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlA8‚Ä‚@0›"¾6dJSON_KEYS Syntax: JSON_KEYS(json_doc[, path]) Returns the keys from the top-level value of a JSON object as a JSON array, or, if a path argument is given, the top-level keys from the selected path. Returns NULL if any argument is NULL, the json_doc argument is not an object, or path, if given, does not locate an object. An error occurs if the json_doc argument is not a valid JSON document or the path argument is not a valid path expression or contains a * or ** wildcard. The result array is empty if the selected object is empty. If the top-level value has nested subobjects, the return value does not include keys from those subobjects. URL: http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html mysql> SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}'); +---------------------------------------+ | JSON_KEYS('{"a": 1, "b": {"c": 30}}') | +---------------------------------------+ | ["a", "b"] | +---------------------------------------+ mysql> SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}', '$.b'); +----------------------------------------------+ | JSON_KEYS('{"a": 1, "b": {"c": 30}}', '$.b') | +----------------------------------------------+ | ["c"] | +----------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.htmlD3ƒƒ@8ã"¾6qJSON_LENGTH Syntax: JSON_LENGTH(json_doc[, path]) Returns the length of a JSON document, or, if a path argument is given, the length of the value within the document identified by the path. Returns NULL if any argument is NULL or the path argument does not identify a value in the document. An error occurs if the json_doc argument is not a valid JSON document or the path argument is not a valid path expression or contains a * or ** wildcard. The length of a document is determined as follows: o The length of a scalar is 1. o The length of an array is the number of array elements. o The length of an object is the number of object members. o The length does not count the length of nested arrays or objects. URL: http://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html mysql> SELECT JSON_LENGTH('[1, 2, {"a": 3}]'); +---------------------------------+ | JSON_LENGTH('[1, 2, {"a": 3}]') | +---------------------------------+ | 3 | +---------------------------------+ mysql> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}'); +-----------------------------------------+ | JSON_LENGTH('{"a": 1, "b": {"c": 30}}') | +-----------------------------------------+ | 2 | +-----------------------------------------+ mysql> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b'); +------------------------------------------------+ | JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b') | +------------------------------------------------+ | 1 | +------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.htmlG@‚�@@ÔÁ"¾6~JSON_MERGE Syntax: JSON_MERGE(json_doc, json_doc[, json_doc] ...) Merges two or more JSON documents. Synonym for JSON_MERGE_PRESERVE(); deprecated in MySQL 5.7.22 and subject to removal in a future release. URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SELECT JSON_MERGE('[1, 2]', '[true, false]'); +---------------------------------------+ | JSON_MERGE('[1, 2]', '[true, false]') | +---------------------------------------+ | [1, 2, true, false] | +---------------------------------------+ 1 row in set, 1 warning (0.00 sec) mysql> SHOW WARNINGS\G *************************** 1. row *************************** Level: Warning Code: 1287 Message: 'JSON_MERGE' is deprecated and will be removed in a future release. \ Please use JSON_MERGE_PRESERVE/JSON_MERGE_PATCH instead 1 row in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlpc šì} 7Îd"!#ÀsE¿9É€ 5¬ infimum supremumG‘ŠÃ†@ù"¾6‹JSON_MERGE_PATCH() Syntax: JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...) Performs an RFC 7396 (https://tools.ietf.org/html/rfc7396) compliant merge of two or more JSON documents and returns the merged result, without preserving members having duplicate keys. Raises an error if at least one of the documents passed as arguments to this function is not valid. *Note*: For an explanation and example of the differences between this function and JSON_MERGE_PRESERVE(), see http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html #json-merge-patch-json-merge-preserve-compared. JSON_MERGE_PATCH() performs a merge as follows: 1. If the first argument is not an object, the result of the merge is the same as if an empty object had been merged with the second argument. 2. If the second argument is not an object, the result of the merge is the second argument. 3. If both arguments are objects, the result of the merge is an object with the following members: o All members of the first object which do not have a corresponding member with the same key in the second object. o All members of the second object which do not have a corresponding key in the first object, and whose value is not the JSON null literal. o All members with a key that exists in both the first and the second object, and whose value in the second object is not the JSON null literal. The values of these members are the results of recursively merging the value in the first object with the value in the second object. For additional information, see http://dev.mysql.com/doc/refman/5.7/en/json.html#json-normalization. URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SELECT JSON_MERGE_PATCH('[1, 2]', '[true, false]'); +---------------------------------------------+ | JSON_MERGE_PATCH('[1, 2]', '[true, false]') | +---------------------------------------------+ | [true, false] | +---------------------------------------------+ mysql> SELECT JSON_MERGE_PATCH('{"name": "x"}', '{"id": 47}'); +-------------------------------------------------+ | JSON_MERGE_PATCH('{"name": "x"}', '{"id": 47}') | +-------------------------------------------------+ | {"id": 47, "name": "x"} | +-------------------------------------------------+ mysql> SELECT JSON_MERGE_PATCH('1', 'true'); +-------------------------------+ | JSON_MERGE_PATCH('1', 'true') | +-------------------------------+ | true | +-------------------------------+ mysql> SELECT JSON_MERGE_PATCH('[1, 2]', '{"id": 47}'); +------------------------------------------+ | JSON_MERGE_PATCH('[1, 2]', '{"id": 47}') | +------------------------------------------+ | {"id": 47} | +------------------------------------------+ mysql> SELECT JSON_MERGE_PATCH('{ "a": 1, "b":2 }', > '{ "a": 3, "c":4 }'); +-----------------------------------------------------------+ | JSON_MERGE_PATCH('{ "a": 1, "b":2 }','{ "a": 3, "c":4 }') | +-----------------------------------------------------------+ | {"a": 3, "b": 2, "c": 4} | +-----------------------------------------------------------+ mysql> SELECT JSON_MERGE_PATCH('{ "a": 1, "b":2 }','{ "a": 3, "c":4 }', > '{ "a": 5, "d":6 }'); +-------------------------------------------------------------------------------+ | JSON_MERGE_PATCH('{ "a": 1, "b":2 }','{ "a": 3, "c":4 }','{ "a": 5, "d":6 }') | +-------------------------------------------------------------------------------+ | {"a": 5, "b": 2, "c": 4, "d": 6} | +-------------------------------------------------------------------------------+ mysql> SELECT JSON_MERGE_PATCH('{"a":1, "b":2}', '{"b":null}'); +--------------------------------------------------+ | JSON_MERGE_PATCH('{"a":1, "b":2}', '{"b":null}') | +--------------------------------------------------+ | {"a": 1} | +--------------------------------------------------+ mysql> SELECT JSON_MERGE_PATCH('{"a":{"x":1}}', '{"a":{"y":2}}'); +----------------------------------------------------+ | JSON_MERGE_PATCH('{"a":{"x":1}}', '{"a":{"y":2}}') | +----------------------------------------------------+ | {"a": {"x": 1, "y": 2}} | +----------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlGdˆê‚@ ó"¾6˜JSON_MERGE_PRESERVE() Syntax: JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...) Merges two or more JSON documents and returns the merged result. Returns NULL if any argument is NULL. An error occurs if any argument is not a valid JSON document. Merging takes place according to the following rules. For additional information, see http://dev.mysql.com/doc/refman/5.7/en/json.html#json-normalization. o Adjacent arrays are merged to a single array. o Adjacent objects are merged to a single object. o A scalar value is autowrapped as an array and merged as an array. o An adjacent array and object are merged by autowrapping the object as an array and merging the two arrays. URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SELECT JSON_MERGE_PRESERVE('[1, 2]', '[true, false]'); +------------------------------------------------+ | JSON_MERGE_PRESERVE('[1, 2]', '[true, false]') | +------------------------------------------------+ | [1, 2, true, false] | +------------------------------------------------+ mysql> SELECT JSON_MERGE_PRESERVE('{"name": "x"}', '{"id": 47}'); +----------------------------------------------------+ | JSON_MERGE_PRESERVE('{"name": "x"}', '{"id": 47}') | +----------------------------------------------------+ | {"id": 47, "name": "x"} | +----------------------------------------------------+ mysql> SELECT JSON_MERGE_PRESERVE('1', 'true'); +----------------------------------+ | JSON_MERGE_PRESERVE('1', 'true') | +----------------------------------+ | [1, true] | +----------------------------------+ mysql> SELECT JSON_MERGE_PRESERVE('[1, 2]', '{"id": 47}'); +---------------------------------------------+ | JSON_MERGE_PRESERVE('[1, 2]', '{"id": 47}') | +---------------------------------------------+ | [1, 2, {"id": 47}] | +---------------------------------------------+ mysql> SELECT JSON_MERGE_PRESERVE('{ "a": 1, "b": 2 }', > '{ "a": 3, "c": 4 }'); +--------------------------------------------------------------+ | JSON_MERGE_PRESERVE('{ "a": 1, "b": 2 }','{ "a": 3, "c":4 }') | +--------------------------------------------------------------+ | {"a": [1, 3], "b": 2, "c": 4} | +--------------------------------------------------------------+ mysql> SELECT JSON_MERGE_PRESERVE('{ "a": 1, "b": 2 }','{ "a": 3, "c": 4 }', > '{ "a": 5, "d": 6 }'); +----------------------------------------------------------------------------------+ | JSON_MERGE_PRESERVE('{ "a": 1, "b": 2 }','{ "a": 3, "c": 4 }','{ "a": 5, "d": 6 }') | +----------------------------------------------------------------------------------+ | {"a": [1, 3, 5], "b": 2, "c": 4, "d": 6} | +----------------------------------------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlC�.�@ â"¾6¥JSON_OBJECT Syntax: JSON_OBJECT([key, val[, key, val] ...]) Evaluates a (possibly empty) list of key-value pairs and returns a JSON object containing those pairs. An error occurs if any key name is NULL or the number of arguments is odd. URL: http://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html mysql> SELECT JSON_OBJECT('id', 87, 'name', 'carrot'); +-----------------------------------------+ | JSON_OBJECT('id', 87, 'name', 'carrot') | +-----------------------------------------+ | {"id": 87, "name": "carrot"} | +-----------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html>À‚¶�@("¾6²JSON_OBJECTAGG Syntax: JSON_OBJECTAGG(key, value) Takes two column names or expressions as arguments, the first of these being used as a key and the second as a value, and returns a JSON object containing key-value pairs. Returns NULL if the result contains no rows, or in the event of an error. An error occurs if any key name is NULL or the number of arguments is not equal to 2. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html mysql> SELECT o_id, attribute, value FROM t3; +------+-----------+-------+ | o_id | attribute | value | +------+-----------+-------+ | 2 | color | red | | 2 | fabric | silk | | 3 | color | green | | 3 | shape | square| +------+-----------+-------+ 4 rows in set (0.00 sec) mysql> SELECT o_id, JSON_OBJECTAGG(attribute, value) FROM t3 GROUP BY o_id; +------+----------------------------------------+ | o_id | JSON_OBJECTAGG(attribute, name) | +------+----------------------------------------+ | 2 | {"color": "red", "fabric": "silk"} | | 3 | {"color": "green", "shape": "square"} | +------+----------------------------------------+ 1 row in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.htmlB¬„…@0 b"¾6¿JSON_PRETTY JSON_PRETTY(json_val) Provides pretty-printing of JSON values similar to that implemented in PHP and by other languages and database systems. The value supplied must be a JSON value or a valid string representation of a JSON value. Extraneous whitespaces and newlines present in this value have no effect on the output. For a NULL value, the function returns NULL. If the value is not a JSON document, or if it cannot cannot be parsed as one, the function fails with an error. Formatting of the output from this function adheres to the following rules: o Each array element or object member appears on a separate line, indented by one additional level as compared to its parent. o Each level of indentation adds two leading spaces. o A comma separating individual array elements or object members is printed before the newline that separates the two elements or members. o The key and the value of an object member are separated by a colon followed by a space (': '). o An empty object or array is printed on a single line. No space is printed between the opening and closing brace. o Special characters in string scalars and key names are escaped employing the same rules used by the JSON_QUOTE() function. URL: http://dev.mysql.com/doc/refman/5.7/en/json-utility-functions.html mysql> SELECT JSON_PRETTY('123'); # scalar +--------------------+ | JSON_PRETTY('123') | +--------------------+ | 123 | +--------------------+ mysql> SELECT JSON_PRETTY("[1,3,5]"); # array +------------------------+ | JSON_PRETTY("[1,3,5]") | +------------------------+ | [ 1, 3, 5 ] | +------------------------+ mysql> SELECT JSON_PRETTY('{"a":"10","b":"15","x":"25"}'); # object +---------------------------------------------+ | JSON_PRETTY('{"a":"10","b":"15","x":"25"}') | +---------------------------------------------+ | { "a": "10", "b": "15", "x": "25" } | +---------------------------------------------+ mysql> SELECT JSON_PRETTY('["a",1,{"key1": > "value1"},"5", "77" , > {"key2":["value3","valueX", > "valueY"]},"j", "2" ]')\G # nested arrays and objects *************************** 1. row *************************** JSON_PRETTY('["a",1,{"key1": "value1"},"5", "77" , {"key2":["value3","valuex", "valuey"]},"j", "2" ]'): [ "a", 1, { "key1": "value1" }, "5", "77", { "key2": [ "value3", "valuex", "valuey" ] }, "j", "2" ] http://dev.mysql.com/doc/refman/5.7/en/json-utility-functions.htmlCÑ�u‚@8ç"¾6ÌJSON_QUOTE Syntax: JSON_QUOTE(string) Quotes a string as a JSON value by wrapping it with double quote characters and escaping interior quote and other characters, then returning the result as a utf8mb4 string. Returns NULL if the argument is NULL. This function is typically used to produce a valid JSON string literal for inclusion within a JSON document. Certain special characters are escaped with backslashes per the escape sequences shown in http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html #json-unquote-character-escape-sequences. URL: http://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html mysql> SELECT JSON_QUOTE('null'), JSON_QUOTE('"null"'); +--------------------+----------------------+ | JSON_QUOTE('null') | JSON_QUOTE('"null"') | +--------------------+----------------------+ | "null" | "\"null\"" | +--------------------+----------------------+ mysql> SELECT JSON_QUOTE('[1, 2, 3]'); +-------------------------+ | JSON_QUOTE('[1, 2, 3]') | +-------------------------+ | "[1, 2, 3]" | +-------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.htmlGÝ€¦‚@@ÊÄ"¾6ÙJSON_REMOVE Syntax: JSON_REMOVE(json_doc, path[, path] ...) Removes data from a JSON document and returns the result. Returns NULL if any argument is NULL. An error occurs if the json_doc argument is not a valid JSON document or any path argument is not a valid path expression or is $ or contains a * or ** wildcard. The path arguments are evaluated left to right. The document produced by evaluating one path becomes the new value against which the next path is evaluated. It is not an error if the element to be removed does not exist in the document; in that case, the path does not affect the document. URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SET @j = '["a", ["b", "c"], "d"]'; mysql> SELECT JSON_REMOVE(@j, '$[1]'); +-------------------------+ | JSON_REMOVE(@j, '$[1]') | +-------------------------+ | ["a", "d"] | +-------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlpc7ÎdÀsLf.À#"$û@E¿; €,d infimum supremumG…�_ƒ@‰"¾6æJSON_REPLACE Syntax: JSON_REPLACE(json_doc, path, val[, path, val] ...) Replaces existing values in a JSON document and returns the result. Returns NULL if any argument is NULL. An error occurs if the json_doc argument is not a valid JSON document or any path argument is not a valid path expression or contains a * or ** wildcard. The path-value pairs are evaluated left to right. The document produced by evaluating one pair becomes the new value against which the next pair is evaluated. A path-value pair for an existing path in the document overwrites the existing document value with the new value. A path-value pair for a nonexisting path in the document is ignored and has no effect. For a comparison of JSON_INSERT(), JSON_REPLACE(), and JSON_SET(), see the discussion of JSON_SET(). URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SET @j = '{ "a": 1, "b": [2, 3]}'; mysql> SELECT JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]'); +-----------------------------------------------------+ | JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]') | +-----------------------------------------------------+ | {"a": 10, "b": [2, 3]} | +-----------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlAM“±‡@� "¾6óJSON_SEARCH Syntax: JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...]) Returns the path to the given string within a JSON document. Returns NULL if any of the json_doc, search_str, or path arguments are NULL; no path exists within the document; or search_str is not found. An error occurs if the json_doc argument is not a valid JSON document, any path argument is not a valid path expression, one_or_all is not 'one' or 'all', or escape_char is not a constant expression. The one_or_all argument affects the search as follows: o 'one': The search terminates after the first match and returns one path string. It is undefined which match is considered first. o 'all': The search returns all matching path strings such that no duplicate paths are included. If there are multiple strings, they are autowrapped as an array. The order of the array elements is undefined. Within the search_str search string argument, the % and _ characters work as for the LIKE operator: % matches any number of characters (including zero characters), and _ matches exactly one character. To specify a literal % or _ character in the search string, precede it by the escape character. The default is \ if the escape_char argument is missing or NULL. Otherwise, escape_char must be a constant that is empty or one character. For more information about matching and escape character behavior, see the description of LIKE in http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html . For escape character handling, a difference from the LIKE behavior is that the escape character for JSON_SEARCH() must evaluate to a constant at compile time, not just at execution time. For example, if JSON_SEARCH() is used in a prepared statement and the escape_char argument is supplied using a ? parameter, the parameter value might be constant at execution time, but is not at compile time. URL: http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html mysql> SET @j = '["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]'; mysql> SELECT JSON_SEARCH(@j, 'one', 'abc'); +-------------------------------+ | JSON_SEARCH(@j, 'one', 'abc') | +-------------------------------+ | "$[0]" | +-------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', 'abc'); +-------------------------------+ | JSON_SEARCH(@j, 'all', 'abc') | +-------------------------------+ | ["$[0]", "$[2].x"] | +-------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', 'ghi'); +-------------------------------+ | JSON_SEARCH(@j, 'all', 'ghi') | +-------------------------------+ | NULL | +-------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '10'); +------------------------------+ | JSON_SEARCH(@j, 'all', '10') | +------------------------------+ | "$[1][0].k" | +------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$'); +-----------------------------------------+ | JSON_SEARCH(@j, 'all', '10', NULL, '$') | +-----------------------------------------+ | "$[1][0].k" | +-----------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$[*]'); +--------------------------------------------+ | JSON_SEARCH(@j, 'all', '10', NULL, '$[*]') | +--------------------------------------------+ | "$[1][0].k" | +--------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$**.k'); +---------------------------------------------+ | JSON_SEARCH(@j, 'all', '10', NULL, '$**.k') | +---------------------------------------------+ | "$[1][0].k" | +---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$[*][0].k'); +-------------------------------------------------+ | JSON_SEARCH(@j, 'all', '10', NULL, '$[*][0].k') | +-------------------------------------------------+ | "$[1][0].k" | +-------------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$[1]'); +--------------------------------------------+ | JSON_SEARCH(@j, 'all', '10', NULL, '$[1]') | +--------------------------------------------+ | "$[1][0].k" | +--------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$[1][0]'); +-----------------------------------------------+ | JSON_SEARCH(@j, 'all', '10', NULL, '$[1][0]') | +-----------------------------------------------+ | "$[1][0].k" | +-----------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', 'abc', NULL, '$[2]'); +---------------------------------------------+ | JSON_SEARCH(@j, 'all', 'abc', NULL, '$[2]') | +---------------------------------------------+ | "$[2].x" | +---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '%a%'); +-------------------------------+ | JSON_SEARCH(@j, 'all', '%a%') | +-------------------------------+ | ["$[0]", "$[2].x"] | +-------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '%b%'); +-------------------------------+ | JSON_SEARCH(@j, 'all', '%b%') | +-------------------------------+ | ["$[0]", "$[2].x", "$[3].y"] | +-------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '%b%', NULL, '$[0]'); +---------------------------------------------+ | JSON_SEARCH(@j, 'all', '%b%', NULL, '$[0]') | +---------------------------------------------+ | "$[0]" | +---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '%b%', NULL, '$[2]'); +---------------------------------------------+ | JSON_SEARCH(@j, 'all', '%b%', NULL, '$[2]') | +---------------------------------------------+ | "$[2].x" | +---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '%b%', NULL, '$[1]'); +---------------------------------------------+ | JSON_SEARCH(@j, 'all', '%b%', NULL, '$[1]') | +---------------------------------------------+ | NULL | +---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '%b%', '', '$[1]'); +-------------------------------------------+ | JSON_SEARCH(@j, 'all', '%b%', '', '$[1]') | +-------------------------------------------+ | NULL | +-------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, 'all', '%b%', '', '$[3]'); +-------------------------------------------+ | JSON_SEARCH(@j, 'all', '%b%', '', '$[3]') | +-------------------------------------------+ | "$[3].y" | +-------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.htmlG„ù…@ »!"¾6JSON_SET Syntax: JSON_SET(json_doc, path, val[, path, val] ...) Inserts or updates data in a JSON document and returns the result. Returns NULL if any argument is NULL or path, if given, does not locate an object. An error occurs if the json_doc argument is not a valid JSON document or any path argument is not a valid path expression or contains a * or ** wildcard. The path-value pairs are evaluated left to right. The document produced by evaluating one pair becomes the new value against which the next pair is evaluated. A path-value pair for an existing path in the document overwrites the existing document value with the new value. A path-value pair for a nonexisting path in the document adds the value to the document if the path identifies one of these types of values: o A member not present in an existing object. The member is added to the object and associated with the new value. o A position past the end of an existing array. The array is extended with the new value. If the existing value is not an array, it is autowrapped as an array, then extended with the new value. Otherwise, a path-value pair for a nonexisting path in the document is ignored and has no effect. The JSON_SET(), JSON_INSERT(), and JSON_REPLACE() functions are related: o JSON_SET() replaces existing values and adds nonexisting values. o JSON_INSERT() inserts values without replacing existing values. o JSON_REPLACE() replaces only existing values. URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SET @j = '{ "a": 1, "b": [2, 3]}'; mysql> SELECT JSON_SET(@j, '$.a', 10, '$.c', '[true, false]'); +-------------------------------------------------+ | JSON_SET(@j, '$.a', 10, '$.c', '[true, false]') | +-------------------------------------------------+ | {"a": 10, "b": [2, 3], "c": "[true, false]"} | +-------------------------------------------------+ mysql> SELECT JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]'); +----------------------------------------------------+ | JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]') | +----------------------------------------------------+ | {"a": 1, "b": [2, 3], "c": "[true, false]"} | +----------------------------------------------------+ mysql> SELECT JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]'); +-----------------------------------------------------+ | JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]') | +-----------------------------------------------------+ | {"a": 10, "b": [2, 3]} | +-----------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlBH‹Ë‚@(Ô ""¾6 JSON_STORAGE_SIZE JSON_STORAGE_SIZE(json_val) This function returns the number of bytes used to store the binary representation of a JSON document. When the argument is a JSON column, this is the space used to store the JSON document. json_val must be a valid JSON document or a string which can be parsed as one. In the case where it is string, the function returns the amount of storage space in the JSON binary representation that is created by parsing the string as JSON and converting it to binary. It returns NULL if the argument is NULL. An error results when json_val is not NULL, and is not---or cannot be successfully parsed as---a JSON document. URL: http://dev.mysql.com/doc/refman/5.7/en/json-utility-functions.html mysql> CREATE TABLE jtable (jcol JSON); Query OK, 0 rows affected (0.42 sec) mysql> INSERT INTO jtable VALUES -> ('{"a": 1000, "b": "wxyz", "c": "[1, 3, 5, 7]"}'); Query OK, 1 row affected (0.04 sec) mysql> SELECT -> jcol, -> JSON_STORAGE_SIZE(jcol) AS Size -> FROM jtable; +-----------------------------------------------+------+ | jcol | Size | +-----------------------------------------------+------+ | {"a": 1000, "b": "wxyz", "c": "[1, 3, 5, 7]"} | 47 | +-----------------------------------------------+------+ 1 row in set (0.00 sec) mysql> UPDATE jtable mysql> SET jcol = '{"a": 4.55, "b": "wxyz", "c": "[true, false]"}'; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT -> jcol, -> JSON_STORAGE_SIZE(jcol) AS Size -> FROM jtable; +------------------------------------------------+------+ | jcol | Size | +------------------------------------------------+------+ | {"a": 4.55, "b": "wxyz", "c": "[true, false]"} | 56 | +------------------------------------------------+------+ 1 row in set (0.00 sec) mysql> SET @j = '[100, "sakila", [1, 3, 5], 425.05]'; Query OK, 0 rows affected (0.00 sec) mysql> SELECT @j, JSON_STORAGE_SIZE(@j) AS Size; +------------------------------------+------+ | @j | Size | +------------------------------------+------+ | [100, "sakila", [1, 3, 5], 425.05] | 45 | +------------------------------------+------+ 1 row in set (0.00 sec) mysql> SET @j = JSON_SET(@j, '$[1]', "json"); Query OK, 0 rows affected (0.00 sec) mysql> SELECT @j, JSON_STORAGE_SIZE(@j) AS Size; +----------------------------------+------+ | @j | Size | +----------------------------------+------+ | [100, "json", [1, 3, 5], 425.05] | 43 | +----------------------------------+------+ 1 row in set (0.00 sec) mysql> SET @j = JSON_SET(@j, '$[2][0]', JSON_ARRAY(10, 20, 30)); Query OK, 0 rows affected (0.00 sec) mysql> SELECT @j, JSON_STORAGE_SIZE(@j) AS Size; +---------------------------------------------+------+ | @j | Size | +---------------------------------------------+------+ | [100, "json", [[10, 20, 30], 3, 5], 425.05] | 56 | +---------------------------------------------+------+ 1 row in set (0.00 sec) mysql> SELECT -> JSON_STORAGE_SIZE('[100, "sakila", [1, 3, 5], 425.05]') AS A, -> JSON_STORAGE_SIZE('{"a": 1000, "b": "a", "c": "[1, 3, 5, 7]"}') AS B, -> JSON_STORAGE_SIZE('{"a": 1000, "b": "wxyz", "c": "[1, 3, 5, 7]"}') AS C, -> JSON_STORAGE_SIZE('[100, "json", [[10, 20, 30], 3, 5], 425.05]') AS D; +----+----+----+----+ | A | B | C | D | +----+----+----+----+ | 45 | 44 | 47 | 56 | +----+----+----+----+ 1 row in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/json-utility-functions.htmlpcLf.Àû@·fh$#%BæE¿:ç€8~ infimum supremumDU‰@ ÷#"¾6JSON_TYPE Syntax: JSON_TYPE(json_val) Returns a utf8mb4 string indicating the type of a JSON value. This can be an object, an array, or a scalar type, as shown here: mysql> SET @j = '{"a": [10, true]}'; mysql> SELECT JSON_TYPE(@j); +---------------+ | JSON_TYPE(@j) | +---------------+ | OBJECT | +---------------+ mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a')); +------------------------------------+ | JSON_TYPE(JSON_EXTRACT(@j, '$.a')) | +------------------------------------+ | ARRAY | +------------------------------------+ mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]')); +---------------------------------------+ | JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]')) | +---------------------------------------+ | INTEGER | +---------------------------------------+ mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]')); +---------------------------------------+ | JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]')) | +---------------------------------------+ | BOOLEAN | +---------------------------------------+ JSON_TYPE() returns NULL if the argument is NULL: mysql> SELECT JSON_TYPE(NULL); +-----------------+ | JSON_TYPE(NULL) | +-----------------+ | NULL | +-----------------+ An error occurs if the argument is not a valid JSON value: mysql> SELECT JSON_TYPE(1); ERROR 3146 (22032): Invalid data type for JSON data in argument 1 to function json_type; a JSON string or JSON type is required. For a non-NULL, non-error result, the following list describes the possible JSON_TYPE() return values: o Purely JSON types: o OBJECT: JSON objects o ARRAY: JSON arrays o BOOLEAN: The JSON true and false literals o NULL: The JSON null literal o Numeric types: o INTEGER: MySQL TINYINT, SMALLINT, MEDIUMINT and INT and BIGINT scalars o DOUBLE: MySQL DOUBLE FLOAT scalars o DECIMAL: MySQL DECIMAL and NUMERIC scalars o Temporal types: o DATETIME: MySQL DATETIME and TIMESTAMP scalars o DATE: MySQL DATE scalars o TIME: MySQL TIME scalars o String types: o STRING: MySQL utf8 character type scalars: CHAR, VARCHAR, TEXT, ENUM, and SET o Binary types: o BLOB: MySQL binary type scalars: BINARY, VARBINARY, BLOB o BIT: MySQL BIT scalars o All other types: o OPAQUE (raw bits) URL: http://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html http://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.htmlG¾„=�@ $"¾6'JSON_UNQUOTE Syntax: JSON_UNQUOTE(json_val) Unquotes JSON value and returns the result as a utf8mb4 string. Returns NULL if the argument is NULL. An error occurs if the value starts and ends with double quotes but is not a valid JSON string literal. URL: http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html mysql> SET @j = '"abc"'; mysql> SELECT @j, JSON_UNQUOTE(@j); +-------+------------------+ | @j | JSON_UNQUOTE(@j) | +-------+------------------+ | "abc" | abc | +-------+------------------+ mysql> SET @j = '[1, 2, 3]'; mysql> SELECT @j, JSON_UNQUOTE(@j); +-----------+------------------+ | @j | JSON_UNQUOTE(@j) | +-----------+------------------+ | [1, 2, 3] | [1, 2, 3] | +-----------+------------------+ mysql> SELECT @@sql_mode; +------------+ | @@sql_mode | +------------+ | | +------------+ mysql> SELECT JSON_UNQUOTE('"\\t\\u0032"'); +------------------------------+ | JSON_UNQUOTE('"\\t\\u0032"') | +------------------------------+ | 2 | +------------------------------+ mysql> SET @@sql_mode = 'NO_BACKSLASH_ESCAPES'; mysql> SELECT JSON_UNQUOTE('"\\t\\u0032"'); +------------------------------+ | JSON_UNQUOTE('"\\t\\u0032"') | +------------------------------+ | \t\u0032 | +------------------------------+ mysql> SELECT JSON_UNQUOTE('"\t\u0032"'); +----------------------------+ | JSON_UNQUOTE('"\t\u0032"') | +----------------------------+ | 2 | +----------------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.htmlD×�Å€@ =%"¾64JSON_VALID Syntax: JSON_VALID(val) Returns 0 or 1 to indicate whether a value is valid JSON. Returns NULL if the argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html mysql> SELECT JSON_VALID('{"a": 1}'); +------------------------+ | JSON_VALID('{"a": 1}') | +------------------------+ | 1 | +------------------------+ mysql> SELECT JSON_VALID('hello'), JSON_VALID('"hello"'); +---------------------+-----------------------+ | JSON_VALID('hello') | JSON_VALID('"hello"') | +---------------------+-----------------------+ | 0 | 1 | +---------------------+-----------------------+ http://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html0?†@(Ì&"¾6AKILL Syntax: KILL [CONNECTION | QUERY] processlist_id Each connection to mysqld runs in a separate thread. You can kill a thread with the KILL processlist_id statement. Thread processlist identifiers can be determined from the ID column of the INFORMATION_SCHEMA PROCESSLIST table, the Id column of SHOW PROCESSLIST output, and the PROCESSLIST_ID column of the Performance Schema threads table. The value for the current thread is returned by the CONNECTION_ID() function. KILL permits an optional CONNECTION or QUERY modifier: o KILL CONNECTION is the same as KILL with no modifier: It terminates the connection associated with the given processlist_id, after terminating any statement the connection is executing. o KILL QUERY terminates the statement the connection is currently executing, but leaves the connection itself intact. The ability to see which threads are available to be killed depends on the PROCESS privilege: o Without PROCESS, you can see only your own threads. o With PROCESS, you can see all threads. The ability to kill threads and statements depends on the SUPER privilege: o Without SUPER, you can kill only your own threads and statements. o With SUPER, you can kill all threads and statements. You can also use the mysqladmin processlist and mysqladmin kill commands to examine and kill threads. *Note*: You cannot use KILL with the Embedded MySQL Server library because the embedded server merely runs inside the threads of the host application. It does not create any connection threads of its own. URL: http://dev.mysql.com/doc/refman/5.7/en/kill.html http://dev.mysql.com/doc/refman/5.7/en/kill.html<…@0¢'"¾6NLABELS Syntax: [begin_label:] BEGIN [statement_list] END [end_label] [begin_label:] LOOP statement_list END LOOP [end_label] [begin_label:] REPEAT statement_list UNTIL search_condition END REPEAT [end_label] [begin_label:] WHILE search_condition DO statement_list END WHILE [end_label] Labels are permitted for BEGIN ... END blocks and for the LOOP, REPEAT, and WHILE statements. Label use for those statements follows these rules: o begin_label must be followed by a colon. o begin_label can be given without end_label. If end_label is present, it must be the same as begin_label. o end_label cannot be given without begin_label. o Labels at the same nesting level must be distinct. o Labels can be up to 16 characters long. To refer to a label within the labeled construct, use an ITERATE or LEAVE statement. The following example uses those statements to continue iterating or terminate the loop: CREATE PROCEDURE doiterate(p1 INT) BEGIN label1: LOOP SET p1 = p1 + 1; IF p1 < 10 THEN ITERATE label1; END IF; LEAVE label1; END LOOP label1; END; The scope of a block label does not include the code for handlers declared within the block. For details, see [HELP DECLARE HANDLER]. URL: http://dev.mysql.com/doc/refman/5.7/en/statement-labels.html http://dev.mysql.com/doc/refman/5.7/en/statement-labels.htmlCù€î€@8‡("¾6[LAST_DAY Syntax: LAST_DAY(date) Takes a date or datetime value and returns the corresponding value for the last day of the month. Returns NULL if the argument is invalid. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT LAST_DAY('2003-02-05'); -> '2003-02-28' mysql> SELECT LAST_DAY('2004-02-05'); -> '2004-02-29' mysql> SELECT LAST_DAY('2004-01-01 01:01:01'); -> '2004-01-31' mysql> SELECT LAST_DAY('2003-03-32'); -> NULL http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlAg‰@@ )"¾6hLAST_INSERT_ID Syntax: LAST_INSERT_ID(), LAST_INSERT_ID(expr) With no argument, LAST_INSERT_ID() returns a BIGINT UNSIGNED (64-bit) value representing the first automatically generated value successfully inserted for an AUTO_INCREMENT column as a result of the most recently executed INSERT statement. The value of LAST_INSERT_ID() remains unchanged if no rows are successfully inserted. With an argument, LAST_INSERT_ID() returns an unsigned integer. For example, after inserting a row that generates an AUTO_INCREMENT value, you can get the value like this: mysql> SELECT LAST_INSERT_ID(); -> 195 The currently executing statement does not affect the value of LAST_INSERT_ID(). Suppose that you generate an AUTO_INCREMENT value with one statement, and then refer to LAST_INSERT_ID() in a multiple-row INSERT statement that inserts rows into a table with its own AUTO_INCREMENT column. The value of LAST_INSERT_ID() will remain stable in the second statement; its value for the second and later rows is not affected by the earlier row insertions. (However, if you mix references to LAST_INSERT_ID() and LAST_INSERT_ID(expr), the effect is undefined.) If the previous statement returned an error, the value of LAST_INSERT_ID() is undefined. For transactional tables, if the statement is rolled back due to an error, the value of LAST_INSERT_ID() is left undefined. For manual ROLLBACK, the value of LAST_INSERT_ID() is not restored to that before the transaction; it remains as it was at the point of the ROLLBACK. Prior to MySQL 5.7.3, this function was not replicated correctly if replication filtering rules were in use. (Bug #17234370, Bug #69861) Within the body of a stored routine (procedure or function) or a trigger, the value of LAST_INSERT_ID() changes the same way as for statements executed outside the body of these kinds of objects. The effect of a stored routine or trigger upon the value of LAST_INSERT_ID() that is seen by following statements depends on the kind of routine: o If a stored procedure executes statements that change the value of LAST_INSERT_ID(), the changed value is seen by statements that follow the procedure call. o For stored functions and triggers that change the value, the value is restored when the function or trigger ends, so following statements will not see a changed value. URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html http://dev.mysql.com/doc/refman/5.7/en/information-functions.html<z@H*"¾6uLCASE #Syntax: LCASE(str) LCASE() is a synonym for LOWER(). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html@�€šƒ@PÇ+"¾6‚LEAST Syntax: LEAST(value1,value2,...) With two or more arguments, returns the smallest (minimum-valued) argument. The arguments are compared using the following rules: o If any argument is NULL, the result is NULL. No comparison is needed. o If all arguments are integer-valued, they are compared as integers. o If at least one argument is double precision, they are compared as double-precision values. Otherwise, if at least one argument is a DECIMAL value, they are compared as DECIMAL values. o If the arguments comprise a mix of numbers and strings, they are compared as numbers. o If any argument is a nonbinary (character) string, the arguments are compared as nonbinary strings. o In all other cases, the arguments are compared as binary strings. The return type of LEAST() is the aggregated type of the comparison argument types. URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html mysql> SELECT LEAST(2,0); -> 0 mysql> SELECT LEAST(34.0,3.0,5.0,767.0); -> 3.0 mysql> SELECT LEAST('B','A','C'); -> 'A' http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html1E�@XÓ,"¾6�LEAVE Syntax: LEAVE label This statement is used to exit the flow control construct that has the given label. If the label is for the outermost stored program block, LEAVE exits the program. LEAVE can be used within BEGIN ... END or loop constructs (LOOP, REPEAT, WHILE). URL: http://dev.mysql.com/doc/refman/5.7/en/leave.html http://dev.mysql.com/doc/refman/5.7/en/leave.html<7µ€@`…-"¾6œLEFT #Syntax: LEFT(str,len) Returns the leftmost len characters from the string str, or NULL if any argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT LEFT('foobarbar', 5); -> 'fooba' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<+8�@hü."¾6©LENGTH #Syntax: LENGTH(str) Returns the length of the string str, measured in bytes. A multibyte character counts as multiple bytes. This means that for a string containing five 2-byte characters, LENGTH() returns 10, whereas CHAR_LENGTH() returns 5. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT LENGTH('text'); -> 4 http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlGej�@pÇò/"¾6¶LIKE #Syntax: expr LIKE pat [ESCAPE 'escape_char'] Pattern matching using an SQL pattern. Returns 1 (TRUE) or 0 (FALSE). If either expr or pat is NULL, the result is NULL. The pattern need not be a literal string. For example, it can be specified as a string expression or table column. URL: http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html mysql> SELECT 'David!' LIKE 'David_'; -> 1 mysql> SELECT 'David!' LIKE '%D%v%'; -> 1 http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.htmlp-OVc·fhBæëa&%$&‡UE¿:ï€8+infimum supremum=$�@¾0"¾6ÃLINEFROMTEXT )LineFromText(wkt[, srid]), LineStringFromText(wkt[, srid]) ST_LineFromText(), ST_LineStringFromText(), LineFromText(), and LineStringFromText() are synonyms. For more information, see the description of ST_LineFromText(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=�@·1"¾6ÐLINEFROMWKB (LineFromWKB(wkb[, srid]), LineStringFromWKB(wkb[, srid]) ST_LineFromWKB(), ST_LineStringFromWKB(), LineFromWKB(), and LineStringFromWKB() are synonyms. For more information, see the description of ST_LineFromWKB(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlHÿ€@ ¤2"¾6ÝLINESTRING LineString(pt [, pt] ...) Constructs a LineString value from a number of Point or WKB Point arguments. If the number of arguments is less than two, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.htmlBW0�@(&3"¾6êLN Syntax: LN(X) Returns the natural logarithm of X; that is, the base-e logarithm of X. If X is less than or equal to 0.0E0, the function returns NULL and (as of MySQL 5.7.4) a warning "Invalid argument for logarithm" is reported. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT LN(2); -> 0.69314718055995 mysql> SELECT LN(-2); -> NULL http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html5™…@0+4"¾6÷LOAD DATA Syntax: LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name [, partition_name] ...)] [CHARACTER SET charset_name] [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number {LINES | ROWS}] [(col_name_or_user_var [, col_name_or_user_var] ...)] [SET col_name={expr | DEFAULT}, [, col_name={expr | DEFAULT}] ...] The LOAD DATA statement reads rows from a text file into a table at a very high speed. LOAD DATA is the complement of SELECT ... INTO OUTFILE. (See http://dev.mysql.com/doc/refman/5.7/en/select-into.html.) To write data from a table to a file, use SELECT ... INTO OUTFILE. To read the file back into a table, use LOAD DATA. The syntax of the FIELDS and LINES clauses is the same for both statements. You can also load data files by using the mysqlimport utility; see http://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html. mysqlimport operates by sending a LOAD DATA statement to the server. For more information about the efficiency of INSERT versus LOAD DATA and speeding up LOAD DATA, see http://dev.mysql.com/doc/refman/5.7/en/insert-optimization.html. URL: http://dev.mysql.com/doc/refman/5.7/en/load-data.html http://dev.mysql.com/doc/refman/5.7/en/load-data.html6‚ƒ@85"¾6LOAD INDEX Syntax: LOAD INDEX INTO CACHE tbl_index_list [, tbl_index_list] ... tbl_index_list: tbl_name [PARTITION (partition_list | ALL)] [[INDEX|KEY] (index_name[, index_name] ...)] [IGNORE LEAVES] partition_list: partition_name[, partition_name][, ...] The LOAD INDEX INTO CACHE statement preloads a table index into the key cache to which it has been assigned by an explicit CACHE INDEX statement, or into the default key cache otherwise. LOAD INDEX INTO CACHE is used only for MyISAM tables. In MySQL 5.7, it is also supported for partitioned MyISAM tables; in addition, indexes on partitioned tables can be preloaded for one, several, or all partitions. The IGNORE LEAVES modifier causes only blocks for the nonleaf nodes of the index to be preloaded. IGNORE LEAVES is also supported for partitioned MyISAM tables. URL: http://dev.mysql.com/doc/refman/5.7/en/load-index.html http://dev.mysql.com/doc/refman/5.7/en/load-index.html4‹@@ ¥6"¾6LOAD XML Syntax: LOAD XML [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE [db_name.]tbl_name [CHARACTER SET charset_name] [ROWS IDENTIFIED BY ''] [IGNORE number {LINES | ROWS}] [(field_name_or_user_var [, field_name_or_user_var] ...)] [SET col_name={expr | DEFAULT}, [, col_name={expr | DEFAULT}] ...] The LOAD XML statement reads data from an XML file into a table. The file_name must be given as a literal string. The tagname in the optional ROWS IDENTIFIED BY clause must also be given as a literal string, and must be surrounded by angle brackets (< and >). LOAD XML acts as the complement of running the mysql client in XML output mode (that is, starting the client with the --xml option). To write data from a table to an XML file, you can invoke the mysql client with the --xml and -e options from the system shell, as shown here: shell> mysql --xml -e 'SELECT * FROM mydb.mytable' > file.xml To read the file back into a table, use LOAD XML. By default, the element is considered to be the equivalent of a database table row; this can be changed using the ROWS IDENTIFIED BY clause. This statement supports three different XML formats: o Column names as attributes and column values as attribute values: o Column names as tags and column values as the content of these tags: value1 value2 o Column names are the name attributes of tags, and values are the contents of these tags: value1 value2 This is the format used by other MySQL tools, such as mysqldump. All three formats can be used in the same XML file; the import routine automatically detects the format for each row and interprets it correctly. Tags are matched based on the tag or attribute name and the column name. The following clauses work essentially the same way for LOAD XML as they do for LOAD DATA: o LOW_PRIORITY or CONCURRENT o LOCAL o REPLACE or IGNORE o CHARACTER SET o SET See [HELP LOAD DATA], for more information about these clauses. (field_name_or_user_var, ...) is a list of one or more comma-separated XML fields or user variables. The name of a user variable used for this purpose must match the name of a field from the XML file, prefixed with @. You can use field names to select only desired fields. User variables can be employed to store the corresponding field values for subsequent re-use. The IGNORE number LINES or IGNORE number ROWS clause causes the first number rows in the XML file to be skipped. It is analogous to the LOAD DATA statement's IGNORE ... LINES clause. URL: http://dev.mysql.com/doc/refman/5.7/en/load-xml.html http://dev.mysql.com/doc/refman/5.7/en/load-xml.html<[ƒ@Hü7"¾6LOAD_FILE #Syntax: LOAD_FILE(file_name) Reads the file and returns the file contents as a string. To use this function, the file must be located on the server host, you must specify the full path name to the file, and you must have the FILE privilege. The file must be readable by all and its size less than max_allowed_packet bytes. If the secure_file_priv system variable is set to a nonempty directory name, the file to be loaded must be located in that directory. If the file does not exist or cannot be read because one of the preceding conditions is not satisfied, the function returns NULL. The character_set_filesystem system variable controls interpretation of file names that are given as literal strings. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> UPDATE t SET blob_col=LOAD_FILE('/tmp/picture') WHERE id=1; http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlC¢€@PB8"¾6+LOCALTIME Syntax: LOCALTIME, LOCALTIME([fsp]) LOCALTIME and LOCALTIME() are synonyms for NOW(). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC¶€@XW9"¾68LOCALTIMESTAMP Syntax: LOCALTIMESTAMP, LOCALTIMESTAMP([fsp]) LOCALTIMESTAMP and LOCALTIMESTAMP() are synonyms for NOW(). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html<¦€Ÿ�@`Þ:"¾6ELOCATE #Syntax: LOCATE(substr,str), LOCATE(substr,str,pos) The first syntax returns the position of the first occurrence of substring substr in string str. The second syntax returns the position of the first occurrence of substring substr in string str, starting at position pos. Returns 0 if substr is not in str. Returns NULL if substr or str is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT LOCATE('bar', 'foobarbar'); -> 4 mysql> SELECT LOCATE('xbar', 'foobar'); -> 0 mysql> SELECT LOCATE('bar', 'foobarbar', 5); -> 7 http://dev.mysql.com/doc/refman/5.7/en/string-functions.html7x‡@h ;"¾6RLOCK %Syntax: LOCK TABLES tbl_name [[AS] alias] lock_type [, tbl_name [[AS] alias] lock_type] ... lock_type: { READ [LOCAL] | [LOW_PRIORITY] WRITE } UNLOCK TABLES MySQL enables client sessions to acquire table locks explicitly for the purpose of cooperating with other sessions for access to tables, or to prevent other sessions from modifying tables during periods when a session requires exclusive access to them. A session can acquire or release locks only for itself. One session cannot acquire locks for another session or release locks held by another session. Locks may be used to emulate transactions or to get more speed when updating tables. This is explained in more detail in http://dev.mysql.com/doc/refman/5.7/en/lock-tables.html#lock-tables-res trictions. LOCK TABLES explicitly acquires table locks for the current client session. Table locks can be acquired for base tables or views. You must have the LOCK TABLES privilege, and the SELECT privilege for each object to be locked. For view locking, LOCK TABLES adds all base tables used in the view to the set of tables to be locked and locks them automatically. If you lock a table explicitly with LOCK TABLES, any tables used in triggers are also locked implicitly, as described in http://dev.mysql.com/doc/refman/5.7/en/lock-tables.html#lock-tables-and -triggers. UNLOCK TABLES explicitly releases any table locks held by the current session. LOCK TABLES implicitly releases any table locks held by the current session before acquiring new locks. Another use for UNLOCK TABLES is to release the global read lock acquired with the FLUSH TABLES WITH READ LOCK statement, which enables you to lock all tables in all databases. See [HELP FLUSH]. (This is a very convenient way to get backups if you have a file system such as Veritas that can take snapshots in time.) URL: http://dev.mysql.com/doc/refman/5.7/en/lock-tables.html http://dev.mysql.com/doc/refman/5.7/en/lock-tables.htmlBY��@p–<"¾6_LOG Syntax: LOG(X), LOG(B,X) If called with one parameter, this function returns the natural logarithm of X. If X is less than or equal to 0.0E0, the function returns NULL and (as of MySQL 5.7.4) a warning "Invalid argument for logarithm" is reported. The inverse of this function (when called with a single argument) is the EXP() function. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT LOG(2); -> 0.69314718055995 mysql> SELECT LOG(-2); -> NULL http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlB†€�@x4="¾6lLOG10 Syntax: LOG10(X) Returns the base-10 logarithm of X. If X is less than or equal to 0.0E0, the function returns NULL and (as of MySQL 5.7.4) a warning "Invalid argument for logarithm" is reported. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT LOG10(2); -> 0.30102999566398 mysql> SELECT LOG10(100); -> 2 mysql> SELECT LOG10(-100); -> NULL http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlBS �@€ÿ>"¾6yLOG2 Syntax: LOG2(X) Returns the base-2 logarithm of X. If X is less than or equal to 0.0E0, the function returns NULL and (as of MySQL 5.7.4) a warning "Invalid argument for logarithm" is reported. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT LOG2(65536); -> 16 mysql> SELECT LOG2(-100); -> NULL http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html@ �@ˆ=?"¾6†LONGBLOB LONGBLOB A BLOB column with a maximum length of 4,294,967,295 or 4GB (232 − 1) bytes. The effective maximum length of LONGBLOB columns depends on the configured maximum packet size in the client/server protocol and available memory. Each LONGBLOB value is stored using a 4-byte length prefix that indicates the number of bytes in the value. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html@1‚@�ÈE@"¾6“LONGTEXT LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name] A TEXT column with a maximum length of 4,294,967,295 or 4GB (232 − 1) characters. The effective maximum length is less if the value contains multibyte characters. The effective maximum length of LONGTEXT columns also depends on the configured maximum packet size in the client/server protocol and available memory. Each LONGTEXT value is stored using a 4-byte length prefix that indicates the number of bytes in the value. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.htmlp'¦›cëa&‡U¤,{u&%@ÓpE¿;ç€8ã  infimum supremum0¼€º‚@A"¾6 LOOP Syntax: [begin_label:] LOOP statement_list END LOOP [end_label] LOOP implements a simple loop construct, enabling repeated execution of the statement list, which consists of one or more statements, each terminated by a semicolon (;) statement delimiter. The statements within the loop are repeated until the loop is terminated. Usually, this is accomplished with a LEAVE statement. Within a stored function, RETURN can also be used, which exits the function entirely. Neglecting to include a loop-termination statement results in an infinite loop. A LOOP statement can be labeled. For the rules regarding label use, see [HELP labels]. URL: http://dev.mysql.com/doc/refman/5.7/en/loop.html CREATE PROCEDURE doiterate(p1 INT) BEGIN label1: LOOP SET p1 = p1 + 1; IF p1 < 10 THEN ITERATE label1; END IF; LEAVE label1; END LOOP label1; SET @x = p1; END; http://dev.mysql.com/doc/refman/5.7/en/loop.html<Ù„@rB"¾6­LOWER #Syntax: LOWER(str) Returns the string str with all characters changed to lowercase according to the current character set mapping. The default is latin1 (cp1252 West European). mysql> SELECT LOWER('QUADRATICALLY'); -> 'quadratically' LOWER() (and UPPER()) are ineffective when applied to binary strings (BINARY, VARBINARY, BLOB). To perform lettercase conversion, convert the string to a nonbinary string: mysql> SET @str = BINARY 'New York'; mysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1)); +-------------+-----------------------------------+ | LOWER(@str) | LOWER(CONVERT(@str USING latin1)) | +-------------+-----------------------------------+ | New York | new york | +-------------+-----------------------------------+ For collations of Unicode character sets, LOWER() and UPPER() work according to the Unicode Collation Algorithm (UCA) version in the collation name, if there is one, and UCA 4.0.0 if no version is specified. For example, utf8_unicode_520_ci works according to UCA 5.2.0, whereas utf8_unicode_ci works according to UCA 4.0.0. See http://dev.mysql.com/doc/refman/5.7/en/charset-unicode-sets.html. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html SELECT LPAD('hi',4,'??'); -> '??hi' mysql> SELECT LPAD('hi',1,'??'); -> 'h' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<5–€@(eD"¾6ÇLTRIM #Syntax: LTRIM(str) Returns the string str with leading space characters removed. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT LTRIM(' barbar'); -> 'barbar' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlCæ€Ø€@0^E"¾6ÔMAKEDATE Syntax: MAKEDATE(year,dayofyear) Returns a date, given year and day-of-year values. dayofyear must be greater than 0 or the result is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT MAKEDATE(2011,31), MAKEDATE(2011,32); -> '2011-01-31', '2011-02-01' mysql> SELECT MAKEDATE(2011,365), MAKEDATE(2014,365); -> '2011-12-31', '2014-12-31' mysql> SELECT MAKEDATE(2011,0); -> NULL http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC8ï€@8ÈF"¾6áMAKETIME Syntax: MAKETIME(hour,minute,second) Returns a time value calculated from the hour, minute, and second arguments. The second argument can have a fractional part. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT MAKETIME(12,15,30); -> '12:15:30' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html<�t�@@G"¾6îMAKE_SET #Syntax: MAKE_SET(bits,str1,str2,...) Returns a set value (a string containing substrings separated by , characters) consisting of the strings that have the corresponding bit in bits set. str1 corresponds to bit 0, str2 to bit 1, and so on. NULL values in str1, str2, ... are not appended to the result. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT MAKE_SET(1,'a','b','c'); -> 'a' mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world'); -> 'hello,world' mysql> SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world'); -> 'hello' mysql> SELECT MAKE_SET(0,'a','b','c'); -> '' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlC†@H¦H"¾6ûMASTER_POS_WAIT Syntax: MASTER_POS_WAIT(log_name,log_pos[,timeout][,channel]) This function is useful for control of master/slave synchronization. It blocks until the slave has read and applied all updates up to the specified position in the master log. The return value is the number of log events the slave had to wait for to advance to the specified position. The function returns NULL if the slave SQL thread is not started, the slave's master information is not initialized, the arguments are incorrect, or an error occurs. It returns -1 if the timeout has been exceeded. If the slave SQL thread stops while MASTER_POS_WAIT() is waiting, the function returns NULL. If the slave is past the specified position, the function returns immediately. On a multithreaded slave, the function waits until expiry of the limit set by the slave_checkpoint_group or slave_checkpoint_period system variable, when the checkpoint operation is called to update the status of the slave. Depending on the setting for the system variables, the function might therefore return some time after the specified position was reached. If a timeout value is specified, MASTER_POS_WAIT() stops waiting when timeout seconds have elapsed. timeout must be greater than 0; a zero or negative timeout means no timeout. The optional channel value enables you to name which replication channel the function applies to. See http://dev.mysql.com/doc/refman/5.7/en/replication-channels.html for more information. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html;«‚áŒ@P$I"¾6MATCH AGAINST #Syntax: MATCH (col1,col2,...) AGAINST (expr [search_modifier]) MySQL has support for full-text indexing and searching: o A full-text index in MySQL is an index of type FULLTEXT. o Full-text indexes can be used only with InnoDB or MyISAM tables, and can be created only for CHAR, VARCHAR, or TEXT columns. o As of MySQL 5.7.6, MySQL provides a built-in full-text ngram parser that supports Chinese, Japanese, and Korean (CJK), and an installable MeCab full-text parser plugin for Japanese. Parsing differences are outlined in http://dev.mysql.com/doc/refman/5.7/en/fulltext-search-ngram.html, and http://dev.mysql.com/doc/refman/5.7/en/fulltext-search-mecab.html. o A FULLTEXT index definition can be given in the CREATE TABLE statement when a table is created, or added later using ALTER TABLE or CREATE INDEX. o For large data sets, it is much faster to load your data into a table that has no FULLTEXT index and then create the index after that, than to load data into a table that has an existing FULLTEXT index. Full-text searching is performed using MATCH() ... AGAINST syntax. MATCH() takes a comma-separated list that names the columns to be searched. AGAINST takes a string to search for, and an optional modifier that indicates what type of search to perform. The search string must be a string value that is constant during query evaluation. This rules out, for example, a table column because that can differ for each row. There are three types of full-text searches: o A natural language search interprets the search string as a phrase in natural human language (a phrase in free text). There are no special operators, with the exception of double quote (") characters. The stopword list applies. For more information about stopword lists, see http://dev.mysql.com/doc/refman/5.7/en/fulltext-stopwords.html. Full-text searches are natural language searches if the IN NATURAL LANGUAGE MODE modifier is given or if no modifier is given. For more information, see http://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html . o A boolean search interprets the search string using the rules of a special query language. The string contains the words to search for. It can also contain operators that specify requirements such that a word must be present or absent in matching rows, or that it should be weighted higher or lower than usual. Certain common words (stopwords) are omitted from the search index and do not match if present in the search string. The IN BOOLEAN MODE modifier specifies a boolean search. For more information, see http://dev.mysql.com/doc/refman/5.7/en/fulltext-boolean.html. o A query expansion search is a modification of a natural language search. The search string is used to perform a natural language search. Then words from the most relevant rows returned by the search are added to the search string and the search is done again. The query returns the rows from the second search. The IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION or WITH QUERY EXPANSION modifier specifies a query expansion search. For more information, see http://dev.mysql.com/doc/refman/5.7/en/fulltext-query-expansion.html. URL: http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html mysql> SELECT id, body, MATCH (title,body) AGAINST ('Security implications of running MySQL as root' IN NATURAL LANGUAGE MODE) AS score FROM articles WHERE MATCH (title,body) AGAINST ('Security implications of running MySQL as root' IN NATURAL LANGUAGE MODE); +----+-------------------------------------+-----------------+ | id | body | score | +----+-------------------------------------+-----------------+ | 4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 | | 6 | When configured properly, MySQL ... | 1.3114095926285 | +----+-------------------------------------+-----------------+ 2 rows in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html>oâ�@XìJ"¾6MAX Syntax: MAX([DISTINCT] expr) Returns the maximum value of expr. MAX() may take a string argument; in such cases, it returns the maximum string value. See http://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html. The DISTINCT keyword can be used to find the maximum of the distinct values of expr, however, this produces the same result as omitting DISTINCT. If there are no matching rows, MAX() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html mysql> SELECT student_name, MIN(test_score), MAX(test_score) FROM student GROUP BY student_name; http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html>:Í€@`£K"¾6"MBR DEFINITION Its MBR (minimum bounding rectangle), or envelope. This is the bounding geometry, formed by the minimum and maximum (X,Y) coordinates: URL: http://dev.mysql.com/doc/refman/5.7/en/gis-class-geometry.html ((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY)) http://dev.mysql.com/doc/refman/5.7/en/gis-class-geometry.htmlJ’��@hML"¾6/MBRCONTAINS MBRContains(g1, g2) Returns 1 or 0 to indicate whether the minimum bounding rectangle of g1 contains the minimum bounding rectangle of g2. This tests the opposite relationship as MBRWithin(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html mysql> SET @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'); mysql> SET @g2 = ST_GeomFromText('Point(1 1)'); mysql> SELECT MBRContains(@g1,@g2), MBRWithin(@g2,@g1); +----------------------+--------------------+ | MBRContains(@g1,@g2) | MBRWithin(@g2,@g1) | +----------------------+--------------------+ | 1 | 1 | +----------------------+--------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlJ¼‚=‚@p M"¾6 SET @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'); mysql> SET @g2 = ST_GeomFromText('Point(1 1)'); mysql> SELECT MBRCovers(@g1,@g2), MBRCoveredby(@g1,@g2); +--------------------+-----------------------+ | MBRCovers(@g1,@g2) | MBRCoveredby(@g1,@g2) | +--------------------+-----------------------+ | 1 | 0 | +--------------------+-----------------------+ mysql> SELECT MBRCovers(@g2,@g1), MBRCoveredby(@g2,@g1); +--------------------+-----------------------+ | MBRCovers(@g2,@g1) | MBRCoveredby(@g2,@g1) | +--------------------+-----------------------+ | 0 | 1 | +--------------------+-----------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlJg‚@xÇ�N"¾6IMBRCOVERS MBRCovers(g1, g2) Returns 1 or 0 to indicate whether the minimum bounding rectangle of g1 covers the minimum bounding rectangle of g2. This tests the opposite relationship as MBRCoveredBy(). See the description of MBRCoveredBy() for examples. MBRCovers() handles its arguments as follows: o If either argument is NULL or an empty geometry, the return value is NULL. o If either argument is not a syntactically well-formed geometry byte string, an ER_GIS_INVALID_DATA error occurs. o Otherwise, the return value is non-NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlp� ýc¤,{uÓpÐ Ò'( ¤ÌE¿7?|€Ü?8ÙÚ"infimum supremum@JMAKE_SET G@JMASTER_POS_WAIT H@ JMATCH AGAINST I@(JMAX J@0JMBR DEFINITION K@8JMBRCONTAINS L@@JMBRCOVEREDBY M@HJMBRCOVERS N@PJMBRDISJOINT O@XJMBREQUAL P@`JMBREQUALS Q@hJMBRINTERSECTS R@pJMBROVERLAPS S@xJMBRTOUCHES T@€JMBRWITHIN U@ˆJMD5 V@�JMEDIUMBLOB W@˜JMEDIUMINT X@ JMEDIUMTEXT Y@¨JMERGE Z@°JMICROSECOND [@¸JMID \@ÀJMIN ]@ÈJMINUTE ^@ÐJMLINEFROMTEXT _@ØJMLINEFROMWKB `@àJMOD a@èJMONTH b@ðJMONTHNAME c@øJMPOINTFROMTEXT d@JMPOINTFROMWKB e@JMPOLYFROMTEXT f@JMPOLYFROMWKB g@JMULTILINESTRING h@ JMULTIPOINT i@(JMULTIPOLYGON j@0JNAME_CONST k@8JNOT BETWEEN l@@JNOT IN m@HJNOT LIKE n@PJNOT REGEXP o@XJNOW p@`JNULLIF q@hJNUMGEOMETRIES r@pJNUMINTERIORRINGS s@xJNUMPOINTS t@€JOCT u@ˆJOCTET_LENGTH v@�JOLD_PASSWORD w@˜JOPEN x@ JOPTIMIZE TABLE y@¨JOR z@°JORD {@¸JOVERLAPS |@ÀJPASSWORD }@ÈJPERIOD_ADD ~@ÐJPERIOD_DIFF @ØJPI €@àJPOINT �@èJPOINTFROMTEXT ‚@ðJPOINTFROMWKB ƒ@øJPOINTN „@JPOLYFROMTEXT …@JPOLYFROMWKB †@JPOLYGON ‡@JPOSITION ˆ@ JPOW ‰@(JPOWER Š@0JPREPARE ‹@8JPROCEDURE ANALYSE Œ@@JPURGE BINARY LOGS �@HJQUARTER Ž@PJQUOTE �@XJRADIANS �@`JRAND ‘@hJRANDOM_BYTES ’@pJREGEXP “@xJRELEASE_ALL_LOCKS ”@€JRELEASE_LOCK •@ˆJRENAME TABLE –@�JRENAME USER —@˜JREPAIR TABLE ˜@ JREPEAT FUNCTION ™@¨JREPEAT LOOP š@°JREPLACE ›@¸JREPLACE FUNCTION œ@ÀJRESET �@ÈJRESET MASTER ž@ÐJRESET SLAVE Ÿ@ØJRESIGNAL  @àJRETURN ¡@èJREVERSE ¢@ðJREVOKE £@øJRIGHT ¤@JROUND ¥@JROW_COUNT ¦@JRPAD §@JRTRIM ¨@ JSAVEPOINT ©@(JSCHEMA ª@0JSECOND «@8JSEC_TO_TIME ¬@@JSELECT ­@HJSESSION_USER ®@PJSET ¯@XJSET CHARACTER SET °@`JSET DATA TYPE ±@hJSET GLOBAL SQL_SLAVE_SKIP_COUNTER ²@pJSET NAMES ³@xJSET PASSWORD ´@€JSET SQL_LOG_BIN µ@ˆJSHA1 ¶@�JSHA2 ·@˜JSHOW ¸@ JSHOW BINARY LOGS ¹@¨JSHOW BINLOG EVENTS º@°JSHOW CHARACTER SET »@¸JSHOW COLLATION ¼@ÀJSHOW COLUMNS ½@ÈJSHOW CREATE DATABASE ¾@ÐJSHOW CREATE EVENT ¿@ØJSHOW CREATE FUNCTION À@àJSHOW CREATE PROCEDURE Á@èJSHOW CREATE TABLE Â@ðJSHOW CREATE TRIGGER Ã@øJSHOW CREATE USER Ä@JSHOW CREATE VIEW Å@JSHOW DATABASES Æ@JSHOW ENGINE Ç@JSHOW ENGINES È@ JSHOW ERRORS É@(JSHOW EVENTS Ê@0JSHOW FUNCTION CODE Ë@8JSHOW FUNCTION STATUS Ì@@JSHOW GRANTS Í@HJSHOW INDEX Î@PJSHOW MASTER STATUS Ï@XJSHOW OPEN TABLES Ð@`JSHOW PLUGINS Ñ@hJSHOW PRIVILEGES Ò@pJSHOW PROCEDURE CODE Ó@xJSHOW PROCEDURE STATUS Ô@€JSHOW PROCESSLIST Õ@ˆJSHOW PROFILE Ö@�JSHOW PROFILES ×@˜JSHOW RELAYLOG EVENTS Ø@ JSHOW SLAVE HOSTS Ù@¨JSHOW SLAVE STATUS Ú@°JSHOW STATUS Û@¸JSHOW TABLE STATUS Ü@ÀJSHOW TABLES Ý@ÈJSHOW TRIGGERS Þ@ÐJSHOW VARIABLES ß@ØJSHOW WARNINGS à@àJSHUTDOWN á@èJSIGN â@ðJSIGNAL ã@øJSIN ä@JSLEEP å@JSMALLINT æ@JSOUNDEX ç@JSOUNDS LIKE è@ JSPACE é@(JSPATIAL ê@0JSQRT ë@8JSRID ì@@JSTART SLAVE í@HJSTART TRANSACTION î@PJSTARTPOINT ï@XJSTD ð@`JSTDDEV ñ@hJSTDDEV_POP ò@pJSTDDEV_SAMP ó@xJSTOP SLAVE ô@€JSTRCMP õ@ˆJSTR_TO_DATE ö@�JST_AREA ÷@˜JST_ASBINARY ø@ JST_ASGEOJSON ù@¨JST_ASTEXT ú@°JST_BUFFER û@¸JST_BUFFER_STRATEGY ü@ÀJST_CENTROID ý@ÈJST_CONTAINS þ@ÐJST_CONVEXHULL ÿ@ØJST_CROSSES @àJST_DIFFERENCE @èJST_DIMENSION @ðJST_DISJOINT @øJST_DISTANCE @JST_DISTANCE_SPHERE @JST_ENDPOINT @JST_ENVELOPE @JST_EQUALS @ JST_EXTERIORRING  @(JST_GEOHASH  @0JST_GEOMCOLLFROMTEXT  @8JST_GEOMCOLLFROMWKB  @@JST_GEOMETRYN  @HJST_GEOMETRYTYPE @PJST_GEOMFROMGEOJSON @XJST_GEOMFROMTEXT @`JST_GEOMFROMWKB @hJST_INTERIORRINGN @pJST_INTERSECTION @xJST_INTERSECTS @€JST_ISCLOSED @ˆJST_ISEMPTY @�JST_ISSIMPLE @˜JST_ISVALID @ JST_LATFROMGEOHASH @¨JST_LENGTH @°JST_LINEFROMTEXT @¸JST_LINEFROMWKB @ÀJST_LONGFROMGEOHASH @ÈJST_MAKEENVELOPE @ÐJST_MLINEFROMTEXT @ØÁ8ST_MLINEFROMWKB  p=|@JSYSDATE ?@JSYSTEM_USER @@JTAN A@JTEXT B@ JTIME C@(JTIME FUNCTION D@0JTIMEDIFF E@8JTIMESTAMP F@@JTIMESTAMP FUNCTION G@HJTIMESTAMPADD H@PJTIMESTAMPDIFF I@XJTIME_FORMAT J@`JTIME_TO_SEC K@hJTINYBLOB L@pJTINYINT M@xJTINYTEXT N@€JTOUCHES O@ˆJTO_BASE64 P@�JTO_DAYS Q@˜JTO_SECONDS R@ JTRIM S@¨JTRUE FALSE T@°JTRUNCATE U@¸JTRUNCATE TABLE V@ÀJUCASE W@ÈJUNCOMPRESS X@ÐJUNCOMPRESSED_LENGTH Y@ØJUNHEX Z@àJUNINSTALL PLUGIN [@èJUNION \@ðJUNIX_TIMESTAMP ]@øJUPDATE ^@JUPDATEXML _@JUPPER `@JUSE a@JUSER b@ JUTC_DATE c@(JUTC_TIME d@0JUTC_TIMESTAMP e@8JUUID f@@JUUID_SHORT g@HJVALIDATE_PASSWORD_STRENGTH h@PJVALUES i@XJVARBINARY j@`JVARCHAR k@hJVARIANCE l@pJVAR_POP m@xJVAR_SAMP n@€JVERSION o@ˆJWAIT_FOR_EXECUTED_GTID_SET p@�JWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS q@˜JWEEK r@ JWEEKDAY s@¨JWEEKOFYEAR t@°JWEIGHT_STRING u@¸JWHILE v@ÀJWITHIN w@ÈJWKT DEFINITION x@ÐJX y@ØJXA z@àJXOR {@èJY |@ðJYEAR }@øJYEAR DATA TYPE ~@JYEARWEEK @J^ €@J| �@ãè~ ‚p̤|T,Ü´Œd< ì Ä œ tL$üÔ¬„\cŸû~"!Ò>y@&AÃE¿;�€ :[infimum supremumJë€@’O"¾6VMBRDISJOINT MBRDisjoint(g1, g2) Returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometries g1 and g2 are disjoint (do not intersect). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlJÕ€@|P"¾6cMBREQUAL MBREqual(g1, g2) Returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometries g1 and g2 are the same. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlJÖ€@ }Q"¾6pMBREQUALS MBREquals(g1, g2) Returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometries g1 and g2 are the same. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlJ×€@(~R"¾6}MBRINTERSECTS MBRIntersects(g1, g2) Returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometries g1 and g2 intersect. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlJ‰�@00S"¾6ŠMBROVERLAPS MBROverlaps(g1, g2) Two geometries spatially overlap if they intersect and their intersection results in a geometry of the same dimension but not equal to either of the given geometries. This function returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometries g1 and g2 overlap. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlJŠ�@82T"¾6—MBRTOUCHES MBRTouches(g1, g2) Two geometries spatially touch if their interiors do not intersect, but the boundary of one of the geometries intersects either the boundary or the interior of the other. This function returns 1 or 0 to indicate whether the minimum bounding rectangles of the two geometries g1 and g2 touch. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.htmlJš��@@UU"¾6¤MBRWITHIN MBRWithin(g1, g2) Returns 1 or 0 to indicate whether the minimum bounding rectangle of g1 is within the minimum bounding rectangle of g2. This tests the opposite relationship as MBRContains(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html mysql> SET @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'); mysql> SET @g2 = ST_GeomFromText('Polygon((0 0,0 5,5 5,5 0,0 0))'); mysql> SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1); +--------------------+--------------------+ | MBRWithin(@g1,@g2) | MBRWithin(@g2,@g1) | +--------------------+--------------------+ | 1 | 0 | +--------------------+--------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html@Lº�@H£V"¾6±MD5 Syntax: MD5(str) Calculates an MD5 128-bit checksum for the string. The value is returned as a string of 32 hexadecimal digits, or NULL if the argument was NULL. The return value can, for example, be used as a hash key. See the notes at the beginning of this section about storing hash values efficiently. The return value is a string in the connection character set. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html mysql> SELECT MD5('testing'); -> 'ae2b1fca515949e5d54fb22b8ed95575' http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html@�@P¤W"¾6¾MEDIUMBLOB MEDIUMBLOB A BLOB column with a maximum length of 16,777,215 (224 − 1) bytes. Each MEDIUMBLOB value is stored using a 3-byte length prefix that indicates the number of bytes in the value. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.htmlAÕ€@XsX"¾6ËMEDIUMINT MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] A medium-sized integer. The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html@“�@`1Y"¾6ØMEDIUMTEXT MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name] A TEXT column with a maximum length of 16,777,215 (224 − 1) characters. The effective maximum length is less if the value contains multibyte characters. Each MEDIUMTEXT value is stored using a 3-byte length prefix that indicates the number of bytes in the value. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html@ ‚eƒ@h#Z"¾6åMERGE "The MERGE storage engine, also known as the MRG_MyISAM engine, is a collection of identical MyISAM tables that can be used as one. "Identical" means that all tables have identical column data types and index information. You cannot merge MyISAM tables in which the columns are listed in a different order, do not have exactly the same data types in corresponding columns, or have the indexes in different order. However, any or all of the MyISAM tables can be compressed with myisampack. See http://dev.mysql.com/doc/refman/5.7/en/myisampack.html. Differences between tables such as these do not matter: o Names of corresponding columns and indexes can differ. o Comments for tables, columns, and indexes can differ. o Table options such as AVG_ROW_LENGTH, MAX_ROWS, or PACK_KEYS can differ. URL: http://dev.mysql.com/doc/refman/5.7/en/merge-storage-engine.html mysql> CREATE TABLE t1 ( -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> message CHAR(20)) ENGINE=MyISAM; mysql> CREATE TABLE t2 ( -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> message CHAR(20)) ENGINE=MyISAM; mysql> INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1'); mysql> INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2'); mysql> CREATE TABLE total ( -> a INT NOT NULL AUTO_INCREMENT, -> message CHAR(20), INDEX(a)) -> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST; http://dev.mysql.com/doc/refman/5.7/en/merge-storage-engine.htmlC‡€Ô€@pû["¾6òMICROSECOND Syntax: MICROSECOND(expr) Returns the microseconds from the time or datetime expression expr as a number in the range from 0 to 999999. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT MICROSECOND('12:00:00.123456'); -> 123456 mysql> SELECT MICROSECOND('2019-12-31 23:59:59.000010'); -> 10 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html<˜€@x1\"¾6ÿMID #Syntax: MID(str,pos,len) MID(str,pos,len) is a synonym for SUBSTRING(str,pos,len). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html>oâ�@€ì]"¾6 MIN Syntax: MIN([DISTINCT] expr) Returns the minimum value of expr. MIN() may take a string argument; in such cases, it returns the minimum string value. See http://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html. The DISTINCT keyword can be used to find the minimum of the distinct values of expr, however, this produces the same result as omitting DISTINCT. If there are no matching rows, MIN() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html mysql> SELECT student_name, MIN(test_score), MAX(test_score) FROM student GROUP BY student_name; http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.htmlC:”€@ˆn^"¾6MINUTE Syntax: MINUTE(time) Returns the minute for time, in the range 0 to 59. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT MINUTE('2008-02-03 10:05:03'); -> 5 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html=7�@�Ñ_"¾6&MLINEFROMTEXT )MLineFromText(wkt[, srid]), MultiLineStringFromText(wkt[, srid]) ST_MLineFromText(), ST_MultiLineStringFromText(), MLineFromText(), and MultiLineStringFromText() are synonyms. For more information, see the description of ST_MLineFromText(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=0�@˜Ë`"¾63MLINEFROMWKB (MLineFromWKB(wkb[, srid]), MultiLineStringFromWKB(wkb[, srid]) ST_MLineFromWKB(), ST_MultiLineStringFromWKB(), MLineFromWKB(), and MultiLineStringFromWKB() are synonyms. For more information, see the description of ST_MLineFromWKB(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlB˜€§€@ Þa"¾6@MOD Syntax: MOD(N,M), N % M, N MOD M Modulo operation. Returns the remainder of N divided by M. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT MOD(234, 10); -> 4 mysql> SELECT 253 % 7; -> 1 mysql> SELECT MOD(29,9); -> 2 mysql> SELECT 29 MOD 9; -> 2 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlC0û€@¨Ëb"¾6MMONTH Syntax: MONTH(date) Returns the month for date, in the range 1 to 12 for January to December, or 0 for dates such as '0000-00-00' or '2008-00-00' that have a zero month part. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT MONTH('2008-02-03'); -> 2 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC=.�@° c"¾6ZMONTHNAME Syntax: MONTHNAME(date) Returns the full name of the month for date. The language used for the name is controlled by the value of the lc_time_names system variable (http://dev.mysql.com/doc/refman/5.7/en/locale-support.html). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT MONTHNAME('2008-02-03'); -> 'February' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html=,�@¸Æd"¾6gMPOINTFROMTEXT )MPointFromText(wkt[, srid]), MultiPointFromText(wkt[, srid]) ST_MPointFromText(), ST_MultiPointFromText(), MPointFromText(), and MultiPointFromText() are synonyms. For more information, see the description of ST_MPointFromText(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=%�@À¿e"¾6tMPOINTFROMWKB (MPointFromWKB(wkb[, srid]), MultiPointFromWKB(wkb[, srid]) ST_MPointFromWKB(), ST_MultiPointFromWKB(), MPointFromWKB(), and MultiPointFromWKB() are synonyms. For more information, see the description of ST_MPointFromWKB(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html=.�@ÈÈf"¾6�MPOLYFROMTEXT )MPolyFromText(wkt[, srid]), MultiPolygonFromText(wkt[, srid]) ST_MPolyFromText(), ST_MultiPolygonFromText(), MPolyFromText(), and MultiPolygonFromText() are synonyms. For more information, see the description of ST_MPolyFromText(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html='�@ÐÁg"¾6ŽMPOLYFROMWKB (MPolyFromWKB(wkb[, srid]), MultiPolygonFromWKB(wkb[, srid]) ST_MPolyFromWKB(), ST_MultiPolygonFromWKB(), MPolyFromWKB(), and MultiPolygonFromWKB() are synonyms. For more information, see the description of ST_MPolyFromWKB(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlHÁ€@Øfh"¾6›MULTILINESTRING MultiLineString(ls [, ls] ...) Constructs a MultiLineString value using LineString or WKB LineString arguments. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.htmlH®€@àSi"¾6¨MULTIPOINT MultiPoint(pt [, pt2] ...) Constructs a MultiPoint value using Point or WKB Point arguments. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.htmlHÁ€@èfj"¾6µMULTIPOLYGON MultiPolygon(poly [, poly] ...) Constructs a MultiPolygon value from a set of Polygon or WKB Polygon arguments. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.htmlCh�@ðk"¾6ÂNAME_CONST Syntax: NAME_CONST(name,value) Returns the given value. When used to produce a result set column, NAME_CONST() causes the column to have the given name. The arguments should be constants. mysql> SELECT NAME_CONST('myname', 14); +--------+ | myname | +--------+ | 14 | +--------+ URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html@¢€@øÆl"¾6ÏNOT BETWEEN Syntax: expr NOT BETWEEN min AND max This is the same as NOT (expr BETWEEN min AND max). URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.htmlp0«)P"h-B c>yÃ…»ªBA@Bo;E¿;Á€:infimum supremum@˜€@5m"¾6ÜNOT IN Syntax: expr NOT IN (value,...) This is the same as NOT (expr IN (value,...)). URL: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.htmlGÁ€@en"¾6éNOT LIKE #Syntax: expr NOT LIKE pat [ESCAPE 'escape_char'] This is the same as NOT (expr LIKE pat [ESCAPE 'escape_char']). URL: http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html2–€@ %o"¾6öNOT REGEXP #Syntax: expr NOT REGEXP pat, expr NOT RLIKE pat This is the same as NOT (expr REGEXP pat). URL: http://dev.mysql.com/doc/refman/5.7/en/regexp.html http://dev.mysql.com/doc/refman/5.7/en/regexp.htmlCpØ�@(èp"¾6NOW Syntax: NOW([fsp]) Returns the current date and time as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or numeric context. The value is expressed in the session time zone. If the fsp argument is given to specify a fractional seconds precision from 0 to 6, the return value includes a fractional seconds part of that many digits. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT NOW(); -> '2007-12-15 23:50:26' mysql> SELECT NOW() + 0; -> 20071215235026.000000 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlBS(�@0q"¾6NULLIF Syntax: NULLIF(expr1,expr2) Returns NULL if expr1 = expr2 is true, otherwise returns expr1. This is the same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END. The return value has the same type as the first argument. URL: http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html mysql> SELECT NULLIF(1,1); -> NULL mysql> SELECT NULLIF(1,2); -> 1 http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.htmlUæ€@8˜r"¾6NUMGEOMETRIES NumGeometries(gc) ST_NumGeometries() and NumGeometries() are synonyms. For more information, see the description of ST_NumGeometries(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.htmlJé€@@�s"¾6*NUMINTERIORRINGS NumInteriorRings(poly) ST_NumInteriorRings() and NumInteriorRings() are synonyms. For more information, see the description of ST_NumInteriorRings(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.htmlM΀@Hxt"¾67NUMPOINTS NumPoints(ls) ST_NumPoints() and NumPoints() are synonyms. For more information, see the description of ST_NumPoints(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html<'ó€@P³u"¾6DOCT #Syntax: OCT(N) Returns a string representation of the octal value of N, where N is a longlong (BIGINT) number. This is equivalent to CONV(N,10,8). Returns NULL if N is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT OCT(12); -> '14' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<‰€@X"v"¾6QOCTET_LENGTH #Syntax: OCTET_LENGTH(str) OCTET_LENGTH() is a synonym for LENGTH(). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html@Ç‚@`dw"¾6^OLD_PASSWORD Syntax: OLD_PASSWORD(str) OLD_PASSWORD() was added when the implementation of PASSWORD() was changed in MySQL 4.1 to improve security. OLD_PASSWORD() returned the value of the pre-4.1 implementation of PASSWORD() as a string, and was intended to permit you to reset passwords for any pre-4.1 clients that need to connect to your MySQL server without locking them out. See http://dev.mysql.com/doc/refman/5.7/en/password-hashing.html. Passwords that use the pre-4.1 hashing method are less secure than passwords that use the native password hashing method. Support for pre-4.1 passwords was removed in MySQL 5.7.5, as was OLD_PASSWORD(). URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html0΀@h[x"¾6kOPEN Syntax: OPEN cursor_name This statement opens a previously declared cursor. For an example, see http://dev.mysql.com/doc/refman/5.7/en/cursors.html. URL: http://dev.mysql.com/doc/refman/5.7/en/open.html http://dev.mysql.com/doc/refman/5.7/en/open.html:�@p §y"¾6xOPTIMIZE TABLE $Syntax: OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [, tbl_name] ... OPTIMIZE TABLE reorganizes the physical storage of table data and associated index data, to reduce storage space and improve I/O efficiency when accessing the table. The exact changes made to each table depend on the storage engine used by that table. Use OPTIMIZE TABLE in these cases, depending on the type of table: o After doing substantial insert, update, or delete operations on an InnoDB table that has its own .ibd file because it was created with the innodb_file_per_table option enabled. The table and indexes are reorganized, and disk space can be reclaimed for use by the operating system. o After doing substantial insert, update, or delete operations on columns that are part of a FULLTEXT index in an InnoDB table. Set the configuration option innodb_optimize_fulltext_only=1 first. To keep the index maintenance period to a reasonable time, set the innodb_ft_num_word_optimize option to specify how many words to update in the search index, and run a sequence of OPTIMIZE TABLE statements until the search index is fully updated. o After deleting a large part of a MyISAM or ARCHIVE table, or making many changes to a MyISAM or ARCHIVE table with variable-length rows (tables that have VARCHAR, VARBINARY, BLOB, or TEXT columns). Deleted rows are maintained in a linked list and subsequent INSERT operations reuse old row positions. You can use OPTIMIZE TABLE to reclaim the unused space and to defragment the data file. After extensive changes to a table, this statement may also improve performance of statements that use the table, sometimes significantly. This statement requires SELECT and INSERT privileges for the table. OPTIMIZE TABLE works for InnoDB, MyISAM, and ARCHIVE tables. OPTIMIZE TABLE is also supported for dynamic columns of in-memory NDB tables. It does not work for fixed-width columns of in-memory tables, nor does it work for Disk Data tables. The performance of OPTIMIZE on NDB Cluster tables can be tuned using --ndb_optimization_delay, which controls the length of time to wait between processing batches of rows by OPTIMIZE TABLE. For more information, see Previous NDB Cluster Issues Resolved in NDB Cluster 7.3 (http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-limitations-resol ved.html). For NDB Cluster tables, OPTIMIZE TABLE can be interrupted by (for example) killing the SQL thread performing the OPTIMIZE operation. By default, OPTIMIZE TABLE does not work for tables created using any other storage engine and returns a result indicating this lack of support. You can make OPTIMIZE TABLE work for other storage engines by starting mysqld with the --skip-new option. In this case, OPTIMIZE TABLE is just mapped to ALTER TABLE. This statement does not work with views. OPTIMIZE TABLE is supported for partitioned tables. For information about using this statement with partitioned tables and table partitions, see http://dev.mysql.com/doc/refman/5.7/en/partitioning-maintenance.html. By default, the server writes OPTIMIZE TABLE statements to the binary log so that they replicate to replication slaves. To suppress logging, specify the optional NO_WRITE_TO_BINLOG keyword or its alias LOCAL. URL: http://dev.mysql.com/doc/refman/5.7/en/optimize-table.html http://dev.mysql.com/doc/refman/5.7/en/optimize-table.html=¸€G�@x™z"¾6…OR Syntax: OR, || Logical OR. When both operands are non-NULL, the result is 1 if any operand is nonzero, and 0 otherwise. With a NULL operand, the result is 1 if the other operand is nonzero, and NULL otherwise. If both operands are NULL, the result is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/logical-operators.html mysql> SELECT 1 OR 1; -> 1 mysql> SELECT 1 OR 0; -> 1 mysql> SELECT 0 OR 0; -> 0 mysql> SELECT 0 OR NULL; -> NULL mysql> SELECT 1 OR NULL; -> 1 http://dev.mysql.com/doc/refman/5.7/en/logical-operators.html<&É�@€ˆ{"¾6’ORD #Syntax: ORD(str) If the leftmost character of the string str is a multibyte character, returns the code for that character, calculated from the numeric values of its constituent bytes using this formula: (1st byte code) + (2nd byte code * 256) + (3rd byte code * 256^2) ... If the leftmost character is not a multibyte character, ORD() returns the same value as the ASCII() function. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT ORD('2'); -> 50 http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlJË€@ˆr|"¾6ŸOVERLAPS Overlaps(g1, g2) MBROverlaps() and Overlaps() are synonyms. For more information, see the description of MBROverlaps(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html@ñ‚@�Ž}"¾6¬PASSWORD Syntax: PASSWORD(str) *Note*: This function is deprecated as of MySQL 5.7.6 and will be removed in a future MySQL release. Returns a hashed password string calculated from the cleartext password str. The return value is a string in the connection character set, or NULL if the argument is NULL. This function is the SQL interface to the algorithm used by the server to encrypt MySQL passwords for storage in the mysql.user grant table. The old_passwords system variable controls the password hashing method used by the PASSWORD() function. It also influences password hashing performed by CREATE USER and GRANT statements that specify a password using an IDENTIFIED BY clause. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.htmlC6ù€@˜Ï~"¾6¹PERIOD_ADD Syntax: PERIOD_ADD(P,N) Adds N months to period P (in the format YYMM or YYYYMM). Returns a value in the format YYYYMM. Note that the period argument P is not a date value. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT PERIOD_ADD(200801,2); -> 200803 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC8�@ ç"¾6ÆPERIOD_DIFF Syntax: PERIOD_DIFF(P1,P2) Returns the number of months between periods P1 and P2. P1 and P2 should be in the format YYMM or YYYYMM. Note that the period arguments P1 and P2 are not date values. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT PERIOD_DIFF(200802,200703); -> 11 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlBqê€@¨ú€"¾6ÓPI Syntax: PI() Returns the value of Ï€ (pi). The default number of decimal places displayed is seven, but MySQL uses the full double-precision value internally. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT PI(); -> 3.141593 mysql> SELECT PI()+0.000000000000000000; -> 3.141592653589793116 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlH‡€@°,�"¾6àPOINT Point(x, y) Constructs a Point using its coordinates. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.html=×€@¸q‚"¾6íPOINTFROMTEXT )PointFromText(wkt[, srid]) ST_PointFromText() and PointFromText() are synonyms. For more information, see the description of ST_PointFromText(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=Ó€@Àmƒ"¾6úPOINTFROMWKB (PointFromWKB(wkb[, srid]) ST_PointFromWKB() and PointFromWKB() are synonyms. For more information, see the description of ST_PointFromWKB(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlMÅ€@Èo„"¾6POINTN PointN(ls, N) ST_PointN() and PointN() are synonyms. For more information, see the description of ST_PointN(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html=�@е…"¾6POLYFROMTEXT )PolyFromText(wkt[, srid]), PolygonFromText(wkt[, srid]) ST_PolyFromText(), ST_PolygonFromText(), PolyFromText(), and PolygonFromText() are synonyms. For more information, see the description of ST_PolyFromText(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=�@ØÆS†"¾6!POLYFROMWKB (PolyFromWKB(wkb[, srid]), PolygonFromWKB(wkb[, srid]) ST_PolyFromWKB(), ST_PolygonFromWKB(), PolyFromWKB(), and PolygonFromWKB() are synonyms. For more information, see the description of ST_PolyFromWKB(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlp0õ(? kAc…»ªBo;¸±�=BAC²™E¿:p€7Ïinfimum supremumH5�@Ú‡"¾6.POLYGON Polygon(ls [, ls] ...) Constructs a Polygon value from a number of LineString or WKB LineString arguments. If any argument does not represent a LinearRing (that is, not a closed and simple LineString), the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-mysql-specific-functions.html<¢€@;ˆ"¾6;POSITION #Syntax: POSITION(substr IN str) POSITION(substr IN str) is a synonym for LOCATE(substr,str). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlBN�€@ y‰"¾6HPOW Syntax: POW(X,Y) Returns the value of X raised to the power of Y. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT POW(2,2); -> 4 mysql> SELECT POW(2,-2); -> 0.25 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlB{@(Š"¾6UPOWER Syntax: POWER(X,Y) This is a synonym for POW(). URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html3Y‰@0 é‹"¾6bPREPARE %Syntax: PREPARE stmt_name FROM preparable_stmt The PREPARE statement prepares a SQL statement and assigns it a name, stmt_name, by which to refer to the statement later. The prepared statement is executed with EXECUTE and released with DEALLOCATE PREPARE. For examples, see http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.h tml. Statement names are not case-sensitive. preparable_stmt is either a string literal or a user variable that contains the text of the SQL statement. The text must represent a single statement, not multiple statements. Within the statement, ? characters can be used as parameter markers to indicate where data values are to be bound to the query later when you execute it. The ? characters should not be enclosed within quotation marks, even if you intend to bind them to string values. Parameter markers can be used only where data values should appear, not for SQL keywords, identifiers, and so forth. If a prepared statement with the given name already exists, it is deallocated implicitly before the new statement is prepared. This means that if the new statement contains an error and cannot be prepared, an error is returned and no statement with the given name exists. The scope of a prepared statement is the session within which it is created, which as several implications: o A prepared statement created in one session is not available to other sessions. o When a session ends, whether normally or abnormally, its prepared statements no longer exist. If auto-reconnect is enabled, the client is not notified that the connection was lost. For this reason, clients may wish to disable auto-reconnect. See http://dev.mysql.com/doc/refman/5.7/en/c-api-auto-reconnect.html. o A prepared statement created within a stored program continues to exist after the program finishes executing and can be executed outside the program later. o A statement prepared in stored program context cannot refer to stored procedure or function parameters or local variables because they go out of scope when the program ends and would be unavailable were the statement to be executed later outside the program. As a workaround, refer instead to user-defined variables, which also have session scope; see http://dev.mysql.com/doc/refman/5.7/en/user-variables.html. URL: http://dev.mysql.com/doc/refman/5.7/en/prepare.html http://dev.mysql.com/doc/refman/5.7/en/prepare.html=ì…@8†Œ"¾6oPROCEDURE ANALYSE !Syntax: ANALYSE([max_elements[,max_memory]]) *Note*: PROCEDURE ANALYSE() is deprecated as of MySQL 5.7.18, and is removed in MySQL 8.0. ANALYSE() examines the result from a query and returns an analysis of the results that suggests optimal data types for each column that may help reduce table sizes. To obtain this analysis, append PROCEDURE ANALYSE to the end of a SELECT statement: SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]]) For example: SELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000); The results show some statistics for the values returned by the query, and propose an optimal data type for the columns. This can be helpful for checking your existing tables, or after importing new data. You may need to try different settings for the arguments so that PROCEDURE ANALYSE() does not suggest the ENUM data type when it is not appropriate. The arguments are optional and are used as follows: o max_elements (default 256) is the maximum number of distinct values that ANALYSE() notices per column. This is used by ANALYSE() to check whether the optimal data type should be of type ENUM; if there are more than max_elements distinct values, then ENUM is not a suggested type. o max_memory (default 8192) is the maximum amount of memory that ANALYSE() should allocate per column while trying to find all distinct values. A PROCEDURE clause is not permitted in a UNION statement. URL: http://dev.mysql.com/doc/refman/5.7/en/procedure-analyse.html http://dev.mysql.com/doc/refman/5.7/en/procedure-analyse.html=V+ƒ@@�"¾6|PURGE BINARY LOGS %Syntax: PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr } The binary log is a set of files that contain information about data modifications made by the MySQL server. The log consists of a set of binary log files, plus an index file (see http://dev.mysql.com/doc/refman/5.7/en/binary-log.html). The PURGE BINARY LOGS statement deletes all the binary log files listed in the log index file prior to the specified log file name or date. BINARY and MASTER are synonyms. Deleted log files also are removed from the list recorded in the index file, so that the given log file becomes the first in the list. This statement has no effect if the server was not started with the --log-bin option to enable binary logging. URL: http://dev.mysql.com/doc/refman/5.7/en/purge-binary-logs.html PURGE BINARY LOGS TO 'mysql-bin.010'; PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26'; http://dev.mysql.com/doc/refman/5.7/en/purge-binary-logs.htmlC2¡€@HsŽ"¾6‰QUARTER Syntax: QUARTER(date) Returns the quarter of the year for date, in the range 1 to 4. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT QUARTER('2008-04-01'); -> 2 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html<`Ñ�@PÊ�"¾6–QUOTE #Syntax: QUOTE(str) Quotes a string to produce a result that can be used as a properly escaped data value in an SQL statement. The string is returned enclosed by single quotation marks and with each instance of backslash (\), single quote ('), ASCII NUL, and Control+Z preceded by a backslash. If the argument is NULL, the return value is the word "NULL" without enclosing single quotation marks. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT QUOTE('Don\'t!'); -> 'Don\'t!' mysql> SELECT QUOTE(NULL); -> NULL http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlB6Ä€@Xš�"¾6£RADIANS Syntax: RADIANS(X) Returns the argument X, converted from degrees to radians. (Note that Ï€ radians equals 180 degrees.) URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT RADIANS(90); -> 1.5707963267949 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlB³„ñƒ@` C‘"¾6°RAND Syntax: RAND([N]) Returns a random floating-point value v in the range 0 <= v < 1.0. To obtain a random integer R in the range i <= R < j, use the expression FLOOR(i + RAND() * (j − i)). For example, to obtain a random integer in the range the range 7 <= R < 12, use the following statement: SELECT FLOOR(7 + (RAND() * 5)); If an integer argument N is specified, it is used as the seed value: o With a constant initializer argument, the seed is initialized once when the statement is prepared, prior to execution. o With a nonconstant initializer argument (such as a column name), the seed is initialized with the value for each invocation of RAND(). One implication of this behavior is that for equal argument values, RAND(N) returns the same value each time, and thus produces a repeatable sequence of column values. In the following example, the sequence of values produced by RAND(3) is the same both places it occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> CREATE TABLE t (i INT); Query OK, 0 rows affected (0.42 sec) mysql> INSERT INTO t VALUES(1),(2),(3); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT i, RAND() FROM t; +------+------------------+ | i | RAND() | +------+------------------+ | 1 | 0.61914388706828 | | 2 | 0.93845168309142 | | 3 | 0.83482678498591 | +------+------------------+ 3 rows in set (0.00 sec) mysql> SELECT i, RAND(3) FROM t; +------+------------------+ | i | RAND(3) | +------+------------------+ | 1 | 0.90576975597606 | | 2 | 0.37307905813035 | | 3 | 0.14808605345719 | +------+------------------+ 3 rows in set (0.00 sec) mysql> SELECT i, RAND() FROM t; +------+------------------+ | i | RAND() | +------+------------------+ | 1 | 0.35877890638893 | | 2 | 0.28941420772058 | | 3 | 0.37073435016976 | +------+------------------+ 3 rows in set (0.00 sec) mysql> SELECT i, RAND(3) FROM t; +------+------------------+ | i | RAND(3) | +------+------------------+ | 1 | 0.90576975597606 | | 2 | 0.37307905813035 | | 3 | 0.14808605345719 | +------+------------------+ 3 rows in set (0.01 sec) http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html@Oƒ@hí’"¾6½RANDOM_BYTES Syntax: RANDOM_BYTES(len) This function returns a binary string of len random bytes generated using the random number generator of the SSL library. Permitted values of len range from 1 to 1024. For values outside that range, RANDOM_BYTES() generates a warning and returns NULL. RANDOM_BYTES() can be used to provide the initialization vector for the AES_DECRYPT() and AES_ENCRYPT() functions. For use in that context, len must be at least 16. Larger values are permitted, but bytes in excess of 16 are ignored. RANDOM_BYTES() generates a random value, which makes its result nondeterministic. Consequently, statements that use this function are unsafe for statement-based replication and cannot be stored in the query cache. This function is available as of MySQL 5.7.4. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html2[ƒ¹„@p£“"¾6ÊREGEXP #Syntax: expr REGEXP pat, expr RLIKE pat Returns 1 if the string expr matches the regular expression specified by the pattern pat, 0 otherwise. If either expr or pat is NULL, the return value is NULL. RLIKE is a synonym for REGEXP. The pattern can be an extended regular expression, the syntax for which is discussed in http://dev.mysql.com/doc/refman/5.7/en/regexp.html#regexp-syntax. The pattern need not be a literal string. For example, it can be specified as a string expression or table column. *Note*: Because MySQL uses the C escape syntax in strings (for example, \n to represent the newline character), you must double any \ that you use in your REGEXP arguments. Regular expression operations use the character set and collation of the string expression and pattern arguments when deciding the type of a character and performing the comparison. If the arguments have different character sets or collations, coercibility rules apply as described in http://dev.mysql.com/doc/refman/5.7/en/charset-collation-coercibility.h tml. If either argument is a binary string, the arguments are handled in case-sensitive fashion as binary strings. URL: http://dev.mysql.com/doc/refman/5.7/en/regexp.html mysql> SELECT 'Michael!' REGEXP '.*'; +------------------------+ | 'Michael!' REGEXP '.*' | +------------------------+ | 1 | +------------------------+ mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line'; +---------------------------------------+ | 'new*\n*line' REGEXP 'new\\*.\\*line' | +---------------------------------------+ | 0 | +---------------------------------------+ mysql> SELECT 'a' REGEXP '^[a-d]'; +---------------------+ | 'a' REGEXP '^[a-d]' | +---------------------+ | 1 | +---------------------+ mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A'; +----------------+-----------------------+ | 'a' REGEXP 'A' | 'a' REGEXP BINARY 'A' | +----------------+-----------------------+ | 1 | 0 | +----------------+-----------------------+ http://dev.mysql.com/doc/refman/5.7/en/regexp.html=×€@xq”"¾6×RELEASE_ALL_LOCKS Syntax: RELEASE_ALL_LOCKS() Releases all named locks held by the current session and returns the number of locks released (0 if there were none) URL: http://dev.mysql.com/doc/refman/5.7/en/locking-functions.html http://dev.mysql.com/doc/refman/5.7/en/locking-functions.html=‚@€È¡•"¾6äRELEASE_LOCK Syntax: RELEASE_LOCK(str) Releases the lock named by the string str that was obtained with GET_LOCK(). Returns 1 if the lock was released, 0 if the lock was not established by this thread (in which case the lock is not released), and NULL if the named lock did not exist. The lock does not exist if it was never obtained by a call to GET_LOCK() or if it has previously been released. The DO statement is convenient to use with RELEASE_LOCK(). See [HELP DO]. URL: http://dev.mysql.com/doc/refman/5.7/en/locking-functions.html http://dev.mysql.com/doc/refman/5.7/en/locking-functions.htmlp´c¸±�=²™[¡âêCBDäÐE¿96€ 5­ infimum supremum8’�@'–"¾6ñRENAME TABLE Syntax: RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ... RENAME TABLE renames one or more tables. You must have ALTER and DROP privileges for the original table, and CREATE and INSERT privileges for the new table. For example, to rename a table named old_table to to new_table, use this statement: RENAME TABLE old_table TO new_table; That statement is equivalent to the following ALTER TABLE statement: ALTER TABLE old_table RENAME new_table; RENAME TABLE, unlike ALTER TABLE, can rename multiple tables within a single statement: RENAME TABLE old_table1 TO new_table1, old_table2 TO new_table2, old_table3 TO new_table3; Renaming operations are performed left to right. Thus, to swap two table names, do this (assuming that a table with the intermediary name tmp_table does not already exist): RENAME TABLE old_table TO tmp_table, new_table TO old_table, tmp_table TO new_table; Metadata locks on tables are acquired in name order, which in some cases can make a difference in operation outcome when multiple transactions execute concurrently. See http://dev.mysql.com/doc/refman/5.7/en/metadata-locking.html. To execute RENAME TABLE, there must be no active transactions or tables locked with LOCK TABLES. With the transaction table locking conditions satisfied, the rename operation is done atomically; no other session can access any of the tables while the rename is in progress. If any errors occur during a RENAME TABLE, the statement fails and no changes are made. You can use RENAME TABLE to move a table from one database to another: RENAME TABLE current_db.tbl_name TO other_db.tbl_name; Using this method to move all tables from one database to a different one in effect renames the database (an operation for which MySQL has no single statement), except that the original database continues to exist, albeit with no tables. Like RENAME TABLE, ALTER TABLE ... RENAME can also be used to move a table to a different database. Regardless of the statement used, if the rename operation would move the table to a database located on a different file system, the success of the outcome is platform specific and depends on the underlying operating system calls used to move table files. If a table has triggers, attempts to rename the table into a different database fail with a Trigger in wrong schema (ER_TRG_IN_WRONG_SCHEMA) error. To rename TEMPORARY tables, RENAME TABLE does not work. Use ALTER TABLE instead. RENAME TABLE works for views, except that views cannot be renamed into a different database. Any privileges granted specifically for a renamed table or view are not migrated to the new name. They must be changed manually. RENAME TABLE tbl_name TO new_tbl_name changes internally generated foreign key constraint names and user-defined foreign key constraint names that begin with the string "tbl_name_ibfk_" to reflect the new table name. InnoDB interprets foreign key constraint names that begin with the string "tbl_name_ibfk_" as internally generated names. Foreign key constraint names that point to the renamed table are automatically updated unless there is a conflict, in which case the statement fails with an error. A conflict occurs if the renamed constraint name already exists. In such cases, you must drop and re-create the foreign keys for them to function properly. URL: http://dev.mysql.com/doc/refman/5.7/en/rename-table.html http://dev.mysql.com/doc/refman/5.7/en/rename-table.html7m…@—"¾6þRENAME USER Syntax: RENAME USER old_user TO new_user [, old_user TO new_user] ... The RENAME USER statement renames existing MySQL accounts. An error occurs for old accounts that do not exist or new accounts that already exist. To use RENAME USER, you must have the global CREATE USER privilege, or the UPDATE privilege for the mysql system database. When the read_only system variable is enabled, RENAME USER additionally requires the SUPER privilege. Each account name uses the format described in http://dev.mysql.com/doc/refman/5.7/en/account-names.html. For example: RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1'; The host name part of the account name, if omitted, defaults to '%'. RENAME USER causes the privileges held by the old user to be those held by the new user. However, RENAME USER does not automatically drop or invalidate databases or objects within them that the old user created. This includes stored programs or views for which the DEFINER attribute names the old user. Attempts to access such objects may produce an error if they execute in definer security context. (For information about security context, see http://dev.mysql.com/doc/refman/5.7/en/stored-objects-security.html.) The privilege changes take effect as indicated in http://dev.mysql.com/doc/refman/5.7/en/privilege-changes.html. URL: http://dev.mysql.com/doc/refman/5.7/en/rename-user.html http://dev.mysql.com/doc/refman/5.7/en/rename-user.html8b‡@ ÷˜"¾6 REPAIR TABLE $Syntax: REPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM] REPAIR TABLE repairs a possibly corrupted table, for certain storage engines only. This statement requires SELECT and INSERT privileges for the table. Although normally you should never have to run REPAIR TABLE, if disaster strikes, this statement is very likely to get back all your data from a MyISAM table. If your tables become corrupted often, try to find the reason for it, to eliminate the need to use REPAIR TABLE. See http://dev.mysql.com/doc/refman/5.7/en/crashing.html, and http://dev.mysql.com/doc/refman/5.7/en/myisam-table-problems.html. REPAIR TABLE checks the table to see whether an upgrade is required. If so, it performs the upgrade, following the same rules as CHECK TABLE ... FOR UPGRADE. See [HELP CHECK TABLE], for more information. *Important*: o Make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss. Possible causes include but are not limited to file system errors. See http://dev.mysql.com/doc/refman/5.7/en/backup-and-recovery.html. o If the server crashes during a REPAIR TABLE operation, it is essential after restarting it that you immediately execute another REPAIR TABLE statement for the table before performing any other operations on it. In the worst case, you might have a new clean index file without information about the data file, and then the next operation you perform could overwrite the data file. This is an unlikely but possible scenario that underscores the value of making a backup first. o In the event that a table on the master becomes corrupted and you run REPAIR TABLE on it, any resulting changes to the original table are not propagated to slaves. URL: http://dev.mysql.com/doc/refman/5.7/en/repair-table.html http://dev.mysql.com/doc/refman/5.7/en/repair-table.html SELECT REPEAT('MySQL', 3); -> 'MySQLMySQLMySQL' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html2…�ü�@0š"¾6%REPEAT LOOP Syntax: [begin_label:] REPEAT statement_list UNTIL search_condition END REPEAT [end_label] The statement list within a REPEAT statement is repeated until the search_condition expression is true. Thus, a REPEAT always enters the loop at least once. statement_list consists of one or more statements, each terminated by a semicolon (;) statement delimiter. A REPEAT statement can be labeled. For the rules regarding label use, see [HELP labels]. URL: http://dev.mysql.com/doc/refman/5.7/en/repeat.html mysql> delimiter // mysql> CREATE PROCEDURE dorepeat(p1 INT) BEGIN SET @x = 0; REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT; END // Query OK, 0 rows affected (0.00 sec) mysql> CALL dorepeat(1000)// Query OK, 0 rows affected (0.00 sec) mysql> SELECT @x// +------+ | @x | +------+ | 1001 | +------+ 1 row in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/repeat.html3¶‹@8 F›"¾62REPLACE Syntax: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] {VALUES | VALUE} (value_list) [, (value_list)] ... REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] SET assignment_list REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] SELECT ... value: {expr | DEFAULT} value_list: value [, value] ... assignment: col_name = value assignment_list: assignment [, assignment] ... REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted. See [HELP INSERT]. REPLACE is a MySQL extension to the SQL standard. It either inserts, or deletes and inserts. For another MySQL extension to standard SQL---that either inserts or updates---see http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html. DELAYED inserts and replaces were deprecated in MySQL 5.6. In MySQL 5.7, DELAYED is not supported. The server recognizes but ignores the DELAYED keyword, handles the replace as a nondelayed replace, and generates an ER_WARN_LEGACY_SYNTAX_CONVERTED warning. ("REPLACE DELAYED is no longer supported. The statement was converted to REPLACE.") The DELAYED keyword will be removed in a future release. *Note*: REPLACE makes sense only if a table has a PRIMARY KEY or UNIQUE index. Otherwise, it becomes equivalent to INSERT, because there is no index to be used to determine whether a new row duplicates another. Values for all columns are taken from the values specified in the REPLACE statement. Any missing columns are set to their default values, just as happens for INSERT. You cannot refer to values from the current row and use them in the new row. If you use an assignment such as SET col_name = col_name + 1, the reference to the column name on the right hand side is treated as DEFAULT(col_name), so the assignment is equivalent to SET col_name = DEFAULT(col_name) + 1. To use REPLACE, you must have both the INSERT and DELETE privileges for the table. If a generated column is replaced explicitly, the only permitted value is DEFAULT. For information about generated columns, see http://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.h tml. REPLACE supports explicit partition selection using the PARTITION keyword with a list of comma-separated names of partitions, subpartitions, or both. As with INSERT, if it is not possible to insert the new row into any of these partitions or subpartitions, the REPLACE statement fails with the error Found a row not matching the given partition set. For more information and examples, see http://dev.mysql.com/doc/refman/5.7/en/partitioning-selection.html. URL: http://dev.mysql.com/doc/refman/5.7/en/replace.html http://dev.mysql.com/doc/refman/5.7/en/replace.html SELECT REPLACE('www.mysql.com', 'w', 'Ww'); -> 'WwWwWw.mysql.com' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html1V„@Hä�"¾6LRESET Syntax: RESET reset_option [, reset_option] ... reset_option: { MASTER | QUERY CACHE | SLAVE } The RESET statement is used to clear the state of various server operations. You must have the RELOAD privilege to execute RESET. RESET acts as a stronger version of the FLUSH statement. See [HELP FLUSH]. The RESET statement causes an implicit commit. See http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html. The following list describes the permitted RESET statement reset_option values: o RESET MASTER Deletes all binary logs listed in the index file, resets the binary log index file to be empty, and creates a new binary log file. o RESET QUERY CACHE Removes all query results from the query cache. *Note*: The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes RESET QUERY CACHE. o RESET SLAVE Makes the slave forget its replication position in the master binary logs. Also resets the relay log by deleting any existing relay log files and beginning a new one. URL: http://dev.mysql.com/doc/refman/5.7/en/reset.html http://dev.mysql.com/doc/refman/5.7/en/reset.html8þ‚@PÊÞ"¾6YRESET MASTER %Syntax: RESET MASTER Deletes all binary log files listed in the index file, resets the binary log index file to be empty, and creates a new binary log file. *Warning*: Use this statement with caution to ensure you do not lose binary log file data. RESET MASTER also clears the values of the gtid_purged system variable as well as the global value of the gtid_executed system variable (but not its session value); that is, executing this statement sets each of these values to an empty string (''). In MySQL 5.7.5 and later, this statement also clears the mysql.gtid_executed table (see http://dev.mysql.com/doc/refman/5.7/en/replication-gtids-concepts.html# replication-gtids-gtid-executed-table). URL: http://dev.mysql.com/doc/refman/5.7/en/reset-master.html http://dev.mysql.com/doc/refman/5.7/en/reset-master.htmlp¡c[¡âêäÐÌ9DCE(ÏE¿9ú€8¡ infimum supremum7f‘@úŸ"¾6fRESET SLAVE %Syntax: RESET SLAVE [ALL] [channel_option] channel_option: FOR CHANNEL channel RESET SLAVE makes the slave forget its replication position in the master's binary log. This statement is meant to be used for a clean start: It clears the master info and relay log info repositories, deletes all the relay log files, and starts a new relay log file. It also resets to 0 the replication delay specified with the MASTER_DELAY option to CHANGE MASTER TO. RESET SLAVE does not change the values of gtid_executed or gtid_purged. *Note*: All relay log files are deleted, even if they have not been completely executed by the slave SQL thread. (This is a condition likely to exist on a replication slave if you have issued a STOP SLAVE statement or if the slave is highly loaded.) To use RESET SLAVE, the slave replication threads must be stopped, so on a running slave use STOP SLAVE before issuing RESET SLAVE. To use RESET SLAVE on a Group Replication group member, the member status must be OFFLINE, meaning that the plugin is loaded but the member does not currently belong to any group. A group member can be taken offline by using a STOP GROUP REPLICATION statement. The optional FOR CHANNEL channel clause enables you to name which replication channel the statement applies to. Providing a FOR CHANNEL channel clause applies the RESET SLAVE statement to a specific replication channel. Combining a FOR CHANNEL channel clause with the ALL option deletes the specified channel. If no channel is named and no extra channels exist, the statement applies to the default channel. Issuing a RESET SLAVE ALL statement without a FOR CHANNEL channel clause when multiple replication channels exist deletes all replication channels and recreates only the default channel. See http://dev.mysql.com/doc/refman/5.7/en/replication-channels.html for more information. RESET SLAVE does not change any replication connection parameters such as master host, master port, master user, or master password. o From MySQL 5.7.24, when master_info_repository=TABLE is set on the server, replication connection parameters are preserved in the crash-safe InnoDB table mysql.slave_master_info as part of the RESET SLAVE operation. They are also retained in memory. In the event of a server crash or deliberate restart after issuing RESET SLAVE but before issuing START SLAVE, the replication connection parameters are retrieved from the table and reused for the new connection. o When master_info_repository=FILE is set on the server (which is the default in MySQL 5.7), replication connection parameters are only retained in memory. If the slave mysqld is restarted immediately after issuing RESET SLAVE due to a server crash or deliberate restart, the connection parameters are lost. In that case, you must issue a CHANGE MASTER TO statement after the server start to respecify the connection parameters before issuing START SLAVE. If you want to reset the connection parameters intentionally, you need to use RESET SLAVE ALL, which clears the connection parameters. In that case, you must issue a CHANGE MASTER TO statement after the server start to specify the new connection parameters. RESET SLAVE causes an implicit commit of an ongoing transaction. See http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html. If the slave SQL thread was in the middle of replicating temporary tables when it was stopped, and RESET SLAVE is issued, these replicated temporary tables are deleted on the slave. Prior to MySQL 5.7.5, RESET SLAVE also had the effect of resetting both the heartbeat period (Slave_heartbeat_period) and SSL_VERIFY_SERVER_CERT. This issue is fixed in MySQL 5.7.5 and later. (Bug #18777899, Bug #18778485) Prior to MySQL 5.7.5, RESET SLAVE ALL did not clear the IGNORE_SERVER_IDS list set by CHANGE MASTER TO. In MySQL 5.7.5 and later, the statement clears the list. (Bug #18816897) *Note*: When used on an NDB Cluster replication slave SQL node, RESET SLAVE clears the mysql.ndb_apply_status table. You should keep in mind when using this statement that ndb_apply_status uses the NDB storage engine and so is shared by all SQL nodes attached to the slave cluster. You can override this behavior by issuing SET GLOBAL @@ndb_clear_apply_status=OFF prior to executing RESET SLAVE, which keeps the slave from purging the ndb_apply_status table in such cases. URL: http://dev.mysql.com/doc/refman/5.7/en/reset-slave.html http://dev.mysql.com/doc/refman/5.7/en/reset-slave.html4r‡@ "¾6sRESIGNAL Syntax: RESIGNAL [condition_value] [SET signal_information_item [, signal_information_item] ...] condition_value: { SQLSTATE [VALUE] sqlstate_value | condition_name } signal_information_item: condition_information_item_name = simple_value_specification condition_information_item_name: { CLASS_ORIGIN | SUBCLASS_ORIGIN | MESSAGE_TEXT | MYSQL_ERRNO | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | CATALOG_NAME | SCHEMA_NAME | TABLE_NAME | COLUMN_NAME | CURSOR_NAME } condition_name, simple_value_specification: (see following discussion) RESIGNAL passes on the error condition information that is available during execution of a condition handler within a compound statement inside a stored procedure or function, trigger, or event. RESIGNAL may change some or all information before passing it on. RESIGNAL is related to SIGNAL, but instead of originating a condition as SIGNAL does, RESIGNAL relays existing condition information, possibly after modifying it. RESIGNAL makes it possible to both handle an error and return the error information. Otherwise, by executing an SQL statement within the handler, information that caused the handler's activation is destroyed. RESIGNAL also can make some procedures shorter if a given handler can handle part of a situation, then pass the condition "up the line" to another handler. No privileges are required to execute the RESIGNAL statement. All forms of RESIGNAL require that the current context be a condition handler. Otherwise, RESIGNAL is illegal and a RESIGNAL when handler not active error occurs. To retrieve information from the diagnostics area, use the GET DIAGNOSTICS statement (see [HELP GET DIAGNOSTICS]). For information about the diagnostics area, see http://dev.mysql.com/doc/refman/5.7/en/diagnostics-area.html. URL: http://dev.mysql.com/doc/refman/5.7/en/resignal.html http://dev.mysql.com/doc/refman/5.7/en/resignal.html2Ø�@ g¡"¾6€RETURN Syntax: RETURN expr The RETURN statement terminates execution of a stored function and returns the value expr to the function caller. There must be at least one RETURN statement in a stored function. There may be more than one if the function has multiple exit points. This statement is not used in stored procedures, triggers, or events. The LEAVE statement can be used to exit a stored program of those types. URL: http://dev.mysql.com/doc/refman/5.7/en/return.html http://dev.mysql.com/doc/refman/5.7/en/return.html SELECT REVERSE('abc'); -> 'cba' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html2 †@0˜£"¾6šREVOKE Syntax: REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ... REVOKE ALL [PRIVILEGES], GRANT OPTION FROM user [, user] ... REVOKE PROXY ON user FROM user [, user] ... The REVOKE statement enables system administrators to revoke privileges from MySQL accounts. When the read_only system variable is enabled, REVOKE requires the SUPER privilege in addition to any other required privileges described in the following discussion. Each account name uses the format described in http://dev.mysql.com/doc/refman/5.7/en/account-names.html. For example: REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost'; The host name part of the account name, if omitted, defaults to '%'. For details on the levels at which privileges exist, the permissible priv_type, priv_level, and object_type values, and the syntax for specifying users and passwords, see [HELP GRANT]. To use the first REVOKE syntax, you must have the GRANT OPTION privilege, and you must have the privileges that you are revoking. To revoke all privileges, use the second syntax, which drops all global, database, table, column, and routine privileges for the named user or users: REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ... To use this REVOKE syntax, you must have the global CREATE USER privilege, or the UPDATE privilege for the mysql system database. User accounts from which privileges are to be revoked must exist. URL: http://dev.mysql.com/doc/refman/5.7/en/revoke.html http://dev.mysql.com/doc/refman/5.7/en/revoke.html<7·€@8ˆ¤"¾6§RIGHT #Syntax: RIGHT(str,len) Returns the rightmost len characters from the string str, or NULL if any argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT RIGHT('foobarbar', 4); -> 'rbar' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlB�H�@@í¥"¾6´ROUND Syntax: ROUND(X), ROUND(X,D) Rounds the argument X to D decimal places. The rounding algorithm depends on the data type of X. D defaults to 0 if not specified. D can be negative to cause D digits left of the decimal point of the value X to become zero. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT ROUND(-1.23); -> -1 mysql> SELECT ROUND(-1.58); -> -2 mysql> SELECT ROUND(1.58); -> 2 mysql> SELECT ROUND(1.298, 1); -> 1.3 mysql> SELECT ROUND(1.298, 0); -> 1 mysql> SELECT ROUND(23.298, -1); -> 20 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlAÈ�Ÿ†@H ¦"¾6ÁROW_COUNT Syntax: ROW_COUNT() ROW_COUNT() returns a value as follows: o DDL statements: 0. This applies to statements such as CREATE TABLE or DROP TABLE. o DML statements other than SELECT: The number of affected rows. This applies to statements such as UPDATE, INSERT, or DELETE (as before), but now also to statements such as ALTER TABLE and LOAD DATA. o SELECT: -1 if the statement returns a result set, or the number of rows "affected" if it does not. For example, for SELECT * FROM t1, ROW_COUNT() returns -1. For SELECT * FROM t1 INTO OUTFILE 'file_name', ROW_COUNT() returns the number of rows written to the file. o SIGNAL statements: 0. For UPDATE statements, the affected-rows value by default is the number of rows actually changed. If you specify the CLIENT_FOUND_ROWS flag to mysql_real_connect() when connecting to mysqld, the affected-rows value is the number of rows "found"; that is, matched by the WHERE clause. For REPLACE statements, the affected-rows value is 2 if the new row replaced an old row, because in this case, one row was inserted after the duplicate was deleted. For INSERT ... ON DUPLICATE KEY UPDATE statements, the affected-rows value per row is 1 if the row is inserted as a new row, 2 if an existing row is updated, and 0 if an existing row is set to its current values. If you specify the CLIENT_FOUND_ROWS flag, the affected-rows value is 1 (not 0) if an existing row is set to its current values. The ROW_COUNT() value is similar to the value from the mysql_affected_rows() C API function and the row count that the mysql client displays following statement execution. URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> INSERT INTO t VALUES(1),(2),(3); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT ROW_COUNT(); +-------------+ | ROW_COUNT() | +-------------+ | 3 | +-------------+ 1 row in set (0.00 sec) mysql> DELETE FROM t WHERE i IN(1,2); Query OK, 2 rows affected (0.00 sec) mysql> SELECT ROW_COUNT(); +-------------+ | ROW_COUNT() | +-------------+ | 2 | +-------------+ 1 row in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/information-functions.html SELECT RPAD('hi',5,'?'); -> 'hi???' mysql> SELECT RPAD('hi',1,'?'); -> 'h' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<6—€@Xf¨"¾6ÛRTRIM #Syntax: RTRIM(str) Returns the string str with trailing space characters removed. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT RTRIM('barbar '); -> 'barbar' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html5%�@`·©"¾6èSAVEPOINT %Syntax: SAVEPOINT identifier ROLLBACK [WORK] TO [SAVEPOINT] identifier RELEASE SAVEPOINT identifier InnoDB supports the SQL statements SAVEPOINT, ROLLBACK TO SAVEPOINT, RELEASE SAVEPOINT and the optional WORK keyword for ROLLBACK. URL: http://dev.mysql.com/doc/refman/5.7/en/savepoint.html http://dev.mysql.com/doc/refman/5.7/en/savepoint.htmlA†€@h$ª"¾6õSCHEMA Syntax: SCHEMA() This function is a synonym for DATABASE(). URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html http://dev.mysql.com/doc/refman/5.7/en/information-functions.htmlC/”€@pÇÏ«"¾6SECOND Syntax: SECOND(time) Returns the second for time, in the range 0 to 59. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT SECOND('10:05:03'); -> 3 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlp)WæcÌ9(ÏÅ––BEDFn6E¿;€ 8 infimum supremumClT�@`¬"¾6SEC_TO_TIME Syntax: SEC_TO_TIME(seconds) Returns the seconds argument, converted to hours, minutes, and seconds, as a TIME value. The range of the result is constrained to that of the TIME data type. A warning occurs if the argument corresponds to a value outside that range. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT SEC_TO_TIME(2378); -> '00:39:38' mysql> SELECT SEC_TO_TIME(2378) + 0; -> 3938 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html2¡Š@ 0­"¾6SELECT Syntax: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [PARTITION partition_list] [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name]] [FOR UPDATE | LOCK IN SHARE MODE]] SELECT is used to retrieve rows selected from one or more tables, and can include UNION statements and subqueries. See [HELP UNION], and http://dev.mysql.com/doc/refman/5.7/en/subqueries.html. The most commonly used clauses of SELECT statements are these: o Each select_expr indicates a column that you want to retrieve. There must be at least one select_expr. o table_references indicates the table or tables from which to retrieve rows. Its syntax is described in [HELP JOIN]. o SELECT supports explicit partition selection using the PARTITION with a list of partitions or subpartitions (or both) following the name of the table in a table_reference (see [HELP JOIN]). In this case, rows are selected only from the partitions listed, and any other partitions of the table are ignored. For more information and examples, see http://dev.mysql.com/doc/refman/5.7/en/partitioning-selection.html. SELECT ... PARTITION from tables using storage engines such as MyISAM that perform table-level locks (and thus partition locks) lock only the partitions or subpartitions named by the PARTITION option. For more information, see http://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations-locki ng.html. o The WHERE clause, if given, indicates the condition or conditions that rows must satisfy to be selected. where_condition is an expression that evaluates to true for each row to be selected. The statement selects all rows if there is no WHERE clause. In the WHERE expression, you can use any of the functions and operators that MySQL supports, except for aggregate (summary) functions. See http://dev.mysql.com/doc/refman/5.7/en/expressions.html, and http://dev.mysql.com/doc/refman/5.7/en/functions.html. SELECT can also be used to retrieve rows computed without reference to any table. URL: http://dev.mysql.com/doc/refman/5.7/en/select.html http://dev.mysql.com/doc/refman/5.7/en/select.htmlA‰€@ '®"¾6)SESSION_USER Syntax: SESSION_USER() SESSION_USER() is a synonym for USER(). URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html http://dev.mysql.com/doc/refman/5.7/en/information-functions.html8�ƒ@("¯"¾66SET Syntax: SET variable = expr [, variable = expr] ... variable: { user_var_name | param_name | local_var_name | {GLOBAL | @@GLOBAL.} system_var_name | [SESSION | @@SESSION. | @@] system_var_name } SET syntax for variable assignment enables you to assign values to different types of variables that affect the operation of the server or clients: o User-defined variables. See http://dev.mysql.com/doc/refman/5.7/en/user-variables.html. o Stored procedure and function parameters, and stored program local variables. See http://dev.mysql.com/doc/refman/5.7/en/stored-program-variables.html. o System variables. See http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. System variables also can be set at server startup, as described in http://dev.mysql.com/doc/refman/5.7/en/using-system-variables.html. URL: http://dev.mysql.com/doc/refman/5.7/en/set-variable.html http://dev.mysql.com/doc/refman/5.7/en/set-variable.html=¥ƒ@0?°"¾6CSET CHARACTER SET Syntax: SET {CHARACTER SET | CHARSET} {'charset_name' | DEFAULT} This statement maps all strings sent between the server and the current client with the given mapping. SET CHARACTER SET sets three session system variables: character_set_client and character_set_results are set to the given character set, and character_set_connection to the value of character_set_database. See http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html. charset_name may be quoted or unquoted. The default character set mapping can be restored by using the value DEFAULT. The default depends on the server configuration. Some character sets cannot be used as the client character set. Attempting to use them with SET CHARACTER SET produces an error. See http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html#charset- connection-impermissible-client-charset. URL: http://dev.mysql.com/doc/refman/5.7/en/set-character-set.html http://dev.mysql.com/doc/refman/5.7/en/set-character-set.html@j‚@8±"¾6PSET DATA TYPE SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name] A set. A string object that can have zero or more values, each of which must be chosen from the list of values 'value1', 'value2', ... SET values are represented internally as integers. A SET column can have a maximum of 64 distinct members. A table can have no more than 255 unique element list definitions among its ENUM and SET columns considered as a group. For more information on this limit, see http://dev.mysql.com/doc/refman/5.7/en/limits-frm-file.html. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.htmlMo�@@²"¾6]SET GLOBAL SQL_SLAVE_SKIP_COUNTER %Syntax: SET GLOBAL sql_slave_skip_counter = N This statement skips the next N events from the master. This is useful for recovering from replication stops caused by a statement. This statement is valid only when the slave threads are not running. Otherwise, it produces an error. URL: http://dev.mysql.com/doc/refman/5.7/en/set-global-sql-slave-skip-counter.html http://dev.mysql.com/doc/refman/5.7/en/set-global-sql-slave-skip-counter.html5„@H±³"¾6jSET NAMES Syntax: SET NAMES {'charset_name' [COLLATE 'collation_name'] | DEFAULT} This statement sets the three session system variables character_set_client, character_set_connection, and character_set_results to the given character set. Setting character_set_connection to charset_name also sets collation_connection to the default collation for charset_name. See http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html. The optional COLLATE clause may be used to specify a collation explicitly. If given, the collation must one of the permitted collations for charset_name. charset_name and collation_name may be quoted or unquoted. The default mapping can be restored by using a value of DEFAULT. The default depends on the server configuration. Some character sets cannot be used as the client character set. Attempting to use them with SET NAMES produces an error. See http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html#charset- connection-impermissible-client-charset. URL: http://dev.mysql.com/doc/refman/5.7/en/set-names.html http://dev.mysql.com/doc/refman/5.7/en/set-names.html8�@P¥´"¾6wSET PASSWORD Syntax: SET PASSWORD [FOR user] = password_option password_option: { 'auth_string' | PASSWORD('auth_string') } The SET PASSWORD statement assigns a password to a MySQL user account. 'auth_string' represents a cleartext (unencrypted) password. *Note*: o SET PASSWORD ... = PASSWORD('auth_string') syntax is deprecated as of MySQL 5.7.6 and will be removed in a future MySQL release. o SET PASSWORD ... = 'auth_string' syntax is not deprecated, but ALTER USER is the preferred statement for account alterations, including assigning passwords. For example: ALTER USER user IDENTIFIED BY 'auth_string'; *Important*: Under some circumstances, SET PASSWORD may be recorded in server logs or on the client side in a history file such as ~/.mysql_history, which means that cleartext passwords may be read by anyone having read access to that information. For information about the conditions under which this occurs for the server logs and how to control it, see http://dev.mysql.com/doc/refman/5.7/en/password-logging.html. For similar information about client-side logging, see http://dev.mysql.com/doc/refman/5.7/en/mysql-logging.html. SET PASSWORD can be used with or without a FOR clause that explicitly names a user account: o With a FOR user clause, the statement sets the password for the named account, which must exist: SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string'; o With no FOR user clause, the statement sets the password for the current user: SET PASSWORD = 'auth_string'; Any client who connects to the server using a nonanonymous account can change the password for that account. (In particular, you can change your own password.) To see which account the server authenticated you as, invoke the CURRENT_USER() function: SELECT CURRENT_USER(); If a FOR user clause is given, the account name uses the format described in http://dev.mysql.com/doc/refman/5.7/en/account-names.html. For example: SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string'; The host name part of the account name, if omitted, defaults to '%'. Setting the password for a named account (with a FOR clause) requires the UPDATE privilege for the mysql system database. Setting the password for yourself (for a nonanonymous account with no FOR clause) requires no special privileges. When the read_only system variable is enabled, SET PASSWORD requires the SUPER privilege in addition to any other required privileges. The password can be specified in these ways: o Use a string without PASSWORD() SET PASSWORD FOR 'jeffrey'@'localhost' = 'password'; SET PASSWORD interprets the string as a cleartext string, passes it to the authentication plugin associated with the account, and stores the result returned by the plugin in the account row in the mysql.user system table. (The plugin is given the opportunity to hash the value into the encryption format it expects. The plugin may use the value as specified, in which case no hashing occurs.) o Use the PASSWORD() function (deprecated as of MySQL 5.7.6) SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('password'); The PASSWORD() argument is the cleartext (unencrypted) password. PASSWORD() hashes the password and returns the encrypted password string for storage in the account row in the mysql.user system table. The PASSWORD() function hashes the password using the hashing method determined by the value of the old_passwords system variable value. Be sure that old_passwords has the value corresponding to the hashing method expected by the authentication plugin associated with the account. For example, if the account uses the mysql_native_password plugin, the old_passwords value must be 0: SET old_passwords = 0; SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('password'); If the old_passwords value differs from that required by the authentication plugin, the hashed password value returned by PASSWORD() will not by usable by the plugin and correct authentication of client connections will not occur. URL: http://dev.mysql.com/doc/refman/5.7/en/set-password.html http://dev.mysql.com/doc/refman/5.7/en/set-password.html;n…@Xµ"¾6„SET SQL_LOG_BIN %Syntax: SET sql_log_bin = {OFF|ON} The sql_log_bin variable controls whether logging to the binary log is enabled for the current session (assuming that the binary log itself is enabled). The default value is ON. To disable or enable binary logging for the current session, set the session sql_log_bin variable to OFF or ON. Set this variable to OFF for a session to temporarily disable binary logging while making changes to the master you do not want replicated to the slave. Setting the session value of this system variable is a restricted operation. The session user must have privileges sufficient to set restricted session variables. See http://dev.mysql.com/doc/refman/5.7/en/system-variable-privileges.html. It is not possible to set the session value of sql_log_bin within a transaction or subquery. Setting this variable to OFF prevents GTIDs from being assigned to transactions in the binary log. If you are using GTIDs for replication, this means that even when binary logging is later enabled again, the GTIDs written into the log from this point do not account for any transactions that occurred in the meantime, so in effect those transactions are lost. The global sql_log_bin variable is read only and cannot be modified. The global scope is deprecated and will be removed in a future MySQL release. URL: http://dev.mysql.com/doc/refman/5.7/en/set-sql-log-bin.html http://dev.mysql.com/doc/refman/5.7/en/set-sql-log-bin.html@Q‚@`ÈZ¶"¾6‘SHA1 Syntax: SHA1(str), SHA(str) Calculates an SHA-1 160-bit checksum for the string, as described in RFC 3174 (Secure Hash Algorithm). The value is returned as a string of 40 hexadecimal digits, or NULL if the argument was NULL. One of the possible uses for this function is as a hash key. See the notes at the beginning of this section about storing hash values efficiently. SHA() is synonymous with SHA1(). The return value is a string in the connection character set. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html mysql> SELECT SHA1('abc'); -> 'a9993e364706816aba3e25717850c26c9cd0d89d' http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.htmlp9cÅ––Bn6O9†øFEGÖBE¿:q€ 8ÿ infimum supremum@fæ‚@é·"¾6žSHA2 Syntax: SHA2(str, hash_length) Calculates the SHA-2 family of hash functions (SHA-224, SHA-256, SHA-384, and SHA-512). The first argument is the cleartext string to be hashed. The second argument indicates the desired bit length of the result, which must have a value of 224, 256, 384, 512, or 0 (which is equivalent to 256). If either argument is NULL or the hash length is not one of the permitted values, the return value is NULL. Otherwise, the function result is a hash value containing the desired number of bits. See the notes at the beginning of this section about storing hash values efficiently. The return value is a string in the connection character set. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html mysql> SELECT SHA2('abc', 224); -> '23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7' http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html0ˆ@œ¸"¾6«SHOW SHOW has many forms that provide information about databases, tables, columns, or status information about the server. This section describes those following: SHOW {BINARY | MASTER} LOGS SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] SHOW CHARACTER SET [like_or_where] SHOW COLLATION [like_or_where] SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where] SHOW CREATE DATABASE db_name SHOW CREATE EVENT event_name SHOW CREATE FUNCTION func_name SHOW CREATE PROCEDURE proc_name SHOW CREATE TABLE tbl_name SHOW CREATE TRIGGER trigger_name SHOW CREATE VIEW view_name SHOW DATABASES [like_or_where] SHOW ENGINE engine_name {STATUS | MUTEX} SHOW [STORAGE] ENGINES SHOW ERRORS [LIMIT [offset,] row_count] SHOW EVENTS SHOW FUNCTION CODE func_name SHOW FUNCTION STATUS [like_or_where] SHOW GRANTS FOR user SHOW INDEX FROM tbl_name [FROM db_name] SHOW MASTER STATUS SHOW OPEN TABLES [FROM db_name] [like_or_where] SHOW PLUGINS SHOW PROCEDURE CODE proc_name SHOW PROCEDURE STATUS [like_or_where] SHOW PRIVILEGES SHOW [FULL] PROCESSLIST SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n] SHOW PROFILES SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] SHOW SLAVE HOSTS SHOW SLAVE STATUS [FOR CHANNEL channel] SHOW [GLOBAL | SESSION] STATUS [like_or_where] SHOW TABLE STATUS [FROM db_name] [like_or_where] SHOW [FULL] TABLES [FROM db_name] [like_or_where] SHOW TRIGGERS [FROM db_name] [like_or_where] SHOW [GLOBAL | SESSION] VARIABLES [like_or_where] SHOW WARNINGS [LIMIT [offset,] row_count] like_or_where: LIKE 'pattern' | WHERE expr If the syntax for a given SHOW statement includes a LIKE 'pattern' part, 'pattern' is a string that can contain the SQL % and _ wildcard characters. The pattern is useful for restricting statement output to matching values. Several SHOW statements also accept a WHERE clause that provides more flexibility in specifying which rows to display. See http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. URL: http://dev.mysql.com/doc/refman/5.7/en/show.html http://dev.mysql.com/doc/refman/5.7/en/show.html<ô�@ �¹"¾6¸SHOW BINARY LOGS Syntax: SHOW BINARY LOGS SHOW MASTER LOGS Lists the binary log files on the server. This statement is used as part of the procedure described in [HELP PURGE BINARY LOGS], that shows how to determine which logs can be purged. mysql> SHOW BINARY LOGS; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000015 | 724935 | | binlog.000016 | 733481 | +---------------+-----------+ URL: http://dev.mysql.com/doc/refman/5.7/en/show-binary-logs.html http://dev.mysql.com/doc/refman/5.7/en/show-binary-logs.html> �@(¦º"¾6ÅSHOW BINLOG EVENTS Syntax: SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] Shows the events in the binary log. If you do not specify 'log_name', the first binary log is displayed. URL: http://dev.mysql.com/doc/refman/5.7/en/show-binlog-events.html http://dev.mysql.com/doc/refman/5.7/en/show-binlog-events.html>„@0µ»"¾6ÒSHOW CHARACTER SET Syntax: SHOW CHARACTER SET [LIKE 'pattern' | WHERE expr] The SHOW CHARACTER SET statement shows all available character sets. The LIKE clause, if present, indicates which character set names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. For example: mysql> SHOW CHARACTER SET LIKE 'latin%'; +---------+-----------------------------+-------------------+--------+ | Charset | Description | Default collation | Maxlen | +---------+-----------------------------+-------------------+--------+ | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | +---------+-----------------------------+-------------------+--------+ URL: http://dev.mysql.com/doc/refman/5.7/en/show-character-set.html http://dev.mysql.com/doc/refman/5.7/en/show-character-set.html:O…@8æ¼"¾6ßSHOW COLLATION Syntax: SHOW COLLATION [LIKE 'pattern' | WHERE expr] This statement lists collations supported by the server. By default, the output from SHOW COLLATION includes all available collations. The LIKE clause, if present, indicates which collation names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. For example: mysql> SHOW COLLATION WHERE Charset = 'latin1'; +-------------------+---------+----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +-------------------+---------+----+---------+----------+---------+ | latin1_german1_ci | latin1 | 5 | | Yes | 1 | | latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 | | latin1_danish_ci | latin1 | 15 | | Yes | 1 | | latin1_german2_ci | latin1 | 31 | | Yes | 2 | | latin1_bin | latin1 | 47 | | Yes | 1 | | latin1_general_ci | latin1 | 48 | | Yes | 1 | | latin1_general_cs | latin1 | 49 | | Yes | 1 | | latin1_spanish_ci | latin1 | 94 | | Yes | 1 | +-------------------+---------+----+---------+----------+---------+ URL: http://dev.mysql.com/doc/refman/5.7/en/show-collation.html http://dev.mysql.com/doc/refman/5.7/en/show-collation.html8’@@ª½"¾6ìSHOW COLUMNS Syntax: SHOW [FULL] {COLUMNS | FIELDS} {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] SHOW COLUMNS displays information about the columns in a given table. It also works for views. SHOW COLUMNS displays information only for those columns for which you have some privilege. mysql> SHOW COLUMNS FROM City; +-------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | Name | char(35) | NO | | | | | CountryCode | char(3) | NO | MUL | | | | District | char(20) | NO | | | | | Population | int(11) | NO | | 0 | | +-------------+----------+------+-----+---------+----------------+ An alternative to tbl_name FROM db_name syntax is db_name.tbl_name. These two statements are equivalent: SHOW COLUMNS FROM mytable FROM mydb; SHOW COLUMNS FROM mydb.mytable; The optional FULL keyword causes the output to include the column collation and comments, as well as the privileges you have for each column. The LIKE clause, if present, indicates which column names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. The data types may differ from what you expect them to be based on a CREATE TABLE statement because MySQL sometimes changes data types when you create or alter a table. The conditions under which this occurs are described in http://dev.mysql.com/doc/refman/5.7/en/silent-column-changes.html. SHOW COLUMNS displays the following values for each table column: o Field The column name. o Type The column data type. o Collation The collation for nonbinary string columns, or NULL for other columns. This value is displayed only if you use the FULL keyword. o Null The column nullability. The value is YES if NULL values can be stored in the column, NO if not. o Key Whether the column is indexed: o If Key is empty, the column either is not indexed or is indexed only as a secondary column in a multiple-column, nonunique index. o If Key is PRI, the column is a PRIMARY KEY or is one of the columns in a multiple-column PRIMARY KEY. o If Key is UNI, the column is the first column of a UNIQUE index. (A UNIQUE index permits multiple NULL values, but you can tell whether the column permits NULL by checking the Null field.) o If Key is MUL, the column is the first column of a nonunique index in which multiple occurrences of a given value are permitted within the column. If more than one of the Key values applies to a given column of a table, Key displays the one with the highest priority, in the order PRI, UNI, MUL. A UNIQUE index may be displayed as PRI if it cannot contain NULL values and there is no PRIMARY KEY in the table. A UNIQUE index may display as MUL if several columns form a composite UNIQUE index; although the combination of the columns is unique, each column can still hold multiple occurrences of a given value. o Default The default value for the column. This is NULL if the column has an explicit default of NULL, or if the column definition includes no DEFAULT clause. o Extra Any additional information that is available about a given column. The value is nonempty in these cases: o auto_increment for columns that have the AUTO_INCREMENT attribute. o on update CURRENT_TIMESTAMP for TIMESTAMP or DATETIME columns that have the ON UPDATE CURRENT_TIMESTAMP attribute. o VIRTUAL GENERATED or VIRTUAL STORED for generated columns. o Privileges The privileges you have for the column. This value is displayed only if you use the FULL keyword. o Comment Any comment included in the column definition. This value is displayed only if you use the FULL keyword. Table column information is also available from the INFORMATION_SCHEMA COLUMNS table. See http://dev.mysql.com/doc/refman/5.7/en/columns-table.html. You can list a table's columns with the mysqlshow db_name tbl_name command. The DESCRIBE statement provides information similar to SHOW COLUMNS. See http://dev.mysql.com/doc/refman/5.7/en/describe.html. The SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements also provide information about tables. See [HELP SHOW]. URL: http://dev.mysql.com/doc/refman/5.7/en/show-columns.html http://dev.mysql.com/doc/refman/5.7/en/show-columns.html@³�g�@H¸¾"¾6ùSHOW CREATE DATABASE Syntax: SHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name Shows the CREATE DATABASE statement that creates the named database. If the SHOW statement includes an IF NOT EXISTS clause, the output too includes such a clause. SHOW CREATE SCHEMA is a synonym for SHOW CREATE DATABASE. URL: http://dev.mysql.com/doc/refman/5.7/en/show-create-database.html mysql> SHOW CREATE DATABASE test\G *************************** 1. row *************************** Database: test Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */ mysql> SHOW CREATE SCHEMA test\G *************************** 1. row *************************** Database: test Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */ http://dev.mysql.com/doc/refman/5.7/en/show-create-database.html=¼„r�@PÈ¿"¾6SHOW CREATE EVENT Syntax: SHOW CREATE EVENT event_name This statement displays the CREATE EVENT statement needed to re-create a given event. It requires the EVENT privilege for the database from which the event is to be shown. For example (using the same event e_daily defined and then altered in [HELP SHOW EVENTS]): URL: http://dev.mysql.com/doc/refman/5.7/en/show-create-event.html mysql> SHOW CREATE EVENT myschema.e_daily\G *************************** 1. row *************************** Event: e_daily sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES, NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION time_zone: SYSTEM Create Event: CREATE DEFINER=`jon`@`ghidora` EVENT `e_daily` ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR ON COMPLETION NOT PRESERVE ENABLE COMMENT 'Saves total number of sessions then clears the table each day' DO BEGIN INSERT INTO site_activity.totals (time, total) SELECT CURRENT_TIMESTAMP, COUNT(*) FROM site_activity.sessions; DELETE FROM site_activity.sessions; END character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: latin1_swedish_ci http://dev.mysql.com/doc/refman/5.7/en/show-create-event.html@߀@XÇqÀ"¾6SHOW CREATE FUNCTION Syntax: SHOW CREATE FUNCTION func_name This statement is similar to SHOW CREATE PROCEDURE but for stored functions. See [HELP SHOW CREATE PROCEDURE]. URL: http://dev.mysql.com/doc/refman/5.7/en/show-create-function.html http://dev.mysql.com/doc/refman/5.7/en/show-create-function.htmlp”cO9†øÖB|žÕGFI ÁE¿3 €*   infimum supremumA …s‚@Á"¾6 SHOW CREATE PROCEDURE Syntax: SHOW CREATE PROCEDURE proc_name This statement is a MySQL extension. It returns the exact string that can be used to re-create the named stored procedure. A similar statement, SHOW CREATE FUNCTION, displays information about stored functions (see [HELP SHOW CREATE FUNCTION]). To use either statement, you must be the user named in the routine DEFINER clause or have SELECT access to the mysql.proc table. If you do not have privileges for the routine itself, the value displayed for the Create Procedure or Create Function field will be NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/show-create-procedure.html mysql> SHOW CREATE PROCEDURE test.simpleproc\G *************************** 1. row *************************** Procedure: simpleproc sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES, NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Create Procedure: CREATE PROCEDURE `simpleproc`(OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM t; END character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: latin1_swedish_ci mysql> SHOW CREATE FUNCTION test.hello\G *************************** 1. row *************************** Function: hello sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES, NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Create Function: CREATE FUNCTION `hello`(s CHAR(20)) RETURNS char(50) CHARSET latin1 RETURN CONCAT('Hello, ',s,'!') character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: latin1_swedish_ci http://dev.mysql.com/doc/refman/5.7/en/show-create-procedure.html=�a‚@ Â"¾6-SHOW CREATE TABLE Syntax: SHOW CREATE TABLE tbl_name Shows the CREATE TABLE statement that creates the named table. To use this statement, you must have some privilege for the table. This statement also works with views. SHOW CREATE TABLE quotes table and column names according to the value of the sql_quote_show_create option. See http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. For information about how CREATE TABLE statements are stored by MySQL, see http://dev.mysql.com/doc/refman/5.7/en/create-table-statement-retention .html. URL: http://dev.mysql.com/doc/refman/5.7/en/show-create-table.html mysql> SHOW CREATE TABLE t\G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `s` char(60) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 http://dev.mysql.com/doc/refman/5.7/en/show-create-table.html?�@ ¸Ã"¾6:SHOW CREATE TRIGGER Syntax: SHOW CREATE TRIGGER trigger_name This statement shows the CREATE TRIGGER statement that creates the named trigger. This statement requires the TRIGGER privilege for the table associated with the trigger. URL: http://dev.mysql.com/doc/refman/5.7/en/show-create-trigger.html http://dev.mysql.com/doc/refman/5.7/en/show-create-trigger.html<‡‚@( Ä"¾6GSHOW CREATE USER Syntax: SHOW CREATE USER user This statement shows the CREATE USER statement that creates the named user. An error occurs if the user does not exist. The statement requires the SELECT privilege for the mysql system database, except to display information for the current user. To name the account, use the format described in http://dev.mysql.com/doc/refman/5.7/en/account-names.html. The host name part of the account name, if omitted, defaults to '%'. It is also possible to specify CURRENT_USER or CURRENT_USER() to refer to the account associated with the current session. URL: http://dev.mysql.com/doc/refman/5.7/en/show-create-user.html http://dev.mysql.com/doc/refman/5.7/en/show-create-user.html<´€@0MÅ"¾6TSHOW CREATE VIEW Syntax: SHOW CREATE VIEW view_name This statement shows the CREATE VIEW statement that creates the named view. URL: http://dev.mysql.com/doc/refman/5.7/en/show-create-view.html http://dev.mysql.com/doc/refman/5.7/en/show-create-view.html:l…@8Æ"¾6aSHOW DATABASES Syntax: SHOW {DATABASES | SCHEMAS} [LIKE 'pattern' | WHERE expr] SHOW DATABASES lists the databases on the MySQL server host. SHOW SCHEMAS is a synonym for SHOW DATABASES. The LIKE clause, if present, indicates which database names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. You see only those databases for which you have some kind of privilege, unless you have the global SHOW DATABASES privilege. You can also get this list using the mysqlshow command. If the server was started with the --skip-show-database option, you cannot use this statement at all unless you have the SHOW DATABASES privilege. MySQL implements databases as directories in the data directory, so this statement simply lists directories in that location. However, the output may include names of directories that do not correspond to actual databases. Database information is also available from the INFORMATION_SCHEMA SCHEMATA table. See http://dev.mysql.com/doc/refman/5.7/en/schemata-table.html. *Caution*: Because a global privilege is considered a privilege for all databases, any global privilege enables a user to see all database names with SHOW DATABASES or by examining the INFORMATION_SCHEMA SCHEMATA table. URL: http://dev.mysql.com/doc/refman/5.7/en/show-databases.html http://dev.mysql.com/doc/refman/5.7/en/show-databases.html7À@@¨Ç"¾6nSHOW ENGINE H&%http://dev.mysql.com/doc/refman/5.7/en/show-engine.html8Ù�@HnÈ"¾6{SHOW ENGINES Syntax: SHOW [STORAGE] ENGINES SHOW ENGINES displays status information about the server's storage engines. This is particularly useful for checking whether a storage engine is supported, or to see what the default engine is. For information about MySQL storage engines, see http://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html, and http://dev.mysql.com/doc/refman/5.7/en/storage-engines.html. URL: http://dev.mysql.com/doc/refman/5.7/en/show-engines.html http://dev.mysql.com/doc/refman/5.7/en/show-engines.html7´ƒ@PHÉ"¾6ˆSHOW ERRORS Syntax: SHOW ERRORS [LIMIT [offset,] row_count] SHOW COUNT(*) ERRORS SHOW ERRORS is a diagnostic statement that is similar to SHOW WARNINGS, except that it displays information only for errors, rather than for errors, warnings, and notes. The LIMIT clause has the same syntax as for the SELECT statement. See http://dev.mysql.com/doc/refman/5.7/en/select.html. The SHOW COUNT(*) ERRORS statement displays the number of errors. You can also retrieve this number from the error_count variable: SHOW COUNT(*) ERRORS; SELECT @@error_count; SHOW ERRORS and error_count apply only to errors, not warnings or notes. In other respects, they are similar to SHOW WARNINGS and warning_count. In particular, SHOW ERRORS cannot display information for more than max_error_count messages, and error_count can exceed the value of max_error_count if the number of errors exceeds max_error_count. URL: http://dev.mysql.com/doc/refman/5.7/en/show-errors.html http://dev.mysql.com/doc/refman/5.7/en/show-errors.html7F†@XÚÊ"¾6•SHOW EVENTS Syntax: SHOW EVENTS [{FROM | IN} schema_name] [LIKE 'pattern' | WHERE expr] This statement displays information about Event Manager events, which are discussed in http://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html. It requires the EVENT privilege for the database from which the events are to be shown. In its simplest form, SHOW EVENTS lists all of the events in the current schema: mysql> SELECT CURRENT_USER(), SCHEMA(); +----------------+----------+ | CURRENT_USER() | SCHEMA() | +----------------+----------+ | jon@ghidora | myschema | +----------------+----------+ 1 row in set (0.00 sec) mysql> SHOW EVENTS\G *************************** 1. row *************************** Db: myschema Name: e_daily Definer: jon@ghidora Time zone: SYSTEM Type: RECURRING Execute at: NULL Interval value: 1 Interval field: DAY Starts: 2018-08-08 11:06:34 Ends: NULL Status: ENABLED Originator: 1 character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: latin1_swedish_ci To see events for a specific schema, use the FROM clause. For example, to see events for the test schema, use the following statement: SHOW EVENTS FROM test; The LIKE clause, if present, indicates which event names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. URL: http://dev.mysql.com/doc/refman/5.7/en/show-events.html http://dev.mysql.com/doc/refman/5.7/en/show-events.html>×€@`rË"¾6¢SHOW FUNCTION CODE Syntax: SHOW FUNCTION CODE func_name This statement is similar to SHOW PROCEDURE CODE but for stored functions. See [HELP SHOW PROCEDURE CODE]. URL: http://dev.mysql.com/doc/refman/5.7/en/show-function-code.html http://dev.mysql.com/doc/refman/5.7/en/show-function-code.html@÷€@h”Ì"¾6¯SHOW FUNCTION STATUS Syntax: SHOW FUNCTION STATUS [LIKE 'pattern' | WHERE expr] This statement is similar to SHOW PROCEDURE STATUS but for stored functions. See [HELP SHOW PROCEDURE STATUS]. URL: http://dev.mysql.com/doc/refman/5.7/en/show-function-status.html http://dev.mysql.com/doc/refman/5.7/en/show-function-status.html7vˆ@pÖcÍ"¾6¼SHOW GRANTS Syntax: SHOW GRANTS [FOR user] This statement displays the privileges that are assigned to a MySQL user account, in the form of GRANT statements that must be executed to duplicate the privilege assignments. *Note*: To display nonprivilege information for MySQL accounts, use the SHOW CREATE USER statement. See [HELP SHOW CREATE USER]. SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges for the current user. To name the account for SHOW GRANTS, use the same format as for the GRANT statement; for example, 'jeffrey'@'localhost': mysql> SHOW GRANTS FOR 'jeffrey'@'localhost'; +------------------------------------------------------------------+ | Grants for jeffrey@localhost | +------------------------------------------------------------------+ | GRANT USAGE ON *.* TO `jeffrey`@`localhost` | | GRANT SELECT, INSERT, UPDATE ON `db1`.* TO `jeffrey`@`localhost` | +------------------------------------------------------------------+ The host part, if omitted, defaults to '%'. For additional information about specifying account names, see http://dev.mysql.com/doc/refman/5.7/en/account-names.html. To display the privileges granted to the current user (the account you are using to connect to the server), you can use any of the following statements: SHOW GRANTS; SHOW GRANTS FOR CURRENT_USER; SHOW GRANTS FOR CURRENT_USER(); If SHOW GRANTS FOR CURRENT_USER (or any of the equivalent syntaxes) is used in definer context, such as within a stored procedure that executes with definer rather than invoker privileges, the grants displayed are those of the definer and not the invoker. SHOW GRANTS does not display privileges that are available to the named account but are granted to a different account. For example, if an anonymous account exists, the named account might be able to use its privileges, but SHOW GRANTS does not display them. SHOW GRANTS output does not include IDENTIFIED BY PASSWORD clauses. Use the SHOW CREATE USER statement instead. See [HELP SHOW CREATE USER]. URL: http://dev.mysql.com/doc/refman/5.7/en/show-grants.html http://dev.mysql.com/doc/refman/5.7/en/show-grants.htmlpw_c|žÕ Á¹“ú»H¨æ %ÿÿÿÿSyntax: SHOW ENGINE engine_name {STATUS | MUTEX} SHOW ENGINE displays operational information about a storage engine. It requires the PROCESS privilege. The statement has these variants: SHOW ENGINE INNODB STATUS SHOW ENGINE INNODB MUTEX SHOW ENGINE PERFORMANCE_SCHEMA STATUS SHOW ENGINE INNODB STATUS displays extensive information from the standard InnoDB Monitor about the state of the InnoDB storage engine. For information about the standard monitor and other InnoDB Monitors that provide information about InnoDB processing, see http://dev.mysql.com/doc/refman/5.7/en/innodb-monitors.html. SHOW ENGINE INNODB MUTEX displays InnoDB mutex and rw-lock statistics. *Note*: InnoDB mutexes and rwlocks can also be monitored using Performance Schema tables. See http://dev.mysql.com/doc/refman/5.7/en/monitor-innodb-mutex-waits-perfo rmance-schema.html. SHOW ENGINE INNODB MUTEX output was removed in MySQL 5.7.2. It was revised and reintroduced in MySQL 5.7.8. In MySQL 5.7.8, mutex statistics collection is configured dynamically using the following options: o To enable the collection of mutex statistics, run: SET GLOBAL innodb_monitor_enable='latch'; o To reset mutex statistics, run: SET GLOBAL innodb_monitor_reset='latch'; o To disable the collection of mutex statistics, run: SET GLOBAL innodb_monitor_disable='latch'; Collection of mutex statistics for SHOW ENGINE INNODB MUTEX can also be enabled by setting innodb_monitor_enable='all', or disabled by setting innodb_monitor_disable='all'. SHOW ENGINE INNODB MUTEX output has these columns: o Type Always InnoDB. o Name Prior to MySQL 5.7.8, the Name field reports the source file where the mutex is implemented, and the line number in the file where the mutex is created. The line number is specific to your version of MySQL. As of MySQL 5.7.8, only the mutex name is reported. File name and line number are still reported for rwlocks. o Status The mutex status. Prior to MySQL 5.7.8, the Status field displays several values if WITH_DEBUG was defined at MySQL compilation time. If WITH_DEBUG was not defined, the statement displays only the os_waits value. In the latter case (without WITH_DEBUG), the information on which the output is based is insufficient to distinguish regular mutexes and mutexes that protect rwlocks (which permit multiple readers or a single writer). Consequently, the output may appear to contain multiple rows for the same mutex. Pre-MySQL 5.7.8 Status field values include: o count indicates how many times the mutex was requested. o spin_waits indicates how many times the spinlock had to run. o spin_rounds indicates the number of spinlock rounds. (spin_rounds divided by spin_waits provides the average round count.) o os_waits indicates the number of operating system waits. This occurs when the spinlock did not work (the mutex was not locked during the spinlock and it was necessary to yield to the operating system and wait). o os_yields indicates the number of times a thread trying to lock a mutex gave up its timeslice and yielded to the operating system (on the presumption that permitting other threads to run will free the mutex so that it can be locked). o os_wait_times indicates the amount of time (in ms) spent in operating system waits. In MySQL 5.7 timing is disabled and this value is always 0. As of MySQL 5.7.8, the Status field reports the number of spins, waits, and calls. Statistics for low-level operating system mutexes, which are implemented outside of InnoDB, are not reported. o spins indicates the number of spins. o waits indicates the number of mutex waits. o calls indicates how many times the mutex was requested. SHOW ENGINE INNODB MUTEX skips the mutexes and rw-locks of buffer pool blocks, as the amount of output can be overwhelming on systems with a large buffer pool. (There is one mutex and one rw-lock in each 16K buffer pool block, and there are 65,536 blocks per gigabyte.) SHOW ENGINE INNODB MUTEX also does not list any mutexes or rw-locks that have never been waited on (os_waits=0). Thus, SHOW ENGINE INNODB MUTEX only displays information about mutexes and rw-locks outside of the buffer pool that have caused at least one OS-level wait. Use SHOW ENGINE PERFORMANCE_SCHEMA STATUS to inspect the internal operation of the Performance Schema code: mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\G ... *************************** 3. row *************************** Type: performance_schema Name: events_waits_history.size Status: 76 *************************** 4. row *************************** Type: performance_schema Name: events_waits_history.count Status: 10000 *************************** 5. row *************************** Type: performance_schema Name: events_waits_history.memory Status: 760000 ... *************************** 57. row *************************** Type: performance_schema Name: performance_schema.memory Status: 26459600 ... This statement is intended to help the DBA understand the effects that different Performance Schema options have on memory requirements. Name values consist of two parts, which name an internal buffer and a buffer attribute, respectively. Interpret buffer names as follows: o An internal buffer that is not exposed as a table is named within parentheses. Examples: (pfs_cond_class).size, (pfs_mutex_class).memory. o An internal buffer that is exposed as a table in the performance_schema database is named after the table, without parentheses. Examples: events_waits_history.size, mutex_instances.count. o A value that applies to the Performance Schema as a whole begins with performance_schema. Example: performance_schema.memory. Buffer attributes have these meanings: o size is the size of the internal record used by the implementation, such as the size of a row in a table. size values cannot be changed. o count is the number of internal records, such as the number of rows in a table. count values can be changed using Performance Schema configuration options. o For a table, tbl_name.memory is the product of size and count. For the Performance Schema as a whole, performance_schema.memory is the sum of all the memory used (the sum of all other memory values). In some cases, there is a direct relationship between a Performance Schema configuration parameter and a SHOW ENGINE value. For example, events_waits_history_long.count corresponds to performance_schema_events_waits_history_long_size. In other cases, the relationship is more complex. For example, events_waits_history.count corresponds to performance_schema_events_waits_history_size (the number of rows per thread) multiplied by performance_schema_max_thread_instances ( the number of threads). SHOW ENGINE NDB STATUS If the server has the NDB storage engine enabled, SHOW ENGINE NDB STATUS displays cluster status information such as the number of connected data nodes, the cluster connectstring, and cluster binary log epochs, as well as counts of various Cluster API objects created by the MySQL Server when connected to the cluster. Sample output from this statement is shown here: mysql> SHOW ENGINE NDB STATUS; +------------+-----------------------+--------------------------------------------------+ | Type | Name | Status | +------------+-----------------------+--------------------------------------------------+ | ndbcluster | connection | cluster_node_id=7, connected_host=198.51.100.103, connected_port=1186, number_of_data_nodes=4, number_of_ready_data_nodes=3, connect_count=0 | | ndbcluster | NdbTransaction | created=6, free=0, sizeof=212 | | ndbcluster | NdbOperation | created=8, free=8, sizeof=660 | | ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744 | | ndbcluster | NdbIndexOperation | created=0, free=0, sizeof=664 | | ndbcluster | NdbRecAttr | created=1285, free=1285, sizeof=60 | | ndbcluster | NdbApiSignal | created=16, free=16, sizeof=136 | | ndbcluster | NdbLabel | created=0, free=0, sizeof=196 | | ndbcluster | NdbBranch | created=0, free=0, sizeof=24 | | ndbcluster | NdbSubroutine | created=0, free=0, sizeof=68 | | ndbcluster | NdbCall | created=0, free=0, sizeof=16 | | ndbcluster | NdbBlob | created=1, free=1, sizeof=264 | | ndbcluster | NdbReceiver | created=4, free=0, sizeof=68 | | ndbcluster | binlog | latest_epoch=155467, latest_trans_epoch=148126, latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0, latest_applied_binlog_epoch=0 | +------------+-----------------------+--------------------------------------------------+ The Status column in each of these rows provides information about the MySQL server's connection to the cluster and about the cluster binary log's status, respectively. The Status information is in the form of comma-delimited set of name/value pairs. URL: http://dev.mysql.com/doc/refman/5.7/en/show-engine.html ¹“ú»¨æ“b˳IGJ7îE¿(©€ &`infimum supremum6Ž@°Î"¾6ÉSHOW INDEX Syntax: SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr] SHOW INDEX returns table index information. The format resembles that of the SQLStatistics call in ODBC. This statement requires some privilege for any column in the table. mysql> SHOW INDEX FROM City\G *************************** 1. row *************************** Table: city Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: ID Collation: A Cardinality: 4188 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: *************************** 2. row *************************** Table: city Non_unique: 1 Key_name: CountryCode Seq_in_index: 1 Column_name: CountryCode Collation: A Cardinality: 232 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: An alternative to tbl_name FROM db_name syntax is db_name.tbl_name. These two statements are equivalent: SHOW INDEX FROM mytable FROM mydb; SHOW INDEX FROM mydb.mytable; The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. SHOW INDEX returns the following fields: o Table The name of the table. o Non_unique 0 if the index cannot contain duplicates, 1 if it can. o Key_name The name of the index. If the index is the primary key, the name is always PRIMARY. o Seq_in_index The column sequence number in the index, starting with 1. o Column_name The name of the column. o Collation How the column is sorted in the index. This can have values A (ascending) or NULL (not sorted). o Cardinality An estimate of the number of unique values in the index. To update this number, run ANALYZE TABLE or (for MyISAM tables) myisamchk -a. Cardinality is counted based on statistics stored as integers, so the value is not necessarily exact even for small tables. The higher the cardinality, the greater the chance that MySQL uses the index when doing joins. o Sub_part The index prefix. That is, the number of indexed characters if the column is only partly indexed, NULL if the entire column is indexed. *Note*: Prefix limits are measured in bytes. However, prefix lengths for index specifications in CREATE TABLE, ALTER TABLE, and CREATE INDEX statements are interpreted as number of characters for nonbinary string types (CHAR, VARCHAR, TEXT) and number of bytes for binary string types (BINARY, VARBINARY, BLOB). Take this into account when specifying a prefix length for a nonbinary string column that uses a multibyte character set. For additional information about index prefixes, see http://dev.mysql.com/doc/refman/5.7/en/column-indexes.html, and [HELP CREATE INDEX]. o Packed Indicates how the key is packed. NULL if it is not. o Null Contains YES if the column may contain NULL values and '' if not. o Index_type The index method used (BTREE, FULLTEXT, HASH, RTREE). o Comment Information about the index not described in its own column, such as disabled if the index is disabled. o Index_comment Any comment provided for the index with a COMMENT attribute when the index was created. Information about table indexes is also available from the INFORMATION_SCHEMA STATISTICS table. See http://dev.mysql.com/doc/refman/5.7/en/statistics-table.html. You can list a table's indexes with the mysqlshow -k db_name tbl_name command. URL: http://dev.mysql.com/doc/refman/5.7/en/show-index.html http://dev.mysql.com/doc/refman/5.7/en/show-index.html>%‚@ÀÏ"¾6ÖSHOW MASTER STATUS Syntax: SHOW MASTER STATUS This statement provides status information about the binary log files of the master. It requires either the SUPER or REPLICATION CLIENT privilege. Example: mysql> SHOW MASTER STATUS\G *************************** 1. row *************************** File: master-bin.000002 Position: 1307 Binlog_Do_DB: test Binlog_Ignore_DB: manual, mysql Executed_Gtid_Set: 3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5 1 row in set (0.00 sec) URL: http://dev.mysql.com/doc/refman/5.7/en/show-master-status.html http://dev.mysql.com/doc/refman/5.7/en/show-master-status.html<o‚@ Ð"¾6ãSHOW OPEN TABLES Syntax: SHOW OPEN TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] SHOW OPEN TABLES lists the non-TEMPORARY tables that are currently open in the table cache. See http://dev.mysql.com/doc/refman/5.7/en/table-cache.html. The FROM clause, if present, restricts the tables shown to those present in the db_name database. The LIKE clause, if present, indicates which table names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. URL: http://dev.mysql.com/doc/refman/5.7/en/show-open-tables.html http://dev.mysql.com/doc/refman/5.7/en/show-open-tables.html8ƒ@(¤Ñ"¾6ðSHOW PLUGINS Syntax: SHOW PLUGINS SHOW PLUGINS displays information about server plugins. Example of SHOW PLUGINS output: mysql> SHOW PLUGINS\G *************************** 1. row *************************** Name: binlog Status: ACTIVE Type: STORAGE ENGINE Library: NULL License: GPL *************************** 2. row *************************** Name: CSV Status: ACTIVE Type: STORAGE ENGINE Library: NULL License: GPL *************************** 3. row *************************** Name: MEMORY Status: ACTIVE Type: STORAGE ENGINE Library: NULL License: GPL *************************** 4. row *************************** Name: MyISAM Status: ACTIVE Type: STORAGE ENGINE Library: NULL License: GPL ... URL: http://dev.mysql.com/doc/refman/5.7/en/show-plugins.html http://dev.mysql.com/doc/refman/5.7/en/show-plugins.html;ô€@0�Ò"¾6ýSHOW PRIVILEGES Syntax: SHOW PRIVILEGES SHOW PRIVILEGES shows the list of system privileges that the MySQL server supports. The exact list of privileges depends on the version of your server. URL: http://dev.mysql.com/doc/refman/5.7/en/show-privileges.html http://dev.mysql.com/doc/refman/5.7/en/show-privileges.html?Á‚°ƒ@8Ó"¾6 SHOW PROCEDURE CODE Syntax: SHOW PROCEDURE CODE proc_name This statement is a MySQL extension that is available only for servers that have been built with debugging support. It displays a representation of the internal implementation of the named stored procedure. A similar statement, SHOW FUNCTION CODE, displays information about stored functions (see [HELP SHOW FUNCTION CODE]). To use either statement, you must be the owner of the routine or have SELECT access to the mysql.proc table. If the named routine is available, each statement produces a result set. Each row in the result set corresponds to one "instruction" in the routine. The first column is Pos, which is an ordinal number beginning with 0. The second column is Instruction, which contains an SQL statement (usually changed from the original source), or a directive which has meaning only to the stored-routine handler. URL: http://dev.mysql.com/doc/refman/5.7/en/show-procedure-code.html mysql> DELIMITER // mysql> CREATE PROCEDURE p1 () -> BEGIN -> DECLARE fanta INT DEFAULT 55; -> DROP TABLE t2; -> LOOP -> INSERT INTO t3 VALUES (fanta); -> END LOOP; -> END// Query OK, 0 rows affected (0.00 sec) mysql> SHOW PROCEDURE CODE p1// +-----+----------------------------------------+ | Pos | Instruction | +-----+----------------------------------------+ | 0 | set fanta@0 55 | | 1 | stmt 9 "DROP TABLE t2" | | 2 | stmt 5 "INSERT INTO t3 VALUES (fanta)" | | 3 | jump 2 | +-----+----------------------------------------+ 4 rows in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/show-procedure-code.htmlAØ�±‚@@'Ô"¾6SHOW PROCEDURE STATUS Syntax: SHOW PROCEDURE STATUS [LIKE 'pattern' | WHERE expr] This statement is a MySQL extension. It returns characteristics of a stored procedure, such as the database, name, type, creator, creation and modification dates, and character set information. A similar statement, SHOW FUNCTION STATUS, displays information about stored functions (see [HELP SHOW FUNCTION STATUS]). The LIKE clause, if present, indicates which procedure or function names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. URL: http://dev.mysql.com/doc/refman/5.7/en/show-procedure-status.html mysql> SHOW PROCEDURE STATUS LIKE 'sp1'\G *************************** 1. row *************************** Db: test Name: sp1 Type: PROCEDURE Definer: testuser@localhost Modified: 2018-08-08 13:54:11 Created: 2018-08-08 13:54:11 Security_type: DEFINER Comment: character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: latin1_swedish_ci http://dev.mysql.com/doc/refman/5.7/en/show-procedure-status.html<º�@HÚÕ"¾6$SHOW PROCESSLIST Syntax: SHOW [FULL] PROCESSLIST SHOW PROCESSLIST shows which threads are running. If you have the PROCESS privilege, you can see all threads. Otherwise, you can see only your own threads (that is, threads associated with the MySQL account that you are using). If you do not use the FULL keyword, only the first 100 characters of each statement are shown in the Info field. URL: http://dev.mysql.com/doc/refman/5.7/en/show-processlist.html http://dev.mysql.com/doc/refman/5.7/en/show-processlist.htmlpúc“b˳7îÚ’Y�JIKy_E¿;¢€0~ infimum supremum8Ɉè‹@FÖ"¾61SHOW PROFILE Syntax: SHOW PROFILE [type [, type] ... ] [FOR QUERY n] [LIMIT row_count [OFFSET offset]] type: { ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY | PAGE FAULTS | SOURCE | SWAPS } The SHOW PROFILE and SHOW PROFILES statements display profiling information that indicates resource usage for statements executed during the course of the current session. *Note*: The SHOW PROFILE and SHOW PROFILES statements are deprecated and will be removed in a future MySQL release. Use the Performance Schema instead; see http://dev.mysql.com/doc/refman/5.7/en/performance-schema-query-profili ng.html. To control profiling, use the profiling session variable, which has a default value of 0 (OFF). Enable profiling by setting profiling to 1 or ON: mysql> SET profiling = 1; SHOW PROFILES displays a list of the most recent statements sent to the server. The size of the list is controlled by the profiling_history_size session variable, which has a default value of 15. The maximum value is 100. Setting the value to 0 has the practical effect of disabling profiling. All statements are profiled except SHOW PROFILE and SHOW PROFILES, so you will find neither of those statements in the profile list. Malformed statements are profiled. For example, SHOW PROFILING is an illegal statement, and a syntax error occurs if you try to execute it, but it will show up in the profiling list. SHOW PROFILE displays detailed information about a single statement. Without the FOR QUERY n clause, the output pertains to the most recently executed statement. If FOR QUERY n is included, SHOW PROFILE displays information for statement n. The values of n correspond to the Query_ID values displayed by SHOW PROFILES. The LIMIT row_count clause may be given to limit the output to row_count rows. If LIMIT is given, OFFSET offset may be added to begin the output offset rows into the full set of rows. By default, SHOW PROFILE displays Status and Duration columns. The Status values are like the State values displayed by SHOW PROCESSLIST, although there might be some minor differences in interpretion for the two statements for some status values (see http://dev.mysql.com/doc/refman/5.7/en/thread-information.html). Optional type values may be specified to display specific additional types of information: o ALL displays all information o BLOCK IO displays counts for block input and output operations o CONTEXT SWITCHES displays counts for voluntary and involuntary context switches o CPU displays user and system CPU usage times o IPC displays counts for messages sent and received o MEMORY is not currently implemented o PAGE FAULTS displays counts for major and minor page faults o SOURCE displays the names of functions from the source code, together with the name and line number of the file in which the function occurs o SWAPS displays swap counts Profiling is enabled per session. When a session ends, its profiling information is lost. URL: http://dev.mysql.com/doc/refman/5.7/en/show-profile.html mysql> SELECT @@profiling; +-------------+ | @@profiling | +-------------+ | 0 | +-------------+ 1 row in set (0.00 sec) mysql> SET profiling = 1; Query OK, 0 rows affected (0.00 sec) mysql> DROP TABLE IF EXISTS t1; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> CREATE TABLE T1 (id INT); Query OK, 0 rows affected (0.01 sec) mysql> SHOW PROFILES; +----------+----------+--------------------------+ | Query_ID | Duration | Query | +----------+----------+--------------------------+ | 0 | 0.000088 | SET PROFILING = 1 | | 1 | 0.000136 | DROP TABLE IF EXISTS t1 | | 2 | 0.011947 | CREATE TABLE t1 (id INT) | +----------+----------+--------------------------+ 3 rows in set (0.00 sec) mysql> SHOW PROFILE; +----------------------+----------+ | Status | Duration | +----------------------+----------+ | checking permissions | 0.000040 | | creating table | 0.000056 | | After create | 0.011363 | | query end | 0.000375 | | freeing items | 0.000089 | | logging slow query | 0.000019 | | cleaning up | 0.000005 | +----------------------+----------+ 7 rows in set (0.00 sec) mysql> SHOW PROFILE FOR QUERY 1; +--------------------+----------+ | Status | Duration | +--------------------+----------+ | query end | 0.000107 | | freeing items | 0.000008 | | logging slow query | 0.000015 | | cleaning up | 0.000006 | +--------------------+----------+ 4 rows in set (0.00 sec) mysql> SHOW PROFILE CPU FOR QUERY 2; +----------------------+----------+----------+------------+ | Status | Duration | CPU_user | CPU_system | +----------------------+----------+----------+------------+ | checking permissions | 0.000040 | 0.000038 | 0.000002 | | creating table | 0.000056 | 0.000028 | 0.000028 | | After create | 0.011363 | 0.000217 | 0.001571 | | query end | 0.000375 | 0.000013 | 0.000028 | | freeing items | 0.000089 | 0.000010 | 0.000014 | | logging slow query | 0.000019 | 0.000009 | 0.000010 | | cleaning up | 0.000005 | 0.000003 | 0.000002 | +----------------------+----------+----------+------------+ 7 rows in set (0.00 sec) http://dev.mysql.com/doc/refman/5.7/en/show-profile.html9.‚@Ä×"¾6>SHOW PROFILES Syntax: SHOW PROFILES The SHOW PROFILES statement, together with SHOW PROFILE, displays profiling information that indicates resource usage for statements executed during the course of the current session. For more information, see [HELP SHOW PROFILE]. *Note*: The SHOW PROFILE and SHOW PROFILES statements are deprecated and will be removed in a future MySQL release. Use the Performance Schema instead; see http://dev.mysql.com/doc/refman/5.7/en/performance-schema-query-profili ng.html. URL: http://dev.mysql.com/doc/refman/5.7/en/show-profiles.html http://dev.mysql.com/doc/refman/5.7/en/show-profiles.html@‘�@ .Ø"¾6KSHOW RELAYLOG EVENTS Syntax: SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] [channel_option] channel_option: FOR CHANNEL channel Shows the events in the relay log of a replication slave. If you do not specify 'log_name', the first relay log is displayed. This statement has no effect on the master. URL: http://dev.mysql.com/doc/refman/5.7/en/show-relaylog-events.html http://dev.mysql.com/doc/refman/5.7/en/show-relaylog-events.html< ‰@( ¤Ù"¾6XSHOW SLAVE HOSTS Syntax: SHOW SLAVE HOSTS Displays a list of replication slaves currently registered with the master. SHOW SLAVE HOSTS should be executed on a server that acts as a replication master. The statement displays information about servers that are or have been connected as replication slaves, with each row of the result corresponding to one slave server, as shown here: mysql> SHOW SLAVE HOSTS; +------------+-----------+------+-----------+--------------------------------------+ | Server_id | Host | Port | Master_id | Slave_UUID | +------------+-----------+------+-----------+--------------------------------------+ | 192168010 | iconnect2 | 3306 | 192168011 | 14cb6624-7f93-11e0-b2c0-c80aa9429562 | | 1921680101 | athena | 3306 | 192168011 | 07af4990-f41f-11df-a566-7ac56fdaf645 | +------------+-----------+------+-----------+--------------------------------------+ o Server_id: The unique server ID of the slave server, as configured in the slave server's option file, or on the command line with --server-id=value. o Host: The host name of the slave server as specified on the slave with the --report-host option. This can differ from the machine name as configured in the operating system. o User: The slave server user name as, specified on the slave with the --report-user option. Statement output includes this column only if the master server is started with the --show-slave-auth-info option. o Password: The slave server password as, specified on the slave with the --report-password option. Statement output includes this column only if the master server is started with the --show-slave-auth-info option. o Port: The port on the master to which the slave server is listening, as specified on the slave with the --report-port option. A zero in this column means that the slave port (--report-port) was not set. o Master_id: The unique server ID of the master server that the slave server is replicating from. This is the server ID of the server on which SHOW SLAVE HOSTS is executed, so this same value is listed for each row in the result. o Slave_UUID: The globally unique ID of this slave, as generated on the slave and found in the slave's auto.cnf file. URL: http://dev.mysql.com/doc/refman/5.7/en/show-slave-hosts.html http://dev.mysql.com/doc/refman/5.7/en/show-slave-hosts.html=…‹@0 Ú"¾6eSHOW SLAVE STATUS Syntax: SHOW SLAVE STATUS [FOR CHANNEL channel] This statement provides status information on essential parameters of the slave threads. It requires either the SUPER or REPLICATION CLIENT privilege. If you issue this statement using the mysql client, you can use a \G statement terminator rather than a semicolon to obtain a more readable vertical layout: mysql> SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: localhost Master_User: repl Master_Port: 13000 Connect_Retry: 60 Master_Log_File: master-bin.000002 Read_Master_Log_Pos: 1307 Relay_Log_File: slave-relay-bin.000003 Relay_Log_Pos: 1508 Relay_Master_Log_File: master-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1307 Relay_Log_Space: 1858 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: 3e11fa47-71ca-11e1-9e33-c80aa9429562 Master_Info_File: /var/mysqld.2/data/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Reading event from the relay log Master_Retry_Count: 10 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5 Executed_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5 Auto_Position: 1 Replicate_Rewrite_DB: Channel_name: Master_TLS_Version: TLSv1.2 The Performance Schema provides tables that expose replication information. This is similar to the information available from the SHOW SLAVE STATUS statement, but represented in table form. For details, see http://dev.mysql.com/doc/refman/5.7/en/performance-schema-replication-t ables.html. URL: http://dev.mysql.com/doc/refman/5.7/en/show-slave-status.html http://dev.mysql.com/doc/refman/5.7/en/show-slave-status.html7šŠ@8ÏòÛ"¾6rSHOW STATUS Syntax: SHOW [GLOBAL | SESSION] STATUS [LIKE 'pattern' | WHERE expr] *Note*: As of MySQL 5.7.6, the value of the show_compatibility_56 system variable affects the information available from and privileges required for the statement described here. For details, see the description of that variable in http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. SHOW STATUS provides server status information (see http://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html). This statement does not require any privilege. It requires only the ability to connect to the server. Status variable information is also available from these sources: o Performance Schema tables. See http://dev.mysql.com/doc/refman/5.7/en/performance-schema-status-vari able-tables.html. o The GLOBAL_STATUS and SESSION_STATUS tables. See http://dev.mysql.com/doc/refman/5.7/en/status-table.html. o The mysqladmin extended-status command. See http://dev.mysql.com/doc/refman/5.7/en/mysqladmin.html. For SHOW STATUS, a LIKE clause, if present, indicates which variable names to match. A WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. SHOW STATUS accepts an optional GLOBAL or SESSION variable scope modifier: o With a GLOBAL modifier, the statement displays the global status values. A global status variable may represent status for some aspect of the server itself (for example, Aborted_connects), or the aggregated status over all connections to MySQL (for example, Bytes_received and Bytes_sent). If a variable has no global value, the session value is displayed. o With a SESSION modifier, the statement displays the status variable values for the current connection. If a variable has no session value, the global value is displayed. LOCAL is a synonym for SESSION. o If no modifier is present, the default is SESSION. The scope for each status variable is listed at http://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html. Each invocation of the SHOW STATUS statement uses an internal temporary table and increments the global Created_tmp_tables value. With a LIKE clause, the statement displays only rows for those variables with names that match the pattern: mysql> SHOW STATUS LIKE 'Key%'; +--------------------+----------+ | Variable_name | Value | +--------------------+----------+ | Key_blocks_used | 14955 | | Key_read_requests | 96854827 | | Key_reads | 162040 | | Key_write_requests | 7589728 | | Key_writes | 3813196 | +--------------------+----------+ URL: http://dev.mysql.com/doc/refman/5.7/en/show-status.html http://dev.mysql.com/doc/refman/5.7/en/show-status.htmlpcÚ’Y�y_#Úæ"KJLÀ©E¿8'€ 6Í infimum supremum=,‚@ÆÜ"¾6SHOW TABLE STATUS Syntax: SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] SHOW TABLE STATUS works likes SHOW TABLES, but provides a lot of information about each non-TEMPORARY table. You can also get this list using the mysqlshow --status db_name command. The LIKE clause, if present, indicates which table names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. URL: http://dev.mysql.com/doc/refman/5.7/en/show-table-status.html http://dev.mysql.com/doc/refman/5.7/en/show-table-status.html7σ@cÝ"¾6ŒSHOW TABLES Syntax: SHOW [FULL] TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] SHOW TABLES lists the non-TEMPORARY tables in a given database. You can also get this list using the mysqlshow db_name command. The LIKE clause, if present, indicates which table names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. Matching performed by the LIKE clause is dependent on the setting of the lower_case_table_names system variable. This statement also lists any views in the database. The optional FULL modifier causes SHOW TABLES to display a second output column with values of BASE TABLE for a table, VIEW for a view, or SYSTEM VIEW for an INFORMATION_SCHEMA table. If you have no privileges for a base table or view, it does not show up in the output from SHOW TABLES or mysqlshow db_name. URL: http://dev.mysql.com/doc/refman/5.7/en/show-tables.html http://dev.mysql.com/doc/refman/5.7/en/show-tables.html9Û…@ qÞ"¾6™SHOW TRIGGERS Syntax: SHOW TRIGGERS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] SHOW TRIGGERS lists the triggers currently defined for tables in a database (the default database unless a FROM clause is given). This statement returns results only for databases and tables for which you have the TRIGGER privilege. The LIKE clause, if present, indicates which table names (not trigger names) to match and causes the statement to display triggers for those tables. The WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. For the ins_sum trigger defined in http://dev.mysql.com/doc/refman/5.7/en/triggers.html, the output of SHOW TRIGGERS is as shown here: mysql> SHOW TRIGGERS LIKE 'acc%'\G *************************** 1. row *************************** Trigger: ins_sum Event: INSERT Table: account Statement: SET @sum = @sum + NEW.amount Timing: BEFORE Created: 2018-08-08 10:10:12.61 sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES, NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Definer: me@localhost character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: latin1_swedish_ci URL: http://dev.mysql.com/doc/refman/5.7/en/show-triggers.html http://dev.mysql.com/doc/refman/5.7/en/show-triggers.html:›Œ@( 2ß"¾6¦SHOW VARIABLES Syntax: SHOW [GLOBAL | SESSION] VARIABLES [LIKE 'pattern' | WHERE expr] *Note*: As of MySQL 5.7.6, the value of the show_compatibility_56 system variable affects the information available from and privileges required for the statement described here. For details, see the description of that variable in http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. SHOW VARIABLES shows the values of MySQL system variables (see http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html). This statement does not require any privilege. It requires only the ability to connect to the server. System variable information is also available from these sources: o Performance Schema tables. See http://dev.mysql.com/doc/refman/5.7/en/performance-schema-system-vari able-tables.html. o The GLOBAL_VARIABLES and SESSION_VARIABLES tables. See http://dev.mysql.com/doc/refman/5.7/en/variables-table.html. o The mysqladmin variables command. See http://dev.mysql.com/doc/refman/5.7/en/mysqladmin.html. For SHOW VARIABLES, a LIKE clause, if present, indicates which variable names to match. A WHERE clause can be given to select rows using more general conditions, as discussed in http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. SHOW VARIABLES accepts an optional GLOBAL or SESSION variable scope modifier: o With a GLOBAL modifier, the statement displays global system variable values. These are the values used to initialize the corresponding session variables for new connections to MySQL. If a variable has no global value, no value is displayed. o With a SESSION modifier, the statement displays the system variable values that are in effect for the current connection. If a variable has no session value, the global value is displayed. LOCAL is a synonym for SESSION. o If no modifier is present, the default is SESSION. The scope for each system variable is listed at http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. SHOW VARIABLES is subject to a version-dependent display-width limit. For variables with very long values that are not completely displayed, use SELECT as a workaround. For example: SELECT @@GLOBAL.innodb_data_file_path; Most system variables can be set at server startup (read-only variables such as version_comment are exceptions). Many can be changed at runtime with the SET statement. See http://dev.mysql.com/doc/refman/5.7/en/using-system-variables.html, and [HELP SET]. With a LIKE clause, the statement displays only rows for those variables with names that match the pattern. To obtain the row for a specific variable, use a LIKE clause as shown: SHOW VARIABLES LIKE 'max_join_size'; SHOW SESSION VARIABLES LIKE 'max_join_size'; To get a list of variables whose name match a pattern, use the % wildcard character in a LIKE clause: SHOW VARIABLES LIKE '%size%'; SHOW GLOBAL VARIABLES LIKE '%size%'; Wildcard characters can be used in any position within the pattern to be matched. Strictly speaking, because _ is a wildcard that matches any single character, you should escape it as \_ to match it literally. In practice, this is rarely necessary. URL: http://dev.mysql.com/doc/refman/5.7/en/show-variables.html http://dev.mysql.com/doc/refman/5.7/en/show-variables.html9.‡@0Äà"¾6³SHOW WARNINGS Syntax: SHOW WARNINGS [LIMIT [offset,] row_count] SHOW COUNT(*) WARNINGS SHOW WARNINGS is a diagnostic statement that displays information about the conditions (errors, warnings, and notes) resulting from executing a statement in the current session. Warnings are generated for DML statements such as INSERT, UPDATE, and LOAD DATA as well as DDL statements such as CREATE TABLE and ALTER TABLE. The LIMIT clause has the same syntax as for the SELECT statement. See http://dev.mysql.com/doc/refman/5.7/en/select.html. SHOW WARNINGS is also used following EXPLAIN, to display the extended information generated by EXPLAIN. See http://dev.mysql.com/doc/refman/5.7/en/explain-extended.html. SHOW WARNINGS displays information about the conditions resulting from execution of the most recent nondiagnostic statement in the current session. If the most recent statement resulted in an error during parsing, SHOW WARNINGS shows the resulting conditions, regardless of statement type (diagnostic or nondiagnostic). The SHOW COUNT(*) WARNINGS diagnostic statement displays the total number of errors, warnings, and notes. You can also retrieve this number from the warning_count system variable: SHOW COUNT(*) WARNINGS; SELECT @@warning_count; A difference in these statements is that the first is a diagnostic statement that does not clear the message list. The second, because it is a SELECT statement is considered nondiagnostic and does clear the message list. A related diagnostic statement, SHOW ERRORS, shows only error conditions (it excludes warnings and notes), and SHOW COUNT(*) ERRORS statement displays the total number of errors. See [HELP SHOW ERRORS]. GET DIAGNOSTICS can be used to examine information for individual conditions. See [HELP GET DIAGNOSTICS]. URL: http://dev.mysql.com/doc/refman/5.7/en/show-warnings.html http://dev.mysql.com/doc/refman/5.7/en/show-warnings.html4R�@8ãá"¾6ÀSHUTDOWN Syntax: SHUTDOWN This statement stops the MySQL server. It requires the SHUTDOWN privilege. SHUTDOWN was added in MySQL 5.7.9. It provides an SQL-level interface to the same functionality available using the mysqladmin shutdown command or the mysql_shutdown() C API function. URL: http://dev.mysql.com/doc/refman/5.7/en/shutdown.html http://dev.mysql.com/doc/refman/5.7/en/shutdown.htmlBqÀ@@Ôâ"¾6ÍSIGN Syntax: SIGN(X) Returns the sign of the argument as -1, 0, or 1, depending on whether X is negative, zero, or positive. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT SIGN(-32); -> -1 mysql> SELECT SIGN(0); -> 0 mysql> SELECT SIGN(234); -> 1 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html2‚<…@Háã"¾6ÚSIGNAL Syntax: SIGNAL condition_value [SET signal_information_item [, signal_information_item] ...] condition_value: { SQLSTATE [VALUE] sqlstate_value | condition_name } signal_information_item: condition_information_item_name = simple_value_specification condition_information_item_name: { CLASS_ORIGIN | SUBCLASS_ORIGIN | MESSAGE_TEXT | MYSQL_ERRNO | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | CATALOG_NAME | SCHEMA_NAME | TABLE_NAME | COLUMN_NAME | CURSOR_NAME } condition_name, simple_value_specification: (see following discussion) SIGNAL is the way to "return" an error. SIGNAL provides error information to a handler, to an outer portion of the application, or to the client. Also, it provides control over the error's characteristics (error number, SQLSTATE value, message). Without SIGNAL, it is necessary to resort to workarounds such as deliberately referring to a nonexistent table to cause a routine to return an error. No privileges are required to execute the SIGNAL statement. To retrieve information from the diagnostics area, use the GET DIAGNOSTICS statement (see [HELP GET DIAGNOSTICS]). For information about the diagnostics area, see http://dev.mysql.com/doc/refman/5.7/en/diagnostics-area.html. URL: http://dev.mysql.com/doc/refman/5.7/en/signal.html CREATE PROCEDURE p (pval INT) BEGIN DECLARE specialty CONDITION FOR SQLSTATE '45000'; IF pval = 0 THEN SIGNAL SQLSTATE '01000'; ELSEIF pval = 1 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'An error occurred'; ELSEIF pval = 2 THEN SIGNAL specialty SET MESSAGE_TEXT = 'An error occurred'; ELSE SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'A warning occurred', MYSQL_ERRNO = 1000; SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'An error occurred', MYSQL_ERRNO = 1001; END IF; END; http://dev.mysql.com/doc/refman/5.7/en/signal.htmlBeŽ€@P’ä"¾6çSIN Syntax: SIN(X) Returns the sine of X, where X is given in radians. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT SIN(PI()); -> 1.2246063538224e-16 mysql> SELECT ROUND(SIN(PI())); -> 0 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlCñ…@X‘å"¾6ôSLEEP Syntax: SLEEP(duration) Sleeps (pauses) for the number of seconds given by the duration argument, then returns 0. The duration may have a fractional part. If the argument is NULL or negative, SLEEP() produces a warning, or an error in strict SQL mode. When sleep returns normally (without interruption), it returns 0: mysql> SELECT SLEEP(1000); +-------------+ | SLEEP(1000) | +-------------+ | 0 | +-------------+ When SLEEP() is the only thing invoked by a query that is interrupted, it returns 1 and the query itself returns no error. This is true whether the query is killed or times out: o This statement is interrupted using KILL QUERY from another session: mysql> SELECT SLEEP(1000); +-------------+ | SLEEP(1000) | +-------------+ | 1 | +-------------+ o This statement is interrupted by timing out: mysql> SELECT /*+ MAX_EXECUTION_TIME(1) */ SLEEP(1000); +-------------+ | SLEEP(1000) | +-------------+ | 1 | +-------------+ When SLEEP() is only part of a query that is interrupted, the query returns an error: o This statement is interrupted using KILL QUERY from another session: mysql> SELECT 1 FROM t1 WHERE SLEEP(1000); ERROR 1317 (70100): Query execution was interrupted o This statement is interrupted by timing out: mysql> SELECT /*+ MAX_EXECUTION_TIME(1000) */ 1 FROM t1 WHERE SLEEP(1000); ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlAÆ€@`É£æ"¾6SMALLINT SMALLINT[(M)] [UNSIGNED] [ZEROFILL] A small integer. The signed range is -32768 to 32767. The unsigned range is 0 to 65535. URL: http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.htmlpc#Úæ"À©K4"LKMè�E¿-�€ —infimum supremum SELECT SOUNDEX('Hello'); -> 'H400' mysql> SELECT SOUNDEX('Quadratically'); -> 'Q36324' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<š€@3è"¾6SOUNDS LIKE #Syntax: expr1 SOUNDS LIKE expr2 This is the same as SOUNDEX(expr1) = SOUNDEX(expr2). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<,‰€@ Né"¾6(SPACE #Syntax: SPACE(N) Returns a string consisting of N space characters. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT SPACE(6); -> ' ' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlD…@(¼ê"¾65SPATIAL For InnoDB and MyISAM tables, MySQL can create spatial indexes using syntax similar to that for creating regular indexes, but using the SPATIAL keyword. Columns in spatial indexes must be declared NOT NULL. The following examples demonstrate how to create spatial indexes: o With CREATE TABLE: CREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g)); o With ALTER TABLE: CREATE TABLE geom (g GEOMETRY NOT NULL); ALTER TABLE geom ADD SPATIAL INDEX(g); o With CREATE INDEX: CREATE TABLE geom (g GEOMETRY NOT NULL); CREATE SPATIAL INDEX g ON geom (g); SPATIAL INDEX creates an R-tree index. For storage engines that support nonspatial indexing of spatial columns, the engine creates a B-tree index. A B-tree index on spatial values is useful for exact-value lookups, but not for range scans. For more information on indexing spatial columns, see [HELP CREATE INDEX]. To drop spatial indexes, use ALTER TABLE or DROP INDEX: o With ALTER TABLE: ALTER TABLE geom DROP INDEX g; o With DROP INDEX: DROP INDEX g ON geom; Example: Suppose that a table geom contains more than 32,000 geometries, which are stored in the column g of type GEOMETRY. The table also has an AUTO_INCREMENT column fid for storing object ID values. URL: http://dev.mysql.com/doc/refman/5.7/en/creating-spatial-indexes.html http://dev.mysql.com/doc/refman/5.7/en/creating-spatial-indexes.htmlB€€Ž€@0­ë"¾6BSQRT Syntax: SQRT(X) Returns the square root of a nonnegative number X. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT SQRT(4); -> 2 mysql> SELECT SQRT(20); -> 4.4721359549996 mysql> SELECT SQRT(-16); -> NULL http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.htmlJ¶€@8]ì"¾6OSRID SRID(g) ST_SRID() and SRID() are synonyms. For more information, see the description of ST_SRID(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html7lœ@@ïÙí"¾6\START SLAVE %Syntax: START SLAVE [thread_types] [until_option] [connection_options] [channel_option] thread_types: [thread_type [, thread_type] ... ] thread_type: IO_THREAD | SQL_THREAD until_option: UNTIL { {SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set | MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos | RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS = log_pos | SQL_AFTER_MTS_GAPS } connection_options: [USER='user_name'] [PASSWORD='user_pass'] [DEFAULT_AUTH='plugin_name'] [PLUGIN_DIR='plugin_dir'] channel_option: FOR CHANNEL channel gtid_set: uuid_set [, uuid_set] ... | '' uuid_set: uuid:interval[:interval]... uuid: hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh h: [0-9,A-F] interval: n[-n] (n >= 1) START SLAVE with no thread_type options starts both of the slave threads. The I/O thread reads events from the master server and stores them in the relay log. The SQL thread reads events from the relay log and executes them. START SLAVE requires the SUPER privilege. If START SLAVE succeeds in starting the slave threads, it returns without any error. However, even in that case, it might be that the slave threads start and then later stop (for example, because they do not manage to connect to the master or read its binary log, or some other problem). START SLAVE does not warn you about this. You must check the slave's error log for error messages generated by the slave threads, or check that they are running satisfactorily with SHOW SLAVE STATUS. In MySQL 5.7, START SLAVE causes an implicit commit of an ongoing transaction. See http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html. gtid_next must be set to AUTOMATIC before issuing this statement. The optional FOR CHANNEL channel clause enables you to name which replication channel the statement applies to. Providing a FOR CHANNEL channel clause applies the START SLAVE statement to a specific replication channel. If no clause is named and no extra channels exist, the statement applies to the default channel. If a START SLAVE statement does not have a channel defined when using multiple channels, this statement starts the specified threads for all channels. This statement is disallowed for the group_replication_recovery channel. See http://dev.mysql.com/doc/refman/5.7/en/replication-channels.html for more information. MySQL supports pluggable user-password authentication with START SLAVE with the USER, PASSWORD, DEFAULT_AUTH and PLUGIN_DIR options, as described in the following list: o USER: User name. Cannot be set to an empty or null string, or left unset if PASSWORD is used. o PASSWORD: Password. o DEFAULT_AUTH: Name of plugin; default is MySQL native authentication. o PLUGIN_DIR: Location of plugin. You cannot use the SQL_THREAD option when specifying any of USER, PASSWORD, DEFAULT_AUTH, or PLUGIN_DIR, unless the IO_THREAD option is also provided. See http://dev.mysql.com/doc/refman/5.7/en/pluggable-authentication.html, for more information. If an insecure connection is used with any these options, the server issues the warning Sending passwords in plain text without SSL/TLS is extremely insecure. START SLAVE ... UNTIL supports two additional options for use with global transaction identifiers (GTIDs) (see http://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html). Each of these takes a set of one or more global transaction identifiers gtid_set as an argument (see http://dev.mysql.com/doc/refman/5.7/en/replication-gtids-concepts.html# replication-gtids-concepts-gtid-sets, for more information). When no thread_type is specified, START SLAVE UNTIL SQL_BEFORE_GTIDS causes the slave SQL thread to process transactions until it has reached the first transaction whose GTID is listed in the gtid_set. START SLAVE UNTIL SQL_AFTER_GTIDS causes the slave threads to process all transactions until the last transaction in the gtid_set has been processed by both threads. In other words, START SLAVE UNTIL SQL_BEFORE_GTIDS causes the slave SQL thread to process all transactions occurring before the first GTID in the gtid_set is reached, and START SLAVE UNTIL SQL_AFTER_GTIDS causes the slave threads to handle all transactions, including those whose GTIDs are found in gtid_set, until each has encountered a transaction whose GTID is not part of the set. SQL_BEFORE_GTIDS and SQL_AFTER_GTIDS each support the SQL_THREAD and IO_THREAD options, although using IO_THREAD with them currently has no effect. For example, START SLAVE SQL_THREAD UNTIL SQL_BEFORE_GTIDS = 3E11FA47-71CA-11E1-9E33-C80AA9429562:11-56 causes the slave SQL thread to process all transactions originating from the master whose server_uuid is 3E11FA47-71CA-11E1-9E33-C80AA9429562 until it encounters the transaction having sequence number 11; it then stops without processing this transaction. In other words, all transactions up to and including the transaction with sequence number 10 are processed. Executing START SLAVE SQL_THREAD UNTIL SQL_AFTER_GTIDS = 3E11FA47-71CA-11E1-9E33-C80AA9429562:11-56, on the other hand, would cause the slave SQL thread to obtain all transactions just mentioned from the master, including all of the transactions having the sequence numbers 11 through 56, and then to stop without processing any additional transactions; that is, the transaction having sequence number 56 would be the last transaction fetched by the slave SQL thread. Prior to MySQL 5.7.3, SQL_AFTER_GTIDS did not stop the slave once the indicated transaction was completed, but waited until another GTID event was received (Bug #14767986). When using a multithreaded slave, there is a chance of gaps in the sequence of transactions that have been executed from the relay log in the following cases: o killing the coordinator thread o after an error occurs in the worker threads o mysqld shuts down unexpectedly Use the START SLAVE UNTIL SQL_AFTER_MTS_GAPS statement to cause a multithreaded slave's worker threads to only run until no more gaps are found in the relay log, and then to stop. This statement can take an SQL_THREAD option, but the effects of the statement remain unchanged. It has no effect on the slave I/O thread (and cannot be used with the IO_THREAD option). Issuing START SLAVE on a multithreaded slave with gaps in the sequence of transactions executed from the relay log generates a warning. In such a situation, the solution is to use START SLAVE UNTIL SQL_AFTER_MTS_GAPS, then issue RESET SLAVE to remove any remaining relay logs. See http://dev.mysql.com/doc/refman/5.7/en/replication-features-transaction -inconsistencies.html for more information. To change a failed multithreaded slave to single-threaded mode, you can issue the following series of statements, in the order shown: START SLAVE UNTIL SQL_AFTER_MTS_GAPS; SET @@GLOBAL.slave_parallel_workers = 0; START SLAVE SQL_THREAD; *Note*: It is possible to view the entire text of a running START SLAVE ... statement, including any USER or PASSWORD values used, in the output of SHOW PROCESSLIST. This is also true for the text of a running CHANGE MASTER TO statement, including any values it employs for MASTER_USER or MASTER_PASSWORD. URL: http://dev.mysql.com/doc/refman/5.7/en/start-slave.html http://dev.mysql.com/doc/refman/5.7/en/start-slave.htmlpcK4"è�ù„ª“MLN %/E¿4Æ€ 2Šinfimum supremum2k˜@úî"¾6iSTART TRANSACTION %Syntax: START TRANSACTION [transaction_characteristic [, transaction_characteristic] ...] transaction_characteristic: { WITH CONSISTENT SNAPSHOT | READ WRITE | READ ONLY } BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET autocommit = {0 | 1} These statements provide control over use of transactions: o START TRANSACTION or BEGIN start a new transaction. o COMMIT commits the current transaction, making its changes permanent. o ROLLBACK rolls back the current transaction, canceling its changes. o SET autocommit disables or enables the default autocommit mode for the current session. By default, MySQL runs with autocommit mode enabled. This means that as soon as you execute a statement that updates (modifies) a table, MySQL stores the update on disk to make it permanent. The change cannot be rolled back. To disable autocommit mode implicitly for a single series of statements, use the START TRANSACTION statement: START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT; With START TRANSACTION, autocommit remains disabled until you end the transaction with COMMIT or ROLLBACK. The autocommit mode then reverts to its previous state. START TRANSACTION permits several modifiers that control transaction characteristics. To specify multiple modifiers, separate them by commas. o The WITH CONSISTENT SNAPSHOT modifier starts a consistent read for storage engines that are capable of it. This applies only to InnoDB. The effect is the same as issuing a START TRANSACTION followed by a SELECT from any InnoDB table. See http://dev.mysql.com/doc/refman/5.7/en/innodb-consistent-read.html. The WITH CONSISTENT SNAPSHOT modifier does not change the current transaction isolation level, so it provides a consistent snapshot only if the current isolation level is one that permits a consistent read. The only isolation level that permits a consistent read is REPEATABLE READ. For all other isolation levels, the WITH CONSISTENT SNAPSHOT clause is ignored. As of MySQL 5.7.2, a warning is generated when the WITH CONSISTENT SNAPSHOT clause is ignored. o The READ WRITE and READ ONLY modifiers set the transaction access mode. They permit or prohibit changes to tables used in the transaction. The READ ONLY restriction prevents the transaction from modifying or locking both transactional and nontransactional tables that are visible to other transactions; the transaction can still modify or lock temporary tables. MySQL enables extra optimizations for queries on InnoDB tables when the transaction is known to be read-only. Specifying READ ONLY ensures these optimizations are applied in cases where the read-only status cannot be determined automatically. See http://dev.mysql.com/doc/refman/5.7/en/innodb-performance-ro-txn.html for more information. If no access mode is specified, the default mode applies. Unless the default has been changed, it is read/write. It is not permitted to specify both READ WRITE and READ ONLY in the same statement. In read-only mode, it remains possible to change tables created with the TEMPORARY keyword using DML statements. Changes made with DDL statements are not permitted, just as with permanent tables. For additional information about transaction access mode, including ways to change the default mode, see [HELP ISOLATION]. If the read_only system variable is enabled, explicitly starting a transaction with START TRANSACTION READ WRITE requires the SUPER privilege. *Important*: Many APIs used for writing MySQL client applications (such as JDBC) provide their own methods for starting transactions that can (and sometimes should) be used instead of sending a START TRANSACTION statement from the client. See http://dev.mysql.com/doc/refman/5.7/en/connectors-apis.html, or the documentation for your API, for more information. To disable autocommit mode explicitly, use the following statement: SET autocommit=0; After disabling autocommit mode by setting the autocommit variable to zero, changes to transaction-safe tables (such as those for InnoDB or NDB) are not made permanent immediately. You must use COMMIT to store your changes to disk or ROLLBACK to ignore the changes. autocommit is a session variable and must be set for each session. To disable autocommit mode for each new connection, see the description of the autocommit system variable at http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. BEGIN and BEGIN WORK are supported as aliases of START TRANSACTION for initiating a transaction. START TRANSACTION is standard SQL syntax, is the recommended way to start an ad-hoc transaction, and permits modifiers that BEGIN does not. The BEGIN statement differs from the use of the BEGIN keyword that starts a BEGIN ... END compound statement. The latter does not begin a transaction. See [HELP BEGIN END]. *Note*: Within all stored programs (stored procedures and functions, triggers, and events), the parser treats BEGIN [WORK] as the beginning of a BEGIN ... END block. Begin a transaction in this context with START TRANSACTION instead. The optional WORK keyword is supported for COMMIT and ROLLBACK, as are the CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for additional control over transaction completion. The value of the completion_type system variable determines the default completion behavior. See http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. The AND CHAIN clause causes a new transaction to begin as soon as the current one ends, and the new transaction has the same isolation level as the just-terminated transaction. The new transaction also uses the same access mode (READ WRITE or READ ONLY) as the just-terminated transaction. The RELEASE clause causes the server to disconnect the current client session after terminating the current transaction. Including the NO keyword suppresses CHAIN or RELEASE completion, which can be useful if the completion_type system variable is set to cause chaining or release completion by default. URL: http://dev.mysql.com/doc/refman/5.7/en/commit.html http://dev.mysql.com/doc/refman/5.7/en/commit.htmlMÒ€@|ï"¾6vSTARTPOINT StartPoint(ls) ST_StartPoint() and StartPoint() are synonyms. For more information, see the description of ST_StartPoint(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html>�@ ¹ð"¾6ƒSTD Syntax: STD(expr) Returns the population standard deviation of expr. STD() is a synonym for the standard SQL function STDDEV_POP(), provided as a MySQL extension. If there are no matching rows, STD() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html>0�@(Ëñ"¾6�STDDEV Syntax: STDDEV(expr) Returns the population standard deviation of expr. STDDEV() is a synonym for the standard SQL function STDDEV_POP(), provided for compatibility with Oracle. If there are no matching rows, STDDEV() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html><�@0×ò"¾6�STDDEV_POP Syntax: STDDEV_POP(expr) Returns the population standard deviation of expr (the square root of VAR_POP()). You can also use STD() or STDDEV(), which are equivalent but not standard SQL. If there are no matching rows, STDDEV_POP() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html>ë€@8†ó"¾6ªSTDDEV_SAMP Syntax: STDDEV_SAMP(expr) Returns the sample standard deviation of expr (the square root of VAR_SAMP(). If there are no matching rows, STDDEV_SAMP() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html6�@@±ô"¾6·STOP SLAVE %Syntax: STOP SLAVE [thread_types] thread_types: [thread_type [, thread_type] ... ] thread_type: IO_THREAD | SQL_THREAD channel_option: FOR CHANNEL channel Stops the slave threads. STOP SLAVE requires the SUPER privilege. Recommended best practice is to execute STOP SLAVE on the slave before stopping the slave server (see http://dev.mysql.com/doc/refman/5.7/en/server-shutdown.html, for more information). When using the row-based logging format: You should execute STOP SLAVE or STOP SLAVE SQL_THREAD on the slave prior to shutting down the slave server if you are replicating any tables that use a nontransactional storage engine (see the Note later in this section). Like START SLAVE, this statement may be used with the IO_THREAD and SQL_THREAD options to name the thread or threads to be stopped. STOP SLAVE causes an implicit commit of an ongoing transaction. See http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html. From MySQL 5.7, gtid_next must be set to AUTOMATIC before issuing this statement (Bug #16062608). From MySQL 5.7, you can control how long STOP SLAVE waits before timing out by setting the rpl_stop_slave_timeout system variable. This can be used to avoid deadlocks between STOP SLAVE and other slave SQL statements using different client connections to the slave. When the timeout value is reached, the issuing client returns an error message and stops waiting, but the STOP SLAVE instruction remains in effect. Once the slave threads are no longer busy, the STOP SLAVE statement is executed and the slave stops. (Bug #16856735) Some CHANGE MASTER TO statements are allowed while the slave is running, depending on the states of the slave SQL and I/O threads. However, using STOP SLAVE prior to executing CHANGE MASTER TO in such cases is still supported. See [HELP CHANGE MASTER TO], and http://dev.mysql.com/doc/refman/5.7/en/replication-solutions-switch.htm l, for more information. The optional FOR CHANNEL channel clause enables you to name which replication channel the statement applies to. Providing a FOR CHANNEL channel clause applies the STOP SLAVE statement to a specific replication channel. If no channel is named and no extra channels exist, the statement applies to the default channel. If a STOP SLAVE statement does not name a channel when using multiple channels, this statement stops the specified threads for all channels. This statement cannot be used with the group_replication_recovery channel. See http://dev.mysql.com/doc/refman/5.7/en/replication-channels.html for more information. When using statement-based replication: changing the master while it has open temporary tables is potentially unsafe. This is one of the reasons why statement-based replication of temporary tables is not recommended. You can find out whether there are any temporary tables on the slave by checking the value of Slave_open_temp_tables; when using statement-based replication, this value should be 0 before executing CHANGE MASTER TO. If there are any temporary tables open on the slave, issuing a CHANGE MASTER TO statement after issuing a STOP SLAVE causes an ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO warning. When using a multithreaded slave (slave_parallel_workers is a nonzero value), any gaps in the sequence of transactions executed from the relay log are closed as part of stopping the worker threads. If the slave is stopped unexpectedly (for example due to an error in a worker thread, or another thread issuing KILL) while a STOP SLAVE statement is executing, the sequence of executed transactions from the relay log may become inconsistent. See http://dev.mysql.com/doc/refman/5.7/en/replication-features-transaction -inconsistencies.html, for more information. If the current replication event group has modified one or more nontransactional tables, STOP SLAVE waits for up to 60 seconds for the event group to complete, unless you issue a KILL QUERY or KILL CONNECTION statement for the slave SQL thread. If the event group remains incomplete after the timeout, an error message is logged. URL: http://dev.mysql.com/doc/refman/5.7/en/stop-slave.html http://dev.mysql.com/doc/refman/5.7/en/stop-slave.htmlGœ€�@HÍæõ"¾6ÄSTRCMP #Syntax: STRCMP(expr1,expr2) STRCMP() returns 0 if the strings are the same, -1 if the first argument is smaller than the second according to the current sort order, and 1 otherwise. URL: http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html mysql> SELECT STRCMP('text', 'text2'); -> -1 mysql> SELECT STRCMP('text2', 'text'); -> 1 mysql> SELECT STRCMP('text', 'text'); -> 0 http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.htmlp±cù„ª“ %/Õ¤|NMO igE¿9ø€ 4q infimum supremumC’†@3ö"¾6ÑSTR_TO_DATE Syntax: STR_TO_DATE(str,format) This is the inverse of the DATE_FORMAT() function. It takes a string str and a format string format. STR_TO_DATE() returns a DATETIME value if the format string contains both date and time parts, or a DATE or TIME value if the string contains only date or time parts. If the date, time, or datetime value extracted from str is illegal, STR_TO_DATE() returns NULL and produces a warning. The server scans str attempting to match format to it. The format string can contain literal characters and format specifiers beginning with %. Literal characters in format must match literally in str. Format specifiers in format must match a date or time part in str. For the specifiers that can be used in format, see the DATE_FORMAT() function description. mysql> SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y'); -> '2013-05-01' mysql> SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y'); -> '2013-05-01' Scanning starts at the beginning of str and fails if format is found not to match. Extra characters at the end of str are ignored. mysql> SELECT STR_TO_DATE('a09:30:17','a%h:%i:%s'); -> '09:30:17' mysql> SELECT STR_TO_DATE('a09:30:17','%h:%i:%s'); -> NULL mysql> SELECT STR_TO_DATE('09:30:17a','%h:%i:%s'); -> '09:30:17' Unspecified date or time parts have a value of 0, so incompletely specified values in str produce a result with some or all parts set to 0: mysql> SELECT STR_TO_DATE('abc','abc'); -> '0000-00-00' mysql> SELECT STR_TO_DATE('9','%m'); -> '0000-09-00' mysql> SELECT STR_TO_DATE('9','%s'); -> '00:00:09' URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlJq‚,‚@D÷"¾6ÞST_AREA ST_Area({poly|mpoly}) Returns a double-precision number indicating the area of the Polygon or MultiPolygon argument, as measured in its spatial reference system. For arguments of dimension 0 or 1, the result is 0. If the argument is an empty geometry the return value is 0. If the argument is NULL the return value is NULL. The result is the sum of the area values of all components for a geometry collection. If a geometry collection is empty, its area is returned as 0. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html mysql> SET @poly = 'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))'; mysql> SELECT ST_Area(ST_GeomFromText(@poly)); +---------------------------------+ | ST_Area(ST_GeomFromText(@poly)) | +---------------------------------+ | 4 | +---------------------------------+ mysql> SET @mpoly = 'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))'; mysql> SELECT ST_Area(ST_GeomFromText(@mpoly)); +----------------------------------+ | ST_Area(ST_GeomFromText(@mpoly)) | +----------------------------------+ | 8 | +----------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.htmlK!l�@ 6ø"¾6ëST_ASBINARY (ST_AsBinary(g), ST_AsWKB(g) Converts a value in internal geometry format to its WKB representation and returns the binary result. If the argument is NULL, the return value is NULL. If the argument is not a syntactically well-formed geometry, an ER_GIS_INVALID_DATA error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-format-conversion-functions.html SELECT ST_AsBinary(g) FROM geom; http://dev.mysql.com/doc/refman/5.7/en/gis-format-conversion-functions.htmlE‹�Y�@(‡ù"¾6øST_ASGEOJSON ST_AsGeoJSON(g [, max_dec_digits [, options]]) Generates a GeoJSON object from the geometry g. The object string has the connection character set and collation. If any argument is NULL, the return value is NULL. If any non-NULL argument is invalid, an error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-geojson-functions.html mysql> SELECT ST_AsGeoJSON(ST_GeomFromText('POINT(11.11111 12.22222)'),2); +-------------------------------------------------------------+ | ST_AsGeoJSON(ST_GeomFromText('POINT(11.11111 12.22222)'),2) | +-------------------------------------------------------------+ | {"type": "Point", "coordinates": [11.11, 12.22]} | +-------------------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-geojson-functions.htmlK�j�@0ú"¾6ST_ASTEXT (ST_AsText(g), ST_AsWKT(g) Converts a value in internal geometry format to its WKT representation and returns the string result. If the argument is NULL, the return value is NULL. If the argument is not a syntactically well-formed geometry, an ER_GIS_INVALID_DATA error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-format-conversion-functions.html mysql> SET @g = 'LineString(1 1,2 2,3 3)'; mysql> SELECT ST_AsText(ST_GeomFromText(@g)); +--------------------------------+ | ST_AsText(ST_GeomFromText(@g)) | +--------------------------------+ | LINESTRING(1 1,2 2,3 3) | +--------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-format-conversion-functions.htmlF$„÷ˆ@8 ¾û"¾6ST_BUFFER ST_Buffer(g, d[, strategy1[, strategy2[, strategy3]]]) Returns a geometry that represents all points whose distance from the geometry value g is less than or equal to a distance of d, or NULL if any argument is NULL. The SRID of the geometry argument must be 0 because ST_Buffer() supports only the Cartesian coordinate system. If any geometry argument is not a syntactically well-formed geometry, an ER_GIS_INVALID_DATA error occurs. If the geometry argument is empty, ST_Buffer() returns an empty geometry. If the distance is 0, ST_Buffer() returns the geometry argument unchanged: mysql> SET @pt = ST_GeomFromText('POINT(0 0)'); mysql> SELECT ST_AsText(ST_Buffer(@pt, 0)); +------------------------------+ | ST_AsText(ST_Buffer(@pt, 0)) | +------------------------------+ | POINT(0 0) | +------------------------------+ ST_Buffer() supports negative distances for Polygon and MultiPolygon values, and for geometry collections containing Polygon or MultiPolygon values. The result may be an empty geometry. An ER_WRONG_ARGUMENTS error occurs for ST_Buffer() with a negative distance for Point, MultiPoint, LineString, and MultiLineString values, and for geometry collections not containing any Polygon or MultiPolygon values. As of MySQL 5.7.7, ST_Buffer() permits up to three optional strategy arguments following the distance argument. Strategies influence buffer computation. These arguments are byte string values produced by the ST_Buffer_Strategy() function, to be used for point, join, and end strategies: o Point strategies apply to Point and MultiPoint geometries. If no point strategy is specified, the default is ST_Buffer_Strategy('point_circle', 32). o Join strategies apply to LineString, MultiLineString, Polygon, and MultiPolygon geometries. If no join strategy is specified, the default is ST_Buffer_Strategy('join_round', 32). o End strategies apply to LineString and MultiLineString geometries. If no end strategy is specified, the default is ST_Buffer_Strategy('end_round', 32). Up to one strategy of each type may be specified, and they may be given in any order. If multiple strategies of a given type are specified, an ER_WRONG_ARGUMENTS error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html mysql> SET @pt = ST_GeomFromText('POINT(0 0)'); mysql> SET @pt_strategy = ST_Buffer_Strategy('point_square'); mysql> SELECT ST_AsText(ST_Buffer(@pt, 2, @pt_strategy)); +--------------------------------------------+ | ST_AsText(ST_Buffer(@pt, 2, @pt_strategy)) | +--------------------------------------------+ | POLYGON((-2 -2,2 -2,2 2,-2 2,-2 -2)) | +--------------------------------------------+ mysql> SET @ls = ST_GeomFromText('LINESTRING(0 0,0 5,5 5)'); mysql> SET @end_strategy = ST_Buffer_Strategy('end_flat'); mysql> SET @join_strategy = ST_Buffer_Strategy('join_round', 10); mysql> SELECT ST_AsText(ST_Buffer(@ls, 5, @end_strategy, @join_strategy)) +---------------------------------------------------------------+ | ST_AsText(ST_Buffer(@ls, 5, @end_strategy, @join_strategy)) | +---------------------------------------------------------------+ | POLYGON((5 5,5 10,0 10,-3.5355339059327373 8.535533905932738, | | -5 5,-5 0,0 0,5 0,5 5)) | +---------------------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.htmlF¿„@@cü"¾6ST_BUFFER_STRATEGY ST_Buffer_Strategy(strategy[, points_per_circle]) This function returns a strategy byte string for use with ST_Buffer() to influence buffer computation. If any argument is NULL, the return value is NULL. If any argument is invalid, an ER_WRONG_ARGUMENTS error occurs. Information about strategies is available at Boost.org (http://www.boost.org). The first argument must be a string indicating a strategy option: o For point strategies, permitted values are 'point_circle' and 'point_square'. o For join strategies, permitted values are 'join_round' and 'join_miter'. o For end strategies, permitted values are 'end_round' and 'end_flat'. If the first argument is 'point_circle', 'join_round', 'join_miter', or 'end_round', the points_per_circle argument must be given as a positive numeric value. The maximum points_per_circle value is the value of the max_points_in_geometry system variable as of MySQL 5.7.8, 65,536 before that. If the first argument is 'point_square' or 'end_flat', the points_per_circle argument must not be given or an ER_WRONG_ARGUMENTS error occurs. For examples, see the description of ST_Buffer(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.htmlJ‚�‚@HJý"¾6,ST_CENTROID ST_Centroid({poly|mpoly}) Returns the mathematical centroid for the Polygon or MultiPolygon argument as a Point. The result is not guaranteed to be on the MultiPolygon. If the argument is NULL or an empty geometry, the return value is NULL. This function processes geometry collections by computing the centroid point for components of highest dimension in the collection. Such components are extracted and made into a single MultiPolygon, MultiLineString, or MultiPoint for centroid computation. If the argument is an empty geometry collection, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html mysql> SET @poly = ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))'); mysql> SELECT ST_GeometryType(@poly),ST_AsText(ST_Centroid(@poly)); +------------------------+--------------------------------------------+ | ST_GeometryType(@poly) | ST_AsText(ST_Centroid(@poly)) | +------------------------+--------------------------------------------+ | POLYGON | POINT(4.958333333333333 4.958333333333333) | +------------------------+--------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.htmlTä€@P–þ"¾69ST_CONTAINS ST_Contains(g1, g2) Returns 1 or 0 to indicate whether g1 completely contains g2. This tests the opposite relationship as ST_Within(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlFk�‘‚@XŸÿ"¾6FST_CONVEXHULL ST_ConvexHull(g) Returns a geometry that represents the convex hull of the geometry value g. If the argument is NULL, the return value is NULL. This function computes a geometry's convex hull by first checking whether its vertex points are colinear. The function returns a linear hull if so, a polygon hull otherwise. This function processes geometry collections by extracting all vertex points of all components of the collection, creating a MultiPoint value from them, and computing its convex hull. If the argument is an empty geometry collection, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html mysql> SET @g = 'MULTIPOINT(5 0,25 0,15 10,15 25)'; mysql> SELECT ST_AsText(ST_ConvexHull(ST_GeomFromText(@g))); +-----------------------------------------------+ | ST_AsText(ST_ConvexHull(ST_GeomFromText(@g))) | +-----------------------------------------------+ | POLYGON((5 0,25 0,15 25,5 0)) | +-----------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.htmlTà„@`Ëÿ"¾6SST_CROSSES ST_Crosses(g1, g2) The term spatially crosses denotes a spatial relation between two given geometries that has the following properties: o The two geometries intersect. o Their intersection results in a geometry that has a dimension that is one less than the maximum dimension of the two given geometries. o Their intersection is not equal to either of the two given geometries. This function returns 1 or 0 to indicate whether g1 spatially crosses g2. If g1 is a Polygon or a MultiPolygon, or if g2 is a Point or a MultiPoint, the return value is NULL. This function returns 0 if called with an inapplicable geometry argument type combination. For example, it returns 0 if the first argument is a Polygon or MultiPolygon and/or the second argument is a Point or MultiPoint. Returns 1 if g1 spatially crosses g2. Returns NULL if g1 is a Polygon or a MultiPolygon, or if g2 is a Point or a MultiPoint. Otherwise, returns 0. This function returns 0 if called with an inapplicable geometry argument type combination. For example, it returns 0 if the first argument is a Polygon or MultiPolygon and/or the second argument is a Point or MultiPoint. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlp/cÕ¤| igZø¡ÿONP ¯8E¿9l€7Ñ infimum supremumF$�ö€@¾"¾6`ST_DIFFERENCE ST_Difference(g1, g2) Returns a geometry that represents the point set difference of the geometry values g1 and g2. If any argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html mysql> SET @g1 = Point(1,1), @g2 = Point(2,2); mysql> SELECT ST_AsText(ST_Difference(@g1, @g2)); +------------------------------------+ | ST_AsText(ST_Difference(@g1, @g2)) | +------------------------------------+ | POINT(1 1) | +------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.htmlJa�K�@S"¾6mST_DIMENSION ST_Dimension(g) Returns the inherent dimension of the geometry value g, or NULL if the argument is NULL. The dimension can be −1, 0, 1, or 2. The meaning of these values is given in http://dev.mysql.com/doc/refman/5.7/en/gis-class-geometry.html. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html mysql> SELECT ST_Dimension(ST_GeomFromText('LineString(1 1,2 2)')); +------------------------------------------------------+ | ST_Dimension(ST_GeomFromText('LineString(1 1,2 2)')) | +------------------------------------------------------+ | 1 | +------------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.htmlTË€@ }"¾6zST_DISJOINT ST_Disjoint(g1, g2) Returns 1 or 0 to indicate whether g1 is spatially disjoint from (does not intersect) g2. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlTá€é�@(|"¾6‡ST_DISTANCE ST_Distance(g1, g2) Returns the distance between g1 and g2. If either argument is NULL or an empty geometry, the return value is NULL. This function processes geometry collections by returning the shortest distance among all combinations of the components of the two geometry arguments. If an intermediate or final result produces NaN or a negative number, an ER_GIS_INVALID_DATA error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html mysql> SET @g1 = Point(1,1); mysql> SET @g2 = Point(2,2); mysql> SELECT ST_Distance(@g1, @g2); +-----------------------+ | ST_Distance(@g1, @g2) | +-----------------------+ | 1.4142135623730951 | +-----------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlIA�à„@0È"¾6”ST_DISTANCE_SPHERE ST_Distance_Sphere(g1, g2 [, radius]) Returns the mimimum spherical distance between two points and/or multipoints on a sphere, in meters, or NULL if any geometry argument is NULL or empty. Calculations use a spherical earth and a configurable radius. The optional radius argument should be given in meters. If omitted, the default radius is 6,370,986 meters. An ER_WRONG_ARGUMENTS error occurs if the radius argument is present but not positive. The geometry arguments should consist of points that specify (longitude, latitude) coordinate values: o Longitude and latitude are the first and second coordinates of the point, respectively. o Both coordinates are in degrees. o Longitude values must be in the range (-180, 180]. Positive values are east of the prime meridian. o Latitude values must be in the range [-90, 90]. Positive values are north of the equator. Supported argument combinations are (Point, Point), (Point, MultiPoint), and (MultiPoint, Point). An ER_GIS_UNSUPPORTED_ARGUMENT error occurs for other combinations. If any geometry argument is not a syntactically well-formed geometry byte string, an ER_GIS_INVALID_DATA error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html mysql> SET @pt1 = ST_GeomFromText('POINT(0 0)'); mysql> SET @pt2 = ST_GeomFromText('POINT(180 0)'); mysql> SELECT ST_Distance_Sphere(@pt1, @pt2); +--------------------------------+ | ST_Distance_Sphere(@pt1, @pt2) | +--------------------------------+ | 20015042.813723423 | +--------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.htmlM]�ñ€@8ø"¾6¡ST_ENDPOINT ST_EndPoint(ls) Returns the Point that is the endpoint of the LineString value ls. If the argument is NULL or an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html mysql> SET @ls = 'LineString(1 1,2 2,3 3)'; mysql> SELECT ST_AsText(ST_EndPoint(ST_GeomFromText(@ls))); +----------------------------------------------+ | ST_AsText(ST_EndPoint(ST_GeomFromText(@ls))) | +----------------------------------------------+ | POINT(3 3) | +----------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.htmlJn…@@"¾6®ST_ENVELOPE ST_Envelope(g) Returns the minimum bounding rectangle (MBR) for the geometry value g, or NULL if the argument is NULL. The result is returned as a Polygon value that is defined by the corner points of the bounding box: POLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY)) mysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,2 2)'))); +----------------------------------------------------------------+ | ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,2 2)'))) | +----------------------------------------------------------------+ | POLYGON((1 1,2 1,2 2,1 2,1 1)) | +----------------------------------------------------------------+ As of MySQL 5.7.6, if the argument is a point or a vertical or horizontal line segment, ST_Envelope() returns the point or the line segment as its MBR rather than returning an invalid polygon: mysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,1 2)'))); +----------------------------------------------------------------+ | ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,1 2)'))) | +----------------------------------------------------------------+ | LINESTRING(1 1,1 2) | +----------------------------------------------------------------+ URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.htmlTM�¯€@H®"¾6»ST_EQUALS ST_Equals(g1, g2) Returns 1 or 0 to indicate whether g1 is spatially equal to g2. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html mysql> SET @g1 = Point(1,1), @g2 = Point(2,2); mysql> SELECT ST_Equals(@g1, @g1), ST_Equals(@g1, @g2); +---------------------+---------------------+ | ST_Equals(@g1, @g1) | ST_Equals(@g1, @g2) | +---------------------+---------------------+ | 1 | 0 | +---------------------+---------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlJ§�ö€@PE "¾6ÈST_EXTERIORRING ST_ExteriorRing(poly) Returns the exterior ring of the Polygon value poly as a LineString. If the argument is NULL or an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT ST_AsText(ST_ExteriorRing(ST_GeomFromText(@poly))); +----------------------------------------------------+ | ST_AsText(ST_ExteriorRing(ST_GeomFromText(@poly))) | +----------------------------------------------------+ | LINESTRING(0 0,0 3,3 3,3 0,0 0) | +----------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.htmlE<�¾ƒ@X� "¾6ÕST_GEOHASH ST_GeoHash(longitude, latitude, max_length), ST_GeoHash(point, max_length) Returns a geohash string in the connection character set and collation. If any argument is NULL, the return value is NULL. If any argument is invalid, an error occurs. For the first syntax, the longitude must be a number in the range [−180, 180], and the latitude must be a number in the range [−90, 90]. For the second syntax, a POINT value is required, where the X and Y coordinates are in the valid ranges for longitude and latitude, respectively. The resulting string is no longer than max_length characters, which has an upper limit of 100. The string might be shorter than max_length characters because the algorithm that creates the geohash value continues until it has created a string that is either an exact representation of the location or max_length characters, whichever comes first. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-geohash-functions.html mysql> SELECT ST_GeoHash(180,0,10), ST_GeoHash(-180,-90,15); +----------------------+-------------------------+ | ST_GeoHash(180,0,10) | ST_GeoHash(-180,-90,15) | +----------------------+-------------------------+ | xbpbpbpbpb | 000000000000000 | +----------------------+-------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-geohash-functions.html=^�‹�@`ƒ "¾6âST_GEOMCOLLFROMTEXT )ST_GeomCollFromText(wkt[, srid]), ST_GeometryCollectionFromText(wkt[, srid]), ST_GeomCollFromTxt(wkt[, srid]) Constructs a GeometryCollection value using its WKT representation and SRID. If the geometry argument is NULL or not a syntactically well-formed geometry, or if the SRID argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html mysql> SET @g = "MULTILINESTRING((10 10, 11 11), (9 9, 10 10))"; mysql> SELECT ST_AsText(ST_GeomCollFromText(@g)); +--------------------------------------------+ | ST_AsText(ST_GeomCollFromText(@g)) | +--------------------------------------------+ | MULTILINESTRING((10 10,11 11),(9 9,10 10)) | +--------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=�@h² "¾6ïST_GEOMCOLLFROMWKB (ST_GeomCollFromWKB(wkb[, srid]), ST_GeometryCollectionFromWKB(wkb[, srid]) Constructs a GeometryCollection value using its WKB representation and SRID. The result is NULL if the WKB or SRID argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlU‹�;�@py "¾6üST_GEOMETRYN ST_GeometryN(gc, N) Returns the N-th geometry in the GeometryCollection value gc. Geometries are numbered beginning with 1. If any argument is NULL or the geometry argument is an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.html mysql> SET @gc = 'GeometryCollection(Point(1 1),LineString(2 2, 3 3))'; mysql> SELECT ST_AsText(ST_GeometryN(ST_GeomFromText(@gc),1)); +-------------------------------------------------+ | ST_AsText(ST_GeometryN(ST_GeomFromText(@gc),1)) | +-------------------------------------------------+ | POINT(1 1) | +-------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.htmlJ=�;�@x "¾6 ST_GEOMETRYTYPE ST_GeometryType(g) Returns a binary string indicating the name of the geometry type of which the geometry instance g is a member, or NULL if the argument is NULL. The name corresponds to one of the instantiable Geometry subclasses. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html mysql> SELECT ST_GeometryType(ST_GeomFromText('POINT(1 1)')); +------------------------------------------------+ | ST_GeometryType(ST_GeomFromText('POINT(1 1)')) | +------------------------------------------------+ | POINT | +------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.htmlEG�/�@€"¾6ST_GEOMFROMGEOJSON ST_GeomFromGeoJSON(str [, options [, srid]]) Parses a string str representing a GeoJSON object and returns a geometry. If any argument is NULL, the return value is NULL. If any non-NULL argument is invalid, an error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-geojson-functions.html mysql> SET @json = '{ "type": "Point", "coordinates": [102.0, 0.0]}'; mysql> SELECT ST_AsText(ST_GeomFromGeoJSON(@json)); +--------------------------------------+ | ST_AsText(ST_GeomFromGeoJSON(@json)) | +--------------------------------------+ | POINT(102 0) | +--------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-geojson-functions.html=^�@ˆø"¾6#ST_GEOMFROMTEXT )ST_GeomFromText(wkt[, srid]), ST_GeometryFromText(wkt[, srid]) Constructs a geometry value of any type using its WKT representation and SRID. If the geometry argument is NULL or not a syntactically well-formed geometry, or if the SRID argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html= �@�ÈŸ"¾60ST_GEOMFROMWKB (ST_GeomFromWKB(wkb[, srid]), ST_GeometryFromWKB(wkb[, srid]) Constructs a geometry value of any type using its WKB representation and SRID. The result is NULL if the WKB or SRID argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlp*vccZø¡ÿ ¯8óÿïoPOQ ó—E¿:Š€8ò infimum supremumJ¹�%�@†"¾6=ST_INTERIORRINGN ST_InteriorRingN(poly, N) Returns the N-th interior ring for the Polygon value poly as a LineString. Rings are numbered beginning with 1. If the argument is NULL or an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1)); +-------------------------------------------------------+ | ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1)) | +-------------------------------------------------------+ | LINESTRING(1 1,1 2,2 2,2 1,1 1) | +-------------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.htmlFu�ú€@"¾6JST_INTERSECTION ST_Intersection(g1, g2) Returns a geometry that represents the point set intersection of the geometry values g1 and g2. If any argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html mysql> SET @g1 = ST_GeomFromText('LineString(1 1, 3 3)'); mysql> SET @g2 = ST_GeomFromText('LineString(1 3, 3 1)'); mysql> SELECT ST_AsText(ST_Intersection(@g1, @g2)); +--------------------------------------+ | ST_AsText(ST_Intersection(@g1, @g2)) | +--------------------------------------+ | POINT(2 2) | +--------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.htmlT²€@ d"¾6WST_INTERSECTS ST_Intersects(g1, g2) Returns 1 or 0 to indicate whether g1 spatially intersects g2. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlMƒƒ‚@(;"¾6dST_ISCLOSED ST_IsClosed(ls) For a LineString value ls, ST_IsClosed() returns 1 if ls is closed (that is, its ST_StartPoint() and ST_EndPoint() values are the same). If the argument is NULL or an empty geometry, the return value is NULL. For a MultiLineString value ls, ST_IsClosed() returns 1 if ls is closed (that is, the ST_StartPoint() and ST_EndPoint() values are the same for each LineString in ls). ST_IsClosed() returns 0 if ls is not closed. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html mysql> SET @ls1 = 'LineString(1 1,2 2,3 3,2 2)'; mysql> SET @ls2 = 'LineString(1 1,2 2,3 3,1 1)'; mysql> SELECT ST_IsClosed(ST_GeomFromText(@ls1)); +------------------------------------+ | ST_IsClosed(ST_GeomFromText(@ls1)) | +------------------------------------+ | 0 | +------------------------------------+ mysql> SELECT ST_IsClosed(ST_GeomFromText(@ls2)); +------------------------------------+ | ST_IsClosed(ST_GeomFromText(@ls2)) | +------------------------------------+ | 1 | +------------------------------------+ mysql> SET @ls3 = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))'; mysql> SELECT ST_IsClosed(ST_GeomFromText(@ls3)); +------------------------------------+ | ST_IsClosed(ST_GeomFromText(@ls3)) | +------------------------------------+ | 0 | +------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.htmlJ.�@0Õ"¾6qST_ISEMPTY ST_IsEmpty(g) This function is a placeholder that returns 0 for any valid geometry value, 1 for any invalid geometry value, or NULL if the argument is NULL. MySQL does not support GIS EMPTY values such as POINT EMPTY. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.htmlJ‚@8·"¾6~ST_ISSIMPLE ST_IsSimple(g) Returns 1 if the geometry value g has no anomalous geometric points, such as self-intersection or self-tangency. ST_IsSimple() returns 0 if the argument is not simple, and NULL if the argument is NULL. The descriptions of the instantiable geometric classes given under http://dev.mysql.com/doc/refman/5.7/en/opengis-geometry-model.html includes the specific conditions that cause class instances to be classified as not simple. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.htmlI‘�”‚@@Ì"¾6‹ST_ISVALID ST_IsValid(g) Returns 1 if the argument is syntactically well-formed and is geometrically valid, 0 if the argument is not syntactically well-formed or is not geometrically valid. If the argument is NULL, the return value is NULL. Geometry validity is defined by the OGC specification. The only valid empty geometry is represented in the form of an empty geometry collection value. ST_IsValid() returns 1 in this case. ST_IsValid() works only for the Cartesian coordinate system and requires a geometry argument with an SRID of 0. An ER_WRONG_ARGUMENTS error occurs otherwise. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html mysql> SET @ls1 = ST_GeomFromText('LINESTRING(0 0,-0.00 0,0.0 0)'); mysql> SET @ls2 = ST_GeomFromText('LINESTRING(0 0, 1 1)'); mysql> SELECT ST_IsValid(@ls1); +------------------+ | ST_IsValid(@ls1) | +------------------+ | 0 | +------------------+ mysql> SELECT ST_IsValid(@ls2); +------------------+ | ST_IsValid(@ls2) | +------------------+ | 1 | +------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.htmlE�\‚@H"¾6˜ST_LATFROMGEOHASH ST_LatFromGeoHash(geohash_str) Returns the latitude from a geohash string value, as a DOUBLE value in the range [−90, 90]. If the argument is NULL, the return value is NULL. If the argument is invalid, an error occurs. The ST_LatFromGeoHash() decoding function reads no more than 433 characters from the geohash_str argument. That represents the upper limit on information in the internal representation of coordinate values. Characters past the 433rd are ignored, even if they are otherwise illegal and produce an error. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-geohash-functions.html mysql> SELECT ST_LatFromGeoHash(ST_GeoHash(45,-20,10)); +------------------------------------------+ | ST_LatFromGeoHash(ST_GeoHash(45,-20,10)) | +------------------------------------------+ | -20 | +------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-geohash-functions.htmlM7‚˜�@Py"¾6¥ST_LENGTH ST_Length(ls) Returns a double-precision number indicating the length of the LineString or MultiLineString value ls in its associated spatial reference system. The length of a MultiLineString value is equal to the sum of the lengths of its elements. If the argument is NULL or an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html mysql> SET @ls = 'LineString(1 1,2 2,3 3)'; mysql> SELECT ST_Length(ST_GeomFromText(@ls)); +---------------------------------+ | ST_Length(ST_GeomFromText(@ls)) | +---------------------------------+ | 2.8284271247461903 | +---------------------------------+ mysql> SET @mls = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))'; mysql> SELECT ST_Length(ST_GeomFromText(@mls)); +----------------------------------+ | ST_Length(ST_GeomFromText(@mls)) | +----------------------------------+ | 4.242640687119286 | +----------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html=V�@Xð"¾6²ST_LINEFROMTEXT )ST_LineFromText(wkt[, srid]), ST_LineStringFromText(wkt[, srid]) Constructs a LineString value using its WKT representation and SRID. If the geometry argument is NULL or not a syntactically well-formed geometry, or if the SRID argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=�@`ž"¾6¿ST_LINEFROMWKB (ST_LineFromWKB(wkb[, srid]), ST_LineStringFromWKB(wkb[, srid]) Constructs a LineString value using its WKB representation and SRID. The result is NULL if the WKB or SRID argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlE�Þ�@h "¾6ÌST_LONGFROMGEOHASH ST_LongFromGeoHash(geohash_str) Returns the longitude from a geohash string value, as a DOUBLE value in the range [−180, 180]. If the argument is NULL, the return value is NULL. If the argument is invalid, an error occurs. The remarks in the description of ST_LatFromGeoHash() regarding the maximum number of characters processed from the geohash_str argument also apply to ST_LongFromGeoHash(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-geohash-functions.html mysql> SELECT ST_LongFromGeoHash(ST_GeoHash(45,-20,10)); +-------------------------------------------+ | ST_LongFromGeoHash(ST_GeoHash(45,-20,10)) | +-------------------------------------------+ | 45 | +-------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-geohash-functions.htmlIo�&„@p;"¾6ÙST_MAKEENVELOPE ST_MakeEnvelope(pt1, pt2) Returns the rectangle that forms the envelope around two points, as a Point, LineString, or Polygon. If any argument is NULL, the return value is NULL. Calculations are done using the Cartesian coordinate system rather than on a sphere, spheroid, or on earth. Given two points pt1 and pt2, ST_MakeEnvelope() creates the result geometry on an abstract plane like this: o If pt1 and pt2 are equal, the result is the point pt1. o Otherwise, if (pt1, pt2) is a vertical or horizontal line segment, the result is the line segment (pt1, pt2). o Otherwise, the result is a polygon using pt1 and pt2 as diagonal points. The result geometry has an SRID of 0. ST_MakeEnvelope() requires Point geometry arguments with an SRID of 0. An ER_WRONG_ARGUMENTS error occurs otherwise. If any argument is not a syntactically well-formed geometry byte string, or if any coordinate value of the two points is infinite or NaN, an ER_GIS_INVALID_DATA error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html mysql> SET @pt1 = ST_GeomFromText('POINT(0 0)'); mysql> SET @pt2 = ST_GeomFromText('POINT(1 1)'); mysql> SELECT ST_AsText(ST_MakeEnvelope(@pt1, @pt2)); +----------------------------------------+ | ST_AsText(ST_MakeEnvelope(@pt1, @pt2)) | +----------------------------------------+ | POLYGON((0 0,1 0,1 1,0 1,0 0)) | +----------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html=a�@xû"¾6æST_MLINEFROMTEXT )ST_MLineFromText(wkt[, srid]), ST_MultiLineStringFromText(wkt[, srid]) Constructs a MultiLineString value using its WKT representation and SRID. If the geometry argument is NULL or not a syntactically well-formed geometry, or if the SRID argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=�@€¨ "¾6óST_MLINEFROMWKB (ST_MLineFromWKB(wkb[, srid]), ST_MultiLineStringFromWKB(wkb[, srid]) Constructs a MultiLineString value using its WKB representation and SRID. The result is NULL if the WKB or SRID argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html=ƒ@ˆ¯!"¾6ST_MPOINTFROMTEXT )ST_MPointFromText(wkt[, srid]), ST_MultiPointFromText(wkt[, srid]) Constructs a MultiPoint value using its WKT representation and SRID. If the geometry argument is NULL or not a syntactically well-formed geometry, or if the SRID argument is NULL, the return value is NULL. As of MySQL 5.7.9, spatial functions such as ST_MPointFromText() and ST_GeomFromText() that accept WKT-format representations of MultiPoint values permit individual points within values to be surrounded by parentheses. For example, both of the following function calls are valid, whereas before MySQL 5.7.9 the second one produces an error: ST_MPointFromText('MULTIPOINT (1 1, 2 2, 3 3)') ST_MPointFromText('MULTIPOINT ((1 1), (2 2), (3 3))') URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=�@�Ÿ""¾6 ST_MPOINTFROMWKB (ST_MPointFromWKB(wkb[, srid]), ST_MultiPointFromWKB(wkb[, srid]) Constructs a MultiPoint value using its WKB representation and SRID. The result is NULL if the WKB or SRID argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html=[�@˜õ#"¾6ST_MPOLYFROMTEXT )ST_MPolyFromText(wkt[, srid]), ST_MultiPolygonFromText(wkt[, srid]) Constructs a MultiPolygon value using its WKT representation and SRID. If the geometry argument is NULL or not a syntactically well-formed geometry, or if the SRID argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=�@ Ç~$"¾6'ST_MPOLYFROMWKB (ST_MPolyFromWKB(wkb[, srid]), ST_MultiPolygonFromWKB(wkb[, srid]) Constructs a MultiPolygon value using its WKB representation and SRID. The result is NULL if the WKB or SRID argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlp$1cóÿïo ó—оÔQPR!;±E¿:Å€9: infimum supremumUU��@%"¾64ST_NUMGEOMETRIES ST_NumGeometries(gc) Returns the number of geometries in the GeometryCollection value gc. If the argument is NULL or an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.html mysql> SET @gc = 'GeometryCollection(Point(1 1),LineString(2 2, 3 3))'; mysql> SELECT ST_NumGeometries(ST_GeomFromText(@gc)); +----------------------------------------+ | ST_NumGeometries(ST_GeomFromText(@gc)) | +----------------------------------------+ | 2 | +----------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.htmlJ}��@4&"¾6AST_NUMINTERIORRINGS ST_NumInteriorRing(poly), ST_NumInteriorRings(poly) Returns the number of interior rings in the Polygon value poly. If the argument is NULL or an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT ST_NumInteriorRings(ST_GeomFromText(@poly)); +---------------------------------------------+ | ST_NumInteriorRings(ST_GeomFromText(@poly)) | +---------------------------------------------+ | 1 | +---------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.htmlM!�ï€@ º'"¾6NST_NUMPOINTS ST_NumPoints(ls) Returns the number of Point objects in the LineString value ls. If the argument is NULL or an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html mysql> SET @ls = 'LineString(1 1,2 2,3 3)'; mysql> SELECT ST_NumPoints(ST_GeomFromText(@ls)); +------------------------------------+ | ST_NumPoints(ST_GeomFromText(@ls)) | +------------------------------------+ | 3 | +------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.htmlT(‚@(Ú("¾6[ST_OVERLAPS ST_Overlaps(g1, g2) Two geometries spatially overlap if they intersect and their intersection results in a geometry of the same dimension but not equal to either of the given geometries. This function returns 1 or 0 to indicate whether g1 spatially overlaps g2. This function returns 0 if called with an inapplicable geometry argument type combination. For example, it returns 0 if called with geometries of different dimensions or any argument is a Point. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlE/��‚@0n)"¾6hST_POINTFROMGEOHASH ST_PointFromGeoHash(geohash_str, srid) Returns a POINT value containing the decoded geohash value, given a geohash string value. The X and Y coordinates of the point are the longitude in the range [−180, 180] and the latitude in the range [−90, 90], respectively. If any argument is NULL, the return value is NULL. If any argument is invalid, an error occurs. The srid argument is an unsigned 32-bit integer. The remarks in the description of ST_LatFromGeoHash() regarding the maximum number of characters processed from the geohash_str argument also apply to ST_PointFromGeoHash(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-geohash-functions.html mysql> SET @gh = ST_GeoHash(45,-20,10); mysql> SELECT ST_AsText(ST_PointFromGeoHash(@gh,0)); +---------------------------------------+ | ST_AsText(ST_PointFromGeoHash(@gh,0)) | +---------------------------------------+ | POINT(45 -20) | +---------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-geohash-functions.html=.�@8È*"¾6uST_POINTFROMTEXT )ST_PointFromText(wkt[, srid]) Constructs a Point value using its WKT representation and SRID. If the geometry argument is NULL or not a syntactically well-formed geometry, or if the SRID argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=Ü€@@w+"¾6‚ST_POINTFROMWKB (ST_PointFromWKB(wkb[, srid]) Constructs a Point value using its WKB representation and SRID. The result is NULL if the WKB or SRID argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlM]�!�@H(,"¾6�ST_POINTN ST_PointN(ls, N) Returns the N-th Point in the Linestring value ls. Points are numbered beginning with 1. If any argument is NULL or the geometry argument is an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html mysql> SET @ls = 'LineString(1 1,2 2,3 3)'; mysql> SELECT ST_AsText(ST_PointN(ST_GeomFromText(@ls),2)); +----------------------------------------------+ | ST_AsText(ST_PointN(ST_GeomFromText(@ls),2)) | +----------------------------------------------+ | POINT(2 2) | +----------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html=P�@Pê-"¾6œST_POLYFROMTEXT )ST_PolyFromText(wkt[, srid]), ST_PolygonFromText(wkt[, srid]) Constructs a Polygon value using its WKT representation and SRID. If the geometry argument is NULL or not a syntactically well-formed geometry, or if the SRID argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html=ý€@X˜."¾6©ST_POLYFROMWKB (ST_PolyFromWKB(wkb[, srid]), ST_PolygonFromWKB(wkb[, srid]) Constructs a Polygon value using its WKB representation and SRID. The result is NULL if the WKB or SRID argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-wkb-functions.htmlI‚¤„@`]/"¾6¶ST_SIMPLIFY ST_Simplify(g, max_distance) Simplifies a geometry using the Douglas-Peucker algorithm and returns a simplified value of the same type. If any argument is NULL, the return value is NULL. The geometry may be any geometry type, although the Douglas-Peucker algorithm may not actually process every type. A geometry collection is processed by giving its components one by one to the simplification algorithm, and the returned geometries are put into a geometry collection as result. The max_distance argument is the distance (in units of the input coordinates) of a vertex to other segments to be removed. Vertices within this distance of the simplified linestring are removed. If the max_distance argument is not positive, or is NaN, an ER_WRONG_ARGUMENTS error occurs. According to Boost.Geometry, geometries might become invalid as a result of the simplification process, and the process might create self-intersections. To check the validity of the result, pass it to ST_IsValid(). If the geometry argument is not a syntactically well-formed geometry byte string, an ER_GIS_INVALID_DATA error occurs. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html mysql> SET @g = ST_GeomFromText('LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)'); mysql> SELECT ST_AsText(ST_Simplify(@g, 0.5)); +---------------------------------+ | ST_AsText(ST_Simplify(@g, 0.5)) | +---------------------------------+ | LINESTRING(0 0,0 1,1 1,2 3,3 3) | +---------------------------------+ mysql> SELECT ST_AsText(ST_Simplify(@g, 1.0)); +---------------------------------+ | ST_AsText(ST_Simplify(@g, 1.0)) | +---------------------------------+ | LINESTRING(0 0,3 3) | +---------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.htmlJ[�ã€@hæ0"¾6ÃST_SRID ST_SRID(g) Returns an integer indicating the spatial reference system ID associated with the geometry value g, or NULL if the argument is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.html mysql> SELECT ST_SRID(ST_GeomFromText('LineString(1 1,2 2)',101)); +-----------------------------------------------------+ | ST_SRID(ST_GeomFromText('LineString(1 1,2 2)',101)) | +-----------------------------------------------------+ | 101 | +-----------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-general-property-functions.htmlMi�ö€@p 1"¾6ÐST_STARTPOINT ST_StartPoint(ls) Returns the Point that is the start point of the LineString value ls. If the argument is NULL or an empty geometry, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html mysql> SET @ls = 'LineString(1 1,2 2,3 3)'; mysql> SELECT ST_AsText(ST_StartPoint(ST_GeomFromText(@ls))); +------------------------------------------------+ | ST_AsText(ST_StartPoint(ST_GeomFromText(@ls))) | +------------------------------------------------+ | POINT(1 1) | +------------------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.htmlF6�Ô�@x­2"¾6ÝST_SYMDIFFERENCE ST_SymDifference(g1, g2) Returns a geometry that represents the point set symmetric difference of the geometry values g1 and g2, which is defined as: g1 symdifference g2 := (g1 union g2) difference (g1 intersection g2) Or, in function call notation: ST_SymDifference(g1, g2) = ST_Difference(ST_Union(g1, g2), ST_Intersection(g1, g2)) If any argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html mysql> SET @g1 = Point(1,1), @g2 = Point(2,2); mysql> SELECT ST_AsText(ST_SymDifference(@g1, @g2)); +---------------------------------------+ | ST_AsText(ST_SymDifference(@g1, @g2)) | +---------------------------------------+ | MULTIPOINT((1 1),(2 2)) | +---------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.htmlT‚@€Ã3"¾6êST_TOUCHES ST_Touches(g1, g2) Two geometries spatially touch if their interiors do not intersect, but the boundary of one of the geometries intersects either the boundary or the interior of the other. This function returns 1 or 0 to indicate whether g1 spatially touches g2. This function returns 0 if called with an inapplicable geometry argument type combination. For example, it returns 0 if either of the arguments is a Point or MultiPoint. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlFn�ì€@ˆþ4"¾6÷ST_UNION ST_Union(g1, g2) Returns a geometry that represents the point set union of the geometry values g1 and g2. If any argument is NULL, the return value is NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.html mysql> SET @g1 = ST_GeomFromText('LineString(1 1, 3 3)'); mysql> SET @g2 = ST_GeomFromText('LineString(1 3, 3 1)'); mysql> SELECT ST_AsText(ST_Union(@g1, @g2)); +--------------------------------------+ | ST_AsText(ST_Union(@g1, @g2)) | +--------------------------------------+ | MULTILINESTRING((1 1,3 3),(1 3,3 1)) | +--------------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-operator-functions.htmlI‚…@�Õ5"¾6ST_VALIDATE ST_Validate(g) Validates a geometry according to the OGC specification. A geometry can be syntactically well-formed (WKB value plus SRID) but geometrically invalid. For example, this polygon is geometrically invalid: POLYGON((0 0, 0 0, 0 0, 0 0, 0 0)) ST_Validate() returns the geometry if it is syntactically well-formed and is geometrically valid, NULL if the argument is not syntactically well-formed or is not geometrically valid or is NULL. ST_Validate() can be used to filter out invalid geometry data, although at a cost. For applications that require more precise results not tainted by invalid data, this penalty may be worthwhile. If the geometry argument is valid, it is returned as is, except that if an input Polygon or MultiPolygon has clockwise rings, those rings are reversed before checking for validity. If the geometry is valid, the value with the reversed rings is returned. The only valid empty geometry is represented in the form of an empty geometry collection value. ST_Validate() returns it directly without further checks in this case. ST_Validate() works only for the Cartesian coordinate system and requires a geometry argument with an SRID of 0. An ER_WRONG_ARGUMENTS error occurs otherwise. URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html mysql> SET @ls1 = ST_GeomFromText('LINESTRING(0 0)'); mysql> SET @ls2 = ST_GeomFromText('LINESTRING(0 0, 1 1)'); mysql> SELECT ST_AsText(ST_Validate(@ls1)); +------------------------------+ | ST_AsText(ST_Validate(@ls1)) | +------------------------------+ | NULL | +------------------------------+ mysql> SELECT ST_AsText(ST_Validate(@ls2)); +------------------------------+ | ST_AsText(ST_Validate(@ls2)) | +------------------------------+ | LINESTRING(0 0,1 1) | +------------------------------+ http://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.htmlTä€@˜Ç66"¾6ST_WITHIN ST_Within(g1, g2) Returns 1 or 0 to indicate whether g1 is spatially within g2. This tests the opposite relationship as ST_Contains(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.htmlp" ycоÔ!;±Ç24RQS!�.E¿;š€8J infimum supremumH¹€­€@ 7"¾6ST_X ST_X(p) Returns the X-coordinate value for the Point object p as a double-precision number. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-point-property-functions.html mysql> SELECT ST_X(Point(56.7, 53.34)); +--------------------------+ | ST_X(Point(56.7, 53.34)) | +--------------------------+ | 56.7 | +--------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-point-property-functions.htmlH¹€­€@ 8"¾6+ST_Y ST_Y(p) Returns the Y-coordinate value for the Point object p as a double-precision number. URL: http://dev.mysql.com/doc/refman/5.7/en/gis-point-property-functions.html mysql> SELECT ST_Y(Point(56.7, 53.34)); +--------------------------+ | ST_Y(Point(56.7, 53.34)) | +--------------------------+ | 53.34 | +--------------------------+ http://dev.mysql.com/doc/refman/5.7/en/gis-point-property-functions.htmlCâ‚@ ‚9"¾68SUBDATE Syntax: SUBDATE(date,INTERVAL expr unit), SUBDATE(expr,days) When invoked with the INTERVAL form of the second argument, SUBDATE() is a synonym for DATE_SUB(). For information on the INTERVAL unit argument, see the discussion for DATE_ADD(). mysql> SELECT DATE_SUB('2008-01-02', INTERVAL 31 DAY); -> '2007-12-02' mysql> SELECT SUBDATE('2008-01-02', INTERVAL 31 DAY); -> '2007-12-02' The second form enables the use of an integer value for days. In such cases, it is interpreted as the number of days to be subtracted from the date or datetime expression expr. mysql> SELECT SUBDATE('2008-01-02 12:00:00', 31); -> '2007-12-02 12:00:00' URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html<Í€@(g:"¾6ESUBSTR #Syntax: SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str FROM pos FOR len) SUBSTR() is a synonym for SUBSTRING(). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html SELECT SUBSTRING('Quadratically',5); -> 'ratically' mysql> SELECT SUBSTRING('foobarbar' FROM 4); -> 'barbar' mysql> SELECT SUBSTRING('Quadratically',5,6); -> 'ratica' mysql> SELECT SUBSTRING('Sakila', -3); -> 'ila' mysql> SELECT SUBSTRING('Sakila', -5, 3); -> 'aki' mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2); -> 'ki' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<Ÿ€ç�@8 <"¾6_SUBSTRING_INDEX #Syntax: SUBSTRING_INDEX(str,delim,count) Returns the substring from string str before count occurrences of the delimiter delim. If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned. SUBSTRING_INDEX() performs a case-sensitive match when searching for delim. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); -> 'www.mysql' mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); -> 'mysql.com' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlCÉ€�@@n="¾6lSUBTIME Syntax: SUBTIME(expr1,expr2) SUBTIME() returns expr1 − expr2 expressed as a value in the same format as expr1. expr1 is a time or datetime expression, and expr2 is a time expression. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002'); -> '2007-12-30 22:58:58.999997' mysql> SELECT SUBTIME('01:00:00.999999', '02:00:00.999998'); -> '-00:59:59.999999' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html>.�@HÉ>"¾6ySUM Syntax: SUM([DISTINCT] expr) Returns the sum of expr. If the return set has no rows, SUM() returns NULL. The DISTINCT keyword can be used to sum only the distinct values of expr. If there are no matching rows, SUM() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.htmlCpˆ@P ?"¾6†SYSDATE Syntax: SYSDATE([fsp]) Returns the current date and time as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or numeric context. If the fsp argument is given to specify a fractional seconds precision from 0 to 6, the return value includes a fractional seconds part of that many digits. SYSDATE() returns the time at which it executes. This differs from the behavior for NOW(), which returns a constant time that indicates the time at which the statement began to execute. (Within a stored function or trigger, NOW() returns the time at which the function or triggering statement began to execute.) mysql> SELECT NOW(), SLEEP(2), NOW(); +---------------------+----------+---------------------+ | NOW() | SLEEP(2) | NOW() | +---------------------+----------+---------------------+ | 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 | +---------------------+----------+---------------------+ mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE(); +---------------------+----------+---------------------+ | SYSDATE() | SLEEP(2) | SYSDATE() | +---------------------+----------+---------------------+ | 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 | +---------------------+----------+---------------------+ In addition, the SET TIMESTAMP statement affects the value returned by NOW() but not by SYSDATE(). This means that timestamp settings in the binary log have no effect on invocations of SYSDATE(). Because SYSDATE() can return different values even within the same statement, and is not affected by SET TIMESTAMP, it is nondeterministic and therefore unsafe for replication if statement-based binary logging is used. If that is a problem, you can use row-based logging. Alternatively, you can use the --sysdate-is-now option to cause SYSDATE() to be an alias for NOW(). This works if the option is used on both the master and the slave. The nondeterministic nature of SYSDATE() also means that indexes cannot be used for evaluating expressions that refer to it. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlA‡€@X%@"¾6“SYSTEM_USER Syntax: SYSTEM_USER() SYSTEM_USER() is a synonym for USER(). URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html http://dev.mysql.com/doc/refman/5.7/en/information-functions.htmlBo‘€@`ŸA"¾6 TAN Syntax: TAN(X) Returns the tangent of X, where X is given in radians. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT TAN(PI()); -> -1.2246063538224e-16 mysql> SELECT TAN(PI()+1); -> 1.5574077246549 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html@-‚@hÊB"¾6­TEXT TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name] A TEXT column with a maximum length of 65,535 (216 − 1) characters. The effective maximum length is less if the value contains multibyte characters. Each TEXT value is stored using a 2-byte length prefix that indicates the number of bytes in the value. An optional length M can be given for this type. If this is done, MySQL creates the column as the smallest TEXT type large enough to hold values M characters long. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.htmlGñ�@p–C"¾6ºTIME TIME[(fsp)] A time. The range is '-838:59:59.000000' to '838:59:59.000000'. MySQL displays TIME values in 'HH:MM:SS[.fraction]' format, but permits assignment of values to TIME columns using either strings or numbers. An optional fsp value in the range from 0 to 6 may be given to specify fractional seconds precision. A value of 0 signifies that there is no fractional part. If omitted, the default precision is 0. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.htmlC�€º€@xëD"¾6ÇTIME FUNCTION Syntax: TIME(expr) Extracts the time part of the time or datetime expression expr and returns it as a string. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT TIME('2003-12-31 01:02:03'); -> '01:02:03' mysql> SELECT TIME('2003-12-31 01:02:03.000123'); -> '01:02:03.000123' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC �Î�@€xE"¾6ÔTIMEDIFF Syntax: TIMEDIFF(expr1,expr2) TIMEDIFF() returns expr1 − expr2 expressed as a time value. expr1 and expr2 are time or date-and-time expressions, but both must be of the same type. The result returned by TIMEDIFF() is limited to the range allowed for TIME values. Alternatively, you can use either of the functions TIMESTAMPDIFF() and UNIX_TIMESTAMP(), both of which return integers. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT TIMEDIFF('2000:01:01 00:00:00', -> '2000:01:01 00:00:00.000001'); -> '-00:00:00.000001' mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001', -> '2008-12-30 01:01:01.000002'); -> '46:58:57.999999' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlG6ˆ@ˆÛF"¾6áTIMESTAMP TIMESTAMP[(fsp)] A timestamp. The range is '1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999' UTC. TIMESTAMP values are stored as the number of seconds since the epoch ('1970-01-01 00:00:00' UTC). A TIMESTAMP cannot represent the value '1970-01-01 00:00:00' because that is equivalent to 0 seconds from the epoch and the value 0 is reserved for representing '0000-00-00 00:00:00', the "zero" TIMESTAMP value. An optional fsp value in the range from 0 to 6 may be given to specify fractional seconds precision. A value of 0 signifies that there is no fractional part. If omitted, the default precision is 0. The way the server handles TIMESTAMP definitions depends on the value of the explicit_defaults_for_timestamp system variable (see http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html). If explicit_defaults_for_timestamp is enabled, there is no automatic assignment of the DEFAULT CURRENT_TIMESTAMP or ON UPDATE CURRENT_TIMESTAMP attributes to any TIMESTAMP column. They must be included explicitly in the column definition. Also, any TIMESTAMP not explicitly declared as NOT NULL permits NULL values. If explicit_defaults_for_timestamp is disabled, the server handles TIMESTAMP as follows: Unless specified otherwise, the first TIMESTAMP column in a table is defined to be automatically set to the date and time of the most recent modification if not explicitly assigned a value. This makes TIMESTAMP useful for recording the timestamp of an INSERT or UPDATE operation. You can also set any TIMESTAMP column to the current date and time by assigning it a NULL value, unless it has been defined with the NULL attribute to permit NULL values. Automatic initialization and updating to the current date and time can be specified using DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP column definition clauses. By default, the first TIMESTAMP column has these properties, as previously noted. However, any TIMESTAMP column in a table can be defined to have these properties. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.htmlC¤€o�@�´G"¾6îTIMESTAMP FUNCTION Syntax: TIMESTAMP(expr), TIMESTAMP(expr1,expr2) With a single argument, this function returns the date or datetime expression expr as a datetime value. With two arguments, it adds the time expression expr2 to the date or datetime expression expr1 and returns the result as a datetime value. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT TIMESTAMP('2003-12-31'); -> '2003-12-31 00:00:00' mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00'); -> '2004-01-01 00:00:00' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC�€‚@˜È&H"¾6ûTIMESTAMPADD Syntax: TIMESTAMPADD(unit,interval,datetime_expr) Adds the integer expression interval to the date or datetime expression datetime_expr. The unit for interval is given by the unit argument, which should be one of the following values: MICROSECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR. The unit value may be specified using one of keywords as shown, or with a prefix of SQL_TSI_. For example, DAY and SQL_TSI_DAY both are legal. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02'); -> '2003-01-02 00:01:00' mysql> SELECT TIMESTAMPADD(WEEK,1,'2003-01-02'); -> '2003-01-09' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlp!ø[cÇ24!�.¶8ÒêSRT!ıE¿:Û€3â infimum supremumCð€7‚@ÇI"¾6 TIMESTAMPDIFF Syntax: TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) Returns datetime_expr2 − datetime_expr1, where datetime_expr1 and datetime_expr2 are date or datetime expressions. One expression may be a date and the other a datetime; a date value is treated as a datetime having the time part '00:00:00' where necessary. The unit for the result (an integer) is given by the unit argument. The legal values for unit are the same as those listed in the description of the TIMESTAMPADD() function. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01'); -> 3 mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01'); -> -1 mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55'); -> 128885 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCW/�@&J"¾6 TIME_FORMAT Syntax: TIME_FORMAT(time,format) This is used like the DATE_FORMAT() function, but the format string may contain format specifiers only for hours, minutes, seconds, and microseconds. Other specifiers produce a NULL value or 0. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l'); -> '100 100 04 04 4' http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCo—€@ ¦K"¾6 "TIME_TO_SEC Syntax: TIME_TO_SEC(time) Returns the time argument, converted to seconds. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT TIME_TO_SEC('22:23:00'); -> 80580 mysql> SELECT TIME_TO_SEC('00:39:38'); -> 2378 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html@û€@(˜L"¾6 /TINYBLOB TINYBLOB A BLOB column with a maximum length of 255 (28 − 1) bytes. Each TINYBLOB value is stored using a 1-byte length prefix that indicates the number of bytes in the value. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.htmlAÄ€@0bM"¾6 SELECT TO_BASE64('abc'), FROM_BASE64(TO_BASE64('abc')); -> 'JWJj', 'abc' http://dev.mysql.com/doc/refman/5.7/en/string-functions.htmlCh­€@P¶Q"¾6 pTO_DAYS Syntax: TO_DAYS(date) Given a date date, returns a day number (the number of days since year 0). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT TO_DAYS(950501); -> 728779 mysql> SELECT TO_DAYS('2007-10-07'); -> 733321 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCú€ñ€@XŒR"¾6 }TO_SECONDS Syntax: TO_SECONDS(expr) Given a date or datetime expr, returns the number of seconds since the year 0. If expr is not a valid date or datetime value, returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT TO_SECONDS(950501); -> 62966505600 mysql> SELECT TO_SECONDS('2009-11-29'); -> 63426672000 mysql> SELECT TO_SECONDS('2009-11-29 13:43:32'); -> 63426721412 mysql> SELECT TO_SECONDS( NOW() ); -> 63426721458 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html<ü€o�@`S"¾6 ŠTRIM #Syntax: TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM] str) Returns the string str with all remstr prefixes or suffixes removed. If none of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is assumed. remstr is optional and, if not specified, spaces are removed. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT TRIM(' bar '); -> 'bar' mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx'); -> 'barxxx' mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx'); -> 'bar' mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz'); -> 'barx' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<ø€@h’T"¾6 —TRUE FALSE The constants TRUE and FALSE evaluate to 1 and 0, respectively. The constant names can be written in any lettercase. mysql> SELECT TRUE, true, FALSE, false; -> 1, 1, 0, 0 URL: http://dev.mysql.com/doc/refman/5.7/en/boolean-literals.html http://dev.mysql.com/doc/refman/5.7/en/boolean-literals.htmlB"�2�@póU"¾6 ¤TRUNCATE Syntax: TRUNCATE(X,D) Returns the number X, truncated to D decimal places. If D is 0, the result has no decimal point or fractional part. D can be negative to cause D digits left of the decimal point of the value X to become zero. URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html mysql> SELECT TRUNCATE(1.223,1); -> 1.2 mysql> SELECT TRUNCATE(1.999,1); -> 1.9 mysql> SELECT TRUNCATE(1.999,0); -> 1 mysql> SELECT TRUNCATE(-1.999,1); -> -1.9 mysql> SELECT TRUNCATE(122,-2); -> 100 mysql> SELECT TRUNCATE(10.28*100,0); -> 1028 http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html:7ˆ@xÍV"¾6 ±TRUNCATE TABLE Syntax: TRUNCATE [TABLE] tbl_name TRUNCATE TABLE empties a table completely. It requires the DROP privilege. Logically, TRUNCATE TABLE is similar to a DELETE statement that deletes all rows, or a sequence of DROP TABLE and CREATE TABLE statements. To achieve high performance, it bypasses the DML method of deleting data. Thus, it cannot be rolled back, it does not cause ON DELETE triggers to fire, and it cannot be performed for InnoDB tables with parent-child foreign key relationships. Although TRUNCATE TABLE is similar to DELETE, it is classified as a DDL statement rather than a DML statement. It differs from DELETE in the following ways: o Truncate operations drop and re-create the table, which is much faster than deleting rows one by one, particularly for large tables. o Truncate operations cause an implicit commit, and so cannot be rolled back. See http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html. o Truncation operations cannot be performed if the session holds an active table lock. o TRUNCATE TABLE fails for an InnoDB table or NDB table if there are any FOREIGN KEY constraints from other tables that reference the table. Foreign key constraints between columns of the same table are permitted. o Truncation operations do not return a meaningful value for the number of deleted rows. The usual result is "0 rows affected," which should be interpreted as "no information." o As long as the table format file tbl_name.frm is valid, the table can be re-created as an empty table with TRUNCATE TABLE, even if the data or index files have become corrupted. o Any AUTO_INCREMENT value is reset to its start value. This is true even for MyISAM and InnoDB, which normally do not reuse sequence values. o When used with partitioned tables, TRUNCATE TABLE preserves the partitioning; that is, the data and index files are dropped and re-created, while the partition definitions (.par) file is unaffected. o The TRUNCATE TABLE statement does not invoke ON DELETE triggers. URL: http://dev.mysql.com/doc/refman/5.7/en/truncate-table.html http://dev.mysql.com/doc/refman/5.7/en/truncate-table.html<z@€W"¾6 ¾UCASE #Syntax: UCASE(str) UCASE() is a synonym for UPPER(). URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html@‚€v�@ˆ•X"¾6 ËUNCOMPRESS Syntax: UNCOMPRESS(string_to_uncompress) Uncompresses a string compressed by the COMPRESS() function. If the argument is not a compressed value, the result is NULL. This function requires MySQL to have been compiled with a compression library such as zlib. Otherwise, the return value is always NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html mysql> SELECT UNCOMPRESS(COMPRESS('any string')); -> 'any string' mysql> SELECT UNCOMPRESS('any string'); -> NULL http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html@KÀ@�¬Y"¾6 ØUNCOMPRESSED_LENGTH Syntax: UNCOMPRESSED_LENGTH(compressed_string) Returns the length that the compressed string had before being compressed. URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('a',30))); -> 30 http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html<Ò€&�@˜‘Z"¾6 åUNHEX #Syntax: UNHEX(str) For a string argument str, UNHEX(str) interprets each pair of characters in the argument as a hexadecimal number and converts it to the byte represented by the number. The return value is a binary string. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html mysql> SELECT UNHEX('4D7953514C'); -> 'MySQL' mysql> SELECT X'4D7953514C'; -> 'MySQL' mysql> SELECT UNHEX(HEX('string')); -> 'string' mysql> SELECT HEX(UNHEX('1267')); -> '1267' http://dev.mysql.com/doc/refman/5.7/en/string-functions.html<‚@ ["¾6 òUNINSTALL PLUGIN Syntax: UNINSTALL PLUGIN plugin_name This statement removes an installed server plugin. It requires the DELETE privilege for the mysql.plugin system table. UNINSTALL PLUGIN is the complement of INSTALL PLUGIN. plugin_name must be the name of some plugin that is listed in the mysql.plugin table. The server executes the plugin's deinitialization function and removes the row for the plugin from the mysql.plugin system table, so that subsequent server restarts will not load and initialize the plugin. UNINSTALL PLUGIN does not remove the plugin's shared library file. URL: http://dev.mysql.com/doc/refman/5.7/en/uninstall-plugin.html http://dev.mysql.com/doc/refman/5.7/en/uninstall-plugin.html1V‚@¨å\"¾6 ÿUNION Syntax: SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | DISTINCT] SELECT ...] UNION is used to combine the result from multiple SELECT statements into a single result set. The column names from the first SELECT statement are used as the column names for the results returned. Selected columns listed in corresponding positions of each SELECT statement should have the same data type. (For example, the first column selected by the first statement should have the same type as the first column selected by the other statements.) URL: http://dev.mysql.com/doc/refman/5.7/en/union.html http://dev.mysql.com/doc/refman/5.7/en/union.htmlCÔ€�…@°ÌŽ]"¾6! UNIX_TIMESTAMP Syntax: UNIX_TIMESTAMP([date]) If UNIX_TIMESTAMP() is called with no date argument, it returns a Unix timestamp representing seconds since '1970-01-01 00:00:00' UTC. If UNIX_TIMESTAMP() is called with a date argument, it returns the value of the argument as seconds since '1970-01-01 00:00:00' UTC. The server interprets date as a value in the session time zone and converts it to an internal Unix timestamp value in UTC. (Clients can set the session time zone as described in http://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html.) The date argument may be a DATE, DATETIME, or TIMESTAMP string, or a number in YYMMDD, YYMMDDHHMMSS, YYYYMMDD, or YYYYMMDDHHMMSS format. If the argument includes a time part, it may optionally include a fractional seconds part. The return value is an integer if no argument is given or the argument does not include a fractional seconds part, or DECIMAL if an argument is given that includes a fractional seconds part. When the date argument is a TIMESTAMP column, UNIX_TIMESTAMP() returns the internal timestamp value directly, with no implicit "string-to-Unix-timestamp" conversion. The valid range of argument values is the same as for the TIMESTAMP data type: '1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999' UTC. If you pass an out-of-range date to UNIX_TIMESTAMP(), it returns 0. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT UNIX_TIMESTAMP(); -> 1447431666 mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19'); -> 1447431619 mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012'); -> 1447431619.012 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlp'­¶c¶8Òê!ı„Jâ¦TSU":E¿;€5& infimum supremum28�@ È^"¾6!UPDATE Syntax: UPDATE is a DML statement that modifies rows in a table. Single-table syntax: UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET assignment_list [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] value: {expr | DEFAULT} assignment: col_name = value assignment_list: assignment [, assignment] ... Multiple-table syntax: UPDATE [LOW_PRIORITY] [IGNORE] table_references SET assignment_list [WHERE where_condition] For the single-table syntax, the UPDATE statement updates columns of existing rows in the named table with new values. The SET clause indicates which columns to modify and the values they should be given. Each value can be given as an expression, or the keyword DEFAULT to set a column explicitly to its default value. The WHERE clause, if given, specifies the conditions that identify which rows to update. With no WHERE clause, all rows are updated. If the ORDER BY clause is specified, the rows are updated in the order that is specified. The LIMIT clause places a limit on the number of rows that can be updated. For the multiple-table syntax, UPDATE updates rows in each table named in table_references that satisfy the conditions. Each matching row is updated once, even if it matches the conditions multiple times. For multiple-table syntax, ORDER BY and LIMIT cannot be used. For partitioned tables, both the single-single and multiple-table forms of this statement support the use of a PARTITION option as part of a table reference. This option takes a list of one or more partitions or subpartitions (or both). Only the partitions (or subpartitions) listed are checked for matches, and a row that is not in any of these partitions or subpartitions is not updated, whether it satisfies the where_condition or not. *Note*: Unlike the case when using PARTITION with an INSERT or REPLACE statement, an otherwise valid UPDATE ... PARTITION statement is considered successful even if no rows in the listed partitions (or subpartitions) match the where_condition. For more information and examples, see http://dev.mysql.com/doc/refman/5.7/en/partitioning-selection.html. where_condition is an expression that evaluates to true for each row to be updated. For expression syntax, see http://dev.mysql.com/doc/refman/5.7/en/expressions.html. table_references and where_condition are specified as described in http://dev.mysql.com/doc/refman/5.7/en/select.html. You need the UPDATE privilege only for columns referenced in an UPDATE that are actually updated. You need only the SELECT privilege for any columns that are read but not modified. The UPDATE statement supports the following modifiers: o With the LOW_PRIORITY modifier, execution of the UPDATE is delayed until no other clients are reading from the table. This affects only storage engines that use only table-level locking (such as MyISAM, MEMORY, and MERGE). o With the IGNORE modifier, the update statement does not abort even if errors occur during the update. Rows for which duplicate-key conflicts occur on a unique key value are not updated. Rows updated to values that would cause data conversion errors are updated to the closest valid values instead. For more information, see http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#ignore-strict-co mparison. URL: http://dev.mysql.com/doc/refman/5.7/en/update.html http://dev.mysql.com/doc/refman/5.7/en/update.html9v‚)‚@5_"¾6!&UPDATEXML #Syntax: UpdateXML(xml_target, xpath_expr, new_xml) This function replaces a single portion of a given fragment of XML markup xml_target with a new XML fragment new_xml, and then returns the changed XML. The portion of xml_target that is replaced matches an XPath expression xpath_expr supplied by the user. If no expression matching xpath_expr is found, or if multiple matches are found, the function returns the original xml_target XML fragment. All three arguments should be strings. URL: http://dev.mysql.com/doc/refman/5.7/en/xml-functions.html mysql> SELECT -> UpdateXML('ccc', '/a', 'fff') AS val1, -> UpdateXML('ccc', '/b', 'fff') AS val2, -> UpdateXML('ccc', '//b', 'fff') AS val3, -> UpdateXML('ccc', '/a/d', 'fff') AS val4, -> UpdateXML('ccc', '/a/d', 'fff') AS val5 -> \G *************************** 1. row *************************** val1: fff val2: ccc val3: fff val4: cccfff val5: ccc http://dev.mysql.com/doc/refman/5.7/en/xml-functions.html<M‚@ æ`"¾6!3UPPER #Syntax: UPPER(str) Returns the string str with all characters changed to uppercase according to the current character set mapping. The default is latin1 (cp1252 West European). mysql> SELECT UPPER('Hej'); -> 'HEJ' See the description of LOWER() for information that also applies to UPPER(). This included information about how to perform lettercase conversion of binary strings (BINARY, VARBINARY, BLOB) for which these functions are ineffective, and information about case folding for Unicode character sets. URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html/‚@(§a"¾6!@USE 'Syntax: USE db_name The USE db_name statement tells MySQL to use the db_name database as the default (current) database for subsequent statements. The database remains the default until the end of the session or another USE statement is issued: USE db1; SELECT COUNT(*) FROM mytable; # selects from db1.mytable USE db2; SELECT COUNT(*) FROM mytable; # selects from db2.mytable The database name must be specified on a single line. Newlines in database names are not supported. URL: http://dev.mysql.com/doc/refman/5.7/en/use.html http://dev.mysql.com/doc/refman/5.7/en/use.htmlA4²€@0„b"¾6!MUSER Syntax: USER() Returns the current MySQL user name and host name as a string in the utf8 character set. URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT USER(); -> 'davida@localhost' http://dev.mysql.com/doc/refman/5.7/en/information-functions.htmlCLÿ€@8ëc"¾6!ZUTC_DATE Syntax: UTC_DATE, UTC_DATE() Returns the current UTC date as a value in 'YYYY-MM-DD' or YYYYMMDD format, depending on whether the function is used in a string or numeric context. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT UTC_DATE(), UTC_DATE() + 0; -> '2003-08-14', 20030814 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCOž�@@�d"¾6!gUTC_TIME Syntax: UTC_TIME, UTC_TIME([fsp]) Returns the current UTC time as a value in 'HH:MM:SS' or HHMMSS format, depending on whether the function is used in a string or numeric context. If the fsp argument is given to specify a fractional seconds precision from 0 to 6, the return value includes a fractional seconds part of that many digits. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT UTC_TIME(), UTC_TIME() + 0; -> '18:07:53', 180753.000000 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlClÄ�@HÐe"¾6!tUTC_TIMESTAMP Syntax: UTC_TIMESTAMP, UTC_TIMESTAMP([fsp]) Returns the current UTC date and time as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or numeric context. If the fsp argument is given to specify a fractional seconds precision from 0 to 6, the return value includes a fractional seconds part of that many digits. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0; -> '2003-08-14 18:08:04', 20030814180804.000000 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCH‡@Péf"¾6!�UUID Syntax: UUID() Returns a Universal Unique Identifier (UUID) generated according to RFC 4122, "A Universally Unique IDentifier (UUID) URN Namespace" (http://www.ietf.org/rfc/rfc4122.txt). A UUID is designed as a number that is globally unique in space and time. Two calls to UUID() are expected to generate two different values, even if these calls are performed on two separate devices not connected to each other. *Warning*: Although UUID() values are intended to be unique, they are not necessarily unguessable or unpredictable. If unpredictability is required, UUID values should be generated some other way. UUID() returns a value that conforms to UUID version 1 as described in RFC 4122. The value is a 128-bit number represented as a utf8 string of five hexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format: o The first three numbers are generated from the low, middle, and high parts of a timestamp. The high part also includes the UUID version number. o The fourth number preserves temporal uniqueness in case the timestamp value loses monotonicity (for example, due to daylight saving time). o The fifth number is an IEEE 802 node number that provides spatial uniqueness. A random number is substituted if the latter is not available (for example, because the host device has no Ethernet card, or it is unknown how to find the hardware address of an interface on the host operating system). In this case, spatial uniqueness cannot be guaranteed. Nevertheless, a collision should have very low probability. The MAC address of an interface is taken into account only on FreeBSD and Linux. On other operating systems, MySQL uses a randomly generated 48-bit number. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT UUID(); -> '6ccd780c-baba-1026-9564-5b8c656024db' http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.htmlC9iƒ@XBg"¾6!ŽUUID_SHORT Syntax: UUID_SHORT() Returns a "short" universal identifier as a 64-bit unsigned integer. Values returned by UUID_SHORT() differ from the string-format 128-bit identifiers returned by the UUID() function and have different uniqueness properties. The value of UUID_SHORT() is guaranteed to be unique if the following conditions hold: o The server_id value of the current server is between 0 and 255 and is unique among your set of master and slave servers o You do not set back the system time for your server host between mysqld restarts o You invoke UUID_SHORT() on average fewer than 16 million times per second between mysqld restarts The UUID_SHORT() return value is constructed this way: (server_id & 255) << 56 + (server_startup_time_in_seconds << 24) + incremented_variable++; URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> SELECT UUID_SHORT(); -> 92395783831158784 http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html@&�@`Ãh"¾6!›VALIDATE_PASSWORD_STRENGTH Syntax: VALIDATE_PASSWORD_STRENGTH(str) Given an argument representing a cleartext password, this function returns an integer to indicate how strong the password is. The return value ranges from 0 (weak) to 100 (strong). URL: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.htmlCn³‚@hÁi"¾6!¨VALUES Syntax: VALUES(col_name) In an INSERT ... ON DUPLICATE KEY UPDATE statement, you can use the VALUES(col_name) function in the UPDATE clause to refer to column values from the INSERT portion of the statement. In other words, VALUES(col_name) in the UPDATE clause refers to the value of col_name that would be inserted, had no duplicate-key conflict occurred. This function is especially useful in multiple-row inserts. The VALUES() function is meaningful only in the ON DUPLICATE KEY UPDATE clause of INSERT statements and returns NULL otherwise. See http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html. URL: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html@�@pŸj"¾6!µVARBINARY VARBINARY(M) The VARBINARY type is similar to the VARCHAR type, but stores binary byte strings rather than nonbinary character strings. M represents the maximum column length in bytes. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html@[…@xËJk"¾6!ÂVARCHAR [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name] A variable-length string. M represents the maximum column length in characters. The range of M is 0 to 65,535. The effective maximum length of a VARCHAR is subject to the maximum row size (65,535 bytes, which is shared among all columns) and the character set used. For example, utf8 characters can require up to three bytes per character, so a VARCHAR column that uses the utf8 character set can be declared to be a maximum of 21,844 characters. See http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html. MySQL stores VARCHAR values as a 1-byte or 2-byte length prefix plus data. The length prefix indicates the number of bytes in the value. A VARCHAR column uses one length byte if values require no more than 255 bytes, two length bytes if values may require more than 255 bytes. *Note*: MySQL follows the standard SQL specification, and does not remove trailing spaces from VARCHAR values. VARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the standard SQL way to define that a VARCHAR column should use some predefined character set. MySQL uses utf8 as this predefined character set. http://dev.mysql.com/doc/refman/5.7/en/charset-national.html. NVARCHAR is shorthand for NATIONAL VARCHAR. URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.htmlpec„Jâ¦":»ëƒUTV":E¿1×€0” infimum supremum>)�@Äl"¾6!ÏVARIANCE Syntax: VARIANCE(expr) Returns the population standard variance of expr. VARIANCE() is a synonym for the standard SQL function VAR_POP(), provided as a MySQL extension. If there are no matching rows, VARIANCE() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html>~�@m"¾6!ÜVAR_POP Syntax: VAR_POP(expr) Returns the population standard variance of expr. It considers rows as the whole population, not as a sample, so it has the number of rows as the denominator. You can also use VARIANCE(), which is equivalent but is not standard SQL. If there are no matching rows, VAR_POP() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html>ö€@ ‘n"¾6!éVAR_SAMP Syntax: VAR_SAMP(expr) Returns the sample variance of expr. That is, the denominator is the number of rows minus one. If there are no matching rows, VAR_SAMP() returns NULL. URL: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.htmlA6z�@(No"¾6!öVERSION Syntax: VERSION() Returns a string that indicates the MySQL server version. The string uses the utf8 character set. The value might have a suffix in addition to the version number. See the description of the version system variable in http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. URL: http://dev.mysql.com/doc/refman/5.7/en/information-functions.html mysql> SELECT VERSION(); -> '5.7.27-standard' http://dev.mysql.com/doc/refman/5.7/en/information-functions.html:cH„@0Bp"¾6"WAIT_FOR_EXECUTED_GTID_SET Syntax: WAIT_FOR_EXECUTED_GTID_SET(gtid_set[, timeout]) Wait until the server has applied all of the transactions whose global transaction identifiers are contained in gtid_set; that is, until the condition GTID_SUBSET(gtid_subset, @@GLOBAL.gtid_executed) holds. See http://dev.mysql.com/doc/refman/5.7/en/replication-gtids-concepts.html for a definition of GTID sets. If a timeout is specified, and timeout seconds elapse before all of the transactions in the GTID set have been applied, the function stops waiting. timeout is optional, and the default timeout is 0 seconds, in which case the function always waits until all of the transactions in the GTID set have been applied. WAIT_FOR_EXECUTED_GTID_SET() monitors all the GTIDs that are applied on the server, including transactions that arrive from all replication channels and user clients. It does not take into account whether replication channels have been started or stopped. For more information, see http://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html. URL: http://dev.mysql.com/doc/refman/5.7/en/gtid-functions.html mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET('3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5'); -> 0 http://dev.mysql.com/doc/refman/5.7/en/gtid-functions.html:>‰@8 Öq"¾6"WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS Syntax: WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(gtid_set[, timeout][,channel]) WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() is similar to WAIT_FOR_EXECUTED_GTID_SET() in that it waits until all of the transactions whose global transaction identifiers are contained in gtid_set have been applied, or until timeout seconds have elapsed, whichever occurs first. However, WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() applies to a specific replication channel, and stops only after the transactions have been applied on the specified channel, for which the applier must be running. In contrast, WAIT_FOR_EXECUTED_GTID_SET() stops after the transactions have been applied, regardless of where they were applied (on any replication channel or any user client), and whether or not any replication channels are running. The channel option names which replication channel the function applies to. If no channel is named and no channels other than the default replication channel exist, the function applies to the default replication channel. If multiple replication channels exist, you must specify a channel as otherwise it is not known which replication channel the function applies to. See http://dev.mysql.com/doc/refman/5.7/en/replication-channels.html for more information on replication channels. *Note*: Because WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() applies to a specific replication channel, if an expected transaction arrives on a different replication channel or from a user client, for example in a failover or manual recovery situation, the function can hang indefinitely if no timeout is set. Use WAIT_FOR_EXECUTED_GTID_SET() instead to ensure correct handling of transactions in these situations. GTID sets used with WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() are represented as strings and must be quoted in the same way as for WAIT_FOR_EXECUTED_GTID_SET(). For WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), the return value for the function is an arbitrary positive number. If GTID-based replication is not active (that is, if the value of the gtid_mode variable is OFF), then this value is undefined and WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() returns NULL. If the slave is not running then the function also returns NULL. gtid_mode cannot be changed to OFF while any client is using this function to wait for GTIDs to be applied. URL: http://dev.mysql.com/doc/refman/5.7/en/gtid-functions.html http://dev.mysql.com/doc/refman/5.7/en/gtid-functions.htmlCÀó�@@Vr"¾6"WEEK Syntax: WEEK(date[,mode]) This function returns the week number for date. The two-argument form of WEEK() enables you to specify whether the week starts on Sunday or Monday and whether the return value should be in the range from 0 to 53 or from 1 to 53. If the mode argument is omitted, the value of the default_week_format system variable is used. See http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT WEEK('2008-02-20'); -> 7 mysql> SELECT WEEK('2008-02-20',0); -> 7 mysql> SELECT WEEK('2008-02-20',1); -> 8 mysql> SELECT WEEK('2008-12-31',1); -> 53 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlCm°€@H½s"¾6"*WEEKDAY Syntax: WEEKDAY(date) Returns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 = Sunday). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT WEEKDAY('2008-02-03 22:23:00'); -> 6 mysql> SELECT WEEKDAY('2007-11-06'); -> 1 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlC5ÿ€@PÔt"¾6"7WEEKOFYEAR Syntax: WEEKOFYEAR(date) Returns the calendar week of the date as a number in the range from 1 to 53. WEEKOFYEAR() is a compatibility function that is equivalent to WEEK(date,3). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT WEEKOFYEAR('2008-02-20'); -> 8 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html<r‹@X u"¾6"DWEIGHT_STRING #Syntax: WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [LEVEL levels] [flags]) levels: N [ASC|DESC|REVERSE] [, N [ASC|DESC|REVERSE]] ... This function returns the weight string for the input string. The return value is a binary string that represents the comparison and sorting value of the string. It has these properties: o If WEIGHT_STRING(str1) = WEIGHT_STRING(str2), then str1 = str2 (str1 and str2 are considered equal) o If WEIGHT_STRING(str1) < WEIGHT_STRING(str2), then str1 < str2 (str1 sorts before str2) WEIGHT_STRING() is a debugging function intended for internal use. Its behavior can change without notice between MySQL versions. It can be used for testing and debugging of collations, especially if you are adding a new collation. See http://dev.mysql.com/doc/refman/5.7/en/adding-collation.html. This list briefly summarizes the arguments. More details are given in the discussion following the list. o str: The input string expression. o AS clause: Optional; cast the input string to a given type and length. o LEVEL clause: Optional; specify weight levels for the return value. o flags: Optional; unused. The input string, str, is a string expression. If the input is a nonbinary (character) string such as a CHAR, VARCHAR, or TEXT value, the return value contains the collation weights for the string. If the input is a binary (byte) string such as a BINARY, VARBINARY, or BLOB value, the return value is the same as the input (the weight for each byte in a binary string is the byte value). If the input is NULL, WEIGHT_STRING() returns NULL. Examples: mysql> SET @s = _latin1 'AB' COLLATE latin1_swedish_ci; mysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s)); +------+---------+------------------------+ | @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) | +------+---------+------------------------+ | AB | 4142 | 4142 | +------+---------+------------------------+ mysql> SET @s = _latin1 'ab' COLLATE latin1_swedish_ci; mysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s)); +------+---------+------------------------+ | @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) | +------+---------+------------------------+ | ab | 6162 | 4142 | +------+---------+------------------------+ mysql> SET @s = CAST('AB' AS BINARY); mysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s)); +------+---------+------------------------+ | @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) | +------+---------+------------------------+ | AB | 4142 | 4142 | +------+---------+------------------------+ mysql> SET @s = CAST('ab' AS BINARY); mysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s)); +------+---------+------------------------+ | @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) | +------+---------+------------------------+ | ab | 6162 | 6162 | +------+---------+------------------------+ URL: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html http://dev.mysql.com/doc/refman/5.7/en/string-functions.html1È�@`Õv"¾6"QWHILE Syntax: [begin_label:] WHILE search_condition DO statement_list END WHILE [end_label] The statement list within a WHILE statement is repeated as long as the search_condition expression is true. statement_list consists of one or more SQL statements, each terminated by a semicolon (;) statement delimiter. A WHILE statement can be labeled. For the rules regarding label use, see [HELP labels]. URL: http://dev.mysql.com/doc/refman/5.7/en/while.html CREATE PROCEDURE dowhile() BEGIN DECLARE v1 INT DEFAULT 5; WHILE v1 > 0 DO ... SET v1 = v1 - 1; END WHILE; END; http://dev.mysql.com/doc/refman/5.7/en/while.htmlJÀ@hjw"¾6"^WITHIN Within(g1, g2) MBRWithin() and Within() are synonyms. For more information, see the description of MBRWithin(). URL: http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html http://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-mbr.html<t�@p x"¾6"kWKT DEFINITION )The Well-Known Text (WKT) representation of geometry values is designed for exchanging geometry data in ASCII form. The OpenGIS specification provides a Backus-Naur grammar that specifies the formal production rules for writing WKT values (see http://dev.mysql.com/doc/refman/5.7/en/spatial-types.html). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.html http://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.htmlH¨€@xÏÜy"¾6"xX X(p) ST_X() and X() are synonyms. For more information, see the description of ST_X(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-point-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-point-property-functions.htmlp¬ðc»ëƒ":núBÿVUÿÿÿÿ"!E¿¦€ o infimum supremum9Ô�@kz"¾6"…XA %Syntax: XA {START|BEGIN} xid [JOIN|RESUME] XA END xid [SUSPEND [FOR MIGRATE]] XA PREPARE xid XA COMMIT xid [ONE PHASE] XA ROLLBACK xid XA RECOVER [CONVERT XID] For XA START, the JOIN and RESUME clauses are not supported. For XA END the SUSPEND [FOR MIGRATE] clause is not supported. Each XA statement begins with the XA keyword, and most of them require an xid value. An xid is an XA transaction identifier. It indicates which transaction the statement applies to. xid values are supplied by the client, or generated by the MySQL server. An xid value has from one to three parts: xid: gtrid [, bqual [, formatID ]] gtrid is a global transaction identifier, bqual is a branch qualifier, and formatID is a number that identifies the format used by the gtrid and bqual values. As indicated by the syntax, bqual and formatID are optional. The default bqual value is '' if not given. The default formatID value is 1 if not given. gtrid and bqual must be string literals, each up to 64 bytes (not characters) long. gtrid and bqual can be specified in several ways. You can use a quoted string ('ab'), hex string (X'6162', 0x6162), or bit value (b'nnnn'). formatID is an unsigned integer. The gtrid and bqual values are interpreted in bytes by the MySQL server's underlying XA support routines. However, while an SQL statement containing an XA statement is being parsed, the server works with some specific character set. To be safe, write gtrid and bqual as hex strings. xid values typically are generated by the Transaction Manager. Values generated by one TM must be different from values generated by other TMs. A given TM must be able to recognize its own xid values in a list of values returned by the XA RECOVER statement. XA START xid starts an XA transaction with the given xid value. Each XA transaction must have a unique xid value, so the value must not currently be used by another XA transaction. Uniqueness is assessed using the gtrid and bqual values. All following XA statements for the XA transaction must be specified using the same xid value as that given in the XA START statement. If you use any of those statements but specify an xid value that does not correspond to some existing XA transaction, an error occurs. One or more XA transactions can be part of the same global transaction. All XA transactions within a given global transaction must use the same gtrid value in the xid value. For this reason, gtrid values must be globally unique so that there is no ambiguity about which global transaction a given XA transaction is part of. The bqual part of the xid value must be different for each XA transaction within a global transaction. (The requirement that bqual values be different is a limitation of the current MySQL XA implementation. It is not part of the XA specification.) The XA RECOVER statement returns information for those XA transactions on the MySQL server that are in the PREPARED state. (See http://dev.mysql.com/doc/refman/5.7/en/xa-states.html.) The output includes a row for each such XA transaction on the server, regardless of which client started it. XA RECOVER output rows look like this (for an example xid value consisting of the parts 'abc', 'def', and 7): mysql> XA RECOVER; +----------+--------------+--------------+--------+ | formatID | gtrid_length | bqual_length | data | +----------+--------------+--------------+--------+ | 7 | 3 | 3 | abcdef | +----------+--------------+--------------+--------+ The output columns have the following meanings: o formatID is the formatID part of the transaction xid o gtrid_length is the length in bytes of the gtrid part of the xid o bqual_length is the length in bytes of the bqual part of the xid o data is the concatenation of the gtrid and bqual parts of the xid XID values may contain nonprintable characters. As of MySQL 5.7.5, XA RECOVER permits an optional CONVERT XID clause so that clients can request XID values in hexadecimal. URL: http://dev.mysql.com/doc/refman/5.7/en/xa-statements.html http://dev.mysql.com/doc/refman/5.7/en/xa-statements.html=œ€ï€@%{"¾6"’XOR Syntax: XOR Logical XOR. Returns NULL if either operand is NULL. For non-NULL operands, evaluates to 1 if an odd number of operands is nonzero, otherwise 0 is returned. URL: http://dev.mysql.com/doc/refman/5.7/en/logical-operators.html mysql> SELECT 1 XOR 1; -> 0 mysql> SELECT 1 XOR 0; -> 1 mysql> SELECT 1 XOR NULL; -> NULL mysql> SELECT 1 XOR 1 XOR 1; -> 1 http://dev.mysql.com/doc/refman/5.7/en/logical-operators.htmlH¨€@ M|"¾6"ŸY Y(p) ST_Y() and Y() are synonyms. For more information, see the description of ST_Y(). URL: http://dev.mysql.com/doc/refman/5.7/en/gis-point-property-functions.html http://dev.mysql.com/doc/refman/5.7/en/gis-point-property-functions.htmlC2¯€@(�}"¾6"¬YEAR Syntax: YEAR(date) Returns the year for date, in the range 1000 to 9999, or 0 for the "zero" date. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT YEAR('1987-01-01'); -> 1987 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.htmlGu‚@0~"¾6"¹YEAR DATA TYPE YEAR[(4)] A year in four-digit format. MySQL displays YEAR values in YYYY format, but permits assignment of values to YEAR columns using either strings or numbers. Values display as 1901 to 2155, and 0000. *Note*: The YEAR(2) data type is deprecated and support for it is removed in MySQL 5.7.5. To convert YEAR(2) columns to YEAR(4), see http://dev.mysql.com/doc/refman/5.7/en/migrating-to-year4.html. For additional information about YEAR display format and interpretation of input values, see http://dev.mysql.com/doc/refman/5.7/en/year.html. URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.html http://dev.mysql.com/doc/refman/5.7/en/date-and-time-type-overview.htmlC8ß�@8·"¾6"ÆYEARWEEK Syntax: YEARWEEK(date), YEARWEEK(date,mode) Returns year and week for a date. The year in the result may be different from the year in the date argument for the first and the last week of the year. The mode argument works exactly like the mode argument to WEEK(). For the single-argument syntax, a mode value of 0 is used. Unlike WEEK(), the value of default_week_format does not influence YEARWEEK(). URL: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html mysql> SELECT YEARWEEK('1987-01-01'); -> 198652 http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html9g„€@@�€"¾6"Ó^ Syntax: ^ Bitwise XOR. The result is an unsigned 64-bit integer. URL: http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html mysql> SELECT 1 ^ 1; -> 0 mysql> SELECT 1 ^ 0; -> 1 mysql> SELECT 11 ^ 3; -> 8 http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html9%ƒ€@H>�"¾6"à| Syntax: | Bitwise OR. The result is an unsigned 64-bit integer. URL: http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html mysql> SELECT 29 | 15; -> 31 http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html9#ˆ€@Pâ‚"¾6"í~ Syntax: ~ Invert all bits. The result is an unsigned 64-bit integer. URL: http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html mysql> SELECT 5 & ~1; -> 4 http://dev.mysql.com/doc/refman/5.7/en/bit-functions.htmlp_cnúBÿ"!