Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
159
Добавлен:
28.04.2017
Размер:
357.59 Кб
Скачать

издательства (поле 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