
- •Язык запросов sql
- •Введение в sql(0-0)
- •Аннотация к лекции
- •Краткая история развития sql
- •Возможности языка
- •Основы sql
- •Типы данных sql
- •Литералы
- •Операторы и выражения
- •Именование объектов
- •Комментарии
- •Итоги лекции
- •Простейшие запросы (0-0)
- •Аннотация к лекции
- •О предложении select
- •Основные фразы – select и from
- •Фраза select
- •Синтаксис фразы select
- •Указание выводимых столбцов
- •Исключение повторяющихся строк
- •Использование вычисляемых выражений
- •Переопределение имен результирующих столбцов
- •Включение литералов в результат запроса
- •Вывод результатов в файл
- •Фраза from
- •Синтаксис фразы from
- •Синонимы таблиц
- •Запрос в качестве имени таблицы
- •Итоги лекции
- •Отбор строк по условию (0-0)
- •Аннотация к лекции
- •Простейшие условия
- •Операторы сравнения
- •Логические операторы
- •Использование выражений над столбцами
- •Специальные операторы
- •Проверка на принадлежность множеству
- •Проверка на принадлежность диапазону значений
- •Проверка на соответствие шаблону
- •Проверка на неопределенное значение
- •Итоги лекции
- •Многотабличные запросы (0-0)
- •Аннотация к лекции
- •Декартово произведение таблиц
- •Условие соединения
- •Соединение таблиц по равенству
- •Соединение таблиц по неравенству
- •Самосоединение таблицы
- •Внешнее соединение таблиц
- •Соединение с использованием фразы from
- •Итоги лекции
- •Использование функций (0)
- •Аннотация к лекции
- •Агрегатные функции
- •Однострочныефункции
- •Строковые функции
- •Числовые функции
- •Временные функции
- •Функции преобразования
- •Итогилекции(урока)
- •Группировка и сортировка (0)
- •Аннотация к лекции
- •Запросы с группировкой строк
- •Понятие группировки строк
- •Группировка по одному столбцу
- •Группировка по нескольким столбцам
- •Использование выражений
- •Условиеотборагрупп
- •Сортировка строк
- •Сортировка по столбцу или выражению
- •Сортировка по нескольким столбцам или выражениям
- •Итоги лекции
- •Множественные операции над таблицами (0-0)
- •Аннотация к лекции
- •Множественные операции в стандарте sql
- •Объединение таблиц
- •Пересечение таблиц
- •Разность таблиц
- •Дополнительные аспекты использования множественных операций
- •Множественные операции и группировка
- •Множественные операции и сортировка
- •Итоги лекции
- •Определение таблиц и представлений (0-0)
- •Аннотация к лекции
- •Создание таблицы
- •Изменениетаблицы
- •Возможности изменения таблиц
- •Добавление столбца
- •Изменение определения столбца
- •Удаление столбца
- •Переименование таблицы
- •Удаление таблицы
- •Определение индексов
- •Представления
- •Итоги лекции
- •Манипулирование данными (0-0)
- •Аннотация к лекции
- •Добавление новых строк
- •Варианты добавления строк
- •Вставка отдельных строк
- •Использование запроса при вставке строк
- •Вставка значений по умолчанию
- •Обновление существующих данных
- •Удаление существующих строк
- •Импорт и экспорт данных
- •Итоги лекции
- •Определение ограничений целостности, ключей, задание прав доступа к данным (0-18)
- •Аннотация к лекции
- •Виды ограничений целостности
- •Ограничение на отсутствие значения
- •Ограничениеуникальности
- •Ограничение первичного ключа
- •Ограничение ссылочной целостности
- •Изменение ограничений целостности
- •Итоги лекции
- •Программирование бд (19)
Итоги лекции
Усвоив материал этого урока, студенты научились:
формулировать условия с использованием операторов сравнений;
использовать логические операторы;
строить условия с использованием выражений над столбцами;
использовать оператор IN для проверки принадлежности множеству;
использовать оператор BETWEEN для проверки принадлежности диапазону значений;
использовать оператор LIKE для проверки на соответствие шаблону;
использовать оператор IS NULL для проверки на неопределенное значение.
Многотабличные запросы (0-0)
Аннотация к лекции
При проектировании стремятся создавать таблицы, в каждой из которых содержалась бы информация об одном и только одном типе сущности. Это облегчает модификацию базы данных и поддержку ее целостности. Именно так и поступили создатели учебной базы данных. Однако сущности могут быть взаимосвязанными. Заказанные позиции связаны с заказами по принципу вхождения в их состав, клиенты осуществляют заказы, сотрудники принимают заказы и т.д. Связь между таблицами устанавливается за счет размещения специального столбца первичногоключаодной таблицы, которая называетсяродительской, в другой таблице, которая называетсядочерней. Столбец (или совокупность столбцов) дочерней таблицы, определенный для связи с родительской таблицей, называетсявнешним ключом. Так, например, таблица «Заказы» содержит поле «КодСотрудника», который имеет значение первичного ключа таблицы «Сотрудники». Наличие внешних ключей является основной для инициирования поиска по многим таблицам.
Одна из наиболее важных особенностей предложения SELECT — это способность использования связей между различными таблицами, а также вывода содержащейся в них информации. Операция, которая приводит к соединению из двух таблиц всех пар строк, для которых выполняется заданное условие, называется соединением таблиц. Для того чтобы указать соединяемые таблицы, их следует перечислить через запятую во фразе FROM.
Декартово произведение таблиц
Соединение таблиц - это частный случай операции декартового произведения(или простопроизведения). Декартово произведение двух таблиц – это таблица, состоящая из всех возможных пар строк обеих таблиц. Это определение можно естественным образом расширить на любое количество таблиц.
В 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), и это при таких незначительных размерах исходных таблиц. Будьте внимательными, не используйте декартового произведения, тем более что эта операция не имеет какой-либо вразумительной семантики (она используется в математике как некоторая абстракция, благодаря которой можно легко объяснять другие математические операции над множествами и отношениями), но через декартово произведение можно определить семантику операции соединения.