Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Умк_Базы.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.2 Mб
Скачать

5.1.3. Модификация хранимых отношений в субд

Оператор UPDATE

Для изменения значений в одном или нескольких столбцах таблицы используется оператор UPDATE. Синтаксис этого оператора имеет вид:

UPDATE таблица

SET столбец1= выражение1 [, столцец2= выражение2] […]

[WHERE условие]

Выражение в предложении SET может быть константой или результатом вычислений.

UPDATE Счет

SET баланс=баланс+1000.00

WHERE баланс>0

Оператор DELETE

Оператор используется для удаления строк из таблиц, синтаксис оператора имеет вид:

DELETE

FROM таблица

[WHERE условие]

Предложение WHERE не является обязательным, однако, если его не включить, то будут удалены все записи таблицы. Полезно использовать оператор SELECT c тем же синтаксисом, что и оператор DELETE, чтобы предварительно проверить, какие записи будут удалены.

Оператор INSERT

Оператор выполняет функцию добавления записей в таблицу и имеет следующий синтаксис:

INSERT INTO

([список столбцов]

{VALUES ({DEFAULT|NULL|выражение}

} [,..]

)

Вопросы для самопроверки по теме 5.1

1. Для каких целей создавался язык SQL?

2. Какие основные отличия реляционной алгебры и исчисления отношений?

3. Что такое интерактивный и вложенный SQL?

4. Каковы основные этапы формирования стандарта SQL?

5. Является ли SQL языком программирования?

6. Какие особенности присущи языку 4GL?

7. Как можно ускорить выполнение операции в SQL?

8. Почему SQL считается реляционно-полным?

9. Из каких разделов состаит язык SQL?

5.2. Реализация запросов в языке sql

При изучении данной темы Вы должны познакомиться с организацией процесса выполнения операторов SQL в СУБД и особенностями их реализации в конкретной (по выбору) СУБД.

По данной теме выполняется лабораторная работа №3, а также раздел “Разработка внешней модели” курсового проекта. Рекомендации по выполнению этих заданий приведены в методических указаниях [7] и [9], а также в методических указаниях к лабораторным занятиям в разделе 3.3.

Для проверки изучения материала темы Вам предстоит также ответить на вопросы для самопроверки.

Если Вы испытываете затруднения в ответе на какой-либо вопрос, обратитесь к главам 8 и 10 учебника [1] или к материалам учебного пособия [7].

5.2.1. Примеры запросов

Определение таблиц – это разовая работа, изменение структуры – эпизодическая, а манипулирование данными – деятельность постоянная. И если изменение содержания базы данных большой сложности не представляет, то выборка необходимой информации может быть довольно замысловатой. Именно на запросы расходуется наибольшее время работы с БД. Поэтому основу языка SQL составляют запросы к базе данных. Запросы определяются командой Select. (см. приложение 1).

5.2.2. Агрегатные функции

Функции агрегирования возвращают единственное (скалярное) значение для группы кортежей. Всего различают пять таких функций:

  • COUNT – количество непустых строк или значений атрибутов, отличных от null, удовлетворяющих заданному условию;

  • SUM – сумма значений атрибута;

  • AVG – среднее значение атрибута;

  • MAX – максимальное значение атрибута;

  • MIN – минимальное значение атрибута.

В команде Select они используются в списке выбираемых полей наряду с именами атрибутов. Их аргументы – имена атрибутов, причем, для SUM и AVG допустимы аргументы только числового типа.

Рассмотрим подробнее функцию COUNT. Она подсчитывает количество всех непустых атрибутов, даже если их значение повторяется. Для исключения повторений используется опция Distinct. Вариант COUNT(*) подсчитывает количество строк в выборке, включая и пустые, и повторяющиеся. Применять Distinct здесь нельзя. Вариант All позволяет считать все непустые значения атрибута, включая повторяющиеся.

Агрегатные функции применимы не только к атрибутам, но и к выражениям, содержащим атрибуты. В этом случае опция Distinct запрещена.

Пример

Подсчитать количество продавцов, которые выполняли заказы:

Select COUNT(Distinct ном_прод) From Заказы;

Подсчитать количество продавцов:

Select COUNT(*) From Продавцы;

Подсчитать количество непустых сумм:

Select COUNT(All сумма) From Заказы;

Подсчитать общую сумму заказов в тысячах рублей:

Select SUM(сумма/1000) From Заказы;