- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Таблица A
- •Таблица A
- •Таблица A
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
Элементы языка SQL
Оператор SELECT: задание сложных условий поиска
Использование IN
Если нужно, чтобы значение какого-либо столбца (или результат вычисления некоторого выражения) совпадало с одним из дискретных значений, в условии поиска указывается предложение:
<значение> [ NOT ] IN ( <значение1> [, <значение2> … ] )
В результирующий НД будут включены только те записи, для которых значение, стоящее слева от IN , равно одному из значений, указанному в списке значений.
Пример: SELECT *
FROM RASHOD
WHERE KOLVO IN (100, 1000, 3000 )
Замечание. Существует вторая форма использования IN, в которой список возможных значений возвращается вложенным запросом SELECT.
Элементы языка SQL
Оператор SELECT: задание сложных условий поиска
Использование STARTING
Если нужно, чтобы значение какого-либо символьного столбца (или некоторого выражения) НАЧИНАЛОСЬ с определенной подстроки, в условии поиска указывается предложение:
<значение> [ NOT ] STARTING [WITH] <подстрока>
Пример: SELECT *
FROM TOVARY
WHERE TOVAR STARTING WITH ‘C’
Элементы языка SQL
Оператор SELECT: задание сложных условий поиска
Использование CONTAINING
Если нужно, чтобы значение какого-либо символьного столбца (или некоторого выражения) ВКЛЮЧАЛО В СЕБЯ определенную подстроку, в условии поиска указывается предложение:
<значение> [ NOT ] CONTAINIG <подстрока>
Пример: SELECT *
FROM POKUPATELI
WHERE ADRES CONTAINING ‘Стр’
Элементы языка SQL
Оператор SELECT: задание сложных условий поиска
Использование функции UPPER
Функция преобразует все буквы аргумента в заглавные.
UPPER (<значение>)
Обычно эта функция используется в условиях поиска, когда необходимо игнорировать возможную разницу в высоте букв. Может использоваться как в списке столбцов результирующего НД, так и в условии поиска в предложении WHERE.
Пример: SELECT *
FROM POKUPATELI
WHERE UPPER(GOROD) = ‘МОСКВА’
Элементы языка SQL
Оператор SELECT: задание сложных условий поиска
Использование LIKE
Предложение LIKE определяет шаблоны сравнения строковых значений. Если необходимо , чтобы сравниваемое значение удовлетворяло шаблону, в условии поиска необходимо указать
<значение> [NOT] LIKE <шаблон> [ESCAPE <подшаблон>]
В шаблоне используются специальные символы - «%» и «_».
Символ «%» означает, что на его месте может быть строка любой длины. Символ «_» используется для указания любого одиночного символа.
ESCAPE определяет символ, появление которого в шаблоне отменяет специальные функции следующего за ним символа.
Примеры:
LIKE “%USD”
LIKE “__94”
WHERE STOLBEZ LIKE “_!%” ESCAPE “!”
Элементы языка SQL
Оператор SELECT: задание сложных условий поиска
Использование функции CAST
Для того, чтобы трактовать значение одного типа как значение другого типа применяется функция CAST:
CAST (<значение> AS <тип_данных>)
Множество типов данных, в которые может быть преобразовано значение:
Тип данных |
Можно привести к типам |
NUMERIC |
CHARACTER, DATE |
CHARACTER |
NUMERIC, DATE |
DATE |
CHARACTER, NUMERIC |
Примеры: SELECT *
FROM RASHOD
WHERE CAST(KOLVO AS CHAR(4)) LIKE “%09”
Элементы языка SQL
Оператор SELECT: использование подзапросов
Вложение подзапросов
Часто невозможно решить поставленную задачу путем использования единственного запроса. Например, в тех случаях, когда при использовании условия поиска в предложении WHERE параметр <значение, с которым сравнивать> заранее не определен и должен вычисляться в момент выполнения оператора SELECT.
В этом случае оператор SELECT с подзапросом имеет следующий вид:
SELECT …
FROM …
WHERE <сравниваемое_значение> <оператор> (SELECT …) Пример:
SELECT KOLVO, DAT_RASH FROM RASHOD
WHERE KOLVO = (SELECT MAX(KOLVO) FROM RASHOD) Замечание.
Ошибкой для данного вида запроса является использование вложенного оператора SELECT, возвращающего вместо единичного список значений.
Элементы языка SQL
Оператор SELECT: использование подзапросов
Вложение подзапросов
Пример1 (ошибочный):
SELECT R.DAT_RASH, R.TOVAR, R.KOLVO, R.POKUP FROM RASHOD R
WHERE R.POKUP = (SELECT POK.POKUP FROM POKUPATELI POK
WHERE UPPER(POK.GOROD) = ‘МОСКВА’)
Пример 2 (исправленный):
SELECT R.DAT_RASH, R.TOVAR, R.KOLVO, R.POKUP FROM RASHOD R
WHERE R.POKUP IN (SELECT POK.POKUP FROM POKUPATELI POK
WHERE UPPER(POK.GOROD) = ‘МОСКВА’)
Элементы языка SQL
Оператор SELECT: использование подзапросов
Вложение подзапросов
Пример 3.
SELECT RRR.* FROM RASHOD RRR WHERE R.POKUP IN
(SELECT R.POKUP
FROM RASHOD R
WHERE KOLVO =
(SELECT MAX(RSH.KOLVO) FROM RASHOD RSH) )
Логический порядок выполнения запроса:
-Определяется самая крупная покупка – отыскивается максимальное значение в столбце KOLVO («самый вложенный» запрос).
-Определяется покупатель, осуществивший эту покупку (средний запрос)
-Основной запрос выбирает записи с заданным покупателем.
Элементы языка SQL
Оператор SELECT: использование подзапросов
Дополнительные возможности
Предложение EXISTS. Требуется отобрать только те данные, для которых подзапрос возвращает одно или более значений.
EXISTS (<подзапрос>)
Пример.
Составить список покупателей, которые хотя бы один раз получали товар со склада:
SELECT P.POKUP
FROM POKUPATELI P
WHERE EXISTS (SELECT R.POKUP
FROM RASHOD R
WHERE R.POKUP = P.POKUP )