
- •Предисловие
- •Анализ предметной области
- •Анализ требований. Диаграмма вариантов использования
- •Диаграмма вариантов использования
- •Концептуальное моделирование предметной области
- •Проектирование базы данных
- •Логическая модель базы данных
- •Физическая модель базы данных
- •Создание базы данных
- •Подключение к серверуMssqlServer2008r2
- •Создание новой базы данных на сервере
- •Создание новой таблицы на сервере
- •Создание связей
- •Создание диаграммы базы данных
- •Ограничения целостности базы данных
- •Сценарий создания базы данных
- •Заполнение базы данных
- •Загрузка информации в базу данных средствамиManagementStudio
- •Ведение базы данных средствамиSql
- •Sql-запросы на вставку, модификацию и удаление данных
- •Добавление новых записей в таблицу (insert)
- •Модификация существующих записей (update)
- •Удаление записей из таблицы (delete)
- •Запросы на выборку данных
- •Общий синтаксис запроса select
- •Примеры реализации запросов
- •Организация бизнес-логики
- •Хранимые процедуры
- •Триггеры
- •Прикладной программный интерфейс субд
- •Знакомство с основными объектами ado.Net
- •Разработка клиентского приложения
- •Пример разработки: иас «Оптовый заводской склад»
- •Реализация основных функций Системы
- •Ведение основных справочников и оформление поставок деталей
- •Организация поиска поставок деталей
- •Администрирование сервера бд
- •Инсталляция сервера
- •Резервное копирование и восстановление бд
- •Санкционирование доступа
- •Приложение а. Варианты заданий
- •1. Биржа труда
- •2. Проектная организация
- •3. Библиотечный фонд города
- •4. Турагентство
- •5. Регистратура городской поликлиники
- •6. Гибдд
- •7. Оператор сотовой связи
- •8. Аптека
- •9. Аудиторный фонд университета
- •10. Агентство недвижимости
- •11. Студенческий городок
- •12. Санаторий
- •13. Продуктовый магазин
- •14. Научные публикации вуза
- •15. Служба такси
- •16. Страховое агентство
- •17. Сайт купонов на скидки
- •18. Учебный план
- •19. Преподаватели университета
- •20. Расчет стипендии
- •21. Расписание занятий
- •Приложение б. Состав отчета
- •Список литературы
- •153003, Г. Иваново, ул. Рабфаковская, 34.
Sql-запросы на вставку, модификацию и удаление данных
Добавление новых записей в таблицу (insert)
Общий синтаксис:
а) вставка одной новой строки в таблицу:
INSERT [INTO] <таблица> [(столбцы)]
VALUES (значения)
б) Вставка в таблицу одной или более строк, взятых из источника, указанного в подзапросе:
INSERT [INTO] <таблица> [(столбцы)]
<SELECT запрос>.
Правила:
Количество элементов в разделе «Столбцы» должно совпадать с количеством элементов в разделе «Значения»; типы данных должны совпадать либо допускать неявное преобразование;
В случае, когда раздел «Столбцы» отсутствует, раздел «Значения» должен содержать столько же значений, сколько всего столбцов в редактируемой таблице, кроме того, значения должны перечисляться в том же порядке, в каком объявлены столбцы таблицы; поэтому рекомендуется всегда явно указывать список столбцов, в которые будут добавляться новые значения;
В случае использования синтаксиса (б) подзапрос SELECT может быть адресован либо к этой же таблице, либо к другой таблице базы данных, либо к другой базе данных на сервере;
Если для некоторого столбца таблицы задано значение по умолчанию, и требуется в добавляемой записи использовать именно это значение, то в разделе «Значения» для этого столбца необходимо написать ключевое слово DEFAULT.
Примеры:
INSERT INTO detail (detail_name)
VALUES ('Подшипник')
INSERT INTO supply (supplier_id, supply_quantity, supply_cost,
supply_date, detail_id)
VALUES (4, 177, 453.45, '25.09.2009', 1)
INSERT supplier (supplier_type, supplier_name)
VALUES (DEFAULT, 'Смирнов С. С.')
Модификация существующих записей (update)
Общий синтаксис:
UPDATE <таблица>
SET <столбец> = <значение> [, <столбец> = <значение>]
[FROM <таблица(ы) источников>]
[WHERE <условие>]
Примеры:
UPDATE detail
SET weight = 210
UPDATE material
SET material_name = 'Олово'
WHERE material_id = 2
UPDATE delivery
SET department_id = NULL,
delivery_date = delivery_date + 1 /*увеличение даты поставки на день
WHERE delivery_id = 1 OR department_id > 3
UPDATE detail
SET detail_name = detail_name + '!!!'
WHERE detail_name LIKE '_а%' AND weight BETWEEN 6 AND 10
Удаление записей из таблицы (delete)
Общий синтаксис:
DELETE<таблица>
[WHERE] <условие>
Примеры:
DELETE detail
WHERE detail_id IN (2, 5, 8)
DELETE detail
WHERE weight IS NULL
DELETE detail
Задание:
Заполните базу данных средствами ManagementStudio. Для этого следует воспользоваться командой «Открыть таблицу» контекстного меню таблицы в «Обозревателе объектов» (рис. 4.1).
Составьте 9 запросов на модификацию данных: 3 INSERT, 3UPDATE, 3DELETE.
Запросы на выборку данных
Общий синтаксис запроса select
SELECT [DISTINCT] <список столбцов>
FROM <таблица(-ы) источник>
[WHERE <ограничения>]
[GROUP BY <столбцы из раздела SELECT или операция над этими столбцами>]
[HAVING <ограничения на результаты GROUP BY>]
[ORDER BY <список столбцов для сортировки>]
[FOR XML …]
Разделы SELECT и FROM обязательно должны присутствовать в каждом запросе; остальные разделы могут отсутствовать или присутствовать частично.
Примеры реализации запросов
Наиболее простые запросы:
1. Выбрать название и вес деталей
Рис. 5.1. Результаты выполнения запроса №1
2. Выбрать всю информацию из таблицы материалов
Рис. 5.2. Результаты выполнения запроса №2
Уникальность DISTINCT
3. Выбрать уникальные коды поставщиков из таблицы поставок
Рис. 5.3. Результаты выполнения запроса №3
Ограничение WHERE
4. Выбрать количество и даты поставки детали с кодом 1
Рис. 5.4. Результаты выполнения запроса №4
5. Выбрать названия поставщиков с кодами 1, 4 и 6
или
Рис. 5.5. Результаты выполнения запроса №5
6. Выбрать всю информацию о поставках, сделанных до 1.10.2009
Рис. 5.6. Результаты выполнения запроса №6
7. Выбрать всю информацию о деталях, не начинающихся на букву «В» (в любом регистре) и чей вес меньше 50
Рис. 5.7. Результаты выполнения запроса №7
8. Выбрать название и код материала для деталей с весом от 5 до 10 г или имеющих в названии букву «н» в третьей позиции
Рис. 5.8. Результаты выполнения запроса №8
9. Выбрать названия поставщиков длиной не больше 15-и символов
Рис. 5.9. Результаты выполнения запроса №9
10. Выбрать месяца и годы поставок деталей
Рис. 5.10. Результаты выполнения запроса №10
Сортировка ORDER BY
11. Упорядочить поставки сначала по коду поставщика, а затем по дате поставки
Рис. 5.11. Результаты выполнения запроса №11
12. Выбрать названия поставщиков с кодами 4, 6, 8, 9, упорядоченных по алфавиту в обратном порядке
Рис. 5.12. Результаты выполнения запроса №12
Агрегация и группировка GROUP BY
13. Посчитать количество деталей, для которых задан вес
или
Рис. 5.13. Результаты выполнения запроса №13
14. Определить средний вес деталей из материала с кодом 2
Рис. 5.14. Результаты выполнения запроса №2
15. Из поставок, совершенных до 1.10.2009, выбрать самую крупную поставку и самую мелкую
Рис. 5.15. Результаты выполнения запроса №15
16. Для поставщиков с кодами в диапазоне 5 - 8 посчитать суммарное количество поставленных ими деталей
Рис. 5.16. Результаты выполнения запроса №16
17. Посчитать количество поставленных деталей в каждом месяце каждого года; результаты упорядочить в порядке убывания года и месяца
Рис. 5.17. Результаты выполнения запроса №17
Ограничение на группировки HAVING
18. Выбрать материалы, для которых суммарный вес выполненных из них деталей не больше 20
Рис. 5.18. Результаты выполнения запроса №18
19. Из поставок 2008-го года выбрать детали, поставлявшиеся более одного раза
Рис. 5.19. Результаты выполнения запроса №19
Преобразование типов CAST
20. Получить сведения о датах поставок в текстовом виде
Рис. 5.20. Результаты выполнения запроса №20
21. Получить сведения из таблицы деталей в виде строк «Деталь X имеет вес Y»
Рис. 5.21. Результаты выполнения запроса №21
Альтернативы CASE
22. Разделить детали на легкие (весом до 20), средние (между 20 и 50) и тяжелые
Рис. 5.22. Результаты выполнения запроса №22
Обработка NULL-значений
23. Получить сведения о деталях и их весах, причем если у детали вес не задан, то вместо NULL написать -100
Рис. 5.23. Результаты выполнения запроса №23
Функция существования EXISTS
24. Выбрать название и код материала только тех деталей, которые когда-либо поставлялись
Рис. 5.24. Результаты выполнения запроса №24
25. Выбрать названия тех материалов, из которых не изготовлена ни одна деталь
Рис. 5.25. Результаты выполнения запроса №25
Подзапросы
26. Получить сведения о самой последней (по дате) поставке
Рис. 5.26. Результаты выполнения запроса №26
27. Получить все поставки деталей из материала с кодом 2
Рис. 5.27. Результаты выполнения запроса №27
28. Для каждого поставщика получить сведения о самой первой (по дате) его поставке
Рис. 5.28. Результаты выполнения запроса №28
29. Для каждого поставщика получить его имя и дату последнего заказа
Рис. 5.29. Результаты выполнения запроса №29
Объединение таблиц JOIN
30. Получить таблицу вида: название детали, название материала, из которого выполнена эта деталь
или
или
Рис. 5.30. Результаты выполнения запроса №30
31. Получить таблицу вида: поставщик, название детали, количество и дата поставки для деталей, у которых задан вес
Рис. 5.31. Результаты выполнения запроса №31
32. Выбрать всю информацию о тех деталях, которые когда-либо поставлялись
Рис. 5.32. Результаты выполнения запроса №32
33. Для каждого поставщика посчитать суммарную величину его поставок
Рис. 5.33. Результаты выполнения запроса №33
34. Выбрать названия материалов и сделанных из них деталей
Рис. 5.34. Результаты выполнения запроса №34
35. Получить все данные о поставщиках, поставках и деталях
Рис. 5.35. Результаты выполнения запроса №35
Объединение таблиц UNION
36. Получить таблицу названий и весов деталей, причем последняя строка таблицы должна содержать итоги в виде суммарного веса всех деталей
Рис. 5.36. Результаты выполнения запроса №36
37. Получить таблицу из двух полей, где первое поле – название детали, материала, поставщика или дата поставки, а второе поле – длина строки из первого поля
Рис. 5.37. Результаты выполнения запроса №37