Отличия 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 отображает каждую базу данных на подкаталог внутри каталога данных MySQL, а таблицы внутри базы – на имена файлов в этом каталоге. От­сюда вытекает несколько следствий:

  1. Имена баз данных и таблиц MySQL зависят от регистра в средах операцион­
    ных систем, в которых имена файлов чувствительны к регистру символов
    (большинство Unix-систем).
  2. Можно использовать стандартные системные команды для резервного копиро­
    вания, переименования, перемещения, удаления и копирования таблиц, управляемых механизмами хранения My ISAM или ISAM.

Например, чтобы переименовать таблицу MylSAM, потребуется переименовать файлы .MYD, .MYI и . frra, ко­торые относятся к таблице.
Имена баз данных, таблиц, индексов, столбцов и псевдонимы могут начинаться с
цифры (но не должны состоять только из цифр).

  • Общий синтаксис языка.
  1. Строки могут ограничиваться и одиночными и двойными кавычками.
  2. Символ ‘V используется в строках как управляющий.
  3. Внутри SQL-операторов можно получать доступ к таблицам из разных баз дан­
    ных посредством синтаксиса
    имя_ базы_ да нных. имя таблицы. Некоторые серверы
    SQL предоставляют ту же функциональность, но называют ее пространством
    пользователя (User space). Сервер MySQL не поддерживает табличных про­
    странств, как в следующем операторе:
    CREATE TABLE ralph.my_table.. .IN
    my_tablespace.

  • Синтаксис SQL-операторов.

  1. Операторы ANALYZE TABLE, CHECK TABLE, OPTIMIZE TABLE И REPAIR TABLE.
  2. Операторы CREATE DATABASE И DROP DATABASE.
  3. Оператор DO.
  4. EXPLAIN SELECT – для получения описания способа объединения таблиц в за­
    просе.
  5. Операторы FLUSH и RESET.
  6. Оператор SET.
  7. Оператор show.
  8. LOAD DATA INFILE. Во многих случаях этот синтаксис совместим с аналогич­
    ным синтаксисом Oracle.
  9. RENAME TABLE.
  10. REPLACE вместо DELETE + INSERT.
  11. Конструкции CHANGE имя_столбца, DROP имя_столбца, DROP INDEX, IGNORE и
    RENAME в операторе ALTER TABLE. Использование множественных конструкций
    ADD, ALTER, DROP И CHANGE в операторе ALTER TABLE.
  12. Использование имен индексов, индексов в префиксах полей, а также конст­
    рукций INDEX ИЛИ KEY В операторе
    CREATE TABLE.
  13. Использование IF EXISTS вместе с DROP TABLE.
  14. Можно удалять несколько таблиц одним оператором DROP TABLE.
  15. Конструкции ORDER BY и LIMIT В операторах UPDATE И DELETE.
  16. Синтаксис INSERT INTO…SET имя_столбца = ….
  17. Конструкция DELAYED в операторах INSERT и REPLACE.
  18. Конструкция LOW_PRIORITY В операторах INSERT, REPLACE, DELETE И UPDATE.
  19. Использование INTO OUTFILE и STRAIGHT_JOIN в операторе SELECT.
  20. ОПЦИЯ SQL_SMALL_RESULT оператора SELECT.

Нет необходимости перечислять все выбранные столбцы в конструкции GROUP
BY. Это обеспечивает лучшую производительность для некоторых очень спе­
цифических, но вполне нормальных запросов.

  • Можно применять ASC или DESC вместе с GROUP BY.
  • Имеется возможность присваивать значения переменным с помощью операции
    присваивания := в операторах:
  • 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.

    • Функции и операции.
    1. Чтобы облегчить жизнь пользователям, привыкшим к другим SQL-средам,
      сервер MySQL поддерживает псевдонимы для многих функций. Например, все
      строковые функции поддерживают как стандартный синтаксис SQL, так и син­
      таксис ODBC.
    2. Сервер MySQL воспринимает операции и | | как логическое И (AND) и
      логическое ИЛИ (OR), по аналогии с языком программирования С. В кон­
      тексте сервера MySQL операции | | и OR являются синонимами, равно как и
      и AND. По этой причине MySQL не поддерживает стандартную SQL-операцию
      | | для конкатенации строк. Вместо этого необходимо применять функцию
      CONCAT (). Поскольку CONCAT () принимает любое количество аргументов, пре­
      образовать все операции | | очень легко.
    3. Использование COUNT(DISTINCT список), где список содержит более одного
      элемента.
    4. Все сравнения строк по умолчанию чувствительны к регистру, а порядок сор­
      тировки определяется текущим выбранным набором символов (по умолчанию
      ISO-8859-1 Latinl). Если это не подходит, потребуется объявить столбец с ат­
      рибутом BINARY либо воспользоваться приведением к BINARY, что заставит вы­
      полнять сравнение и сортировку в соответствии с кодами символов, а не в лек­
      сикографическом порядке.
    5. Операция % является синонимом функции MOD (). То есть, выражение N % м
      эквивалентно MOD (N, м). ‘%’ поддерживается для удобства программистов на
      языке С и достижения совместимости с СУБД PostgresSQL.
    6. Операции =, о,=,, ;=, ;, «, »,=;, AND, OR и LIKE могут применяться для
      сравнения столбцов слева от конструкции from в операторах SELECT, например:
      mysql; SELECT col1=1 AND col2=2 FROM имя таблицы;
    7. Функция LAST_INSERT_ID () возвращает самое последнее значение
      AUTO_INCREMENT.
    8. LIKE можно применять к числовым столбцам.
    9. Расширенные операции обработки регулярных выражений REGEXP и NOT
      REGEXP.
    1. Функции C0NCAT () и CHAR () принимают один и более аргументов.
    2. Функции BIT_COUNT(), CASE, ELT(), FROM_DAYS(), FORMAT(), IF(), PASSWORD!),
      ENCRYPT (),MD5(), ENCODE(), DECODE (), PERIOD_ADD(), PERIOD_DIFF(), TO_DAYS ()
      И WEEKDAY !).
    3. Применение TRIMO для усечения подстрок. Стандартный язык SQL поддер­
      живает только удаление последовательностей одинаковых символов.
    4. Возможность в конструкции 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).

    Понравилась статья? Поделиться с друзьями:
    Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: