Операторы LIKE и NOT LIKE




Тема 3.2. Выборка данных с использованием предложения SELECT

 

Все SQL-выражения, предназначенные для выборки данных из существующих таблиц БД, начинаются с ключевого слова (оператора) SELECT (выбрать). Для уточнения запроса служат дополнительные операторы, такие как FROM (из), WHERE (где) и др.

 

Простейший синтаксис SELECT запроса:

SELECT [DISTINCT] <список столбцов>

FROM <список таблиц>

[WHERE <условие выбора>]

[GROUP BY <список столбцов >]

[HAVING <условие>];

[ORDER BY <условие сортировки>]

 

В [ ] указаны операторы, которые могут отсутствовать в запросе. Данные операторы используются для уточнения запроса на выборку данных:

p WHERE (где) – указывает записи, которые должны войти в результирующую таблицу (фильтр записей);

p GROUP BY (группировать по) – группирует записи по значениям определенных столбцов;

p HAVING (имеющие, при условии) – указывает группы записей, которые должны войти в результирующую таблицу (фильтр групп);

p ORDER BY (сортировать по) – сортирует (упорядочивает) записи.

Операторы SELECT и FROM являются обязательными. Ключевое слово SELECT сообщает БД, что данное предложение является запросом на извлечение информации. После слова SELECT через "," перечисляются наименования столбцов, содержание которых запрашивается. После слова FROM указывается список имен таблиц (через ","), из которых извлекается информация.

Пример:

SELECT NAME, SURNAME

FROM STUDENTS;

Приведенный запрос осуществляет выборку всех значений NAME и SURNAME из таблицы STUDENTS. Результатом является таблица, состоящая из 2-х столбцов.

Порядок следования столбцов этой таблицы соответствует порядку полей, указанному в запросе, а не их порядку в таблице STUDENTS.

 

Если необходимо получить все столбцы таблицы, то вместо списка столбцов достаточно указать символ (*).

Пример:

SELECT *

FROM STUDENTS;

 

Сразу за оператором SELECT до списка столбцов можно применять ключевые слова ALL (все) и DISTINCT (отличающиеся), которые указывают, какие записи представлять в результирующей таблице. Если эти ключевые слова не используются, то подразумевается, что следует выбрать все записи (что также соответствует применению ключевого слова ALL). В случае использования DISTINCT в результирующей таблице представляются только уникальные записи. При этом если в исходной таблице находятся несколько идентичных записей, то из них выбирается только первая.

Пример:

SELECT DISTINCT CITY

FROM STUDENTS;

 

Если в выражении FROM указано несколько таблиц, то в выражении SELECT имена столбцов должны содержать префиксы, указывающие, к какой именно таблице они относятся. Префикс отделяется от имени столбца точкой.

 

Пример:

Выражение STUDENTS.NAME означает столбец NAME из таблицы STUDENTS

 

Заголовки столбцов в результирующей таблице можно переопределить по своему усмотрению, назначив для них так называемые псевдонимы. Для этого в списке столбцов после соответствующего столбца следует написать выражение вида: AS заголовок-столбца

Пример:

SELECT NAME AS Имя, SURNAME AS Фамилия

FROM STUDENTS;

 

Псевдонимы также можно задать и для каждой таблицы после ключевого слова FROM. Для этого достаточно указать псевдоним через пробел сразу после имени соответствующей таблицы. Псевдонимы таблиц, более короткие, чем их имена, удобно использовать в сложных запросах.

Пример:

SELECT T1.NAME, T1.SURNAME, T2.SUM_STIPEND

FROM STUDENTS T1, STIPEND T2;

 

Оператор WHERE

 

Условия поиска в операторе WHERE являются логическими выражениями, т.е. принимают одно из трех возможных значений: true, false и NULL (это происходит, когда в выражении некоторые элементы имеют значение NULL). Таким образом, в SQL мы имеем дело с трехзначной логикой.

При составлении логических выражений используются специальные ключевые слова и символы операций сравнения, которые называют предикатами:

ü предикаты сравнения: (=), (<), (>), (<>), (<=), (>=);

ü BETWEEN;

ü IN, NOT IN;

ü LIKE, NOT LIKE;

ü IS NULL;

ü ALL, SOME, ANY;

ü EXISTS;

ü UNIQUE;

ü DISTINCT;

ü OVERLAPS;

ü MATCH;

ü SIMILAR.

 

Пример:

SELECT NAME

FROM STUDENTS

WHERE SURNAME = "Петров";

В результате выполнения запроса будет получены таблица из одного столбца, содержащего имена всех студентов по фамилии Петров, которые находятся в таблице STUDENTS.

 

Пример:

Написать запрос на получение имен и фамилий студентов, обучающихся на 3 курсе и получающих стипендию:

SELECT NAME, SURNAME

FROM STUDENTS

WHERE KURS=3 AND STIPEND>0;

 

Оператор BETWEEN

 

Предикат BETWEEN (между) позволяет задать выражение проверки вхождения какого-либо значения в диапазон, определяемый граничными значениями.

Пример:

SELECT SUBJECT_NAME

FROM SUBJECTS

WHERE HOURS BETWEEN 30 AND 40;

Вывести названия предметов, на изучение которых отводится количество часов в пределах от 30 до 40.

Граничные значения входят в диапазон значений, с которыми производится сравнение.

 

Эквивалентным приведенному является выражение с предикатами сравнения:

SELECT SUBJECT_NAME

FROM SUBJECTS

WHERE HOURS>30 AND HOURS<40;

 

Кроме данных числового типа, в выражениях с BETWEEN можно использовать данные следующих типов: символьные, битовые, даты-времени.

 

Операторы IN и NOT IN

 

Предикаты IN (в) и NOT IN (не в) применяются для проверки вхождения какого-либо значения в заданный список значений.

Построенный с использованием IN предикат считается истинным, если значение поля, имя которого указывается слева от IN совпадает с одним из значений в списке.

Пример:

SELECT STUDENT_ID

FROM EXAM_MARKS

WHERE MARK IN (4, 5);

WHERE MARK=4 OR MARK=5

Получить из таблицы EXAM_MARKS сведения о студентах, имеющих экзаменационные оценки только 4 и 5.

 

NOT IN – не совпадает ни с одним из значений

 

Пример:

SELECT STUDENT_ID

FROM EXAM_MARKS

WHERE MARK NOT IN (0, 1, 2, 3);

Получить из таблицы EXAM_MARKS сведения о студентах, не имеющих неудовлетворительные экзаменационные оценки.

 

Операторы LIKE и NOT LIKE

 

Предикаты LIKE (похожий) и NOT LIKE (не похожий) применяются для проверки частичного соответствия символьных строк. Этот оператор просматривает строковые значения полей с целью определения: входит ли заданная в оператор LIKE строка в символьную строку_значение проверяемого поля.

Критерий частичного соответствия задается с помощью двух символов-масок: знака процента (%) и подчеркивания (_). Знак процента (%) означает любой набор символов, в том числе и пустой, а символ подчеркивания (_) – любой одиночный символ.

Пример:

SELECT *

FROM STUDENTS

WHERE SURNAME LIKE 'Р%';

В результате запроса выдается таблица, содержащая данные о студентах, фамилия которых начинается с буквы "Р".

 

Если необходимо исключить всех студентов, по фамилии "Петров", необходимо выполнить следующий запрос:

SELECT *

FROM STUDENTS

WHERE SURNAME NOT LIKE 'Петров';

 

В случае необходимости включения в "образец" самих символов подчеркивания или процента, необходимо, чтобы такие символы воспринимались интерпретатором SQL не как символы-маски. Чтобы знак процента или подчеркивания воспринимался буквально, перед ним необходимо указать специальный управляющий символ. Этот символ можно определить произвольно, лишь бы он не встречался в качестве элемента данных.

Пример:

SELECT Имя, Адрес, Процент_скидки

FROM Клиенты

WHERE Процент_скидки LIKE '20#%'

ESCAPE '#';

 

Здесь за ключевым словом ESCAPE указывается символ, который используется в качестве управляющего. Таким же способом можно отключить и сам управляющий символ.

Пример:

LIKE '_ \ _P'

ESCAPE '\';

В данном выражении символ '\' с помощью ключевого слова ESCAPE объявляется ESC-символом. 1-ый символ '_' будет соответствовать как и ранее любому символу в проверяемой строке, а 2-ой символ '_' будет интерпретироваться буквально, как обычный символ подчеркивания.

 

Оператор IS NULL

 

Предикат IS NULL применяется для выявления записей, в которых тот или иной столбец не имеет значения.

Пример:

Получить записи о клиентах, для которых не указан адрес возможно с помощью следующего запроса:

SELECT Имя, Адрес, Регион

FROM Клиенты

WHERE Адрес IS NULL;

Для получения записей, в которых столбец "Адрес" содержит некоторые определенные значения (т.е. отличные от NULL), можно использовать аналогичное выражение, но с логическим оператором NOT (не):

SELECT Имя, Адрес, Регион

FROM Клиенты

WHERE Адрес IS NOT NULL;

 

Не следует использовать предикаты сравнения с NULL, такие как 'Адрес=NULL'

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: