- •Лабораторная работа №1 Ввод sql-инструкций средствами Query Analyser
- •Основные сведения
- •Лабораторное задание
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №2 Выборка данных из базы данных с использованием языка sql
- •Порядок выполнения работы
- •Содержание отчета
- •Основные сведения Язык sql
- •Оператор select
- •Предикаты условия поиска
- •Агрегатные функции
- •Операции реляционной алгебры
- •Работа с утилитой isql/w
- •Описание задания База данных книготорговой компании
- •Лабораторные задания типа а
- •Лабораторные задания типа b
- •Варианты лабораторных заданий
- •Лабораторная работа №3 Создание, модификация и удаление объектов базы данных с использованием sql
- •Порядок выполнения работы Изучение языка баз данных
- •Содержание отчета
- •Типы данных Transact-sql
- •Создание таблицы
- •Определение столбца
- •Определение ограничений целостности таблицы
- •Изменение таблиц
- •Создание представлений
- •Операторы, связанные с курсором
- •Одиночные операторы манипулирования данными
- •Создание индекса
- •Удаление объектов базы данных
- •Получение справочной информации об объектах базы данных
- •Варианты заданий
Агрегатные функции
Агрегатные функции (функции множества) в запросе предназначены для вычисления некоторого значения для заданного множества строк. Таким множеством строк может быть группа строк, если агрегатная функция применяется к сгруппированной таблице, или вся таблица. В языке SQL определены следующие агрегатные функции:
AVG - функция определения среднего значения;
MAX - функция определения максимального значения;
MIN - функция определения минимального значения;
SUM - функция суммирования значений;
COUNT - функция для подсчета числа строк или значений.
Грамматика агрегатных функций следующая:
<агрегатная функция>::= COUNT(*) | <distinct-функция> | <all-функция>
<distinct-функция>::= {AVG | COUNT | MAX | MIN | SUM} (DISTINCT <имя столбца>)
<all-функция>::= {AVG | MAX | MIN | SUM} ([ALL]<выражение>)
Вычисление функции COUNT(*) производится путем подсчета числа строк в заданном множестве. Функция типа distinct выполняет вычисления только над одним столбцом, а в вычислениях используются только уникальные значения столбца. При использовании функции типа all список значений формируется из значений арифметического выражения, вычисляемого для каждой строки заданного множества.
Операции реляционной алгебры
Большинство SQL-запросов требует одновременного обращения к нескольким таблицам. Часто такого рода запросы основываются на операциях реляционной алгебры, в частности, соединения, декартова произведения, объединения, пересечения и разности.
При соединении двух таблиц по некоторому условию образуется результирующая таблица, строки которой являются конкатенацией (сцеплением) строк первой и второй таблиц и удовлетворяют этому условию. Операцию соединения можно реализовать с использованием обычного SQL-запроса типа SELECT-FROM-WHERE. По стандарту ANSI операция соединения таблиц может указываться явно в разделе FROM. Синтаксис раздела FROM в этом случае следующий:
<раздел FROM>::= FROM <имя таблицы> [JOIN <имя таблицы> ON <условие соединения> ...]
При выполнении декартова произведения двух таблиц производится таблица, строки которой являются конкатенацией строк первой и второй таблиц. Операцию декартова произведения можно реализовать с использованием SQL-запроса типа SELECT-FROM. По стандарту ANSI операция декартова произведения может указываться явно в разделе FROM с использованием ключевой фразы CROSS JOIN.
При выполнении операции объединения двух таблиц производится таблица, включающая все строки, входящие хотя бы в одну из таблиц-операндов. При этом число столбцов и типы данных этих столбцов должны быть одинаковыми для всех операндов. Для объединения результирующих таблиц операторов SELECT используется ключевое слово UNION.
Операция пересечения двух таблиц производит таблицу, включающую все строки, входящие в обе исходные таблицы.
Таблица, являющаяся разностью двух таблиц, включает все строки, входящие в таблицу - первый операнд, такие, что ни одна из них не входит в таблицу, являющуюся вторым операндом.