Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лабораторная работа 4. Разработка запросов на языке SQL. Часть 1




Варианты заданий

Содержание отчета

Выполнение лабораторной работы

По аналогии с примерами, приведенными в п. 3 реализовать запросы а).. е), указанные в варианте задания.

Содержание отчета:

— скриншоты окон конструктора запросов;

— скриншоты окон с наборами данных, возвращаемыми запросами.

Варианты заданий приведены в ПРИЛОЖЕНИИ.


1. Оператор select

Простейший вариант оператора был приведен в лабораторной работе 2, в более общем случае синтаксис оператора выглядит следующим образом:

select <список выбора>

from <список таблиц>

where <условие>

go

 

Здесь <список выбора> — список столбцов таблиц или выражений с их участием, значения которых должен вернуть оператор, если <список выбора> содержит более одного элемента, они разделяются запятыми, для выборки всех столбцов указывается *; <список таблиц> содержит перечень таблиц, из которых осуществляется выборка, если в списке более одного элемента, они разделяются запятыми, в разделе from могут использоваться также представления и производные таблицы (см. следующие работы); <условие> аналогично условиям, рассмотренным в операторах delete и update, в условиях могут использоваться подзапросы, кванторы и др. возможности (см. следующие работы).

Оператор select реализует в языке SQL все операторы, предусмотренные реляционной алгеброй (РА). Пусть в БД существуют таблицы, созданные и модифицированные так, как описано в лабораторной работе 2, а именно таблица Группа:

Id Номер Факультет
  3002К  
     
  4002КФс  
     

таблица Студент:

Ном_Зач ФИО Группа
  Лисичкин  
  Сыроежкин  
  Груздев  
  Сморчков  
  Волнушкин  
  Строчков  
  Краснов  
  Белов  

таблица Дисциплина:

Id Наименование
  АСУ
  БД
  ФиЛП

таблица Успеваемость:

Id Ном_Зач Оценка Id_Дисциплины
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       

 

тогда операцию выборки списка групп 4-го факультета, осуществит оператор:

select * from Группа where Факультет = 4

go

 

проекцию, возвращающую список всех групп, выполнит оператор:

select Номер from Группа

go

 

соединение, формирующее список групп и студентов, реализует оператор:

select * from Группа, Студент

where Id = Группа

go

 

оператор:

select Номер 'Группа', ФИО, Наименование 'Дисциплина', Оценка

from Группа, Студент, Дисциплина, Успеваемость

where Группа.Id = Группа and

Студент.Ном_Зач = Успеваемость.Ном_Зач and

Дисциплина.Id = Id_Дисциплины and

Номер = '4001'

go

 

использует комбинацию соединения выборки и проекции, что бы вернуть список оценок студентов группы 4001. Как следует из примера, в случае, если столбцы различных таблиц имеют одинаковые имена, для уточнения в качестве префикса может использоваться имя таблицы, отделяемое от имени столбца точкой. Для удобства восприятия пользователем набора данных, возвращаемого запросом, столбцам можно присваивать псевдонимы, используя директиву as или просто разделяя пробелом имя столбца (выражение) и псевдоним. Если заданы, псевдонимы подставляются в заголовок набора данных, возвращаемого запросом.

По умолчанию для списка выбора действует директива all, поэтому запрос «По каким дисциплинам были выставлены оценки?»:

select Наименование 'Есть оценки'

from Дисциплина, Успеваемость

where Дисциплина.Id = Id_Дисциплины

go

 

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

select distinct Наименование 'Есть оценки'

from Дисциплина, Успеваемость

where Дисциплина.Id = Id_Дисциплины

go

 

исключит повторяющиеся значения.

Роль, аналогичную операции переименования атрибутов РА, играют псевдонимы таблиц, указываемые в разделе from и отделяемые от имени таблицы директивой as или пробелом. Псевдонимы необходимы, например, при выполнении соединения таблицы с собой. Запрос «Кто из студентов получил одинаковые оценки по БД и по ФиЛП?», может быть реализован в SQL с использованием псевдонимов:

select ФИО

from Студент, Дисциплина Д1, Дисциплина Д2,

Успеваемость У1, Успеваемость У2

where Д1.Наименование = 'БД' and Д2.Наименование = 'ФиЛП' and

Д1.Id = У1.Id_Дисциплины and Д2.Id = У2.Id_Дисциплины and

У1.Ном_Зач = Студент.Ном_Зач and

У2.Ном_Зач = Студент.Ном_Зач

go

 

В примере две записи из таблицы Дисциплина рассматриваются под псевдонимами Д1 и Д2, а две связанные с ними записи таблицы Успеваемость под псевдонимами У1 и У2, после чего выполняется их соединение.

Следует учитывать, что при использовании двух псевдонимов для одной таблицы, каждая запись может быть «выбрана» вначале под первым, а затем под вторым. Данную ситуацию иллюстрирует запрос «Какие студенты получили одинаковые оценки по БД?», если в выражении С1.Ном_Зач > С2.Ном_Зач заменить > на < >, каждая пара студентов войдет в результирующий набор данных дважды:

select С1.ФИО, С2.ФИО, У1.Оценка

from Студент С1, Студент С2, Дисциплина,

Успеваемость У1, Успеваемость У2

where Наименование = 'БД' and

Дисциплина.Id = У1.Id_Дисциплины and

Дисциплина.Id = У2.Id_Дисциплины and

У1.Оценка = У2.Оценка and

У1.Ном_Зач = С1.Ном_Зач and У2.Ном_Зач = С2.Ном_Зач and

С1.Ном_Зач > С2.Ном_Зач

go

 

Для удобства восприятия пользователем набора данных, возвращаемого запросом, он может быть отсортирован. Порядок сортировки задается директивой order by<столбец 1> [ { asc | desc } ] [, <столбец 2> [ { asc | desc } ] [, … ] ], здесь asc задает порядок сортировки по возрастанию (действует по умолчанию), desc — по убыванию. Пример использования сортировки показывает запрос:

select С1.ФИО, С2.ФИО, У1.Оценка

from Студент С1, Студент С2, Дисциплина,

Успеваемость У1, Успеваемость У2

where Наименование = 'БД' and

Дисциплина.Id = У1.Id_Дисциплины and

Дисциплина.Id = У2.Id_Дисциплины and

У1.Оценка = У2.Оценка and

У1.Ном_Зач = С1.Ном_Зач and У2.Ном_Зач = С2.Ном_Зач and

С1.Ном_Зач > С2.Ном_Зач

order by У1.Оценка desc, С1.ФИО, С2.ФИО

go




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 573; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.024 сек.