Операторы
манипулирования данными
Главным оператором манипулирования
данными является оператор SELECT
. Этот оператор используется для
отбора данных, соответствующих сложным условиям. Оператор SELECT
имеет вид:
SELECT [ DISTINCT ]
<Список полей> или *
FROM <Список таблиц>
[ WHERE <Условия выбора записей>]
[ORDER BY <Список полей для сортировки>]
[GROUP BY <Список полей для группировки>]
[HAVING <Условия группировки полей>]
[UNION <Вложенный оператор SELECT>]
Результатом выполнения
данного оператора будет набор записей, удовлетворяющих заданным условиям.
Параметр DISTINCT
определяет, будут ли включаться в результирующий набор данных повторяющиеся
записи. Если он присутствует в операторе SELECT
, то повторяющиеся
записи будут исключены из набора данных.
Если в список полей входят
поля нескольких таблиц, для указания принадлежности поля к той или иной таблице
используют составной оператор, включающий имя таблицы и, через точку, имя поля:
<Имя таблицы>.<Имя
поля>
Операнд WHERE
определяет критерии, которым должны удовлетворять записи в результирующем наборе
данных.
Операнд GROUP BY
позволяет группировать записи. Иногда бывает необходимо выполнить какие-либо
операции над группой записей.
Операнд HAVING
используется вместе с GROUP BY
и позволяет выбирать записи внутри
групп.
Операнд ORDER BY
содержит список полей, определяющих порядок сортировки записей результирующего
набора данных. По умолчанию сортировка выполняется в порядке возрастания значений.
Для сортировки в порядке убывания значений необходимо после имени поля поставить
параметр DESC
.
Операнд UNION
используется для организации вложенных операторов SELECT
. Вложенные
операторы SELECT
называют иногда подзапросами.
Приведем примеры выбора
записей с использованием оператора SELECT
.
Пример 17.1. Выбор всех
полей таблицы
SELECT * FROM MyTable
В результате выполнения
этого запроса будут выбраны все поля и записи из таблицы MyTable
.
Значок * обозначает, что выбраны все поля таблицы. Вместо него можно просто
перечислить через запятую все поля таблицы.
Пример 17.2. Выбор данных
из трех полей таблицы
SELECY Number, Surname, Telefon
FROM MyTable
В результате выполнения
примера 17.2 будут выбраны все записи из полей Number,
Surname
и Telefon
таблицы MyTable
.
Пример 17.3.Выборуникальных
значений
SELECT DISTINCT Surname
FROM MyTable
В результате мы получим
набор данных, который содержит все фамилии (Surname
), входящие
в таблицу MyTable
. В этот набор данных не будет дважды включена
одна и та же фамилия, т. е. будут исключены все однофамильцы.
Пример 17.4.Выбор данных
из двух таблиц
SELECT * FROM MyTable1,
MyTable2
Выбирает все данные из
таблиц МуTable1
и MyTable2
. Первыми будут располагаться
поля таблицы MyTable1
, а затем — поля второй таблицы.
Пример 17.5.Выбор записей
по значениям числового поля
SELECT Name, Surname
FROM МуТаble
WHERE (Number>l) and (Number<100);
Результирующим набором
данных будут имена и фамилии первых ста человек, занесенных в таблицу МуTable
.
Пример 17.6. Выбор записей
по значению символьного поля
SELECT Name
FROM MyTable
WHERE Surname='Иванов' ;
Результатом будет набор
имен, фамилии которых Иванов.
Пример 17.7.Проверка
частичного совпадения по символьному полю
SELECT Name, Surname
FROM MyTable
WHERE Surname LIKE 'И';
Будут выбраны имена и фамилии
людей, занесенных в таблицу МyTable
, фамилии которых начинаются
на букву И.
В выражениях операции
LIKE
можно использовать шаблоны. Символы шаблонов:
Пример 17.8. Проверка
частичного совпадения по шаблону
SELECT Name, Surname
FROM MyTable
WHERE Surname LIKE '%' || 'OB' || '%';
Будут выбраны имена и фамилии
людей, в состав фамилий которых входят символы ов
.
Операнд ORDER BY
служит для упорядочения (сортировки) значений полей.
Пример 17.9. Сортировка
записей по полю
SELECT * FROM MyTable
ORDER BY Name
Таким образом, набор данных
будет отсортирован в порядке возрастания по полю Name
.
Пример 17.10. Сортировка
по двум полям
SELECT * FROM MyTable
ORDER BY Name, Surname DESC
Будет произведена сортировка
данных сначала по полю Name
в порядке возрастания, затем — по полю
Surname
в порядке убывания.
Оператор UPDATE
служит для изменения значений полей в группе записей и имеет следующий формат:
UPDATE <Имя таблицы>
SET <Имя поля> = <Выражение>,
SET <Имя поля> = <Выражение> [WHERE <Условия выбора>];
. . .
Во всех записях, которые
удовлетворяют условию отбора, будут изменяться значения полей.
Пример 17.11. Изменение
значений поля
UPDATE MyTable
SET Oklad = Oklad + 1000; WHERE Oklad < 1000;
Изменит сумму оклада (Oklad)
сотрудника, если оклад менее 1000 руб. К сумме оклада прибавится еще 1000 руб.
Оператор INSERT
служит для вставки записей в таблицу и имеет следующий формат:
INSERT INTO <Имя таблицы>
(<Список полей>)
VALUES (<Список значений>);
Таким образом, к таблице
<Имя таблицы>
будет добавлена одна запись.
Пример 17.12. Добавление
записи в таблицу
INSERT INTO MyTable
(Name, Surname, Telefon) VALUES ('Иван', 'Иванов', 2341234);
В таблицу MyTable
будет добавлена новая запись, содержащая имя и фамилию нового сотрудника, а
также номер его телефона.
Оператор DELETE служит
для удаления записей из таблицы и имеет следующий формат:
DELETE* FROM <Имя таблицы> [WHERE <Условия выбора>];
Из таблицы будут удалены
все записи, которые удовлетворяют условию выбора.
Пример 17.13.Удаление
записей из таблицы
DELETE FROM MyTable
WHERE Surname = 'Иванов';
Удаляет из таблицы МуТаble
все записи, содержащие фамилию Иванов.
На этом мы заканчиваем
обзор основных операторов и функций языка SQL. Дополнительную информацию вы
можете почерпнуть из специальной литературы, посвященной данному языку.