|
Программирование >> Программный интерфейс приложений
изводительность. В качестве другого примера можно упомянуть проблемы, которые повлечет за собой указание параметра AUTO INCREMENT при объявлении последовательных номеров. Только такой выбор будет иметь несколько последствий, касающихся типа столбца, индексирования и возможности хранения пустых значений. Атрибут AUTO INCREMENT МОЖНО использовать только с данными целого типа. Это сразу же ограничит круг возможных типов типами от TINYINT до BIGINT. Столбцы AUT0 INCREMENT следует индексировать таким образом, чтобы текущее максимальное значение определялось быстро и без необходимости полного просмотра таблицы. Более того, с целью предотвращения повторного использования индекс должен быть уникальным. Это значит, что индекс должен быть объявлен как PRIMARY KEY ИЛИ UNIQUE. При использовании СУБД MySQL ниже версии 3.23.2 индексированные столбцы не могут содержать пустые значения, таким образом, этот столбец должен быть объявлен как NOT NULL. Отсюда следует, что такого объявления строки будет явно недостаточно: my col arbitrary type AUTO INCREMENT Характеристики столбца необходимо детализировать следующим образом: my col integer type AUTO INCREMENT NOT NULL PRIMARY KEY Или: my col integer type AUTO INCREMENT NOT NULL, UNIQUE (my col) Еще один результат объявления столбца как AUTO INCREMENT. Так как он предназначен для генерирования последовательности положительных значений, этот столбец должен быть объявлен как UNSIGNED: my col integer type UNSIGNED AUTOINCREMENT NOT NULL PRIMARY KEY my col integer type UNSIGNED AUTO INCREMENT NOT NULL, UNIQUE(my col) Вычисление выражений и преобразование типов Синтаксис СУБД MySQL позволяет создавать выражения, содержащие константы, вызовы функций и ссылки на столбцы из таблиц. Эти значения могут указываться в комбинированном виде с использованием арифметических и логических операторов. Они могут объединяться в группы с помощью скобок. Чаще всего выражения появляются в перечне выбираемых столбцов и в предложениях WHERE оператора SELECT: SELECT CONCAT(last name, , , first name), (TO DAYS(death) - TO DAYS(birth) / 365) FROM president WHERE birth > 1900-1-1 AND DEATH IS NOT NULL В этом запросе выражения присутствуют как в перечне выбираемых столбцов, так и в предложении WHERE. Выражения могут указываться также в предложениях WHERE в операторах DELETE и UPDATE, предложениях VALUES () операторов INSERT и т.д. Найдя выражение, СУБД MySQL вычисляет его. Например, выражение (4*3) / (4-2) возвращает значение 2. Вычисление выражения может потребовать операции преобразования типов. Например, при использовании числа в контексте, требующем даты, MySQL преобразует число 960821 в дату 1996-08-21 . Этот раздел посвящен правилам написания выражений и правилам преобразования типов, которые создаются при вычислении выражений, содержащих данные разного типа. Объем этого раздела не позволяет привести примеры применения всех функций. Их можно найти в приложении В, Операторы и функции . Правила написания выражений Выражение может быть п аЬс редставлено одной константой. Цифровая константа Символическая константа В выражениях может задаваться вызов функции. Одни функции требуют указания аргументов (значения, ограниченные скобками), другие - нет. Несколько аргументов разделяются запятыми. Синтаксис описания функций в СУБД MySQL позволяет включать пробелы до и после аргументов, но пробел между именем функции и открывающейся скобкой недопустим. Функция без аргументов Функция с двумя аргументами Пробелы до и после аргументов допустимы Пробел после имени функции недопустим Дело в том, что имя функции с последующим пробелом будет воспринято интерпретатором как имя столбца. (Имена функций не являются зарезервированными словами и могут использоваться для наименования столбцов.) Интерпретатор реагирует на эту ситуацию сообщением об ощибке. Выражения могут содержать значения из столбцов таблицы. В про-стейщем случае достаточно указания имени столбца. В каждом из приведенных примеров указана только одна таблица, поэтому ссьшки на столбцы будут однозначны: NOW о STRCMP( abc , def ) STRCMP( abc , def STRCMP ( abc , def SELECT last name, first name FROM president SELECT last name, first name FROM member Если не совсем понятно, какая из таблиц будет использоваться, имени столбца должно предшествовать имя таблицы, отделенное точкой. Если неизвестно, из какой базы данных используется таблица, можно указать и имя базы данных: SELECT president.last name, president.first name, member.last name, member.first name FROM president, member WHERE president.last name = member.last name SELECT samp db.student.name FROM samp db.student Наконец, можно комбинировать все эти типы значений для создания более сложных форм выражений. Типы операторов СУБД MySQL воспринимает несколько типов операторов, используемых в выражениях. Арифметические операторы, перечисленные в табл. 2.15, включают операторы сложения, вычитания, умножения и деления плюс оператор вычисления модуля. Арифметические вычисления +, - и * выполняются с использованием целых значений типа BIGINT (64 бит). Это же можно сказать об операциях деления и модуля, когда по контексту ожидается целочисленный результат. Нужно помнить, что при вычислениях, в которых задействованы большие значения, такие, что результат может выйти за пределы 64-битового диапазона, могут быть непредсказуемые результаты. Таблица 2.15. Арифметические операторы
Логические операторы, представленные в табл. 2.16, определяют, является выражение истинным или ложным . СУБД MySQL поддерживает операторы в стиле языка С - Г и ! - как альтернативную форму традиционным AND, OR и NOT. Обратите особое внимание на оператор II
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |