Операторы манипулирования данными
Операторы манипулирования данными
Главным оператором манипулирования данными является оператор 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. Дополнительную информацию вы можете почерпнуть из специальной литературы, посвященной данному языку.