
Информатика / 2 курс / $2012_ГЕОИНФОРМАТИКА_М1 / М1_МЕТОДИЧЕСКИЕ_МАТЕРИАЛЫ / Мет_M1_06_Сборник_упражнений_SQL
.pdfиздательства (поле Code_Publish) находится в диапазоне от 10 до 25 и количество страниц (поле Pages) в книге больше 120.
26. Вывести список издательств (поле Publish) из таблицы Publishing_house, в которых выпущены книги, названия которых (поле Title_book) начинаются со слова ‘Труды’ и город издания (поле City) – ‘Новосибирск’.
Многотабличные запросы (выборка из двух таблиц, выборка из трех таблиц с использованием JOIN)
27.Вывести список названий компаний-поставщиков (поле Name_company) и названия книг (поле Title_book), которые они поставили
впериод с 01.01.2002 по 31.12.2003 (условие по полю Date_order).
28.Вывести список авторов (поле Name_author), книги которых были выпущены в издательстве ‘Мир’ (условие по полю Publish).
29.Вывести список поставщиков (поле Name_company), которые поставляют книги издательства ‘Питер’ (условие по полю Publish).
30.Вывести список авторов (поле Name_author) и названия книг (поле Title_book), которые были поставлены поставщиком ‘ОАО Книготорг’
(условие по полю Name_company).
Вычисления
31.Вывести суммарную стоимость партии одноименных книг (использовать поля Amount и Cost) и название книги (поле Title_book) в каждой поставке.
32.Вывести стоимость одной печатной страницы каждой книги (использовать поля Cost и Pages) и названия соответствующих книг (поле
Title_book).
33.Вывести количество лет с момента рождения авторов (использовать поле Birthday) и имена соответствующих авторов (поле
Name_author).
Вычисление итоговых значений с использованием агрегатных функций
34.Вывести общую сумму поставок книг (использовать поле Cost), выполненных ‘ЗАО Оптторг’ (условие по полю Name_company).
35.Вывести общее количество всех поставок (использовать любое поле из таблицы Purchases), выполненных в период с 01.01.2003 по
01.02.2003 (условие по полю Date_order).
36.Вывести среднюю стоимость (использовать поле Cost) и среднее количество экземпляров книг (использовать поле Amount) в одной поставке, где автором книги является ‘Акунин’ (условие по полю
Name_author).
31
PDF created with pdfFactory Pro trial version www.pdffactory.com
37.Вывести все сведения о поставке (все поля таблицы Purchases), а также название книги (поле Title_book) с минимальной общей стоимостью (использовать поля Cost и Amount).
38.Вывести все сведения о поставке (все поля таблицы Purchases), а также название книги (поле Title_book) с максимальной общей стоимостью (использовать поля Cost и Amount).
Изменение наименований полей
39.Вывести название книги (поле Title_book), суммарную стоимость партии одноименных книг (использовать поля Amount и Cost), поместив в результат в поле с названием Itogo, в поставках за период с 01.01.2002 по
01.06.2002 (условие по полю Date_order).
40.Вывести стоимость одной печатной страницы каждой книги (использовать поля Cost и Pages), поместив результат в поле с названием One_page, и названия соответствующих книг (поле Title_book).
41.Вывести общую сумму поставок книг (использовать поле Cost) и поместить результат в поле с названием Sum_cost, выполненных ‘ОАО Луч’ (условие по полю Name_company).
Использование переменных в условии
42.Вывести список сделок (все поля из таблицы Purchases) за последний месяц (условие с использованием поля Date_order).
43.Вывести список авторов (поле Name_author), возраст которых меньше заданного пользователем (условие с использованием поля
Birthday).
44.Вывести список книг (поле Title_book), которых закуплено меньше, чем указано в запросе пользователя (условие с использованием поля
Amount).
Использование переменных вместо названий таблиц
45.Вывести список названий компаний-поставщиков (поле Name_company) и названия книг (поле Title_book), которые они поставили.
46.Вывести список авторов (поле Name_author), книги которых были выпущены в издательствах ‘Мир’, ‘Питер Софт’, ‘Наука’ (условие по полю
Publish).
47.Вывести список издательств (поле Name_company), книги которых были поставлены по цене 150 руб. (поле Cost).
Выбор результата в курсор
48. Вывести список названий книг (поле Title_book) и количества страниц (поле Pages) в каждой книге и поместить результат в курсор с названием Temp1.
32
PDF created with pdfFactory Pro trial version www.pdffactory.com
49.Вывести список названий компаний-поставщиков (поле Name_company) и поместить результат в курсор с названием Temp2.
50.Вывести список авторов (поле Name_author) и поместить результат
вкурсор с названием Temp3.
Использование функций совместно с подзапросом
51.Вывести список книг (поле Title_book), у которых количество страниц (поле Pages) больше среднего количества страниц всех книг в таблице.
52.Вывести список авторов (поле Name_author), возраст которых меньше среднего возраста всех авторов в таблице (условие по полю
Birthday).
53.Вывести список книг (поле Title_book), у которых количество страниц (поле Pages) равно минимальному количеству страниц книг, представленных в таблице.
Использование квантора существования в запросах
54.Вывести список издательств (поле Publish), книги которых были приобретены оптом (‘опт’ из поля Type_Purchase).
55.Вывести список авторов (поле Name_author), книг которых нет в таблице Books.
56.Вывести список книг (поле Title_book), которые были поставлены поставщиком ‘ЗАО Квантор’ (условие по полю Name_company).
Оператор обработки данных Update
57.Изменить в таблице Books содержимое поля Pages на 300, если код автора (поле Code_author) =56 и название книги (поле Title_book) =’Мемуары’.
58.Изменить в таблице Deliveries содержимое поля Address на ‘нет сведений’, если значение поля является пустым.
59.Увеличить в таблице Purchases цену (поле Cost) на 20 процентов, если заказы были оформлены в течение последнего месяца (условие по полю Date_order).
Оператор обработки данных Insert
60.Добавить в таблицу Purchases новую запись, причем так, чтобы код покупки (поле Code_purchase) был автоматически увеличен на единицу, а в тип закупки (поле Type_purchase) внести значение ‘опт’.
61.Добавить в таблицу Books новую запись, причем вместо ключевого поля поставить код (поле Code_book), автоматически увеличенный на единицу от максимального кода в таблице, вместо названия книги (поле Title_book) написать ‘Наука. Техника. Инновации’.
33
PDF created with pdfFactory Pro trial version www.pdffactory.com

62. Добавить в таблицу Publish_house новую запись, причем вместо ключевого поля поставить код (поле Code_publish), автоматически увеличенный на единицу от максимального кода в таблице, вместо названия города – ‘Москва’ (поле City), вместо издательства – ‘Наука’
(поле Publish).
Оператор обработки данных Delete
63.Удалить из таблицы Purchases все записи, у которых количество книг в заказе (поле Amount) = 0.
64.Удалить из таблицы Authors все записи, у которых нет имени автора в поле Name_Author.
65.Удалить из таблицы Deliveries все записи, у которых не указан ИНН (поле INN пустое).
2.3. База данных «Успеваемость студентов»
Students |
|
Progress |
|
Subjects |
Code_stud |
|
Code_stud |
|
Code_subject |
Surname |
|
Code_subject |
|
Name_subject |
Name |
|
Code_lector |
|
Count_hours |
Lastname |
|
Date_exam |
|
|
Birthday |
|
Estimate |
|
|
Phone |
|
Code_progress |
|
|
Code_group |
|
|
|
|
Groups
Code_group
Name_group
Num_course
Name_speciality
Lectors
Code_lector
Name_lector
Science
Post
Date_
Рис. 22. Фрагмент базы данных «Успеваемость студентов»
Связь между таблицами осуществляется с помощью следующих пар полей с типом связи «один-ко-многим» соответственно:
1.Groups.Code_group - Students.Code_group;
2.Students.Code_stud - Progress.Code_stud;
3.Subjects.Code_subject - Progress.Code_subject;
4.Lectors.Code_lector - Progress.Code_lector.
34
PDF created with pdfFactory Pro trial version www.pdffactory.com
Таблица 12
Список групп (название таблицы Groups)
Название поля |
Тип поля |
Описание поля |
|
Code_group |
Integer |
Код группы |
|
Name_group |
Character |
Название группы |
|
Num_course |
Integer |
Номер курса |
|
Name_speciality |
Character |
Название специальности |
|
|
|
Таблица 13 |
|
Справочник студентов (название таблицы Students) |
|||
|
|
|
|
Название поля |
Тип поля |
Описание поля |
|
Code_stud |
Character |
Номер зачетной книжки |
|
Surname |
Character |
Фамилия студента |
|
Name |
Character |
Имя студента |
|
Lastname |
Character |
Отчество студента |
|
Code_group |
Integer |
Код группы |
|
Birthday |
Date |
Дата рождения студента |
|
Phone |
Numeric |
Контактный телефон студента |
|
Таблица 14
Справочник изучаемых дисциплин (название таблицы Subjects)
Название поля |
Тип поля |
Описание поля |
|
Code_subject |
Integer |
Код дисциплины |
|
Name_subject |
Character |
Название дисциплины |
|
Count_hours |
Integer |
Количество часов в курсе |
|
|
|
Таблица 15 |
|
Таблица успеваемости (название таблицы Progress) |
|||
|
|
|
|
Название поля |
Тип поля |
Описание поля |
|
Code_stud |
Character |
Номер зачетной книжки |
|
Code_subject |
Integer |
Код дисциплины |
|
Code_lector |
Integer |
Код преподавателя |
|
Date_exam |
Date |
Дата сдачи экзамена |
|
Estimate |
Integer |
Оценка |
|
Code_progress |
Integer |
Ключевое поле |
|
Таблица 16
Справочник преподавателей (название таблицы Lectors)
Название поля |
Тип поля |
Описание поля |
Code_lector |
Integer |
Код преподавателя |
Name_lector |
Character |
Фамилия, имя, отчество преподавателя |
Science |
Character |
Ученая степень |
Post |
Character |
Должность |
Date_ |
Date |
Дата приема на работу |
35
PDF created with pdfFactory Pro trial version www.pdffactory.com
2.4. Упражнения с использованием операторов обработки данных для БД «Успеваемость студентов»
Сортировка
66.Вывести все сведения о студентах из таблицы Students и отсортировать результат по коду студента (поле Code_stud).
67.Вывести список фамилий, имен, отчеств преподавателей (поле Name_lector), их должности (поле Post) и ученые степени (поле Science) из таблицы Lectors, отсортировать результат по названиям должностей по возрастанию (использовать поле Post) и по ученым степеням по убыванию (использовать поле Science).
68.Выбрать из таблицы Groups названия групп и номера курсов (поля Name_group, Name_course) и отсортировать результат по полю
Name_course по убыванию.
Изменение порядка следования полей
69.Вывести все сведения о студентах из таблицы Students таким образом, чтобы в результате порядок столбцов был следующим: Code_group, Name, Surname, Lastname, Phone, Birthday.
70.Выбрать все поля из таблицы Subjects таким образом, чтобы в результате порядок столбцов был следующим: Name_subject, Code_subject.
Выбор некоторых полей из двух таблиц
71.Вывести список фамилий (поле Surname), имен (поле Name), отчеств (поле Lastname) студентов из таблицы Students и названий групп (поле Name_group) из таблицы Groups, в которых они обучаются.
72.Вывести даты экзаменов (поле Date_exam) из таблицы Progress и фамилии, имена, отчества преподавателей (поле Name_lector) из таблицы Lectors, принимавших в эти даты экзамены.
73.Вывести даты экзаменов (поле Date_exam) из таблицы Progress и названия дисциплин (поле Name_subject) из таблицы Subjects, по которым сдавали экзамены в указанные даты.
Условие неточного совпадения
74.Вывести список преподавателей (поле Name_lector) из таблицы Lectors с ученой степенью кандидат каких-либо наук, т.е. у которых значение поля Science начинается с ‘к’.
75.Вывести список студентов (поля Surname, Name, Lastname) из таблицы Students и названия групп (поле Name_group) из таблицы Groups, значения которых начинаются с сочетания ‘АС’.
36
PDF created with pdfFactory Pro trial version www.pdffactory.com
76. Вывести список дисциплин (поле Name_subject) из таблицы Subjects, значение которых начинается с ‘математ’.
Точное несовпадение значений одного из полей
77.Вывести список преподавателей (поле Name_lector) из таблицы Lectors и их должности (поле Post), которые не являются докторами технических наук, т.е. значение поля Science не равно ‘д.т.н.’.
78.Вывести список групп (поле Name_group) из таблицы Groups, которые не относятся к специальности ‘электротехника’ (условие по полю
Name_speciality).
79.Вывести все сведения о всех предметах из таблицы Subjects, кроме предмета ‘высшая математика’ (условие по полю Name_subject).
Выбор записей по диапазону значений (Between)
80.Вывести даты экзаменов (поле Date_exam) из таблицы Progress и список дисциплин (поле Name_subject) из таблицы Subjects, по которым сдавали экзамены в период с 01.01.2003 по 01.02.2003 (условие по полю
Date_exam).
81.Вывести список преподавателей (поле Name_lector) из таблицы Lectors и их должности (поле Post), которые были устроены на работу в период с 12.03.2000 по 15.06.2000 (условие по полю Date_).
82.Вывести список студентов (поля Surname, Name, Lastname) и их телефоны (поле Phone) из таблицы Students, если значения телефонов находятся в диапазоне от 220000 до 226666 (условие по полю Phone).
83.Вывести список дисциплин (поле Name_subject) из таблицы Subjects, у которых название начинается на одну из букв диапазона ‘В’–‘Г’
(условие по полю Name_subject).
Выбор записей по диапазону значений (In)
84.Вывести список групп и названия специальностей (поля
Name_group и Name_speciality из таблицы Groups), в которых учатся студенты со следующими номерами зачетной книжки ‘АС-12-02’, ‘ПИ-14- 03’, ‘АС-21-03’, ‘БИ-12-02’ (условие по полю Code_stud из таблицы Students).
85.Вывести список преподавателей (поле Name_lector) из таблицы Lectors и их должности (поле Post), у которых есть одна из следующих ученых степеней: ‘к.т.н.’, ‘к.э.н.’, ‘д.т.н.’ (условие по полю Science).
86.Вывести список студентов (поля Surname, Name, Lastname) из таблицы Students, которые сдавали экзамены по дисциплинам со следующими кодами 5, 8, 12, 25 (условие по полю Code_subject).
37
PDF created with pdfFactory Pro trial version www.pdffactory.com
Выбор записей с использованием Like
87.Вывести список дисциплин (поле Name_subject) из таблицы Subjects, которые начинаются на букву ‘М’.
88.Вывести список студентов (поля Surname, Name, Lastname) и даты рождения (поле Birthday) из таблицы Students, которые содержат в фамилии сочетание букв ‘нова’ (условие по полю Surname).
89.Выбрать список групп (поле Name_group) из таблицы Groups, у которых значение оканчивается на ‘0’ (ноль).
Выбор записей по нескольким условиям
90.Вывести всех студентов (поля Surname, Name, Code_group) из таблицы Students, которые сдавали экзамен по дисциплине (поле Name_subject из таблицы Subjects) ‘математический анализ’.
91.Вывести список преподавателей (поле Name_lector) из таблицы Lectors, которые принимали экзамены по дисциплинам с кодами (условие по полю Code_subject из таблицы Progress) 5 – 12 и в период с 01.01.2003 по 01.02.2003 (условие по полю Date_exam из таблицы Progress).
92.Вывести список групп (поле Name_group) и номера курсов (поле Num_course) из таблицы Groups, в которых учатся студенты с датами рождения с 01.01.1976 по 01.01.1978 (условие по полю Birthday из таблицы Students) и кодами из диапазона 10 – 150 (условие по полю Code_stud из таблицы Students).
Многотабличные запросы (выборка из двух таблиц, выборка из трех таблиц с использованием JOIN)
93.Вывести список названий дисциплин (поле Name_subject из таблицы Subjects) и имен преподавателей (поле Name_lector из таблицы Lectors), которые принимали по этим дисциплинам экзамены.
94.Вывести список студентов (поля Surname, Name из таблицы Students) и номер курса (поле Num_course из таблицы Groups), учащихся в группе ‘Ас-31’ (условие по полю Name_group).
95.Вывести список имен преподавателей (поле Name_lector из таблицы Lectors), которые принимали экзамены у студентов с кодами групп 10, 12, 15 (условие по полю Code_group из таблицы Students).
96.Вывести список названий дисциплин (поле Name_subject из таблицы Subjects) и имен преподавателей (поле Name_lector из таблицы Lectors), которые принимали по этим дисциплинам экзамены в период с
15.01.2003 по 16.02.2003 (условие по полю Date_exam из таблицы Progress).
38
PDF created with pdfFactory Pro trial version www.pdffactory.com
Вычисления
97.Вывести список всех преподавателей (Name_lector), их ученые степени (поле Science) и срок их работы в годах (использовать поле Date_ из таблицы Lectors).
98.Вывести список всех студентов (поля Surname, Name, Lastname) и их возраст в годах (использовать поле Birthday из таблицы Students).
99.Вывести список всех студентов (поля Surname, Name, Lastname из таблицы Students) и номер курса, на котором они занимаются, а также количество лет оставшейся учебы (использовать поле Num_course из таблицы Groups).
Вычисление итоговых значений с использованием агрегатных функций
100.Вывести список всех групп (поле Name_group из таблицы Groups)
иколичество студентов в каждой группе (по любому полю из таблицы
Students).
101.Вывести средний балл (использовать поле Estimate из таблицы Progress) по результатам экзаменов каждого студента и имена студентов (поля Surname, Name из таблицы Students) за период сдачи экзаменов с
05.01.2003 по 25.01.2003 (условие по полю Date_exam из таблицы Progress).
102.Вывести фамилии и имена студентов (поля Surname, Name из таблицы Students) с максимальным средним баллом за весь период обучения (условие по полю Estimate из таблицы Progress).
103.Вывести все сведения о преподавателях (все поля таблицы Lectors) с максимальным общим стажем работы (использовать поле Date_).
Изменение наименований полей
104.Вывести список групп (поле Name_group из таблицы Groups) и количество студентов в каждой группе (по любому полю из таблицы Students), поместив результат в новое поле Count_Students.
105.Вывести средний балл (использовать поле Estimate из таблицы Progress) по результатам экзаменов каждого студента, поместив результат
вполе Avg_estimate, и имена студентов (поля Surname, Name из таблицы Students) за период сдачи экзаменов 05.01.2003 по 25.01.2003 (условие по полю Date_exam из таблицы Progress).
106.Вывести список преподавателей (Name_lector), их ученые степени (поле Science) и срок их работы в годах (использовать поле Date_ из таблицы Lectors), поместив резльтат в поле Old_years.
Использование переменных в условии
107. Вывести список студентов (поля Surname, Name, Lastname) и их телефоны (поле Phone) из таблицы Students, если значения телефонов
39
PDF created with pdfFactory Pro trial version www.pdffactory.com
находятся в диапазоне, хранящемся в переменных Phone_begin и Phone_end.
Например, пусть Phone_begin = 125478, а Phone_end = 352456.
108.Вывести все сведения о студентах и их даты рождения (поле Birthday) из таблицы Students, значения которых находятся в диапазоне,
хранящемся в переменных Birthday_begin и Birthday_end.
Например, пусть Birthday_begin = 12.03.1978, а Birthday_end = 12.03.1980.
109.Вывести список студентов (поля Surname, Name, Lastname) и названия их групп (поле Name_group) для значений кодов групп (поле Code_group), находящихся в диапазоне, хранящемся в переменных
Group_begin и Group_end.
Например, пусть Group_begin = 12, а Group_end = 35.
Использование переменных вместо названий таблиц
110.Вывести коды студентов (поле Code_stud) и имена (поля Surname, Name), названия и коды групп (поля Name_group, Code_group из таблицы Groups), причем таблица Students будет использоваться с именем ‘A’, а таблица Groups будет использоваться с именем ‘B’.
111.Вывести имена студентов (поля Surname, Name), названия и коды предметов (поля Name_subject, Code_subject из таблицы Subjects), которые сдавали студенты, а также оценки за предметы (поле Estimate), причем таблица Students будет использоваться с именем ‘A’, таблица Progress будет использоваться с именем ‘B’, а таблица Subjects будет использоваться с именем ‘C’.
112.Вывести имена студентов (поля Surname, Name), названия и коды преподавателей (поля Name_lector, Code_lector из таблицы Lectors),
которым сдавали студенты экзамены, а также оценки за предметы (поле Estimate), причем таблица Students будет использоваться с именем ‘A’, таблица Progress будет использоваться с именем ‘B’, а таблица Lectors будет использоваться с именем ‘C’.
Выбор результата в курсор
113.Вывести все сведения о сданных экзаменах (все поля из таблицы Progress) для студента с фамилией ‘Васьков’ и именем ‘Павел’ (условия по полям Surname, Name из таблицы Students) и поместить результат в курсор
сназванием Temp1.
114.Вывести список групп и специальности (поля Name_group, Name_speciality из таблицы Groups), у которых номер курса = 2 (условие по полю Num_course), поместить результат в курсор с названием Temp2.
115.Вывести список всех изучаемых дисциплин (поле Name_subject из таблицы Subjects) и поместить результат в курсор с названием Temp3.
40
PDF created with pdfFactory Pro trial version www.pdffactory.com