Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db / Лекции / 6 семестр / Языки запросов.docx
Скачиваний:
123
Добавлен:
23.03.2015
Размер:
280.32 Кб
Скачать
      1. Итоги лекции

Усвоив материал этого урока, студенты научились:

  • формулировать условия с использованием операторов сравнений;

  • использовать логические операторы;

  • строить условия с использованием выражений над столбцами;

  • использовать оператор IN для проверки принадлежности множеству;

  • использовать оператор BETWEEN для проверки принадлежности диапазону значений;

  • использовать оператор LIKE для проверки на соответствие шаблону;

  • использовать оператор IS NULL для проверки на неопределенное значение.

    1. Многотабличные запросы (0-0)

      1. Аннотация к лекции

При проектировании стремятся создавать таблицы, в каждой из которых содержалась бы информация об одном и только одном типе сущности. Это облегчает модификацию базы данных и поддержку ее целостности. Именно так и поступили создатели учебной базы данных. Однако сущности могут быть взаимосвязанными. Заказанные позиции связаны с заказами по принципу вхождения в их состав, клиенты осуществляют заказы, сотрудники принимают заказы и т.д. Связь между таблицами устанавливается за счет размещения специального столбца первичногоключаодной таблицы, которая называетсяродительской, в другой таблице, которая называетсядочерней. Столбец (или совокупность столбцов) дочерней таблицы, определенный для связи с родительской таблицей, называетсявнешним ключом. Так, например, таблица «Заказы» содержит поле «КодСотрудника», который имеет значение первичного ключа таблицы «Сотрудники». Наличие внешних ключей является основной для инициирования поиска по многим таблицам.

Одна из наиболее важных особенностей предложения SELECT — это способность использования связей между различными таблицами, а также вывода содержащейся в них информации. Операция, которая приводит к соединению из двух таблиц всех пар строк, для которых выполняется заданное условие, называется соединением таблиц. Для того чтобы указать соединяемые таблицы, их следует перечислить через запятую во фразе FROM.

      1. Декартово произведение таблиц

Соединение таблиц - это частный случай операции декартового произведения(или простопроизведения). Декартово произведение двух таблиц – это таблица, состоящая из всех возможных пар строк обеих таблиц. Это определение можно естественным образом расширить на любое количество таблиц.

В SQL декартово произведение выражается указанием имен перемножаемых таблиц во фразе FROM и указанием всех их столбцов во фразе SELECT. Так, произведение таблиц FACULTY и DEPARTMENT выражается следующим образом:

SELECT *

FROM FACULTY, DEPARTMENT;

Так как результирующая таблица содержит много столбцов и они не помещаются по ширине страницы, мы приведем только интересующие нас столбцы произведения этих таблиц.

Запрос.Декартово произведение таблиц.

SELECT

FACULTY.Name,FACULTY.FacPK,

DEPARTMENT.FacFK, DEPARTMENT.Name

FROM FACULTY, DEPARTMENT;

NAME

FACPK

FACFK

NAME

информатика

1

1

базы данных

информатика

1

1

программирование

информатика

1

1

интернет

информатика

1

2

базы данных

информатика

1

2

лингвистика

информатика

1

2

теория языков

кибернетика

2

1

базы данных

кибернетика

2

1

программирование

кибернетика

2

1

интернет

кибернетика

2

2

базы данных

кибернетика

2

2

лингвистика

кибернетика

2

2

теория языков

математика

3

1

базы данных

математика

3

1

программирование

математика

3

1

интернет

математика

3

2

базы данных

математика

3

2

лингвистика

математика

3

2

теория языков

Каждая строка таблицы факультетов оказалась соединенной с каждой строкой таблицы кафедр, в результате получилось 18 строк (3 факультета х 6 кафедр = 18 комбинаций).

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

SELECT*

FROMFACULTY,DEPARTMENT,TEACHER

Если предположить, что в вузе имеется 15 факультетов, 100 кафедр и 1500

преподавателей, то результирующая таблица будет содержать более двух миллионов строк (15 х 100 х 1500 - 2 250 000), и это при таких незначительных размерах исходных таблиц. Будьте внимательными, не используйте декартового произведения, тем более что эта операция не имеет какой-либо вразумительной семантики (она используется в математике как некоторая абстракция, благодаря которой можно легко объяснять другие математические операции над множествами и отношениями), но через декартово произведение можно определить семантику операции соединения.