Access sql like
Access sql like
На этом шаге рассмотрим использование обычного фильтра.
Режим фильтрации по выделенному используется в том случае, когда нужно отображать только те записи, которые удовлетворяют всем указанным, ограничениям (например, последняя буква «а» в имени И фамилии).
Если же необходимо отображать все записи, которые удовлетворяют хотя бы одному из указанных условий (например, последняя буква «а» в имени ИЛИ фамилии), то в этом случае следует использовать обычный фильтр, который можно установить командой Записи | Фильтр | Изменить фильтр (кнопка ).
В левом нижнем углу окна фильтрации имеются вкладки Найти и Или, при выборе которых в полях отображаются установленные ограничения. Например, после установки ограничений на имя и фамилию (последяя буква «а») на вкладке Найти в полях Фамилия и Имя будут установлены фильтры следующего вида: Like «*а» (рис. 1).
Рис. 1. Таблица Студенты. Изменение фильтра
Для задания каких-либо условий в Access используются несколько операторов сравнения (таблица 1), а также логические операторы (таблица 2).
В качестве примера применения операторов будут рассмотрены несколько условий (таблица 3). Необходимо отметить, что названия операторов принято писать либо прописными буквами ( LIKE ), либо начинать с прописной ( Like ).
Рис. 2. Таблица Студенты. Фильтрация по фамилии
После применения этого фильтра (кнопка ) в таблице Студенты будут отображены только те записи, у которых значение поля Фамилия начинается на букву, находящуюся в диапазоне от А до М (рис. 3).
Рис. 3. Таблица Студенты. Фильтрация по фамилии
Описанные выше действия можно увидеть здесь, а взять этот клип здесь.
Чтобы задать ограничения на несколько полей, при которых отображались бы все записи, удовлетворяющие хотя бы одному из указанных ограничений, можно воспользоваться вкладкой Или окна фильтра (рис. 1). Например, необходимо отобразить только тех студентов, у которых имя или фамилия закачиваются на букву «а». Для этого вначале необходимо на вкладке Найти окна фильтра указать для поля Фамилия условие LIKE «*а» (рис. 4).
Рис. 4. Таблица Студенты. Вкладка Найти окна фильтра
После этого следует выбрать вкладку Или и указать для поля Имя условие LIK Е «*а» (рис. 5).
Рис. 5. Таблица Студенты. Вкладка Или окна фильтра
Необходимо также отметить, что при выборе вкладки Или автоматически появляется следующая вкладка Или, т.е. можно указать несколько условий, хотя бы одно из которых должно выполняться.
После установки ограничений нужно применить фильтр к таблице (кнопка ), в результате чего будут отображены все записи, для которых выполняется хотя бы одно из указанных условий (рис. 6).
Рис. 6. Таблица Студенты. Фильтрация по фамилии
Если нужно удалить все установленные ограничения, то при открытом окне фильтра следует воспользоваться кнопкой Очистить бланк .
Описанные выше действия можно увидеть здесь, а взять этот клип здесь.
На следующем шаге вы узнаете о расширенном фильтре.
Предыдущий шаг Содержание
Следующий шаг
Операторы LIKE и NOT LIKE
Тема 3.2. Выборка данных с использованием предложения SELECT
Все SQL-выражения, предназначенные для выборки данных из существующих таблиц БД, начинаются с ключевого слова (оператора) SELECT (выбрать). Для уточнения запроса служат дополнительные операторы, такие как FROM (из), WHERE (где) и др.
Простейший синтаксис SELECT запроса:
В [ ] указаны операторы, которые могут отсутствовать в запросе. Данные операторы используются для уточнения запроса на выборку данных:
p WHERE (где) – указывает записи, которые должны войти в результирующую таблицу (фильтр записей);
p GROUP BY (группировать по) – группирует записи по значениям определенных столбцов;
p HAVING (имеющие, при условии) – указывает группы записей, которые должны войти в результирующую таблицу (фильтр групп);
p ORDER BY (сортировать по) – сортирует (упорядочивает) записи.
Операторы SELECT и FROM являются обязательными. Ключевое слово SELECT сообщает БД, что данное предложение является запросом на извлечение информации. После слова SELECT через «,» перечисляются наименования столбцов, содержание которых запрашивается. После слова FROM указывается список имен таблиц (через «,»), из которых извлекается информация.
Пример:
SELECT NAME, SURNAME
Приведенный запрос осуществляет выборку всех значений NAME и SURNAME из таблицы STUDENTS. Результатом является таблица, состоящая из 2-х столбцов.
Порядок следования столбцов этой таблицы соответствует порядку полей, указанному в запросе, а не их порядку в таблице STUDENTS.
Если необходимо получить все столбцы таблицы, то вместо списка столбцов достаточно указать символ (*).
Пример:
SELECT *
Сразу за оператором SELECT до списка столбцов можно применять ключевые слова ALL (все) и DISTINCT (отличающиеся), которые указывают, какие записи представлять в результирующей таблице. Если эти ключевые слова не используются, то подразумевается, что следует выбрать все записи (что также соответствует применению ключевого слова ALL). В случае использования DISTINCT в результирующей таблице представляются только уникальные записи. При этом если в исходной таблице находятся несколько идентичных записей, то из них выбирается только первая.
Пример:
SELECT DISTINCT CITY
Если в выражении FROM указано несколько таблиц, то в выражении SELECT имена столбцов должны содержать префиксы, указывающие, к какой именно таблице они относятся. Префикс отделяется от имени столбца точкой.
Пример:
Выражение STUDENTS.NAME означает столбец NAME из таблицы STUDENTS
Заголовки столбцов в результирующей таблице можно переопределить по своему усмотрению, назначив для них так называемые псевдонимы. Для этого в списке столбцов после соответствующего столбца следует написать выражение вида: AS заголовок-столбца
Пример:
SELECT NAME AS Имя, SURNAME AS Фамилия
Псевдонимы также можно задать и для каждой таблицы после ключевого слова FROM. Для этого достаточно указать псевдоним через пробел сразу после имени соответствующей таблицы. Псевдонимы таблиц, более короткие, чем их имена, удобно использовать в сложных запросах.
Пример:
SELECT T1.NAME , T1.SURNAME, T2.SUM_STIPEND
FROM STUDENTS T1, STIPEND T2;
Оператор WHERE
Условия поиска в операторе WHERE являются логическими выражениями, т.е. принимают одно из трех возможных значений: true, false и NULL (это происходит, когда в выражении некоторые элементы имеют значение NULL). Таким образом, в SQL мы имеем дело с трехзначной логикой.
При составлении логических выражений используются специальные ключевые слова и символы операций сравнения, которые называют предикатами:
Access sql like
На этом шаге рассмотрим использование обычного фильтра.
Режим фильтрации по выделенному используется в том случае, когда нужно отображать только те записи, которые удовлетворяют всем указанным, ограничениям (например, последняя буква «а» в имени И фамилии).
Если же необходимо отображать все записи, которые удовлетворяют хотя бы одному из указанных условий (например, последняя буква «а» в имени ИЛИ фамилии), то в этом случае следует использовать обычный фильтр, который можно установить командой Записи | Фильтр | Изменить фильтр (кнопка ).
В левом нижнем углу окна фильтрации имеются вкладки Найти и Или, при выборе которых в полях отображаются установленные ограничения. Например, после установки ограничений на имя и фамилию (последяя буква «а») на вкладке Найти в полях Фамилия и Имя будут установлены фильтры следующего вида: Like «*а» (рис. 1).
Рис. 1. Таблица Студенты. Изменение фильтра
Для задания каких-либо условий в Access используются несколько операторов сравнения (таблица 1), а также логические операторы (таблица 2).
В качестве примера применения операторов будут рассмотрены несколько условий (таблица 3). Необходимо отметить, что названия операторов принято писать либо прописными буквами ( LIKE ), либо начинать с прописной ( Like ).
Рис. 2. Таблица Студенты. Фильтрация по фамилии
После применения этого фильтра (кнопка ) в таблице Студенты будут отображены только те записи, у которых значение поля Фамилия начинается на букву, находящуюся в диапазоне от А до М (рис. 3).
Рис. 3. Таблица Студенты. Фильтрация по фамилии
Описанные выше действия можно увидеть здесь, а взять этот клип здесь.
Чтобы задать ограничения на несколько полей, при которых отображались бы все записи, удовлетворяющие хотя бы одному из указанных ограничений, можно воспользоваться вкладкой Или окна фильтра (рис. 1). Например, необходимо отобразить только тех студентов, у которых имя или фамилия закачиваются на букву «а». Для этого вначале необходимо на вкладке Найти окна фильтра указать для поля Фамилия условие LIKE «*а» (рис. 4).
Рис. 4. Таблица Студенты. Вкладка Найти окна фильтра
После этого следует выбрать вкладку Или и указать для поля Имя условие LIK Е «*а» (рис. 5).
Рис. 5. Таблица Студенты. Вкладка Или окна фильтра
Необходимо также отметить, что при выборе вкладки Или автоматически появляется следующая вкладка Или, т.е. можно указать несколько условий, хотя бы одно из которых должно выполняться.
После установки ограничений нужно применить фильтр к таблице (кнопка ), в результате чего будут отображены все записи, для которых выполняется хотя бы одно из указанных условий (рис. 6).
Рис. 6. Таблица Студенты. Фильтрация по фамилии
Если нужно удалить все установленные ограничения, то при открытом окне фильтра следует воспользоваться кнопкой Очистить бланк .
Описанные выше действия можно увидеть здесь, а взять этот клип здесь.
На следующем шаге вы узнаете о расширенном фильтре.
Предыдущий шаг Содержание
Следующий шаг
SQL-Урок 5. Символы подстановки и регулярные выражения (LIKE)
Часто, для фильтрации данных, нам нужно будет осуществить выборку не по точному совпадении условия, а по приближенному значению. То есть когда, например, мы ищем товар, название которого соответствует определенному шаблону или содержит определенные символы или слова. Для таких целей в SQL существует оператор LIKE, который ищет приближенные значения. Для конструирования такого шаблона используются метасимволы (специальные символы для поиска части значения), а именно: «знак процента» (%) или звездочка (*), «символ подчеркивания» (_) или «знак вопроса» (?), «квадратные скобки» ([ ]).
1. Метасимвол знак процента (%) или звездочка (*)
Давайте из нашей таблицы, например, отберем записи, относящиеся только к товарам, содержащих в своем названии слово Skis (лыжи). Для этого составим соответствующий шаблон:
SELECT * FROM Sumproduct WHERE Product LIKE ‘*Skis*’
Как видим, СУБД отобрала только те записи, где в колонке Product были товары, содержащие слово Skis. Также отметим, что в данном примере используется метасимвол «звездочка» (*), поскольку СУБД Access не поддерживает «знак процента» (% ) для оператора LIKE.
2. Метасимвол знак подчеркивания (_) или знак (?)
Знак подчеркивания или вопросительный знак применяется для того, чтобы заменить один символ в слове. Давайте в слове Bikes заменим все гласные буквы на «вопросительный знак» (?) и посмотрим на результат:
SELECT * FROM Sumproduct WHERE Product LIKE ‘B?k?s’
Мы использовали метасимвол «вопросительный знак» (?), поскольку СУБД Access не поддерживает «знак подчеркивания» (_) для оператора LIKE.
3. Метасимвол квадратные скобки ([ ])
Метасимвол «квадратные скобки» ([ ]) используется для одновременного указания набора символов, по которым нужно выполнить поиск.
SELECT * FROM Sumproduct WHERE City LIKE ‘[TN]*’
В примере выше, мы отобрали записи, где в поле City названия городов начинаются с буквы T или N. Также, в данном случае, мы можем использовать еще один метасимвол, который выполняет обратное действие. Добавим в наше регулярное выражение восклицательный знак (!), что будет означать «не равно» (для СУБД Access) или знак степени (^) (для других СУБД).
SELECT * FROM Sumproduct WHERE City LIKE ‘[!TN]*’
То есть, последний созданный нами запрос будет читаться как: выбрать все колонки из таблицы Sumproduct и только те записи, где в поле City названия городов не начинаются на буквы T или N. Дополнительно отметим, что набор букв в метасимволе «квадратные скобки» отвечает только за одну позицию в тексте.
Мы можем получить аналогичный результат, если воспользоваться уже известным нам оператором NOT, однако с восклицательным знаком (!) запись будет короче.
Использование языка SQL MS ACCESS;
Язык структурированных запросов (SQL) является стандартным средством для работы с базами данных. Может использоваться как для интерактивной работы с БД, так и включаться в языки программирования. В CУБД Access SQL позволяет:
· создавать, модифицировать или удалять таблицы в базе данных Access;
· создавать или удалять ключи, индексы для таблиц в базе данных Access;
· вставлять, удалять или модифицировать записи таблиц;
· получать сводную информацию о данных в таблицах (число записей, суммы, средние, минимальные, максимальные значения и др.);
· осуществлять поиск и извлекать данные из одной или более таблиц по запросу.
Рассмотрим основные операторы языка SQL для поиска и извлечения информации из базы данных. Для этого используется оператор SELECT, синтаксис которого следующий:
SELECT список имен полей 1
FROM список имен таблиц
[WHERE условие]
[ORDER BY список имен полей 2]
[GROUP BY список имен полей 3]
SELECT, FROM, WHERE, ORDER BY, GROUP BY — ключевые слова;
список имен полей 1 — набор имен полей, которые выбираются из одной или нескольких таблиц, указанных в списке имен таблиц, вычисляемых полей, агрегированных функций (например, count, sum, min, max, avg и т.д.). Для выбора всех полей из списка таблиц вместо перечисления их имен можно использовать символ «*». Если имя поля таблицы содержит пробел, т.е. состоит из нескольких слов, то это имя должно заключаться в квадратные скобки;
список имен таблиц — набор имен таблиц, из которых производится выбор информации.
Имена полей и таблиц нечувствительны к регистру клавиатуры и указываются в списках через запятую.
Все приведенные далее примеры основаны на использовании БД по библиографии, логическая структура которой приведена на рисунке 2.1.
Примеры:
SELECT * FROM Книга — выбор всех полей всех книг из таблицы «Книга» базы данных по библиографии.
SELECT Название, [Год издания] FROM Книга — выбор полей заголовков (Название ) и года издания (Год издания) всех книг из таблицы «Книга». Имя поля года издания указано в квадратных скобках (имеет пробел).
Таблица «Издательство» Таблица «Книга» Таблица «Автор»
Рис. 2.1. Структура и схема БД по библиографии
Для поиска информации, удовлетворяющей некоторому условию, в операторе SELECT используется раздел WHERE, который имеет следующий синтаксис:
SELECT список имен полей FROM список имен таблиц WHERE условие,
где условиеопределяет критерий поиска информации.
В условии используются имена полей, операции сравнения ( , >=, <>) и специальные операции сравнения IN, LIKE, BETWEЕN. Эти операции могут объединяться с помощью логических операций (And, Or) и задавать сложные условия поиска информации.
Примеры:
SELECT Название, [Год издания] FROM Книга
WHERE [Год издания] > 1991 определяет выбор названий книг, год выпуска которых позже 1991.
SELECT Фамилия, Имя FROM Автор
WHERE Фамилия = ”Иванов” определяет выбор полей имен и фамилий авторов из таблицы «Автор», фамилии которых совпадают с фамилией Иванов. Здесь символ “ используется для задания текстовых констант.
Операция IN сравнивает содержимое поля со списком заданных значений, определяющих критерий поиска информации.
Примеры:
SELECT Название, [Год издания] FROM Книга
WHERE [Год издания] IN (1995, 1996) определяет выбор названий и года издания книг, опубликованных в 1995 или в 1996 гг.
SELECT Фамилия, Имя, Город FROM Автор
WHERE Город IN (“Омск”, “Москва”, “Киев”) определяет выбор авторов, живущих в городах Омск, Москва или Киев.
Операция LIKE сравнивает содержимое поля со значением образца. Для записи образца используются строковые константы, символы шаблона и списки диапазона символов.
Символами шаблона являются: *, ?, #. Символ * соответствует цепочке символов, ? — соответствует одному символу, # — соответствует одной цифре.
Примеры:
Р* — возможные результаты поиска рука, Роза.
КИ? — возможные результаты поиска кий, кит.
12345# — возможные результаты поиска 123455, 123457.
Список диапазона заключается в квадратные скобки, первый и последний символы диапазона отделяются дефисом (-). Диапазон задается в возрастающем порядке.
Примеры:
SELECT Фамилия, Имя, Отчество FROM Автор
WHERE Фамилия LIKE ‘И*’ определяет выбор авторов, фамилии которых начинаются с буквы И.
SELECT Фамилия FROM Автор WHERE Фамилия LIKE [A-K] определяет выбор авторов, фамилии которых начинаются с букв от А до К.
SELECT Название FROM Книга
WHERE Название LIKE “*база данных*” AND [Год издания] = 1996 определяет выбор названий книг, выпущенных в 1996 году и в названии которых присутствует фраза «база данных».
Операция BETWEEN проверяет принадлежность значения поля диапазону значений и является включающим значением (выбираются записи, содержащие поле со значением, равным границе диапазона). Границы значений объединяются операцией AND.
Примеры:
SELECT Название, [Год издания] FROM Книга
WHERE [Год издания] Between #01.01.1994# And #30.06.1994# определяет выбор книг, изданных в первой половине 1994 года. Здесь символ # используется для задания констант типа дата.
SELECT [Название издат], адрес, телефон FROM Издательство
WHERE [Название издат] Between ‘Нау’ And ‘Фин’ определяет выбор информации об издательских фирмах, начальные буквы названий которых, расположенные в алфавитном порядке, находятся в диапазоне между ‘Нау’ и ‘Фин’.
Для определения порядка, в котором представляются результаты поиска записей, используется раздел ORDER BY, синтаксис которого следующий:
SELECT список имен полей FROM список имен таблиц [WHERE условие] ORDER BY имя поля 1 [ASC | DESC][, имя поля 2[ASC | DESC]] ,
где имя поля1, имя поля2 – поля (из списка имен полей), по которым производится упорядочение. Опция ASCустанавливает порядок сортировкипо возрастанию (данный порядок установлен по умолчанию), DESC устанавливает порядок сортировки по убыванию. Упорядочение может вестись по нескольким полям (например, по фамилии, а затем по имени)
Пример:
SELECT Название FROM Книга
WHERE Название LIKE “*база данных*” AND [Год издания] = 1996
ORDER BY Название определяет выбор названий книг, выпущенных в 1996 году и в названии которых присутствует фраза «база данных», и упорядочивает названия в алфавитном порядке.
Для группировки записей используется раздел GROUP BY, синтаксис которого следующий:
SELECT список имен полей FROM список имен таблиц [WHERE условие] GROUP BY имя поля 1 [, имя поля 2],
где имя поля1, имя поля2 – поля (из списка имен полей), по которым производится группировка записей. Порядок следования полей в этом предложении определяет уровни их группировки. Группировку можно производить для выражений (например, вычисляемых полей), тогда в списке полей этому выражению должно быть присвоено какое-нибудь имя. Для агрегированных функций (count, sum, min, max, avg и т.д.) группировка обязательна.
Пример:
SELECT Фамилия, [Год издания], Sum (Цена) AS [Стоимость]
FROM Книга, Автор
WHERE Автор.[Код автора]= Книга.[Код автора]
GROUPBY Фамилия, [Год издания]
ORDER BY Фамилия, [Год издания] определяет суммарную цену (Стоимость) книг года издания для каждого автора.
При работе с несколькими таблицами, каждое из рассмотренных условий выбора может быть применено для любой из таблиц. В общем случае при формировании запроса с использованием нескольких таблиц в разделе WHERE указывается связь между таблицами. Синтаксис запроса для нескольких таблиц следующий:
SELECT список имен полей FROM список имен таблиц WHERE список связей,
где список связей определяет, как таблицы в списке имен таблиц связаны между собой. Например, имя_таблицы1.имя_поля1 = имя_таблицы2.имя_поля2.
Примеры:
SELECT Книга.Название, Издательство. [Название издат]
FROM Книга, Издательство
WHERE Книга. [Код издат]= Издательство. [Код издательства] And
Издательство. [Название издат]=”Наука”
Этот запрос определяет выбор названий книг (Название) из таблицы «Книга» и названий издательств (Название издат) из таблицы издательств (Издательство). Раздел WHERE осуществляет следующее:
· определяет связь между таблицами (выбирается название книги и номер издательства «Код издат» из таблицы «Книга», по номеру издательства «Код издательства» в таблице издательств «Издательство» находится название издательства);
· задает условие для выбора книг, изданных только в издательстве «Наука».