Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2- Введение в язык запросов SQL.docx
Скачиваний:
5
Добавлен:
14.11.2019
Размер:
88.61 Кб
Скачать

Секция тор

Секция тор позволяет при выполнении запроса вернуть определенное количество записей.

Например:

SELECT TOP 15 * FROM [Продажи]

Этот запрос вернет первые 15 записей из таблицы Продажи.

Секция тор должна идти сразу после select, до перечисления списка возвращаемых колонок.

Если в запросе есть ключевые слова all или distinct, то TOP идет после них.

Аргументом секции тор может быть число, переменная или выражение.

Например, в следующем выражении переменная @LastRowindex определяет, сколько записей вернет выражение

SELECT TOP ( @LastRowIndex ) * FROM Продажи

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

Следующий пример вернет первые 25% записей таблицы:

DECLARE @R INT

SELECT @R=25

SELECT TOP ( @R ) PERCENT * FROM Продажи

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

Например, следующий запрос возвращает заданное число товаров.

SELECT ТОР ( @ЧислоНужныхТоваров + 10) * FROM [Товары]

Следующий запрос возвращает такое количество записей из таблицы Товары, сколько различных товаров было продано 14/08/2009.

SELECT TOP (SELECT Count( Товар) FROM Продажи WHERE Дата=’14/08/2009’) * FROM Товары

Секция where

Секция where определяет критерий отбора записей, включаемых в итоговый набор. Возвращаются только те записи, которые соответствуют условиям секции where.

Секция where представляет собой комбинацию одного или больше предикатов.

Предикат - это логическое выражение, которое возвращает одно из значений - true, false или UNKNOWN.

Предикаты в секции where соединены между собой логическими операторами and, or и not.

Пример предиката для получения списка автомобилей, у которых 8 и более колес:

SELECT Имя_Владельца FROM [Владельцы_Автсмобилёй]

WHERE КоличествоКолес >= 4

В секции where можно сравнивать между собой столбцы, переменные, константы, функции и любые другие предикаты.

Сравниваемые объекты не обязаны присутствовать в списке выборки.

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

Количество предика­тов в секции where не ограничено.

Пример выражения для выбора 8-колесных автомобилей с двумя двигателями:

SELECT ИмяВладельца FROM ВладельцыАвтомобилей

WHERE КоличествоКолес >= 4 AND КоличествоДвигателей = 2

Для сравнения двух выражений используются операторы сравнения. Стан­дартные операторы сравнения перечислены в табл. 1.

Таблица 3.1. Операторы сравнения

Оператор

Значение

=

Равно

о

Не равно

1 =

Не равно

>

Больше

<

Меньше

>=

Больше или равно

<=

Меньше или равно

!=

Не равно

!>

Не больше

!<

Не меньше

Еще примеры команд:

SELECT Название, Цена FROM Книги WHERE Цена =19.99

SELECT Название, Цена FROM Книги WHERE SORT(Цена) !< 19.99

SELECT Название, Цена FROM Книги

WHERE NOT ((Цена > 21.00) AND (Цена < 30.00))

Во втором примере для price вызывается функция sort и воз­вращаются только те записи, для которых полученный результат не меньше 19.99.

В секции where могут использоваться различные другие секции.

Секция IN

Секция in проверяет, принадлежит ли столбец набору (списку) значений.

Команду in всегда можно переписать в виде группы условий, объединяемых оператором or.

Примеры использования секции in:

SELECT Название, Цена FROM Книги

WHERE Цена IN (19.99, 21.00, 25.00, 29.99)

SELECT Название, Цена FROM Книги

WHERE Цена NOT IN (19.99, 21.00, 25.00, 29.99)

Секция LIKE

Секция like выполняет поиск по шаблону для символьных строк.

Она ис­пользуется в ситуациях, когда вас не интересует точное совпадение, напри­мер, вы не знаете точного написания слова.

Шаблон может содержать обычные и универсальные символы.

В табл. 2 перечислены универсальные символы шаблонов.

Таблица 2. Универсальные символы в шаблонах

Универсальный символ

Описание

%

Ноль и более символов

_ (подчеркивание)

Ровно один символ в строковом выражении

[ символы]

Набор символов, определяемый выражением в скобках. В скобках указывается интервал (например, [l-z ] ) или список конкретных символов ( например, [АЬК12М] )

[ ^ СИМВОЛЫ]

Похож на предыдущий, однако ищет строки, не содер­жащие символы из заданного списка или интервала

Универсальные символы можно комбинировать в шаблоне.

Для поиска сим­волов, используемых в качестве универсальных, применяется служебный символ, определяемый ключевым словом escape.

Стандартного служебного символа не существует.

Следующие примеры демонстрируют применение секции like.

  1. Найти все значения столбца Названи_товара, содержащие два и более символа

Название_товара LIKE '_%_'

Этот пример ищет строку, которая содержит, по крайней мере, два символа.

  1. Найти все значения Фамилия с открывающей квадратной скобкой

Фамилия LIKE ‘ % \ [ %' ESCAPE ' \ ’

В этом примере символ \ назначается служебным и используется для определения символа “[“. В результате секция like находит все значения Название_товара, содержащие символ” [“.

  1. Найти различные варианты написания фамилии Петров

Фамилия LIKE '[Пп]е[тр]ов'

Этот пример ищет варианты написания слова "Петров", начинающиеся со строчной или прописной буквы «п» и содержащие согласные «т» или «р».