- •Группировка записей
- •Наложение ограничений на группировку записей
- •Задание сложных условий поиска
- •Использование логических выражений
- •Сравнение столбца с результатом вычисления выражения
- •Использование сцепления строк/конкатенации ||
- •Использование функции cast
- •Использование подзапросов
- •Вложение подзапросов
- •Дополнительные возможности использования подзапросов, возвращающих единственное значение
- •Использование Exist (существование)
- •Использование Singular (единственный)
- •Использование подзапросов возвращающих множество значений
- •Использование Having и агрегатных функций для вложенных запросов
- •Объединение результатов выполнения нескольких запросов (union)
- •Внешние соединения
- •Cтандартные функции языка sql
Сравнение столбца с результатом вычисления выражения
Выдать из таблице расход дату расхода, наименование товара, стоимость отпущенного товара, при этом учитывать только те записи, в которых стоимость отпущенного товара больше 10
Select Rashod.Data_R, Rashod.nametovar,( Rashod.kolvo * Tovar.price) as t from Tovar, Rashod
Where Rashod.nametovar=Tovar.nametovar//соединяем две таблицы между собой
And t>10
Если мы не свяжем таблиц по nametovar то получим просто декартово произведение таблиц
Использование Between (между)
Если требуется чтобы значение находилось в определенном интервале, то применяется between
<значение> [not] between <значение1> and <значение2>
#
Select * from Tovar
Where kolvo between 10 and 100
Первое должно быть меньше
(kolvo<=10 and >=)
Использование IN
Входит ли значение в набор, во множество значений
<значение > [NOT] IN (<знач1>,<знач2>,…)
#
Select * from Tovar
Where price (10,100,1000)
Где price=10 или price=100 и т.д.
Использование Starting – начинающийся
Если необходимо чтобы строковое значение начиналось с определенной подстроки, включается предложение
<значение> [NOT] starting [with] <подстрока>
[with] ни на что не влияет
#
Выдать все товары на букву М
Select *from Tovar where nametovar starting with ‘М’ or nametovar starting ‘м’
Использование containing
Чтобы строковое поле содержало подстроку
<значение> [NOT] containing <подстрока>
#
Таблица покупателей а в ней столбец адрес, найти тех покупалей где в адресе есть подстрока «Маршала»
Select namepokupatel from Pokupateli where address containing “Маршала”
Upper/Lower
Преобразует строчные буквы в заглавные. Нижний и верхний регистры
# Выдать всех покупателей из города иркутск
Select * from pokupateli
Where upper(adress) containing “ИРКУТСК”
Использование сцепления строк/конкатенации ||
||
#Выдать имя покупателя и в скобках указать адрес
Select namepokupatel || ‘(‘ || address || ‘)’ from pokupateli
#
#ЭВМ-14-1
Select chifr || ‘-‘ || cast (god as char (4)) || ‘-‘ || cast (nomer as char (1)) from GROUSS
LIKE
Шаблоны сравнения строк значений если необходимо чтобы сравниваемые значения (значение столбца или результата вычисляемого выражения строкового типа) удовлетворяло шаблону, в условии поиска необходимо указать
<значение> [NOT] LIKE <шаблон> [ESCAPE <символ>]
Символ «%» в шаблоне означает, что на его месте может быть строка любой длины
Символ «_» в шаблоне указывает любой символ 1
Like ‘%-ый’
Like ‘20__’
Если требуется не использовать специальные функции и знак % и знак _ включается предложение ESCAPE, который определяет символ, появление которого в шаблоне отменяет специальные функции следующего за ним символа
Where proc like ‘_!%’ escape ‘!’
Знак ! отменяет специальную функцию для процента, он будет обычным символом
# Найти информацию о покупателе в адресе которого содержится набор символов ‘унова’
Select * from pocupatel
Where address like ‘%унова%’
Использование функции cast
Иногда возникает необходимость трактовать значение одного типа как значение другого типа, например символы использовать как число, а число как символы, в этом случае применяется функция CAST
CAST (значение AS <тип данных>)
Число символ Дата
Numeric -> character, date
Character->numeric,date
Date->character,numeric
#Найти покупателя, который делал закупки толи 105 205 или 305…единиц товара, заканчиваться будет на 05
Select * from pocupateli
Where cast(kolvo as chart (3)) like ‘%05’
#Значение типа Date не требуется преобразовывать к строковому типу:
Select ‘Дата расхода’ || DATE_R from Rashod
#Выдать ‘ЭВМ-14-1’
Select shifr||’-‘||cast(god as char (4))||’-’||cast (number as chart(1)) from GROUP as Shifrgproup
