Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД вопросы.doc
Скачиваний:
41
Добавлен:
26.03.2015
Размер:
424.96 Кб
Скачать
                  1. 10. Операторы delete, update: секции операторов и их применение.

Эти операторы относятся к группе операторов DML.

INSERT — оператор языка SQL, который позволяет добавить строки в таблицу, заполняя их значениями. Значения можно вставлять перечислением с помощью слова values и перечислив их в круглых скобках через запятую или оператором select.

INSERT INTO tablename

(column)

VALUES (CONVERT(POINT, '3,4'));

DELETE — в языках, подобных SQL, DML-операция удаления записей из таблицы. Критерий отбора записей для удаления определяется выражением where. В случае, если критерий отбора не определён, выполняется удаление всех записей.

UPDATE — оператор языка SQL, позволяющий обновить значения в заданных столбцах таблицы.

                  1. 11. Группировка в операторе select, применение секции having.

HAVING — необязательный (опциональный) параметр оператора SELECT для указания условия на результат агрегатных функций (MAX, SUM, AVG, …).

HAVING <условия> аналогичен WHERE <условия> за исключением того, что строки отбираются не по значениям столбцов, а строятся из значений столбцов, указанных в GROUP BY, и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY.

Необходимо, чтобы в SELECT были заданы только требуемые в выходном потоке столбцы, перечисленные в GROUP BY и/или агрегированные значения. Распространённая ошибка — указание в SELECT столбца, пропущенного в GROUP BY.

Если параметр GROUP BY в SELECT не задан, HAVING применяется к «группе» всех строк таблицы, полностью дублируя WHERE (допускается не во всех реализациях стандарта SQL).

                  1. Примеры

Возвращает список идентификаторов отделов, продажи которых превысили 1000 долларов за 1 января 2000 года, вместе с суммами продаж за этот день:

SELECT deptid,

Sum(saleamount)

FROM sales

WHERE saledate = '01-Jan-2000'

GROUP BY deptid

HAVING Sum(saleamount) > 1000

                  1. 12. Применение group with cube, group with rollup

Ниже представлены различия между операторами CUBE и ROLLUP.

Оператор CUBE создает результирующий набор, содержащий статистические выражения для всех комбинаций значений заданных столбцов.

Оператор ROLLUP создает результирующий набор, содержащий статистические выражения иерархии значений в заданных столбцах.

SELECT id, name, surname, age, short

FROM people

GROUP BY id, name, surname, age, short WITH cube

SELECT id, name, surname, age, short

FROM people

GROUP BY id, name, surname, age, short WITH rollup

                  1. 13. Применение compute, compute by

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

Важно!

В следующей версии Microsoft SQL Server эта возможность будет удалена. Не используйте ее при работе над новыми приложениями и как можно быстрее измените приложения, в которых она в настоящее время используется.Вместо этого используйте инструкцию ROLLUP.

Синтаксис:

SELECT age, id, name FROM people ORDER BY name COMPUTE sum(age)

SELECT age, id, name FROM people ORDER BY name COMPUTE sum(age) BY name