Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование логических выражений
OR, AND, NOT
#6 Select * from Tovar Where kolvo>100 and kolvo<=1000 and price=1000
Пусть есть таблица «Расход товара» она связана с таблицей «Товар» по внешнему ключу nametoval. Хранит название товара и его кол-во
Сравнение столбца с результатом вычисления выражения Выдать из таблице расход дату расхода, наименование товара, стоимость отпущенного товара, при этом учитывать только те записи, в которых стоимость отпущенного товара больше 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 “ИРКУТСК”
9. Использование сцепления строк/конкатенации || || #Выдать имя покупателя и в скобках указать адрес 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
Использование подзапросов
Часто не возможно решить задачу путем использования единственного запроса Select/Например в тех случаях когда при использования условия поиска Where <сравниваемое значение> <оператор> < значение, с которым сравнивать> Параметр <значение с которым сравнивать> заранее не определен и должен вычисляться в момент выполнения оператора select, или представляет собой не одно а несколько значений, в этом случае применяются под запросы:
Select … From… Where <сравниваемое значение> <оператор> (select….) Обязательно в круглых скобках
Вложенный оператор также может содержать внутри вложенные запросы
#Выдать дату, на которую приходится максимальный отпуск товара Таблица Rashod Select date_R, kolvo_R from Rashod Where kolvo_R = (Select max(kolvo_R from Rashod))
#Определить дату когда со склада было отгружено максимальное количество товара и реквизиты покупателя, который этот товар приобрел Таблицы Pocupateli (P) и Rashod(R) связаны полем ID_pocup
Select R.date_R,R.kolvo_R, P.* from Rashod R, Pocupateli P //псевдоним Where R.ID_pocup=P.ID_pocup and (R.kolvo_R =(Select max(Kolvo_R) from Rashod)
ЗАМЕЧАНИЕ #Покупателей из ИРКУТСКА может быть много SELECT R.data_R, R.Tovarname,R.kolvo_R, P.* FROM Rashod R, Pocupateli P WHERE R.ID_pocup=P.ID_pocup And R.ID_pocup= (Select P.ID_pocup from Pocupateli P where Upper (P.Gorod)=’ИРКУТСК’) #ИСПРАВЛЕНО SELECT R.data_R, R.Tovarname,R.kolvo_R, P.* FROM Rashod R, Pocupateli P WHERE R.ID_pocup=P.ID_pocup And R.ID_pocup in (Select P.ID_pocup from Pocupateli P where Upper (P.Gorod) ’ИРКУТСК’)
Вложение подзапросов # Составить список отгрузки товаров покупателю, который преобрел максимальную партию какого-либо товара
Select R1.* from Rashod R1 Where R1.pocup_name in (select R2.pocup_name from Rashod R2 Where R2.kolvo = (select max(R3.kolvo) from Rashod R3))
|
|||||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 107; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.176.66 (0.018 с.) |