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

Удаление данных – delete

Для удаления строк служит SQL-оператор DELETE. К нему относятся те же самые предостережения, что и к оператору UPDATE. Он обманчиво прост в использовании, и неосторожное его применение может привести к самым неожиданным п­следствиям. Следующий оператор удаляет из таблицы ПРОЕКТ данные обо всех проектах, спонсируемых бухгалтерией:

Листинг 13

DELETE

FROM ПРОЕКТ

WHERE Отдел = 'Бухгалтерия';

В связи с ограничением ссылочной целостности ON DELETE CASCADE эта опера­ция удаляет не только строки таблицы ПРОЕКТ, но и все связанные с ними строки в таблице НАЗНАЧЕНИЕ. Для данных из табл. 1-3 этот оператор удаляет пятую и седьмую строки таблицы НАЗНАЧЕНИЕ.

Если вы забудете указать предложение WHERE, последствия будут катастрофическими. Например, следующий оператор удаляет все строки из отношения ПРОЕКТ (а вместе с ними, ввиду ограничения ON DELETE CASCADE, и все связанные с ними строки отношения НАЗНАЧЕНИЕ):

Листинг 14

DELETE

FROM ПРОЕКТ;

Обратите внимание на различия в процедурах обеспечения ссылочной целостности между таблицами ПРОЕКТ и СОТРУДНИК. Если мы попытаемся выполнить следующую команду, нас постигнет неудача, поскольку указанная строка таблицы СОТРУДНИК имеет дочерние строки в таблице НАЗНАЧЕНИЕ:

DELETE

FROM СОТРУДНИК

WHERE ТабельныйНомер=100;

Если требуется удалить строку этого сотрудника, необходимо сначала переназначить или удалить соответствующие строки в таблице НАЗНАЧЕНИЕ.

    1. Выборка данных

SELECT

Базовый формат SQL-оператора SELECT таков: SELECT (имена столбцов или *), FROM (имена таблиц, разделенные запятыми, если таблиц больше, чем одна), WHERE (условия). С помощью оператора SELECT можно запрашивать определенные столбцы, определенные строки или то и другое вместе.

Чтение заданных столбцов из одиночной таблицы. Следующий оператор запросит (прочтет) три из четырех столбцов таблицы ПРОЕКТ:

Листинг 15

SELECT Название, Отдел, МаксТрудозатраты

FROM ПРОЕКТ;

Если нужно, чтобы СУБД нашла и удалила одинаковые строки, при запросе необходимо использовать ключевое слово DISTINCT:

Листинг 16

SELECT DISTINCT Отдел

FROM ПРОЕКТ;

Чтение заданных строк из одиночной таблицы. Приведенные выше SQL-операторы выбирали определенные столбцы всех строк таблицы. Можно сделать и наоборот — выбрать все столбцы определенных строк. Например, следующий оператор запрашивает все столбцы из тех строк таблицы ПРОЕКТ, которые содержат сведения о проектах финансового отдела:

Листинг 17

SELECT ИдПроекта, Название, Отдел, МаксТрудозатраты

FROM ПРОЕКТ

WHERE Отдел = 'Финансы';

В условиях, задаваемых в предложении WHERE, значения столбцов, имеющих типы данных Char и VarChar, необходимо заключать в одинарные кавычки (апострофы). Для столбцов типов Integer и Numeric этого не требуется. Объединять несколько условий можно с помощью ключевого слова AND.

Листинг 18

SELECT *

FROM ПРОЕКТ

WHERE Отдел = 'Финансы' AND МаксТрудозатраты > 100;

Множества значений задаются с использованием ключевых слов IN (соответствие любому значению из списка) и NOT IN (несоответствие ни одному значению из списка).

Листинг 19

SELECT Имя, Телефон, Отдел

FROM СОТРУДНИК

WHERE Отдел IN ('Бухгалтерия', 'Финансы', 'Маркетинг');

Диапазоны, специальные символы и пустые значения в предложениях WHERE. В предложениях WHERE могут также указываться диапазоны и шаблоны поиска. Для задания диапазонов используется ключевое слово BETWEEN. Например:

Листинг 20

SELECT Имя, Отдел

FROM СОТРУДНИК

WHERE ТабельныйНомер BETWEEN 200 AND 500;

Шаблоны поиска можно задавать при помощи специальных символов _ (произвольный одиночный символ) и % (произвольная последовательность символов) в сочетании с ключевым словом LIKE. Для поиска пустых значений используются ключевые слова IS NULL.

Листинг 21

SELECT *

FROM ПРОЕКТ

WHERE Имя LIKE 'KB_ Анализ портфеля';

Подчеркивание означает, что на данном месте может стоять любой символ. Результатом этого оператора является следующая таблица:

1000 КВЗ Анализ портфеля Финансы 75

1500 КВ4 Анализ портфеля Финансы 110

Чтобы найти всех сотрудников, чей номер телефона начинается с '285', можно четыре последние цифры номера представить символами подчеркивания:

Листинг 22

SELECT *

FROM СОТРУДНИК

WHERE Телефон LIKE '285-____';

Символ процента (%) представляет последовательность из одного или нескольких произвольных символов. Запрос, возвращающий строки сотрудников с номерами телефонов, начинающимися с '285', можно записать по-другому:

Листинг 23

SELECT *

FROM СОТРУДНИК

WHERE Телефон LIKE '285%';

Для поиска пустых значений в предложении WHERE служит ключевое слово NULL. Следующий запрос выдает имена и названия отделов всех сотрудников, для которых не указан номер телефона:

Листинг 24

SELECT Имя, Отдел

FROM СОТРУДНИК

WHERE Телефон IS NULL;

26, ПРЕДСТАВЛЕНИЯ. ПРИМЕНЕНИЕ ПРЕДСТАВЛЕНИЙ. ОБНОВЛЕНИЕ ПРЕДСТАВЛЕНИЙ.

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