LAB19 (988808), страница 2
Текст из файла (страница 2)
select * from poss where gok in ('95', '97', '98') [Ctrl]+[Enter].
Отчет будет представлен в нижней части окна.
<окно>
4) Выполнение запроса по одной таблице БД с использованием функции LIKE, например:
выдать сведения по учащимся России с фамилией КУТЕПОВ (А).
В верхней области окна необходимо ввести:
select * from poss where fio like '%КУТЕПОВ%' [Ctrl]+[Enter]
Отчет будет представлен в нижней части окна.
<окно>
5) Выполнение запроса по одной таблице БД с использованием функции NULL, например:
выдать данные по учащимся России, у которых отсутствует учетный номер.
В верхней области окна необходимо ввести:
select * from poss where nomer is null [Ctrl]+[Enter]
Отчет будет представлен в нижней части окна.
Замечание: Функции BETWEEN, IN, LIKE, NULL могут использоваться с операцией NOT.
6) Выполнение запроса по одной таблице БД с использованием сложного условия, например:
выдать данные по учащимся России, принятым на учебу в 87 и 93 годах, за исключением специальности 0101 (математика).
В верхней области окна необходимо ввести:
select * from poss where (gp='87' or gp='93') and not spec='000101' [Ctrl]+[Enter]
Отчет будет представлен в нижней части окна.
<окно>
7) Выполнение запроса по одной таблице БД с сортировкой записей, например:
выдать коды и названия всех учебных заведений Белоруссии, отсортировав записи по возрастанию кодов.
В верхней области окна необходимо ввести:
select cod_vuza, nazvanie_vuza from vuz_gorod where cod_stran='03' order by cod_vuza [Ctrl]+[Enter]
Отчет будет представлен в нижней части окна.
<окно>
Замечание: Во фразе order by вместо имени поля (cod_vuza) можно использовать порядковый номер позиции этого поля в списке выборки (для cod_vuza этот номер равен 1), т.е. можно указать order by 1. Другими словами, запрос будет выглядеть так:
select cod_vuza, nazvanie_vuza from vuz_gorod where cod_stran='03' order by 1
8) Выполнение запроса и выдача количества записей по одной таблице БД с использованием функции COUNT(*),
например:
выдать количество учебных заведений России.
В верхней области окна необходимо ввести:
select count(*) from vuz_gorod where cod_stran='01' [Ctrl]+[Enter]
Отчет будет представлен в нижней части окна.
<окно>
Замечание: Для использования агрегатных функций AVG и SUM необходимо в структуре таблицы иметь поля числового типа, например: количество учащихся. Агрегатные функции count, min, max могут быть применены к полям любого типа.
9) Выполнение запроса по одной таблице БД с группировкой записей,
например:
выдать названия городов и учебных заведений России, сгруппировав записи по городам и учебным заведениям.
В верхней области окна необходимо ввести:
select nazvanie_goroda, nazvanie_vuza from vuz_gorod where cod_stran='01' group by nazvanie_goroda, nazvanie_vuza [Ctrl]+[Enter]
Отчет будет представлен в нижней части окна.
<окно>
10) Выполнение запроса по одной таблице БД с использованием фразы HAVING,
например:
выдать учетные номера учащихся, встречающиеся больше одного раза.
В верхней области окна необходимо ввести:
select nomer from poss group by nomer having count(*)>1 [Ctrl]+[Enter]
Отчет будет представлен в нижней части окна.
Упражнения на использование операторов update, insert и delete.
11) Установка в качестве значения поля fio ваших фамилии, имени и отчества вместо ФИО учащегося с минимальным учетным номером. Это делается за 3 шага:
Определение минимального учетного номера учащегося.
В верхней области окна необходимо ввести:
select min (nomer) from poss [Ctrl]+[Enter]
Результатом этого запроса в нижней части окна будет число, равное минимальному номеру. Это число необходимо использовать на втором шаге.
Изменение значения поля fio в записи с найденным номером.
В верхней области окна необходимо ввести:
update poss set fio='<фамилия> <имя> <отчество>' where nomer=<минимальный номер> [Ctrl]+[Enter]
Для того, чтобы убедиться в том, что в поле fio появилось новое
значение, нужно выполнить следующий запрос:
select fio from poss where nomer=<мин. номер> [Ctrl]+[Enter]
12) Удаление записи из таблицы БД по заданным фамилии, имени и отчеству,
например:
удалить из БД данные о Журавлеве Аверьяне Алексеевиче. Это делается за три шага:
Прежде чем удалить запись с этими данными необходимо сделать
запрос, указав в качестве условия выборки ФИО Журавлев Аверьян
Алексеевич. В верхней области окна надо ввести:
select * from poss where fio = 'ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ'
[Ctrl]+[Enter]
В нижней области окна в результате появится запись, включающая значения по всем полям структуры таблицы poss:
534305 ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ 000073 М 0 001001 05 0129000 08 90 03 95
Для удаления этой записи в верхней области окна необходимо ввести:
delete from poss where fio = 'ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ'
[Ctrl]+[Enter]
Чтобы убедиться, что запись удалена, нужно повторить запрос первого
шага.
13) Добавление новой записи в таблицу БД,
например:
добавить только что удаленную запись. Это делается за два шага:
В верхней области окна надо ввести:
insert poss values (534305, 'ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ',
'000073', 'M', '0', '001001', '05', 0129000, '08', '90', '03', '95') [Ctrl]+[Enter]
Для того, чтобы убедиться в том, что новая запись добавлена, нужно
повторить запрос из предыдущего упражнения, т.е. ввести:
select * from poss where fio = 'ЖУРАВЛЕВ АВЕРЬЯН АЛЕКСЕЕВИЧ'
[Ctrl]+[Enter]
Варианты заданий на выполнение лабораторной работы № 2 приведены в приложении I.
ЛАБОРАТОРНАЯ РАБОТА № 3
Цель:
-
Приобрести практические навыки использования операции соединения нескольких таблиц БД при выполнении сложных списковых запросов.
Справочный материал:
-
Конспект курса.
Используемые технические средства:
1. SQL-сервер, работающий на компьютере Pentium 120/32/2,1 под управлением операционной системы Windows NT.
2. Open-Client, работающий на компьютере PC 486/DX4/100/8/1,08/SVGA1MPCI под управлением операционной системы Windows95.
Упражнения:
Перед выполнением лабораторной работы необходимо войти в сеть, затем в систему SYBASE for WINDOWS95 и диалоговый SQL, а затем установить связь пользователя с базой данных (аналогично описанному сценарию в лабораторной работе № 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 [Ctrl]+[Enter]
Отчет будет представлен в нижней области окна:
<окно>
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 [Ctrl]+[Enter]
Отчет будет представлен в нижней области окна:
<окно>
3) Выполнение запроса по четырем таблицам БД со сложным условием,
например:
выдать фамилии, даты рождения, названия учебных заведений, пол, семейные положения, специальности, категории обучения, месяцы приема, годы приема, месяцы окончания и годы окончания по выпускникам России 1993 и 1995 г.г. по специальностям от 0701 до 0705; данные отсортировать по годам окончания, специальностям и учебным заведениям.
В этом запросе требуется выдать значения трех полей, не принадлежащих структуре таблицы poss, а именно: названия учебных заведений, названия семейных положений и названия категорий обучения. Поэтому в списке выборки для этих полей должны быть указаны составные имена (т.е. с именем таблицы), в предложении 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 [Ctrl]+[Enter]
Отчет будет представлен в нижней области окна.
<окно>
Варианты заданий на выполнение лабораторной работы № 3 приведены в приложении II.
ЛАБОРАТОРНАЯ РАБОТА № 4
Цель:
-
Приобрести практические навыки выполнения запросов с подзапросами.
Справочный материал:
-
Конспект курса.
Используемые технические средства:
1. SQL-сервер, работающий на компьютере Pentium 120/32/2,1 под управлением операционной системы Windows NT.
2. Open-Client, работающий на компьютере PC 486/DX4/100/8/1,08/SVGA1MPCI под управлением операционной системы Windows95.
Упражнения:
Перед выполнением лабораторной работы необходимо войти в сеть, затем в систему SYBASE for WINDOWS95 и диалоговый SQL, а также установить связь пользователя с базой данных (аналогично описанному сценарию в лабораторной работе № 1).
Для использования подзапросов (оператор select) в операторах манипулирования данными (select, update, insert, delete) употребляют три формата предложения where, указанных в конспекте курса (in, any/all, exists). Наиболее часто используется первый формат с функцией in.
1) Выполнение запроса по четырем таблицам БД с использованием подзапроса,
например:
выдать список студентов, обучаемых в городе Москве, принятых на учебу в 1989 г.; схема выдачи отчета должна включать следующие поля: ФИО, дата рождения, специальность, категория обучения, название учебного заведения, месяц окончания, год окончания; данные отсортировать по учебным заведениям и специальностям.
В этом запросе требуется, во-первых: выдать значения двух полей, не принадлежащих структуре таблицы poss, а именно: названия учебных заведений и названия категорий обучений; во-вторых: учебные заведения должны быть московскими, т.е. необходимо дополнительно сделать подзапрос по таблице vuz_gorod, указав в списке выборки код учебного заведения, а в условии выборки - город Москва.
Поэтому в списке выборки запроса для полей учебное заведение и категория обучения должны быть указаны составные имена (т.е. с именем таблицы), в предложении from должны быть записаны три имени таблиц, а в предложении where для поля код учебного заведения должны быть использованы функция IN и подзапрос, а также должны быть указаны два условия соединения таблиц (таблицы poss с таблицей vuz по полю код учебного заведения; таблицы poss с таблицей kat_obuch по полю код категории обучения).