Для удаления записей используется оператор DELETE, имеющий формат:
DELETE FROM <имя таблицы>
WHERE <условие отбора>;
Из таблицы, имя которой указано после слова FROM, удаляются все записи, которые удовлетворяют критерию отбора.
Пример. Удалить из таблицы ‘’Сотрудники’’ запись об экономисте Воронине:
DELETE FROM Сотрудники
WHERE Табномер = 7738
или
DELETE FROM Сотрудники
WHERE Фамилия = ‘Воронин’ AND Должность = ‘Экономист’
Оператор SELECT является одним из самых главных. Он выполняется над некоторыми таблицами, входящих в БД. На самом деле в БД могут быть не только постоянно хранимые таблицы, но также и временные таблицы и так называемые представления.
Представления – это просто хранящиеся в БД SELECT – выражения.
С точки зрения пользователя представление – это таблица, которая постоянно не хранится в БД, а возникает при обращении.
С точки зрения оператора SELECT, и постоянно хранимые таблицы и временные таблицы-представления выглядят совершенно одинаково. При реальном выполнении оператора SELECT система учитывает различие между хранимыми таблицами и представлениями, скрытыми от пользователя.
Результатом выполнения операции SELECT всегда является таблица.
Оператор SELECT имеет следующий формат:
SELECT [DISTINCT]
<Список полей> или *
FROM <Список таблиц>
[WHERE <Условие отбора>]
[ORDER BY <Список полей для сортировки>]
[GROUP BY <Список полей для группирования>]
[HAVING <Условие группирования>]
[UNION <Вложенный оператор SELECT>]
Выбрать все поля
SELECT *
FROM <имя таблицы>
Выбор определенных полей
SELECT <имя столбца 1>,…,<имя столбца n>
FROM <имя таблицы>
Пример. Выбрать все поля таблицы «Сотрудники»:
SELECT *
FROM Сотрудники
Пример. Выбрать определенные поля таблицы «Сотрудники»:
SELECT Табномер, Фамилия, Отдел
FROM Сотрудники
Выбор полей, удовлетворяющих некоторому условию
SELECT <имя столбца 1>,…,<имя столбца n>
FROM <имя таблиц(ы)>
WHERE <условие отбора>;
Пример. В результате запроса выдать фамилию и отдел работы всех сотрудников с должностью 'Заведующий':
SELECT Отдел, Фамилия
FROM Сотрудники
WHERE Должность = ''Заведующий''
Дублированными являются такие строки в результирующей таблице, в которых идентичен каждый столбец.
Иногда (в зависимости от задачи) бывает необходимо устранить все повторы строк из результирующего набора. Этой цели служит модификатор DISTINCT. Данный модификатор может быть указан только один раз в списке выбираемых элементов и действует на весь список.
SELECT [DISTINCT] <имя столбца 1>,…,< имя столбца n>
FROM <имя таблиц(ы)>
WHERE <условие отбора>;
Пример. Выбрать все должности таблицы «Сотрудники»:
SELECT DISTINCT Должность
FROM Сотрудники;
Операнд ORDER BY содержит список полей, определяющих порядок сортировки записей результирующего набора данных. По умолчанию сортировка по каждому полю выполняется в порядке возрастания значений. Если необходимо задать для поля сортировку по убыванию, то после имени этого поля указывается описатель DESC.
ORDER BY <порядок строк> [ASC | DESC]
Операнд ORDER BY всегда должен следовать за WHERE.
Порядок строк может задаваться одним из двух способов:
именами столбцов
номерами столбцов.
Столбец, определяющий порядок вывода строк, не обязательно должен присутствовать в списке выбираемых элементов (столбцов):
Пример. Упорядочить записи по табельному номеру сотрудников:
SELECT *
FROM Сотрудники
ORDER BY ТабНомер ASC | DESC;
Пример. Выдать фамилию и наименование отдела работы для всех заведующих, при этом записи упорядочить по фамилии:
SELECT Отдел, Фамилия
FROM Сотрудники
WHERE Должность = 'Заведующий'
ORDER BY 2
Пример. Выдать все записи таблицы «Сотрудники», при этом записи упорядочить по фамилии, а затем по табельному номеру в возрастающем порядке:
SELECT *
FROM Сотрудники
ORDER BY Фамилия, ТабНомер ASC;
Иногда приходится выполнять запросы, в которых таблица соединяется сама с собой, или одна таблица соединяется дважды с другой таблицей. В этом случае используют псевдонимы таблицы, которые позволяют различать соединяемые копии таблиц.
Псевдонимы (алиасы или имя корреляции) вводится в разделе FROM и пишутся через пробел после имени таблицы.
Имена корреляции должны использоваться в качестве префиксов перед именем столбца и отделяться от него точкой:
Пример:
SELECT S.Фамилия, O.НомОтд
FROM Сотрудники S, Отдел O
Псевдонимы существуют не только для таблиц,но и для полей. Если в запросе указывается одно и то же поле из разных экземпляров одной таблицы, они должны быть переименованы для устранения неоднозначности в наименованиях колонок результирующей таблицы. Определение имени корреляции делается только во время выполнения запроса.
Пример:
SELECT S1.Фамилия AS Фамилия1, S2.Оклад AS ОкладМаленький