|
Программирование >> Создание клиентов mysql
Уникальные свойства MySQL 507 /* Создание последовательности. */ CREATE TABLE invoice seq ( nextval INT ) TYPE=Berkeley DB; INSERT INTO invoice seq VALUES (0); /* Получение следующего значения. */ SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN; UPDATE invoice seq SET nextval = nextval+1; SELECT nextval FROM invoice seq; COMMIT; Инструкция SET TRANSACTION подчеркивает необходимости адизации в данной методике. В рамках единой транзакции сценарий увеличивает порядковый номер и тут же запрашивает его. Если все потоки будут придерживаться такой методики, можно будет использовать идентификаторы, не опасаясь того, что какой-то из них встретится Столбцы, не помеченные флагом NOT NULL, могут содержать значения NULL. В MySQL можно также использовать флаг NULL, чего нет в стандарте. Флаги UNSIGNED и ZEROFILL тоже являются расширениями стандарта. Первый из них модифицирует диапазон возможн1х значений столбца за счет знакового разряда. Например, столбец SMALLINT допускает значения от -32768 до 32767, а столбец UNSIGNED SMALLINT- от 0 до 65535. Значения, выходящие за границы знакового диапазона, могут отвергаться или неправильно интерпретироваться другими СУБД. MySQL разрешает указывать флаг DISTINCT статистической функции COUN ). Например, запрос, показанный в листинге 28.7, является допустимым. Другие СУБД могут не понимать такой синтаксис. SELECT DISTINCT Producer, Contact) FROM project; В MySQL разрешается определять произвольное число индексов в инструкции CREATE TABLE, тогда как в стандарте допускаются только первичный и внешние ключи. Другие СУБД требуют, чтобы индексы создавались отдельно с помощью инструкции CREATE INDEX. В MySQL индексы могут быть именованными. Можно индексировать фрагменты столбцов, начиная с самого левого символа. Это называется частичными индексами. Поддерживаются также полнотекстовые индексы столбцов BLOB и TEXT. ЕСЛИ В инструкции CREATE TABLE присутствует флаг TEMPORARY, программа MySQL создаст временную таблицу, которая будет уничтожена по окончании сеанса. В других СУБД применяется иной синтаксис работы с временными таблицами. При наличии флага IF NOT EXISTS инструкция CREATE TABLE не будет создавать таблицу, если она уже существует. У инструкции DROP TABLE есть похожий флаг IF EXISTS. В отличие от других СУБД, MySQL разрешает удалять несколько таблиц в одной инструкции. В MySQLуинструкции SELECT есть предложение INTO OUTFILE, позволяющее сохранять результаты запроса в файле. Инструкция LOAD DATA INFILE загружает данные из файла в таблицу. В других СУБД столбец, указанный в предложении GROUP BY, должен входить в таблицу результатов запроса. В MySQL данное ограничение отсутствует. В предложеНИИ GROUP BY допускаются флаги ASC и DESC. Флаг STRAIGHT JOIN заставляет программу выполнить объединение таблиц в указанном порядке. В Oracle пользователи могут включать в комментарии подсказки для модуля оптимизации, служащие аналогичным целям. Инструкция EXPLAIN возвращает информацию о том, как именно выполняется объединение. На основании этого можно делать выводы о необходимости добавления индексов (см. главу 26, Оптимизация ). Возможности модификации таблиц в MySQL заметно превосходят возможности других СУБД. К примеру, многие СУБД позволяют добавлять столбцы, но не разрешают удалять их или менять их определения. В MySQL все это возможно. Если изменение затрагивает существующие значения, программа попытается их преобразовать. Инструкция RENAME TABLE непосредственно меняет имя таблицы. Инструкция ALTER TABLE позволяет вносить множественные изменения в определение таблицы. Инструкция DELETE содержит предложение LIMIT, которое ограничивает количество удаляемых записей. Это позволяет эффективнее организовать многопользовательскую работу с базой данных. На время выполнения инструкции DELETE таблица блокируется, поэтому большие объемы записей лучше удалять не целиком, а небольшими порциями , чтобы другие потоки не блокировались надолго. Запросы на чтение и на запись заносятся в разные очереди, причем запросы на запись имеют более высокий приоритет. Эту установку можно отменить с помощью флага DELAYED инструкции INSERT, флага LOW PRIORITY инструкции UPDATE или флага HIGH PRIORITY инструкции SELECT. Инструкция REPLACE является особой разновидностью инструкции INSERT. Она удаляет существующие записи, если значения их первичных ключей противоречат первичным ключам вставляемых записей. В результате пропадает необходимость в связке DELETE/INSERT. Инструкции ANALYZE TABLE, CHECK TABLE, OPTIMIZE TABLE и REPAIR TABLE позволяют контролировать таблицы и индексы и восстанавливать их в случае повреждений. Инструкции семейства SHOW возвращают различную информацию о структуре баз данных и о состоянии сервера. В других СУБД информация о схемах хранится в главной базе данных, но в MySQLцентральная база данных используется только для привилегий и загруженных функций. Имея соответствующие привилегии, можно, к примеру, просмотреть список активных соединений с помощью инструкции SHOW PROCESSLIST. Обычно этоприходится делать средствами операционной системы. Инструкция SHOW VARIABLES возвращает перечень серверных установок. С помощью инструкции SET можно менять параметры сервера, не редактируя конфигурационные файлы. Например, инструкция SET CHARACTER SET задает новый стандартный набор символов. Уникальные свойства MySQL 509 Для повышения производительности в MySQL применяются различные кэш-буферы. Иногда приходится очищать их содержимое. Для этого предназначена инструкция FLUSH. Администраторы MySQLмогут создавать базы данных не с помощью специального интерфейса, а посредством инструкции CREATE DATABASE. Инструкция DROP DATABASE удаляет базу1анных и все ее таблицы.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |