Цель контрольной работы – закрепление навыков составления SQL запросов к базам данных (БД).
Любая система управления базой данных (СУБД) поддерживает взаимодействие администратора с содержимым БД на базе языка SQL. Хорошее знание языка SQL и навыки его использования являются обязательными для любого специалиста в области информационных технологий.
Контрольная работа состоит из 14 заданий (все четные номера заданий, для студентов с четными номерами зачетной книжки, а все нечетные номера – для студентов с нечетными номерами зачетной книжки). Рекомендуется проверить правильность выполнения заданий практически. Используйте доступную Вам СУБД (например, MS Access, MySQL и другие).
На данной странице Вы можете купить решение четного варианта (все четные вопросы). База данных реализована в MS Access (включена в архив с решением).
Ниже представлена БД, состоящая из трех таблиц, включающих данные о продавцах, покупателях и заказах – этот пример взят из замечательной книги Мартина Грабера [1].
Поля таблиц имеют следующее назначение:
- snum – первичный ключ таблицы продавцов
- sname – фамилия продавца
- city – город, в котором работает продавец
- comm – комиссионные, взимаемые продавцом
- cnum – первичный ключ таблицы покупателей
- cname – фамилия покупателя
- city – город, в котором живет покупатель
- rating – рейтинг покупателя
- onum – первичный ключ таблицы заказов
- amt – сумма заказа
- odate – дата выполнения заказа
Создайте в ней приведенные ниже таблицы и выполните написанные Вами запросы. Убедитесь, что результат запроса соответствует заданию.
Таблица 1. Salespeople
(Продавцы)
Snum |
Sname |
City |
Comm |
1001 |
Peel |
London |
0.12 |
1002 |
Serres |
San Jose |
0.13 |
1004 |
Motika |
London |
0.11 |
1007 |
Rifkin |
Barcelona |
0.15 |
1003 |
Alexrod |
New York |
0.10 |
Таблица 2. Customers
(Покупатели)
Cnum |
Cname |
City |
Rating |
Snum |
2001 |
Hoffman |
London |
100 |
1001 |
2002 |
Giovanni |
Rome |
200 |
1003 |
2003 |
Liu |
San Jose |
200 |
1002 |
2004 |
Grass |
Berlin |
300 |
1002 |
2006 |
Clemens |
London |
100 |
1001 |
2008 |
Cisneros |
San Jose |
300 |
1007 |
2007 |
Pirera |
Rome |
100 |
1004 |
Таблица 3.
Orders (Заказы)
Onum |
Amt |
Odate |
Cnum |
Snum |
3001 |
18.69 |
10/03/2008 |
2008 |
1007 |
3003 |
767.19 |
10/03/2008 |
2001 |
1001 |
3002 |
1900.10 |
10/03/2008 |
2007 |
1004 |
3005 |
5160.45 |
10/03/2008 |
2003 |
1002 |
3006 |
1098.16 |
10/03/2008 |
2008 |
1007 |
3009 |
1713.23 |
10/04/2008 |
2002 |
1003 |
3007 |
75.75 |
10/04/2008 |
2004 |
1002 |
3008 |
4723.00 |
10/05/2008 |
2006 |
1001 |
3010 |
1309.95 |
10/06/2008 |
2004 |
1002 |
3011 |
9891.88 |
10/06/2008 |
2006 |
1001 |
Задания на контрольную работу:
1. Напишите команду SELECT, которая бы вывела номер заказа, сумму и дату для всех строк из таблицы Orders.
2. Напишите запрос, который вывел бы все строки из таблицы Customers, с номером продавца = 1001.
3. Напишите запрос, который вывел бы таблицу со столбцами в следующем порядке: city, sname, snum, comm.
4. Напишите команду SELECT, которая вывела бы рейтинг (rating), сопровождаемый именем каждого покупателя в San Jose.
5. Напишите запрос, который вывел бы значения snum всех продавцов из таблицы Orders, без каких бы то ни было повторений.
6. Напишите запрос, который выведет все заказы со значениями суммы выше чем 1000.
7. Напишите запрос, который выведет поля sname и city для всех продавцов в Лондоне с комиссионными выше 0.10 .
8. Напишите запрос к таблице Покупатели, который определит всех покупателей с рейтингом =< 100, если они не в Риме.
9. Что может быть выведено в результате следующего запроса ?
SELECT * FROM Orders
WHERE NOT ((odate = 10/03/2008 OR snum > 1006)
AND amt > = 1500 );
10. Как можно проще переписать такой запрос ?
SELECT snum, sname, city, comm
FROM Salespeople
WHERE(comm>+0.12 OR comm<0.14);
11.Напишите два запроса, которые могли бы вывести все заказы на 3 и 4 октября 2008.
12.Напишите запрос, который выберет всех заказчиков, обслуживаемых продавцами Peel или Motika. (Подсказка: поле snum связывает вторую таблицу с первой ).
13.Напишите запрос, который может вывести всех заказчиков, чьи имена начинаются с буквы попадающей в диапазон от A до G.
14.Напишите запрос, который выберет всех покупателей, чьи имена начинаются с буквы C.
15.Напишите запрос, который выберет все заказы, имеющие нулевые значения или NULL в поле amt (сумма).
16.Напишите запрос, который сосчитает число всех заказов, сделанных 3 октября.
17.Напишите запрос, который сосчитал бы число различных не-NULL значений поля city в таблице Покупателей.
18.Напишите запрос, который выбрал бы наименьшую сумму для каждого покупателя.
19.Напишите запрос, который бы выбирал покупателей в алфавитном порядке, чьи имена начинаются с буквы G.
20.Напишите запрос, который выбрал бы высший рейтинг в каждом городе.
21.Предположим, что каждый продавец имеет 12% комиссионных. Напишите запрос к таблице Заказов, который мог бы вывести номер заказа, номер продавца, и сумму комиссионных продавца для этого заказа.
22.Напишите запрос к таблице Покупателей, который мог бы найти высший рейтинг покупателя в каждом городе.
23.Напишите запрос, который выводил бы список покупателей в нисходящем порядке. Вывод поля рейтинга (rating) должен сопровождаться именем заказчика и его номером.
24.Напишите запрос, который бы выводил общие рейтинги на каждый день и помещал результаты в нисходящем порядке.
25.Напишите запрос формирующий список номеров заказов, сопровождающихся именем покупателя, который делал эти заказы.
26.Напишите запрос, который бы выдавал имена продавца и покупателя для каждого заказа после номера заказа.
27.Напишите запрос, который бы выводил всех покупателей, обслуживаемых продавцом с комиссионными выше
12%. Выведите имя покупателя, имя продавца, и ставку комиссионных продавца.
28.Напишите запрос, который вычислил бы сумму комиссионных продавца для каждого заказа покупателя с рейтингом выше 100.
Запросы SQL (по книге Мартина Грабера)
- Дисциплина: Базы данных
- Код работы: КО-284
- Работу выложил: Администратор
-
350.00 р.
Теги: Microsoft Access, База данных
Не подошла работа?
Узнайте стоимость написания работы по Вашему заданию
(это быстро и бесплатно)