Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум.doc
Скачиваний:
104
Добавлен:
28.06.2014
Размер:
2.05 Mб
Скачать

11) Установка в качестве значения поля fio ваших фамилии, имени и отчества вместо фио учащегося с минимальным учетным номером.

Это делается за 3 шага:

 Определение минимального учетного номера учащегося.

В верхней области окна необходимо ввести:

select min (nomer) from poss [F5]

Результатом этого запроса в нижней части окна будет число, равное минимальному номеру. Это число необходимо использовать на втором шаге.

 Изменение значения поля fio в записи с найденным номером.

В верхней области окна необходимо ввести:

update poss set fio='<фамилия> <имя> <отчество>' where nomer=<минимальный номер> [F5]

Рис. 15

 Для того, чтобы убедиться в том, что в поле fio появилось новое значение, нужно выполнить следующий запрос: select fio from poss where nomer=<мин. номер> [F5]

12) Удаление записи из таблицы БД по заданным фамилии, имени и отчеству, например:

удалить из БД данные о Журавлеве Аверьяне Алексеевиче. Это делается за три шага:

 Прежде чем удалить запись с этими данными необходимо сделать запрос, указав в качестве условия выборки ФИО Журавлев Аверьян Алексеевич. В верхней области окна надо ввести:

select * from poss where fio = 'ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ' [F5]

В нижней области окна в результате появится запись, включающая значения по всем полям структуры таблицы poss:

534305 ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ 000073 М 0 001001 05 0129000 08 90 03 95

 Для удаления этой записи в верхней области окна необходимо ввести:

delete from poss where fio = 'ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ'

[F5]

 Чтобы убедиться, что запись удалена, нужно повторить запрос первого шага.

13) Добавление новой записи в таблицу БД, например:

добавить только что удаленную запись. Это делается за два шага:

 В верхней области окна надо ввести:

insert poss values (534305, 'ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ', '000073', 'M', '0', '001001', '05', 0129000, '08', '90', '03', '95') [F5]

 Для того, чтобы убедиться в том, что новая запись добавлена, нужно повторить запрос из предыдущего упражнения, т.е. ввести:

select * from poss where fio = 'ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ' [F5]

Варианты заданий на выполнение лабораторной работы № 2 приведены в приложении I.

Лабораторная работа № 3

Цель:

  1. Приобрести практические навыки использования операции соединения нескольких таблиц БД при выполнении сложных списковых запросов.

Справочный материал:

  1. Конспект курса.

Упражнения:

Перед выполнением лабораторной работы необходимо войти в сеть, затем в систему MS SQL Server и SQL Query Analyser, а также установить связь пользователя с базой данных (аналогично описанному сценарию в лабораторной работе № 1).

1) Выполнение запроса по двум таблицам БД с использованием операции соединения, например:

выдать фамилии и названия учебных заведений по выпускникам России 1996 года, отсортировав данные по учебным заведениям.

Для выполнения этого запроса необходимо использовать три условия, указанных в описании операции Join (соединения таблиц) в конспекте курса. Так как в задании по запросу требуется выдать названия учебных заведений, а в таблице poss такого поля нет (есть только код учебного заведения), то, кроме таблицы poss, необходимо использовать таблицу vuz, где это поле есть.

Поэтому в списке выборки имя второго поля должно быть составным, т.е. с именем таблицы vuz (составное имя поля - это <имя табл.>.<имя поля>), в предложении from должны быть записаны два имени таблиц (poss и vuz), а в предложении where должно быть указано условие соединения этих двух таблиц по полю код учебного заведения.

Таким образом, в верхней области окна необходимо ввести:

select fio, vuz.uch_zavedenie

from poss, vuz

where gok='96'

and vuz_k=vuz.cod

order by 2 [F5]

или

select fio, vuz.uch_zavedenie

from poss join vuz on vuz_k=vuz.cod

where gok='96'

order by 2 [F5]

Отчет будет представлен в нижней области окна (см. рис. 16).

Рис. 16

2) Выполнение запроса по трем таблицам БД с использованием операции соединения, например:

выдать фамилии, даты рождения, названия учебных заведений, пол, специальности, категории обучения, месяцы окончания и годы окончания по учащимся, принятым на учебу в 1991 году; данные отсортировать по учебным заведениям и специальностям.

В этом запросе требуется выдать значения двух полей, не принадлежащих структуре таблицы poss, а именно: названия учебных заведений и названия категорий обучения. Поэтому в списке выборки для этих полей должны быть указаны составные имена (т.е. с именем таблицы), в предложении from должны быть записаны три имени таблиц, а в предложении where - два условия соединения таблиц (таблицы poss с таблицей vuz по полю код учебного заведения; таблицы poss с таблицей kat_obuch по полю код категории обучения).

Таким образом, в верхней области окна необходимо ввести:

select fio, data_rogden, vuz.uch_zavedenie,

pol, spec, kat_obuch. kat_obucheniya, mo, gok

from poss, vuz, kat_obuch

where gp='91'

and vuz_k=vuz.cod

and kat_obuch_k=kat_obuch.cod

order by 3,5 [F5]

или

select fio, data_rogden, vuz.uch_zavedenie,

pol, spec, kat_obuch. kat_obucheniya, mo, gok

from poss join vuz on vuz_k=vuz.cod

join kat_obuch on kat_obuch_k=kat_obuch.cod

where gp='91'

order by 3,5

Отчет будет представлен в нижней области окна (см. рис. 17).

3) Выполнение запроса по четырем таблицам БД со сложным условием, например:

выдать фамилии, даты рождения, названия учебных заведений, пол, семейные положения, специальности, категории обучения, месяцы приема, годы приема, месяцы окончания и годы окончания по выпускникам России 1993 и 1995 г.г. по специальностям от 0701 до 0705; данные отсортировать по годам окончания, специальностям и учебным заведениям.

В этом запросе требуется выдать значения трех полей, не принадлежащих структуре таблицы poss, а именно: названия учебных заведений, названия семейных положений и названия категорий обучения. Поэтому в списке выборки для этих полей должны быть указаны составные

Рис. 17

имена (т.е. с именем таблицы), в предложении from должны быть записаны четыре имени таблиц, а в предложении where - три условия соединения таблиц (таблицы poss с таблицей vuz по полю код учебного заведения; таблицы poss с таблицей family по полю код семейного положения; таблицы poss с таблицей kat_obuch по полю код категории обучения).

Таким образом, в верхней области окна необходимо ввести:

select fio, data_rogden, vuz. uch_zavedenie, pol,

family.family_status, spec, kat_obuch. kat_obucheniya,

mp, gp, mo, gok

from poss, vuz, family, kat_obuch

where (gok='93' or gok='95')

and spec between '000701' and '000705'

and vuz_k=vuz.cod

and sem_polog_k=family.cod

and kat_obuch_k=kat_obuch.cod

order by 11, 6, 3 [F5]

или

select fio, data_rogden, vuz. uch_zavedenie, pol,

family.family_status, spec, kat_obuch. kat_obucheniya,

mp, gp, mo, gok

from poss join vuz on vuz_k=vuz.cod

join family on sem_polog_k=family.cod

join kat_obuch on kat_obuch_k=kat_obuch.cod

where (gok='93' or gok='95')

and spec between '000701' and '000705'

order by 11, 6, 3 [F5]

Отчет будет представлен в нижней области окна (см. рис. 18).

Рис. 18

Варианты заданий на выполнение лабораторной работы № 3 приведены в приложении II.