
- •Язык запросов 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)
Функции преобразования
Стандарт SQL предлагает единственную функцию преобразования данных из одного типа в другой – это функция CAST.
Функция CAST производит преобразование выражения, заданного первым аргументом, в тип, заданный вторым аргументом. Преобразование допускается только для определенных пар типов данных.
CAST(выражение AS тип)
в некоторых СУБД вместо функции используется соответствующее выражение:
CAST выражение AS тип
Запрос.Вывести имя, зарплату как число и зарплату как строку
SELECT Name AS "Фамилия",
Salary AS "Зарплата как число",
CAS(Salary AS varchar(1O)) AS "Зарплата как строка"
FROM TEACHER;
Итогилекции(урока)
Усвоив материал этого урока, студенты научились:
использовать агрегатные функции;
строить выражения с использованием агрегатных функций;
использовать строковые функции;
использовать числовые функции;
использовать временные функции;
использовать функции преобразования.
Группировка и сортировка (0)
Аннотация к лекции
В этом уроке мы рассмотрим еще три фразы предложения SELECT, а именно: HAVING, GROUPBYиORDERBY. Первая из них позволяет группировать строки таблицы и применять к созданным группам агрегатные функции. В нашем курсе мы рассмотрим простейшие варианты группировки,дополнительные возможности фразы GROUP BY предлагается вынести на самостоятельное изучение.
Фраза HAVING используется вместе с фразой GROUP BY и позволяет формулировать условия на группах строк для дополнительного отбора.
Фраза ORDER BY позволяет сортировать строки результирующей таблицы.
Запросы с группировкой строк
Понятие группировки строк
Описанные в предыдущем уроке агрегатные функции применялись ко всей таблице. Однако часто при создании отчетов появляется необходимость в формировании промежуточных итоговых значений, то есть относящихся к данным не всей таблицы, а ее частей.
Именно для этого предназначена фраза GROUPBY. Она позволяет все множество строк таблицы разделить на группы по признаку равенства значений одного или нескольких столбцов (и выражений над ними). ФразаGROUPBYдолжна располагаться вслед за фразойWHERE(если она отсутствует, то за фразойFROM). Общий синтаксис фразыGROUPBYследующий:
GROUPBYвыражение[, выражение] ...
При наличии фразы GROUP BY фраза SELECT применяется к каждой группе, сформированной фразой группировки. В этом случае и действие агрегатных функций, указанных во фразе SELECT, будет распространяться не на всю результирующую таблицу, а только на строки в пределах каждой группы.
Рассмотрим возможности фразы GROUP BY, переходя от простых вариантов ее использования к более сложным.
Группировка по одному столбцу
Группировка по значениям одного столбца является самым простым вариантом использования фразы GROUP BY. Приведем примеры.
Запрос.Для каждого корпуса подсчитать количество находящихся в нем кафедр.
SELECT Building AS "Корпус",
COUNT(*)AS"К-во кафедр"
FROM DEPARTMENT
GROUP BY Building;
Если в запросе используются фразы и WHERE, и GROUP BY, строки, не удовлетворяющие условию фразы WHERE, исключаются до выполнения группировки. Вследствие этого группировка производится только по тем строкам, которые удовлетворяют условию.
Запрос.Для каждого корпуса подсчитать количество аудиторий с количеством мест больше 30.
SELECT Building AS "Корпус",
COUNT(*) AS "K-во аудиторий"
FROM ROOM
WHERE Seats > 30
GROUP BY Building;
В случае многотабличных запросов сначала производится соединение таблиц, а затем их группировка. Приведем примеры.
Запрос.Вывести названия факультетов и суммарный фонд финансирования их кафедр.
SELECT f.Name AS "Факультет",
SUM(d.Fund) AS "Фонд кафедр"
FROM FACULTY f, DEPARTMENT d
WHERE f.FacPK = d.FacFK
GROUP BY f.Name;
Запрос. Для каждого факультета, расположенного в корпусе 6, вывести количество групп и студентов пятого курса.
SELECT f.Name, Count(*), SUM(Quantity)
FROM FACULTY f, DEPARTMENT d, SGROUP g
WHERE f.FacPK = d.FacFK AND
d.DepPK = g.DepFK AND
f.Building = '6' AND Year = 5
GROUP BY f.Name;