|
Программирование >> Проектирование интерфейса пользователя
дите на вкладку Таблицы и запросы (Tables/Queries) и установите флажок Текущая база данных (This Database). Чтобы реализация SQL была совместима с ANSI-92 по умолчанию, на вкладке Другие (Advanced) диалогового окна Сервис=*Параметры из списка Формат файла по умолчанию (Default File Format) выберите Access 2002. Выберите данную опцию, если планируете преобразовать базу данных в формат SQL-сервер. При необходимости всю информацию, которая касается стандартов SQL, разработанных ANSL вы сможете найти по адресу http: www. ansi . org. В пределах предложения WHERE, помимо привычных логических операторов и операторов сравнения, допускается использование также других конструкций, обозначаемых служебными словами BETWEEN и IN. Оператор BETWEEN позволяет задать верхнюю и нижнюю границы диапазона изменения Значений поля, а оператор IN дает возможность указать список искомых значений. Оператор BETWEEN Оператор BETWEEN, сопровождаемый служебным словом AND, используется в контексте предложения WHERE для задания границ интервала изменения величины аргумента (граничные значения включаются в интервал). Листинг 16.2 содержит короткий пример. Листинг 16.2. Пример использования оператора BETWEEN SELECT * EROM Music WHERE Artist BETWEEN Elvis Presley AND Rolling Stones Единственная команда SELECT возвратит набор данных, содержащих сведения об альбомах исполнителей, имена которых - в алфавитном порядке - попадают в интервал, простирающийся от Elvis Presley до Rolling Stones. Оператор IN ▼ ▲ Оператор IN позволяет задать набор искомых значений поля таблицы. Синтаксис конструкции IN в контексте команды SELECT описывается следующей формулой: SELECT СписокПолей FROM ИмяТаблицы WHERE ИмяПоля IN Значение2, ... ) Легко привести пример использования оператора IN в команде поиска данных в таблице MUSIC: SELECT * FROM Music WHERE Publisher IN (Polygram, Elektra, Capitol) Анализ J Указанная команда SELECT вернет все строки данных, которые имеют отношение к звукозаписям, выпущенным компаниями Polygram, Elektra и Capitol. Логические операторы Логические операторы конъюнкции (AND), дизъюнкции (OR) и отрицания (NOT) действуют в SQL точно так же, как и в VBA. Операторы AND и OR бинарны, т.е. требуют наличия двух операндов, a NOT - унарный оператор, воздействующий на единственный аргумент. Примеры использования операторов AND и NOT приведены в листинге Предложение WHERE может содержать любое число предикатов, соединенных логическими операторами и сгруппированных с помощью круглых скобок. Операторы SQL (что естественно) обладают определенным приоритетом выполнения. Однако запомнить значения приоритетов достаточно сложно. Изучите выражения SQL, приведенные ниже. SELECT * FROM Music WHERE Publisher = Capitol AND Last Name = Cocker OR Last Name = Merchant SELECT FROM Music WHERE Publisher = Capitol AND (Last Name = Cocker OR Last Name = Merchant) В булевой логике оператор AND аналогичен умножению, a OR - сложению. Поэтому приоритеты выполнения операторов таковы: первым вычисляется AND, затем OR (если, конечно, не расставить скобки). Оба выражения содержат почти одинаковый текст, но возвращают совершенно разные результаты. В первом случае вначале вычисляется логическое выражение AND, соединяющее два предиката (Publisher = Capitol AND Last Name = Cocker), a затем - оператор OR. Поэтому будут найдены записи первого артиста (Joe Cocker) в издательстве Capitol и записи Natalie Merchant во всех издательствах. Второй оператор сначала выполняет действие в скобках, поэтому будут найдены записи обоих артистов в одном издательстве - Capitol. Намереваясь использовать в предложении WHERE несколько предикатов, уточните свой замысел с помощью скобок, а не полагайтесь на якобы твердое знание приоритетов выполнения операций. Предложениями ERE и вложенные команды SELECT В качестве аргумента Значение предложения WHERE может выступать как значение простого типа (иллюстрируемое выше), так и результат выполнения вложенной команды SELECT. Подобно другим языкам программирования (например, VBA), SQL в каждой конкретной реализации имеет собственный синтаксический анализатор, способный разобрать написанный вами код буквально по косточкам . Вложенная команда SELECT может быть настолько же сложной, как и любая другая. Первой всегда выполняется наиболее глубоко спрятанная команда SELECT. Хотя с формальной точки зрения вы вольны конструировать выражения любой степени сложности, однако, выходя за разумные рамки одного уровня вложенности, вы обрекаете сервер базы данных на серьезные испытания. Вложенная конструкция SELECT выступает в роли правого операнда предиката в предложении WHERE. Приведем соответствующий пример: SELECT * FROM Music WHERE Title IN (SELECT Track Title FROM Tracks) Чтобы понять смысл этого запроса, рассмотрение нужно начать с внутренней команды SELECT, которая предполагает выбор значений поля TRACKTITLE всех записей таблицы TRACKS. Внешний запрос подразумевает возврат всех полей таких записей таблицы MUSIC, в поле TITLE которых содержится любое из значений, полученных в результате выполнения вложенного запроса. Необходимо высказать одно предостережение. Легко упустить из виду, что на самом деле смысл данных столбца TRACK TITLE таблицы TRACKS не отвечает назначению столбца TITLE таблицы MUSIC, т.е., образно говоря, предпринимается попытка сопоставить шило с мылом . Выражение, корректное синтаксически, далеко не всегда верно с логической точки зрения. Исправим оплошность, построив более простое выражение, в котором значение поля первичного ключа ID таблицы MUSIC сравнивается с величиной, хранящейся в поле внешнего ключа MUSIC ID таблицы TRACKS. В этом случае команда SQL примет следующий вид: SELECT * FROM Music, Traclcs WHERE Music.Id = Tracks.Music Id AND (Music.Title LIKE Tracks.Track Title) Новый термин Hosbm термин Первичный ключ (Primary Key) - это один или несколько столбцов таблицы, значения которых однозначно определяют уникальную запись таблицы. Первичный ключ одновременно служит и главным индексом таблицы. Внешний ключ (Foreign Key) устанавливает правило, в соответствии с которым в качестве значений одного или нескольких полей одной таблицы могут использоваться только такие комбинации величин, которые существуют в первичном ключе другой таблицы. Понятия первичного и внещнего ключей служат (извините за каламбур) к осмыслению основ теории реляционных баз данных. Более подробную информацию о вложенных запросах вы сможете получить, адресовав Помощнику Microsoft Office словосочетание поиска Подчиненные запросы. Если две или несколько таблиц в рамках предложения WHERE связаны операторами сравнения однородных полей, принято говорить об их неявном объединении (implicit join). Механизмы объединения таблиц более подробно рассмотрены ниже, в одноименном разделе этой главы. Мы отнюдь не утверждаем, что вложенные запросы заведомо неэффективны и вредоносны. Подчас они могут оказаться как раз тем инструментом, который необходим и целесообразен. Однако знайте, что подчиненные запросы - это не то средство, к которому можно обращаться без особой нужды. Сортировка данных Конструкция выражения SELECT позволяет упорядочить возвращаемые наборы данных по убыванию или возрастанию значений полей. Этой цели служит предложение ORDER BY, после которого указываются одно или несколько выражений вида разделенных символом запятой. Аргументы ля указывают на поля таблиц, перечисленных в предложении FROM, а в качестве необязательного параметра ПорядокСортировки допустимо использовать одно из служебных слов - ASC или DESC. ASC означает, что записи будут упорядочены по возрастанию величин, хранящихся в указанном поле, a DESC предполагает обратный порядок сортировки - по убыванию значений поля. В результате выполнения следующего запроса набор данных будет отсортирован в порядке убывания значений поля ARTIST таблицы MUSIC, а записи с совпадающими значениями в поле ARTIST - по возрастанию содержимого поля TITLE.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |