1626434760-4c9f92f9ed5188f8fc024fed893742bb (844133), страница 17
Текст из файла (страница 17)
Результатупорядочить по возрастанию номера детали в рамках возрастаниявеса в граммах”SELECT Номер_Детали, "Вес в граммах=", Вес*454 FROM PORDER BY 3, Номер_ДеталиПредупреждение.Поле в разделе ORDER BY должно включать столбцырезультирующей таблицы, иначе будет выдана ошибка.Нельзя, например, написать:SELECT Номер_Поставщика FROM SORDER BY Город11Запросы к одной таблице1.7 Выборка с использованием BETWEEN"Выдать сведения о деталях, вес которых находится в диапазоне от16 до 19 включительно".SELECT Номер_Детали, Название, Цвет, Вес, Город FROM PWHERE Вес BETWEEN 16 AND 19Результат: очевиден.1.8 Выборка с использованием IN"Выдать сведения о деталях зеленого и красного цвета".SELECT Номер_Детали, Название, Цвет, Вес, Город FROM PWHERE Цвет IN ("красный", "зеленый")Результат: очевиден.12Запросы к одной таблице1.9 Выборка с использованием предиката LIKE"Выдать название и номера деталей, у которых названиезаканчивается на букву 'т' ".SELECT Номер_Детали, Название FROM PWHERE Название LIKE "%т"Результат:Номер_ДеталиНазваниеP2P3P4болтвинтвинт13Запросы к нескольким таблицам2.
Запросы к нескольким таблицам2.1 Простое эквисоединение"Выдать сведения о таких поставщиках и деталях, которыеразмещены в одном и том же городе".SELECT S.*, P.*FROM S, PWHERE S.Город = P.ГородРезультат: таблица, полученная путем соединения таблиц S и P позначению атрибута Город.14Запросы к нескольким таблицам2.2 Соединение двух таблиц с дополнительным условием"Выдать сведения о таких поставщиках и деталях, которыеразмещены в одном и том же городе и их состояние больше 20".SELECT S.*, P.*FROM S, PWHERE S.Город = P.Город AND S.Состояние > 20Результат: ограничение результирующей таблицы из предыдущегопримера.15Запросы к нескольким таблицам2.3 Соединение трех таблиц"Выдать информацию о поставщиках и деталях, размещенных водном городе, и количество деталей больше 100".SELECT S.Номер_Поставщика,P.Номер_Детали, SP.КоличествоFROM S, P, SPWHERE S.Город = P.Город ANDP.Номер_Детали = SP.Номер_Детали ANDSP.Количество > 100Результат:Номер_ПоставщикаS1S1S2S3S4Номер_ДеталиP1P4P2P2P4Количество300200400200300 16Запросы к нескольким таблицам2.4 Соединение таблицы с ней самой"Выдать все пары поставщиков, находящихся в одном городе".SELECT ПЕРВАЯ.Номер_ПоставщикаВТОРАЯ.Номер_ПоставщикаFROM S ПЕРВАЯ, S ВТОРАЯWHERE ПЕРВАЯ.Город = ВТОРАЯ.Город ANDПЕРВАЯ.Номер_Поставщика <ВТОРАЯ.Номер_ПоставщикаРезультат:Номер_ПоставщикаS1S2Номер_ПоставщикаS4S317Использование подзапросов3.
Использование подзапросов3.1 Простой подзапрос"Выдать фамилии поставщиков, которые поставляют деталь P2".SELECT ФамилияFROM SWHERE Номер_Поставщика IN(SELECT Номер_ПоставщикаFROM SPWHERE Номер_Детали = "P2")Результат:ФамилияСмитДжонсБлейкКларкЗамечание. Этот же результатможно получить путемсоединения таблиц.18Использование подзапросов3.2 Подзапрос с несколькими уровнями вложенности"Выдать фамилии поставщиков, которые поставляют по крайнеймере одну красную деталь".SELECT ФамилияFROM SWHERE Номер_Поставщика IN(SELECT Номер_ПоставщикаFROM SPWHERE Номер_Детали IN(SELECT Номер_ ДеталиFROM PWHERE Цвет = "красный" ) )Результат:ФамилияСмитДжонсКларк19Использование подзапросов3.3 Использование одной и той же таблицы в запросе иподзапросе"Выдать номера поставщиков, которые поставляют по крайней мереодну деталь, поставляемую поставщиком S2".SELECT Номер_ПоставщикаFROM SPWHERE Номер_Детали IN(SELECT Номер_ ДеталиНомер_ПоставщикаFROM SPWHERE Номер_Поставщика ="S2")Результат:S1S2S3S4204.
Использование квантора существования EXISTS"Выдать фамилии поставщиков детали P1".SELECT ФамилияFROM SWHERE EXISTS(SELECT *FROM SPWHERE Номер_Поставщика = S.Номер_ПоставщикаAND Номер_Детали = "P1")Результат:ФамилияСмитДжонс215. Использование кванторов EXISTS и ALL"Выдать фамилию поставщика с максимальным состоянием".SELECT DISTINCT a.Фамилия, a.СостояниеFROM S aWHERE NOT EXISTS(SELECT *FROM S bWHERE a.Состояние < b.Состояние)либоSELECT DISTINCT a.Фамилия, a.СостояниеFROM S aWHERE a.Состояние >= ALL(SELECT b.СостояниеФамилияFROM S b)Результат:Адамс226.
Использование функций в запросе1. "Выдать фамилию поставщика с максимальным состоянием".SELECT ФамилияFROM SWHERE Состояние = ( SELECT MAX(Состояние)FROM S )Результат:ФамилияАдамс236. Использование функций в запросе2. "Выдать общее количество поставляемых деталей P2".SELECT SUM(Количество)FROM SPWHERE Номер_Детали = "P2"Результат:1000246. Использование функций в запросе3.
"Выдать общее количество поставщиков“.SELECT COUNT(*) FROM SРезультат:54. "Выдать общее количество поставщиков, поставляющих детали внастоящее время".SELECT COUNT (DISTINCT Номер_Поставщика) FROM SPРезультат:4256. Запросы с группированием данных1. "Вычислить общий объем поставок для каждой детали “.SELECT Номер_Детали, SUM(Количество)FROM SPGROUP BY Номер_ДеталиРезультат:Номер_ДеталиP1P2P3P4P5P66001000400500500100266. Запросы с группированием данных2.
"Выдать номера всех деталей, поставляемых более чем однимпоставщиком “.SELECT Номер_Детали FROM SPGROUP BY Номер_ДеталиHAVING COUNT(*) > 1Результат:Номер_ДеталиP1P2P4P527.