
- •Язык запросов 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)
Итоги лекции
Усвоив материал этого урока, студенты научились:
соединять таблицы по равенству и по произвольному условию;
соединять три и более таблицы;
производить самосоединение таблицы;
строить асимметричные запросы;
строить запросы к иерархическим данным;
выполнять внешние соединения таблиц.
Использование функций (0)
Аннотация к лекции
ФункцииSQL подобны любым другим операторам языка в том смысле, что они производят действия с данными и возвращают результат в качестве своего значения. Функции имеют тип, который определяется типом возвращаемого значения, поэтому можно говорить о числовых, строковых, временных функциях и т. д.
От обычных операторов функции отличаются форматом представления:
имя_функции[(аргумент[, аргумент]...)]
Этот формат допускает, что функции могут иметь ноль, один или более аргументов, причем при отсутствии аргументов круглые скобки не используются.
Имеется два основных класса функций SQL: встроенные и определяемые пользователем. Встроенными являются функции, предопределенные вSQL. Ко второму классу относятся функции, которые пишутся пользователями на специальном языке, обеспечивающем использование всех возможностейSQL. Каждая СУБД использует для этого свой собственный язык. ВOracle, например, таким языком являетсяPL/SQL.
В SQLопределено множество встроенных функций различных категорий.На этом уроке мы рассмотрим:
агрегатные (или групповые) функции, оперирующие значениями столбцов множества строк и возвращающие одно значение;
функции одной строки, использующие в качестве аргументов значения столбцов одной строки и возвращающие одно значение.
Агрегатные функции
Аргументами агрегатных функций могут быть как столбцы таблиц, так и результаты выражений над ними. Агрегатные функции и сами могут включаться в другие арифметические выражения. В стандарте SQLопределены следующие виды агрегатных функций: унарные, бинарные, инверсного распределения, гипотетические функции множеств.
Мы будем рассматривать только определенные в стандарте SQL унарные агрегатные функции. Их перечень представлен в табл. 5.1. Конкретные СУБД расширяют этот список (в Oracle, например, определено около 30 агрегатных функций).
Стандартные унарные агрегатные функции
|
Имя |
Возвращаемое значений |
|
COUNT |
Количество значений в столбце или строк в таблице |
|
SUM |
Сумма |
|
AVG |
Среднее |
|
MAX |
Максимум |
|
MIN |
Минимум |
|
VAR_P0P |
Дисперсия генеральной совокупности |
|
STDDEV_P0P |
Среднее квадратичное отклонение дисперсии генеральной совокупности |
|
VAR_SAMP |
Выборочная дисперсия |
|
STDDEV_SAMP |
Среднее квадратичное отклонение выборочной дисперсии |
|
EVERY |
TRUE, если все значения TRUE |
|
ANY, SOME |
TRUE, если хотя бы одно значение TRUE |
Общий формат унарной агрегатной функции следующий:
имя_функции([А1_1_ | DISTINCT] выражение) [FILTER (WHERE условие)]
где DISTINCT указывает, что функция должна рассматривать только различные значения аргумента, a ALL — все значения, включая повторяющиеся (этот вариант используется по умолчанию). Например, функция AVG с ключевым словом DISTINCT для строк столбца со значениями 1, 1, 1 и 3 вернет 2, а при наличии ключевого слова ALL вернет 1,5. Фраза FILTER позволяет дополнительно отобрать строки таблицы, столбец которой используется в качестве аргумента функции.
К сожалению, эта возможность реализована не во всех СУБД, использование условий в унарной агрегатной функции аналогично использованию условий во фразе WHERE.
Запрос.Информация о скольких преподавателях имеется в базе данных?
SELECT COUNT(*) AS "К-во преподавателей"
FROM TEACHER;
Запрос.Какая суммарная ставка всех ассистентов?
SELECT SUM(Salary)
FROM TEACHER
WHERE LOWER(Post) = 'ассистент';
Запрос. Сколько профессоров в вузе и какова их суммарная зарплата?
SELECT COUNT(*), SUM(Salary + Rise)
FROM TEACHER
WHERE LOWER(Post) = 'профессор';
Запрос. Сколько студентов пятого курса на факультете информатики?
SELECT SUM(Quantity)
FROM FACULTY f, DEPARTMENT d, SGROUP g
WHERE f.FacPK = d.FacFK AND
d.DepPK = g.DepFK AND
Year = 5;
Запрос.Какова максимальная зарплата преподавателя ?
SELECT MAX(Salary + Rise)
FROM TEACHER;
Запрос.Когда в последний раз принимали на работу преподавателя на кафедру программирования?
SELECT MAX(Hiredate)
FROM DEPARTMENT d, TEACHER t
WHERE d.DepPK - t.DepFK AND
LOWER(d.Name) = 'программирование';
Запрос.Какая разница между минимальной и максимальной зарплатой у доцентов?
SELECT MAX(Salary + Rise) – MIN(Salary + Rise)
FROM TEACHER
WHERE LOWER(Post) = ‘доцент’;
MAX(SALARY+RISE)-MIN(SALARY+RISE)