Spec-Zone .ru
спецификации, руководства, описания, API
|
MySQL Server поддерживает некоторые расширения, что Вы, вероятно, не будете находить в другом SQL DBMSs. Будьте предупреждены, что, если Вы используете их, Ваш код не будет переносим на другие SQL-серверы. В некоторых случаях можно записать код, который включает расширения MySQL, но все еще переносим, при использовании комментариев следующей формы:
/*! MySQL-specific code
*/
В этом случае MySQL Server анализирует и выполняет код в пределах комментария, как это было бы, любой другой
SQL-оператор, но другие SQL-серверы проигнорирует расширения. Например, MySQL Server распознает STRAIGHT_JOIN
ключевое слово в следующем операторе, но другие серверы не будет:
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
Если Вы добавляете номер версии после"!
"символ, синтаксис в пределах комментария выполняется, только
если версия MySQL больше чем или равна указанному номеру версии. TEMPORARY
ключевое
слово в следующем комментарии выполняется только серверами от MySQL 3.23.02 или выше:
CREATE /*!32302 TEMPORARY */ TABLE t (a INT);
Следующие описания перечисляют расширения MySQL, организованные по категориям.
Организация данных на диске
MySQL Server отображает каждую базу данных на каталог в соответствии с каталогом данных MySQL, и отображает таблицы в пределах базы данных к именам файлов в каталоге базы данных. У этого есть несколько импликаций:
Имена базы данных и имена таблиц являются чувствительными к регистру в MySQL Server на операционных системах, у которых есть чувствительные к регистру имена файлов (такие как большинство систем Unix). См. Раздел 9.2.2, "Чувствительность к регистру Идентификатора".
Можно использовать стандартные системные команды, чтобы поддержать,
переименовать, переместить, удалить, и скопировать таблицы, которыми управляют MyISAM
механизм хранения. Например, возможно переименовать a
MyISAM
таблица, переименовывая .MYD
, .MYI
, и .frm
файлы, которым соответствует таблица. (Однако,
предпочтительно использовать RENAME
TABLE
или ALTER TABLE ... RENAME
и позвольте
серверу переименовывать файлы.)
Общий синтаксис языка
По умолчанию строки могут быть включены любым""
"или"'
", не
только"'
".
(Если ANSI_QUOTES
Режим SQL включается, строки могут быть
включены только"'
"и
сервер интерпретирует строки, включенные""
"как идентификаторы.)
"\
"символ ESC в строках.
В SQL-операторах можно получить доступ к таблицам от различных баз
данных с db_name.tbl_name
синтаксис. Некоторые
SQL-серверы обеспечивают ту же самую функциональность, но вызывают это User space
. MySQL Server не поддерживает табличные области
такой как использующийся в операторах как это: CREATE TABLE
ralph.my_table ... IN my_tablespace
.
Синтаксис SQL-оператора
ANALYZE
TABLE
, CHECK
TABLE
, OPTIMIZE
TABLE
, и REPAIR
TABLE
операторы.
CREATE
DATABASE
, DROP
DATABASE
, и ALTER
DATABASE
операторы. См. Раздел 13.1.8,"CREATE DATABASE
Синтаксис", Раздел
13.1.17,"DROP DATABASE
Синтаксис", и Раздел 13.1.1,"ALTER
DATABASE
Синтаксис".
DO
оператор.
EXPLAIN
SELECT
получить описание того, как таблицы обрабатываются оптимизатором запросов.
SET
оператор. См. Раздел 13.7.4,"SET
Синтаксис".
SHOW
оператор. См. Раздел
13.7.5,"SHOW
Синтаксис". Информация производится
многими из специфичных для MySQL SHOW
операторы могут быть получены более стандартным
способом при использовании SELECT
запрашивать INFORMATION_SCHEMA
.
См. Главу 19, INFORMATION_SCHEMA
Таблицы.
Использование LOAD DATA
INFILE
. Во многих случаях этот синтаксис является совместимым с Oracle LOAD DATA
INFILE
. См. Раздел
13.2.6,"LOAD DATA INFILE
Синтаксис".
Использование RENAME TABLE
. См. Раздел
13.1.26,"RENAME TABLE
Синтаксис".
Использование REPLACE
вместо DELETE
плюс INSERT
. См. Раздел
13.2.8,"REPLACE
Синтаксис".
Использование CHANGE
, col_name
DROP
, или col_name
DROP INDEX
, IGNORE
или RENAME
в ALTER TABLE
операторы. Использование многократных ADD
, ALTER
, DROP
,
или CHANGE
пункты в ALTER TABLE
оператор. См. Раздел
13.1.6,"ALTER TABLE
Синтаксис".
Использование имен индексов, индексирует на префиксе столбца, и
использовании INDEX
или KEY
в CREATE TABLE
операторы. См. Раздел 13.1.14,"CREATE TABLE
Синтаксис".
Использование TEMPORARY
или IF NOT EXISTS
с CREATE TABLE
.
Использование IF EXISTS
с DROP TABLE
и DROP DATABASE
.
Возможность отбрасывания многократных таблиц с синглом DROP TABLE
оператор.
INSERT INTO
синтаксис. tbl_name
SET col_name
= ...
LOW_PRIORITY
пункт INSERT
, REPLACE
, DELETE
, и UPDATE
операторы.
Использование INTO OUTFILE
или INTO DUMPFILE
в SELECT
операторы. См. Раздел
13.2.9,"SELECT
Синтаксис".
Опции такой как STRAIGHT_JOIN
или SQL_SMALL_RESULT
в SELECT
операторы.
Вы не должны назвать все выбранные столбцы в GROUP
BY
пункт. Это дает лучшую производительность для некоторых очень определенные, но
довольно нормальные запросы. См. Раздел
12.17, "Функции и Модификаторы для Использования с GROUP
BY
Пункты".
Можно определить ASC
и DESC
с GROUP BY
, не только с ORDER BY
.
Возможность установить переменные в операторе с :=
оператор присваивания. См. Раздел 9.4, "Определяемые
пользователем Переменные".
Типы данных
Функции и операторы
Чтобы облегчить для пользователей, которые переходят от других сред SQL, MySQL Server поддерживает псевдонимы для многих функций. Например, все строковые функции поддерживают и стандартный синтаксис SQL и синтаксис ODBC.
MySQL Server понимает ||
и &&
операторы, чтобы означать логичный ИЛИ и И, как в
языке программирования C. В MySQL Server, ||
и OR
синонимы, как &&
и AND
. Из-за этого хорошего синтаксиса MySQL Server не
поддерживает стандартный SQL ||
оператор для конкатенации строк; использовать CONCAT()
вместо этого. Поскольку CONCAT()
берет любое число параметров, легко
преобразовать использование ||
оператор к MySQL Server.
Использование COUNT(DISTINCT
где value_list
)value_list
имеет больше чем один элемент.
Сравнения строк являются нечувствительными к регистру по умолчанию с
упорядочиванием вида, определенным сопоставлением текущего набора символов, который является
latin1
(cp1252 западноевропеец) по умолчанию. Если Вам не
нравится это, следует объявить свои столбцы с BINARY
припишите
или используйте BINARY
бросок, который заставляет сравнения
быть сделанными, используя базовые символьные кодовые обозначения, а не лексическое
упорядочивание.
%
оператор является синонимом для MOD()
. Таким образом,
эквивалентно N
% M
MOD(
. N
,M
)%
поддерживается для программистов C и для совместимости
с PostgreSQL.
=
, <>
, <=
, <
, >=
, >
, <<
, >>
, <=>
, AND
, OR
, или LIKE
операторы могут использоваться в выражениях в выходном
списке столбцов (налево от FROM
) в SELECT
операторы. Например:
mysql> SELECT col1=1 AND
col2=2 FROM my_table;
LAST_INSERT_ID()
функционируйте возвращает новое AUTO_INCREMENT
значение. См. Раздел
12.14, "информационные Функции".
LIKE
разрешается на числовых значениях.
REGEXP
и NOT REGEXP
расширенные операторы регулярного выражения.
CONCAT()
или CHAR()
с одним параметром или больше чем двумя параметрами.
(В MySQL Server эти функции могут взять переменное число параметров.)
BIT_COUNT()
, CASE
, ELT()
, FROM_DAYS()
, FORMAT()
, IF()
, PASSWORD()
, ENCRYPT()
, MD5()
, ENCODE()
, DECODE()
, PERIOD_ADD()
, PERIOD_DIFF()
, TO_DAYS()
, и WEEKDAY()
функции.
Использование TRIM()
обрезать подстроки. Стандартный SQL поддерживает
удаление единственных символов только.
GROUP BY
функции STD()
, BIT_OR()
, BIT_AND()
, BIT_XOR()
, и GROUP_CONCAT()
. См. Раздел
12.17, "Функции и Модификаторы для Использования с GROUP
BY
Пункты".