Конспект виразів структурованих запитів діалектів MySQL та MariaDB

запросов выборки данных.

  • официальный MySQL 8.0 Reference Manual > Data Manipulation Statements //dev.mysql.com
  • MariaDB: Complete list of SQL statements for data definition, data manipulation, etc. //mariadb.com

Справочник !!! VPN //www.mysql.ru/docs/mysql-man-4.0-ru/reference.html

!!! MySQL — Использование переменных в запросе https://habr.com/ru/post/442706/

!!! WITH RECURSIVE

///

Временные таблицы

Временные таблицы создаются и удаляются почти также, как обычные, для использования до завершения текущей сессии.

  • создается оператором CREATE TEMPORARY TABLE tmp_table ...
    • применимо CREATE TEMPORARY TABLE tmp_table SELECT ... FROM
    • не применимо CREATE TEMPORARY TABLE tmp_table LIKE
  • удаляется оператором DROP TEMPORARY TABLE tmp_table ...
  • размещается в памяти
  • не доступна и не вызывает коллизий в других сессиях
  • может использовать имя существующей таблицы при этом получает приоритет над ней

///

Процедуры и функции

RETURN

LEAVE

LEAVE mark;

Комментарии в запросах

Предусмотрено три способа комментирования:

  • #<comment> отмечает комментарий до конца строки
  • -- <comment> с пробелом отмечает комментарий до конца строки
  • /*<comment>*/ отмечает многострочный комментарий

Функции

MySQL 8.0 Reference Manual > Functions and Operators > String Functions and Operators //dev.mysql.com/doc/refman/8.0/en/string-functions.html

Универсальная обработка значений

  • IF(condition,onTrue,onFalse) если выражение condition принимает значение True, то функция возвратит выражение onTrue, иначе выражение onFalse
  • IFNULL(expression,onNull) если выражение expression имеет значение NULL, то функция возвратит выражение onNull
  • NULLIF(expr1,expr2) функция возвратит NULL при равенстве значений expr1 и expr2

Кодирование

//

  • CAST(expr AS type [ARRAY]) приводит выражение любого типа к указанному типу
    • CAST(timestamp_value AT TIME ZONE timezone_specifier AS DATETIME[(precision)]) для timezone_specifier допустимы только значения '+00:00' или 'UTC'
  • CONVERT(expr USING transcoding_name)  функция
    • CONVERT(expr, type) синтаксис без USING  эквивалентен CAST

Функции строковые +

  • CHAR_LENGTH(str) Return number of characters in argument
    • LENGTH(str) Return the length of a string in bytes
    • BIT_LENGTH(str) Return length of argument in bits
    • функции синонимы CHARACTER_LENGTH() и OCTET_LENGTH()
  • CONCAT(str1,str2,...) Return concatenated string
    • CONCAT_WS(separator,str1,str2,...) Return concatenate with separator
  • LPAD(str,len,padstr) Возвращает строку str, дополненную слева строкой padstr до длины len символов. Если str длиннее len, возвращаемое значение сокращается до len символов. Если str, padstr или len имеют значение NULL, функция возвращает значение NULL
    • RPAD(str,len,padstr) *
  • INSERT(str,pos,len,newstr) Insert substring at specified position up to specified number of characters
  • CHAR(N,... [USING charset_name]) Return the character for each integer passed
  • ASCII(str) Return numeric value of left-most character
    • ORD() Return character code for leftmost character of the argument
  • UUID() Returns a Universal Unique Identifier (UUID) generated according to RFC 4122, “A Universally Unique IDentifier (UUID) URN Namespace”
  • BIN() Return a string containing binary representation of a number
  • BIN_TO_UUID(binary_uuid), BIN_TO_UUID(binary_uuid, swap_flag) преобразует двоичный UUID в строковый UUID и возвращает результат. Двоичное значение должно быть UUID как значение VARBINARY(16)..
  • UUID_TO_BIN(string_uuid), UUID_TO_BIN(string_uuid, swap_flag) Converts a string UUID to a binary UUID and returns the result. (The IS_UUID() function description lists the permitted string UUID formats.) The return binary UUID is a VARBINARY(16) value. If the UUID argument is NULL, the return value is NULL. If any argument is invalid, an error occurs.
  • FORMAT(X,D[,locale]) Return a number formatted to specified number of decimal places
  • INSTR(str,substr) Returns the position of the first occurrence of substring substr in string str. This is the same as the two-argument form of LOCATE(), except that the order of the arguments is reversed.
  • REPEAT(str,count) Returns a string consisting of the string str repeated count times
  • REVERSE(str) Returns the string str with the order of the characters reversed, or NULL if str is NULL
  • FROM_BASE64(str) Decode base64 encoded string and return result
    • TO_BASE64() Return the argument converted to a base-64 string
  • HEX(str), HEX(N) Hexadecimal representation of decimal or string value
    • UNHEX() Return a string containing hex representation of a number
  • TRIM(str) Remove leading and trailing spaces
    • RTRIM(str) Remove trailing spaces
  • SOUNDEX(str) формирует soundex-строку для поиска похожих слов
  • 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.

Информационные функции

  • ROW_COUNT() возвращает количество строк, затронутых последним оператором, как UPDATE, INSERT или DELETE,  кроме SELECT
    • для чистого SELECT возвращает -1
    • если в INSERT...ON DUPLICATE KEY UPDATE был выполнен UPDATE, то операция засчитывается как две строки
  • FOUND_ROWS() в операторе SELECT...LIMIT в сочетании с опцией SQL_CALC_FOUND_ROWS возвращает общее количество выбранных строк до применения LIMIT
  • LAST_INSERT_ID(), LAST_INSERT_ID(expr) !!!

Обработка типа JSON

Тип JSON похож на LONGBLOB или LONGTEXT, но значения типа JSON рассматриваются как документ, который во-первых, при записи проходит проверку валидности с генерацией ошибки, и во-вторых, хранится во внутреннем формате, обеспечивающем быстрый доступ к элементам документа средствами SQL. Если ни валидация, ни обработка json-документа не требуются, использование типа JSON не будет целесообразно.

  • JSON_UNQUOTE(json_val)  преобразует строковое представление json-документа в json-значение
  • JSON_STORAGE_SIZE(json_val)  возвращает количество байтов, используемых для хранения двоичного представления значения JSON или строки представления валидного json-документа
  • JSON_SET(json_doc, path, val[, path, val] ...)  вставляет или замещает значение по указанному пути
  • JSON_INSERT(json_doc, path, val[, path, val] ...)  вставляет значение, если по указанному пути значения не существует
  • JSON_REPLACE(json_doc, path, val[, path, val] ...) замещает значение новым, если в указанном пути оно уже существует
  •  JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...) вставляет значение в конце массива по указанному пути
  • JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...) вставляет значение по указанному пути массива в указанный индекс
  • JSON_REMOVE(json_doc, path[, path] ...)  удаляет значение в указанном пути

 

  • JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)  объединяет два или более json-документов в один, при совпадении пути значение замещает предыдущее
  • JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)  объединяет два или более json-документов в один, при совпадении пути значение добавляется в массив значений
    • JSON_MERGE(...)  устаревший синоним

Leave a Reply