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


 

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

48563. Основные этапы конструирования 28.5 KB
  Составляется заказчиком изделия и устанавливается наиболее общие требования к изделию о его разработке и изготовлении. задание содержит: 1 наименование и область применения изделия; 2 основание для разработки; 3 источники для разработки; 4технические требования включая: требования к составлению и конструкции изделия; к надежности и технологичности; 5порядок контроля и приемки. Техническое предложение – это совокупность конструкторских документаций содержащих технические и техникоэкономические обоснования целесообразности разработки и...
48564. ОСНОВЫ АЛГОРИТМИЗАЦИИ 825 KB
  ОСНОВЫ АЛГОРИТМИЗАЦИИ Понятие алгоритма Основы алгоритмического языка Паскаль
48565. Будова та функції ядра 50.5 KB
  Методи та методичні прийоми: словесні інтелектуальна розминка розповідь з елементами бесіди пояснення фронтальне опитування практичні самостійна робота наочнографічні демонстрація схем будови мітохондрії хлоропласта взаємоперетворення пластид будови метафазної хромосоми і нитки хромосоми. Базові поняття і терміни: еукаріоти прокаріоти клітина цитоплазма поверхневий апарат ядро хромосоми гени. Засоби навчання: схема Будова мітохондріїâ€ схема Будова хлоропласта†схема Взаємоперетворення пластид схема Будова...
48566. ОСНОВНЫЕ БИЗНЕС-ПРОЦЕССЫ В ОРГАНИЗАЦИИ 75.5 KB
  Субъектами предпринимательства могут быть как отдельные частные лица, так и объединения партнеров. Частные лица как субъекты предпринимательства выступают в этом качестве, как правило, путем организации единоличного или семейного предприятия. Такие предприниматели могут ограничиваться затратами собственного труда или использовать наемный труд.
48567. Конспект лекцій. Економіка підприємства 1.92 MB
  УДК Конспект лекцій по дисципліні “Економіка підприємства†Укл. Містить конспект лекцій по дисципліні “Економіка підприємства†для студентів економічних спеціальностей усіх форм навчання. ЗМІСТ Тема1: Організаційно правові аспекти діяльності підприємства 1.
48568. Коммерческое (предпринимательское) право 3.26 MB
  Понятие коммерческого права Принципы коммерческого права История коммерческого права Очерк истории науки и преподавания коммерческого торгового права в России
48570. ОСНОВИ І МЕТОДИ АРХІТЕКТУРНОГО ПРОЕКТУВАННЯ. КУРС ЛЕКЦІЙ 476 KB
  Поняття і види архітектурного проектування МЕТОДИ АРХІТЕКТУРНОГО ПРОЕКТУВАННЯ за Б. Поняття методу і методики проектування.