Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
186.37 Кб
Скачать

2.10.3Подзапросы в предложении select

Допускается использование подзапросов, возвращающих единственное значение, в качестве элементов списка выбора.

Пример:

Список сотрудников, имеющих детей, с указанием количества детей.

SELECT Табельный номер, (SELECT COUNT(*) FROM Дети WHERE СП_СЛ.Табельный номер=Табельный номер GROUP BY Табельный номер) AS Количество детей FROM СП_СЛ

Однако более эффективным будет следующий запрос, возвращающий аналогичный результат.

SELECT Табельный номер, Количество детей FROM СП_СЛ, (SELECT COUNT(*) AS Количество детей FROM Дети GROUP BY Табельный номер) S WHERE СП_СЛ.Табельный номер=S.Табельный номер

3Команды модификации таблиц

Значения могут быть помещены и удалены из полей, тремя командами языка DML (Data Manipulation Language) (Язык Манипулирования Данными):

INSERT (ВСТАВИТЬ), UPDATE (МОДИФИЦИРОВАТЬ), DELETE (УДАЛИТЬ).

3.1Ввод значений

Все строки в SQL вводятся с использованием команды модификации INSERT. В самой простой форме, INSERT использует следующий синтаксис:

INSERT INTO <table name> [(<поле1>, <поле2>,…)] VALUES (<значение1>, <значение2>…)

В VALUES могут быть использованы только конкретные значения, а не выражения.

3.1.1Вставка пустых указателей (null)

Пустое значение (NULL), вводится точно также как и обычное значение.

Так как значение NULL - это специальный маркер, а не просто символьное значение, он не включается в одиночные кавычки.

3.1.2Именование столбца для вставки

Возможность указывать столбцы в INSERT позволяет вставлять имена в любом порядке. Столбцы таблицы могут отсутствовать. Это значит, что эти строки автоматически установлены в значение – по умолчанию. По умолчанию может быть введено или значение NULL или другое значение определяемое как – по умолчанию. Если ограничение запрещает использование значения NULL в данном столбце, и этот столбец не установлен как по умолчанию, этот столбец должен быть обеспечен соответствующим значением.

Пример:

INSERT INTO СП_СЛ (Табельный номер, Фамилия, Имя, Отчество, Пол, Телефон) VALUES (‘С145’, ‘Иванов’, ‘Дмитрий’, ‘Петрович’, ‘М’, NULL)

3.1.3Ввод, удаление, и изменение значений полей

3.2Удаление строк из таблиц

DELETE –удаление строки из таблицы.

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

DELETE FROM <имя_таблицы> [WHERE <условие>]

Пример:

DELETE FROM ПР WHERE Табельный номер=’C145’

3.3Изменение значений поля

UPDATE – изменение данных в конкретных полях, в уже существующих строках таблицы.

UPDATE <имя таблицы> SET <имя столбца1=выражение1 [, имя столбца2=выражение2, …]> [WHERE <условие>]

В качестве выражения может быть как конкретное значение, так и выражение.

Предложение SET может вводить пустые NULL значения (поле=NULL).

Пример:

Увеличить зарплату всем мужчинам, имеющим оклад меньше 5000

UPDATE СП_СЛ SET Оклад=Оклад*1,15 WHERE Оклад< 5000 AND Пол=’М’

3.4Использование подзапросов с командами модификации

Подзапросы могут быть вложены в операторы UPDATE, DELETE, INSERT так же, как и в операторы SELECT.

INSERT INTO <имя таблицы> [(поле1, поле2, …)] SELECT <список столбцов> FROM <имя таблицы> WHERE <условие>

Одним из преимуществ использование подзапроса в команде INSERT является возможность включения в него различных выражений – строк символов, математических формул и функций. НЕ ВСТАВЛЯЙТЕ ДУБЛИКАТЫ СТРОК

Пример:

Изменить оклады на 10% всем руководителям лабораторий.

UPDATE СП_СЛ SET Оклад=Оклад*1,1 WHERE Табельный номер IN (SELECT Код руководителя FROM ЛАБ)

Удалить все записи о премиях уволенных сотрудников (нет в таблице СП_СЛ).

DELETE FROM ПР WHERE NOT EXISTS (SELECT * FROM СП_СЛ WHERE СП_СЛ.Табельный номер=ПР.Табельный номер)

Назначить премии сотрудникам, имеющим детей, в размере 10% от оклада приказом номер 03/123 от 25.11.2005.

INSERT INTO ПР (Табельный номер, Размер премии, Номер приказа, Дата приказа) SELECT Табельный номер, 0,1*Оклад, ‘03/123’, {25/11/2005} FROM СП_СЛ WHERE Табельный номер IN (SELECT DISTINCT Табельный номер FROM Дети)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]