Поиск
Отличия MySQL от стандартного SQL
В состав сервера MySQL входит ряд расширений, которых, возможно, вы не найдете в других базах данных SQL. Помните, что если вы используете их, ваш код перестанет быть переносимым на другие серверы SQL. В некоторых случаях вы можете писать код, включающий расширения MySQL, но остающийся переносимым, используя для этого форму комментариев /*! ... */. В этом случае сервер MySQL разбирает и выполняет код внутри комментария, как и любые другие SQL-операторы, а все другие серверы SQL расширение проигнорируют. Например: SELECT /*! STRAIGHT_JOIN */ имя_столбцаFROM таблица1, таблица2 WHERE ... Если после символа '!' добавить номер версии, синтаксис внутри комментария будет выполняться только сервером MySQL указанной и более поздних версий: CREATE /*132302 TEMPORARY */ TABLE t (a INT); Это означает, что если работа выполняется в версии MySQL 3.23.02 или более поздней, то ключевое слово TEMPORARY будет использовано. В приведенном ниже списке описаны расширения MySQL по категориям.
- Организация данных на диске.
- Имена баз данных и таблиц MySQL зависят от регистра в средах операцион ных систем, в которых имена файлов чувствительны к регистру символов (большинство Unix-систем).
- Можно использовать стандартные системные команды для резервного копиро вания, переименования, перемещения, удаления и копирования таблиц, управляемых механизмами хранения My ISAM или ISAM.
- Общий синтаксис языка.
- Строки могут ограничиваться и одиночными и двойными кавычками.
- Символ 'V используется в строках как управляющий.
- Внутри SQL-операторов можно получать доступ к таблицам из разных баз дан ных посредством синтаксиса имя_ базы_ да нных. имя таблицы. Некоторые серверы SQL предоставляют ту же функциональность, но называют ее пространством пользователя (User space). Сервер MySQL не поддерживает табличных про странств, как в следующем операторе: CREATE TABLE ralph.my_table.. .IN my_tablespace.
- Операторы ANALYZE TABLE, CHECK TABLE, OPTIMIZE TABLE И REPAIR TABLE.
- Операторы CREATE DATABASE И DROP DATABASE.
- Оператор DO.
- EXPLAIN SELECT - для получения описания способа объединения таблиц в за просе.
- Операторы FLUSH и RESET.
- Оператор SET.
- Оператор show.
- LOAD DATA INFILE. Во многих случаях этот синтаксис совместим с аналогич ным синтаксисом Oracle.
- RENAME TABLE.
- REPLACE вместо DELETE + INSERT.
- Конструкции CHANGE имя_столбца, DROP имя_столбца, DROP INDEX, IGNORE и RENAME в операторе ALTER TABLE. Использование множественных конструкций ADD, ALTER, DROP И CHANGE в операторе ALTER TABLE.
- Использование имен индексов, индексов в префиксах полей, а также конст рукций INDEX ИЛИ KEY В операторе CREATE TABLE.
- Использование IF EXISTS вместе с DROP TABLE.
- Можно удалять несколько таблиц одним оператором DROP TABLE.
- Конструкции ORDER BY и LIMIT В операторах UPDATE И DELETE.
- Синтаксис INSERT INTO...SET имя_столбца = ....
- Конструкция DELAYED в операторах INSERT и REPLACE.
- Конструкция LOW_PRIORITY В операторах INSERT, REPLACE, DELETE И UPDATE.
- Использование INTO OUTFILE и STRAIGHT_JOIN в операторе SELECT.
- ОПЦИЯ SQL_SMALL_RESULT оператора SELECT.
mysql; SELECT @a:=SUM(total),@b=COUNT(*),@a/@b AS avg -; FROM test_table; mysql; SELECT @tl:=(@t2:=l)+@t3:=4,@tl,@t2,@t3; мТипы столбцов. • Типы столбцов mediumint, set, enum и различные варианты типов blob и text. • Атрибуты столбцов AUTO_INCREMENT, BINARY, NULL, UNSIGNED И ZEROFILL.
- Функции и операции.
- Чтобы облегчить жизнь пользователям, привыкшим к другим SQL-средам, сервер MySQL поддерживает псевдонимы для многих функций. Например, все строковые функции поддерживают как стандартный синтаксис SQL, так и син таксис ODBC.
- Сервер MySQL воспринимает операции и | | как логическое И (AND) и логическое ИЛИ (OR), по аналогии с языком программирования С. В кон тексте сервера MySQL операции | | и OR являются синонимами, равно как и и AND. По этой причине MySQL не поддерживает стандартную SQL-операцию | | для конкатенации строк. Вместо этого необходимо применять функцию CONCAT (). Поскольку CONCAT () принимает любое количество аргументов, пре образовать все операции | | очень легко.
- Использование COUNT(DISTINCT список), где список содержит более одного элемента.
- Все сравнения строк по умолчанию чувствительны к регистру, а порядок сор тировки определяется текущим выбранным набором символов (по умолчанию ISO-8859-1 Latinl). Если это не подходит, потребуется объявить столбец с ат рибутом BINARY либо воспользоваться приведением к BINARY, что заставит вы полнять сравнение и сортировку в соответствии с кодами символов, а не в лек сикографическом порядке.
- Операция % является синонимом функции MOD (). То есть, выражение N % м эквивалентно MOD (N, м). '%' поддерживается для удобства программистов на языке С и достижения совместимости с СУБД PostgresSQL.
- Операции =, о,=,, ;=, ;, «, »,=;, AND, OR и LIKE могут применяться для сравнения столбцов слева от конструкции from в операторах SELECT, например: mysql; SELECT col1=1 AND col2=2 FROM имя таблицы;
- Функция LAST_INSERT_ID () возвращает самое последнее значение AUTO_INCREMENT.
- LIKE можно применять к числовым столбцам.
- Расширенные операции обработки регулярных выражений REGEXP и NOT REGEXP.
- Функции C0NCAT () и CHAR () принимают один и более аргументов.
- Функции BIT_COUNT(), CASE, ELT(), FROM_DAYS(), FORMAT(), IF(), PASSWORD!), ENCRYPT (),MD5(), ENCODE(), DECODE (), PERIOD_ADD(), PERIOD_DIFF(), TO_DAYS () И WEEKDAY !).
- Применение TRIMO для усечения подстрок. Стандартный язык SQL поддер живает только удаление последовательностей одинаковых символов.
- Возможность в конструкции GROUP BY обращаться к функциям STD (), BIT__OR(),BIT_AND(),BIT_XOR() И GROUP_CONCAT().
Для ознакомления с перечнем новых расширений, которые планируется добавить в сервер MySQL, а также с их приоритетностью, просмотрите список TODO по адресу http://dev.mysql.com/doc/mysql/en/TODO.html. В настоящем руководстве представлена последняя на данный момент версия списка TODO. См. также раздел MySQL и будущее (списки TODO).