11546

Общая структура запроса SELECT

Лабораторная работа

Информатика, кибернетика и программирование

Разделы SELECT и FROM обязательно должны присутствовать в каждом запросе; остальные разделы могут присутствовать частично или отсутствовать вовсе...

Русский

2013-04-08

70 KB

6 чел.

1. Общая структура запроса SELECT

SELECT [DISTINCT] <список столбцов>

FROM <таблица(-ы) источников>

[WHERE <ограничения>]

[GROUP BY <столбцы из раздела SELECT или операция над этими столбцами>]

[HAVING <ограничения на результаты GROUP BY>]

[ORDER BY <список столбцов>]

[FOR XML …]

Разделы SELECT и FROM обязательно должны присутствовать в каждом запросе; остальные разделы могут присутствовать частично или отсутствовать вовсе.

2. Примеры запросов

--2.1. Выбрать название и вес деталей

SELECT detail_name, weight

FROM detail

--2.2. Выбрать всю информацию из таблицы материалов

SELECT *

FROM material

----------------------------------------------------DISTINCT----------------------------------------------------------

--2.3. Выбрать уникальные коды поставщиков из таблицы поставок

SELECT DISTINCT supplier_id

FROM supply

----------------------------------------------------WHERE-------------------------------------------------------------

--2.4. Выбрать количество и даты поставки детали с кодом 2

SELECT supply_quantity, supply_date

FROM supply

WHERE detail_id = 2

--2.5. Выбрать названия поставщиков с кодами 1, 2 и 6

SELECT supplier_name

FROM supplier

WHERE supplier_id = 1 OR supplier_id = 2 OR supplier_id = 6

--или

SELECT supplier_name

FROM supplier

WHERE supplier_id in (1, 2, 6)

--2.6. Выбрать всю информацию о поставках, сделанных до 1.10.2008

SELECT *

FROM supply

WHERE supply_date <= '1.10.2008'

--2.7. Выбрать всю информацию о деталях, не начинающихся на букву «В» (в любом регистре) и чей вес меньше 50

SELECT *

FROM detail

WHERE UPPER (detail_name) NOT LIKE 'В%' AND weight < 50

--2.8. Выбрать название и код материала для деталей с весом между 5 и 10 или имеющих в названии букву «н» в третьей позиции

SELECT detail_name, material_id

FROM detail

WHERE (weight BETWEEN 5 AND 10) OR (detail_name LIKE '__н%')

--2.9. Выбрать названия поставщиков длиной не больше 15-и символов

SELECT supplier_name

FROM supplier

WHERE LEN (supplier_name) <= 15

--2.10. Выбрать месяца и годы поставок деталей

SELECT MONTH (supply_date) AS 'Месяц', YEAR (supply_date) AS 'Год'

FROM supply

------------------------------------------ORDER BY-------------------------------------------------------------------

--2.11. Упорядочить поставки сначала по коду поставщика, а затем по дате поставки

SELECT *

FROM supply

ORDER BY supplier_id, supply_date

--2.12. Выбрать названия поставщиков с кодами 2, 3 и 6, упорядоченных по алфавиту в обратном порядке

SELECT supplier_name

FROM supplier

WHERE supplier_id in (2, 3, 6)

ORDER BY supplier_name DESC

---------------------------------------Агрегация, GROUP BY-------------------------------------------------------

--2.13. Посчитать количество деталей, для которых задан вес

SELECT COUNT (*) AS 'Количество'

FROM detail

WHERE weight IS NOT NULL

--или

SELECT COUNT (weight) AS 'Количество'

FROM detail

--2.14. Определить средний вес деталей из материала с кодом 2

SELECT AVG (weight) AS 'Средний вес'

FROM detail

WHERE material_id = 2

--2.15. Из поставок, совершенных до 1.10.2008, выбрать самую крупную поставку и самую мелкую

SELECT MAX (supply_quantity) AS 'Крупная поставка', MIN (supply_quantity) AS 'Мелкая поставка'

FROM supply

WHERE supply_date < '1/10/2008'

--2.16. Для поставщиков с кодами 1 и 2 посчитать суммарное количество поставленных ими деталей

SELECT supplier_id, SUM (supply_quantity) AS 'Всего поставлено деталей'

FROM supply

WHERE supplier_id BETWEEN 1 AND 2

GROUP BY supplier_id

--2.17. Посчитать количество поставленных деталей в каждом месяце каждого года; результаты упорядочить в порядке убывания года и месяца

SELECT MONTH (supply_date) AS 'Месяц', YEAR (supply_date) AS 'Год',

COUNT (detail_id) AS 'Количество'

FROM supply

GROUP BY YEAR (supply_date),  MONTH (supply_date)

ORDER BY 2, 1

---------------------------------------------------HAVING-------------------------------------------------------------

--2.18. Выбрать материалы, для которых суммарный вес выполненных из них деталей не больше 20

SELECT material_id, SUM (weight) AS 'Вес'

FROM detail

GROUP BY material_id

HAVING SUM (weight) !> 20

--2.19. Из поставок 2008-го года выбрать детали, поставлявшиеся более одного раза

SELECT detail_id, COUNT (*)

FROM supply

WHERE supply_date >= '1.01.2008'

GROUP BY detail_id

HAVING COUNT (*) >1

------------------------------------------Преобразование типов (CAST)----------------------------------------------

--2.20. Получить сведения о датах поставок в текстовом виде

SELECT CAST (supply_date AS varchar) AS 'Дата поставки'

FROM supply

--2.21. Получить сведения из таблицы деталей в виде строк «Деталь X имеет вес Y»

SELECT 'Деталь ' + detail_name + ' имеет вес ' + CAST (weight AS varchar)

FROM detail

----------------------------------------------Функция CASE-------------------------------------------------------------

--2.22. Разделить детали на легкие (весом до 20), средние (между 20 и 50) и тяжелые

SELECT detail_name, CASE WHEN weight < 20 THEN 'Легкая деталь'

                                               WHEN weight >= 20 AND weight <50 THEN 'Средняя деталь'

                                               ELSE 'Тяжелая деталь'

                                     END AS weight

FROM detail

---------------------------------------Обработка NULL-значений-----------------------------------------------------

-- 2.23. Получить сведения о деталях и их весах, причем если у некоторой детали вес не задан, то вместо NULL-значения написать -100

SELECT detail_name, CASE WHEN weight IS NULL THEN -100

                                                ELSE weight

                                    END AS weight

FROM detail

--или

SELECT detail_name, ISNULL (weight, -100)

FROM detail

--------------------------------------------------------EXISTS-------------------------------------------------------------

--2.24. Выбрать название и код материала только тех деталей, которые когда-либо поставлялись

SELECT detail_name, material_id

FROM detail d

WHERE EXISTS (SELECT *

                              FROM supply s

                              WHERE s.detail_id = d.detail_id)

--2.25. Выбрать названия тех материалов, из которых не изготовлена ни одна деталь

SELECT material_name

FROM material m

WHERE NOT EXISTS (SELECT material_id

                                       FROM detail d

                                       WHERE d.material_id = m.material_id)

--------------------------------------------------------Подзапросы-------------------------------------------------------

--2.26. Получить сведения о самой последней (по дате) поставке

SELECT *

FROM supply

WHERE supply_date = (SELECT MAX (supply_date) FROM supply)

--2.27. Получить все поставки деталей из материала с кодом 2

SELECT *

FROM supply

WHERE detail_id IN (SELECT detail_id from detail WHERE material_id = 2)

--2.28. Для каждого поставщика получить сведения о самой первой (по дате) его поставке

SELECT *

FROM supply s1

WHERE s1.supply_date = (SELECT MIN (s2.supply_date)

                                           FROM supply s2

                                           WHERE s1.supplier_id = s2.supplier_id)

--2.29. Для каждого поставщика получить его имя и дату последнего заказа

SELECT supplier_name, (SELECT MAX (supply_date)

                                         FROM supply

                                         WHERE supply.supplier_id = supplier.supplier_id)

FROM supplier

---------------------------------------------Объединения таблиц-------------------------------------------------------

--2.30. Получить таблицу вида: название детали, название материала, из которого выполнена эта деталь

SELECT detail_name, material_name

FROM detail INNER JOIN material

ON detail.material_id = material.material_id

--или

SELECT detail_name, material_name

FROM detail CROSS JOIN material

WHERE detail.material_id = material.material_id

--или

SELECT detail_name, material_name

FROM detail, material

WHERE detail.material_id = material.material_id

--2.31. Получить таблицу вида: название поставщика, название детали, количество и дата поставки для деталей, у которых задан вес

SELECT supplier_name, detail_name, supply_quantity, supply_date

FROM supplier sr JOIN supply s

ON sr.supplier_id = s.supplier_id

JOIN detail d

ON d.detail_id = s.detail_id

WHERE weight IS NOT NULL

--2.32. Выбрать всю информацию о тех деталях, которые когда-либо поставлялись

SELECT DISTINCT d.detail_id, detail_name, weight, material_id

FROM detail d JOIN supply s ON d.detail_id = s.detail_id

--2.33. Для каждого поставщика посчитать суммарную величину его поставок

SELECT supplier_name, SUM (supply_quantity)

FROM supplier LEFT JOIN supply

ON supplier.supplier_id = supply.supplier_id

GROUP BY supplier_name

--2.34. Получить названия всех материалов и выполненных из них деталей

SELECT material_name, detail_name

FROM detail d RIGHT JOIN material m

ON d.material_id = m.material_id

--2.35. Получить все данные о поставщиках, поставках и деталях

SELECT *

FROM supplier s1 FULL JOIN supply s2

ON s1.supplier_id = s2.supplier_id

 FULL JOIN detail d

 ON s2.detail_id = d.detail_id

--2.36. Получить таблицу названий и весов деталей, причем последняя строка таблицы должна содержать итоги в виде суммарного веса всех деталей

SELECT detail_name, weight

FROM detail

UNION

SELECT 'Итого', SUM (weight)

FROM detail

ORDER BY weight

--2.37. Получить таблицу из двух полей, где первое поле – название детали, материала, поставщика или дата поставки, а второе поле – длина строки из первого поля

SELECT material_name, LEN (material_name)

FROM material

UNION

SELECT detail_name, LEN (detail_name)

FROM detail

UNION

SELECT supplier_name, LEN (supplier_name)

FROM supplier

UNION

SELECT CAST (supply_date AS varchar), LEN (supply_date)

FROM supply


 

А также другие работы, которые могут Вас заинтересовать

59508. Сценарій. Останній дзвоник, святкова лінійка 60.5 KB
  Дорогі випускники! Вмийтеся ще раз у нашу шкільну родину, вслухайтеся востаннє в переспів дзвінка і збережіть у своїй пам’яті ці неповторні хвилини прощання зі школою.
59509. Сценарій: Екологічний “КВК” у дошкільному закладі 35.5 KB
  Хід заняття: Діти заходять в зал оформлений у вигляді лісу Вихователь: Доброго дня тобі Лісовичко а ми до тебе в гості прийшли. Лісовичок: В гості А хто вас кликав Я ще від минулих гостей не оговтався: насмітили все понищили звіряток моїх образили ні Закрита сюди дорога...
59510. Теренкур – ігрова програма 52.5 KB
  Карта маршрутів теренкуру вивішується на загальний огляд. Готуються до прийому дітей пункти теренкуру Кросвордист Астролябія Скаут Міфліказ Апачі Арічамі Посмішка Ноти Вигадувалки. Ведучий: Ласкаво просимо до нас на Теренкур...
59511. Виховний захід: Як Батьківщина й сонечко над нами, отак і мама на землі одна 68.5 KB
  Адже тільки мати була є і залишається для нас живим символом рідного дому рідної землі. Стоїть на землі мати вища й найсвятіша від усіх богинь. Стоїть мати і молиться за народ за своїх синів і дочок за нас з вами і перші слова її молитви...
59512. Шкідливі звички – шлях у безодню 66.5 KB
  Обладнання та оформлення: технічні засоби навчання учнівські реферати брошури книги плакати записи на дошці; Бережи одяг доки новий а здоровя доки молодий. Не піддавайся шкідливій звичці...
59513. Його величність хліб (сценарій позакласного заходу) 98.5 KB
  Його величність хліб. Познайомити з історією вирощування хліба з народними традиціями повязаними з хлібом. Виховувати шанобливе ставлення до хліба повагу до праці хлібороба.
59514. Люблю тебе, всім серцем і душею, моя ти рідна Україно 60 KB
  Повези мене батьку на Україну Хай весною почую спів солов’я Повези мене батьку за свою Батьківщину Де зелені Карпати домівка твоя. Повези повези де зелені Карати Домівка твоя. Повези мене батьку на Україну Щоби літом побачить пшеничні поля Повези мене батьку на свою батьківщину...
59515. Геній Івана Франка 70.5 KB
  Ведучий. Мабуть, твори Івана Франка народилися з пилинки вогню. Незбагненна клітинка божественного пломеню, «правдива іскра Прометея», залетіла з батьківського ковадла ще в дитяче серце поета, вибухнула вулканом любові до праці, до правди, до свободи...
59516. Як ми знаємо творчість Т.Г.Шевченка 70.5 KB
  Добрий день юні шанувальники творчості Кобзаря дорогі глядачі вболівальники судді Сьогодні ми присутні з вами на конкурсі знавців творчості Тараса Григоровича Шевченка. Кожна команда повинна за 10 хвилин розповісти про Тараса Шевченка...