Конспект лекций
Вид материала | Конспект |
- Конспект лекций 2008 г. Батычко В. Т. Административное право. Конспект лекций. 2008, 1389.57kb.
- Конспект лекций 2010 г. Батычко Вл. Т. Муниципальное право. Конспект лекций. 2010, 2365.6kb.
- Конспект лекций 2011 г. Батычко В. Т. Семейное право. Конспект лекций. 2011, 1718.16kb.
- Конспект лекций 2011 г. Батычко Вл. Т. Конституционное право зарубежных стран. Конспект, 2667.54kb.
- Конспект лекций 2010 г. Батычко В. Т. Уголовное право. Общая часть. Конспект лекций., 3144.81kb.
- Конспект лекций для студентов по специальностям 190302 «Вагоны», 783.17kb.
- Конспект лекций бурлачков в. К., д э. н., проф. Москва, 1213.67kb.
- Конспект лекций для студентов специальности 080504 Государственное и муниципальное, 962.37kb.
- Конспект лекций по курсу "Начертательная геометрия и инженерная графика" Кемерово 2002, 786.75kb.
- Краткий конспект лекций 2009 г. Батычко В. Т. Прокурорский надзор. Конспект лекций., 1859.8kb.
7.12.Инструкция UPDATE
Создает запрос на обновление, который изменяет значения полей указанной таблицы на основе заданного условия отбора.
Синтаксис
UPDATE таблица
SET новоеЗначение
WHERE условиеОтбора;
Ниже перечислены аргументы инструкции UPDATE:
Элемент | Описание |
таблица | Имя таблицы, данные в которой следует изменить. |
новоеЗначение | Выражение, определяющее значение, которое должно быть вставлено в указанное поле обновленных записей. |
условиеОтбора | Выражение, отбирающее записи, которые должны быть изменены. При выполнении этой инструкции будут изменены только записи, удовлетворяющие указанному условию. |
Дополнительные сведения
Инструкцию UPDATE особенно удобно использовать для изменения сразу многих записей или в том случае, если записи, подлежащие изменению, находятся в разных таблицах.
Одновременно можно изменить значения нескольких полей. Следующая инструкция SQL увеличивает стоимость заказа на 10 процентов, а стоимость доставки на 3 процента:
UPDATE Заказы
SET СуммаЗаказа = СуммаЗаказа * 1.1,
СтоимостьДоставки = СтоимостьДоставки * 1.03
WHERE СтранаПолучателя = 'Грузия';
Внимание!
- Инструкция UPDATE не приводит к созданию результирующего набора записей. Чтобы узнать, какие записи будут изменены, сначала просмотрите результаты запроса на выборку, использующего те же самые условия отбора, а затем выполните запрос на обновление записей.
- Регулярно выполняйте архивирование данных. При непреднамеренном обновлении записей, они могут быть восстановлены по резервной копии.
7.13.Инструкция DELETE
Создает запрос на удаление записей, предназначенный для удаления записей из одной или нескольких таблиц, перечисленных в предложении FROM, которые удовлетворяют предложению WHERE.
Синтаксис
DELETE [таблица.*]
FROM таблица
WHERE условиеОтбора
Ниже перечислены аргументы инструкции DELETE:
Элемент | Описание |
таблица | Необязательное имя таблицы, из которой удаляются записи. |
таблица | Имя таблицы, из которой удаляются записи. |
условиеОтбора | Выражение, определяющее удаляемые записи. |
Дополнительные сведения
Инструкция DELETE особенно удобна для удаления большого количества записей.
Чтобы удалить из базы данных целую таблицу, можно использовать метод Execute вместе с инструкцией DROP. Однако при таком удалении таблицы теряется ее структура. Если же применить инструкцию DELETE, удаляются только данные. При этом сохраняются структура таблицы и все остальные ее свойства, такие как атрибуты полей и индексы.
Инструкцию DELETE можно использовать для удаления записей из таблиц, связанных отношением "один-ко-многим" с другими таблицами. Операции каскадного удаления приводят к удалению записей из таблиц, находящихся на стороне отношения "многие", когда в запросе удаляется соответствующая им запись на стороне "один". Например, в отношении между таблицами "Клиенты" и "Заказы", таблица "Клиенты" расположена на стороне "один", а таблица "Заказы" на стороне "многие". Если разрешено каскадное удаление, то удаление записи из таблицы "Клиенты" приводит к удалению соответствующих записей из таблицы "Заказы".
Запрос на удаление удаляет записи целиком, а не только содержимое указанных полей. Чтобы удалить данные в конкретном поле, следует создать запрос на обновление, который заменяет имеющиеся значения на значения Null.
Внимание!
- Нельзя восстановить записи, удаленные с помощью запроса на удаление. Чтобы узнать, какие записи будут удалены, просмотрите сначала результаты запроса на выборку, использующего те же самые условие отбора, а затем выполните запрос на удаление.
- Регулярно выполняйте резервирование данных. Непреднамеренно удаленные записи могут быть восстановлены по резервной копии.
7.14.Операция INNER JOIN
Объединяет записи из двух таблиц, если связующие поля этих таблиц содержат одинаковые значения.
Синтаксис
FROM таблица_1 INNER JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2
Ниже перечислены аргументы операции INNER JOIN:
Элемент | Описание |
таблица_1, таблица_2 | Имена таблиц, записи которых подлежат объединению. |
поле_1, поле_2 | Имена объединяемых полей. Если эти поля не являются числовыми, то должны иметь одинаковый тип данных и содержать данные одного рода, однако, поля могут иметь разные имена. |
оператор | Любой оператор сравнения: "=," "<," ">," "<=," ">=," или "<>". |
Дополнительные сведения
Операцию INNER JOIN можно использовать в любом предложении FROM. Это самые обычные типы связывания. Они объединяют записи двух таблиц, если связующие поля обеих таблиц содержат одинаковые значения.
Операцию INNER JOIN можно использовать с таблицами "Отделы" и "Сотрудники" для отбора всех сотрудников каждого отдела. Для отбора же всех отделов (в том числе тех, в которых нет ни одного сотрудника) или всех сотрудников (в том числе тех, которые не приписаны ни к какому отделу) следует использовать операцию LEFT JOIN или RIGHT JOIN, которая создает внешнее объединение.
Попытка объединить поля Memo или объекта ActiveX приведет к возникновению ошибки.
Допускается объединение двух числовых полей подобных типов, например, поле счетчика и поля с типом "Длинное целое". Однако нельзя объединить типы полей "С плавающей точкой (4 байт)" и "С плавающей точкой (8 байт)".
Следующая инструкция SQL объединяет таблицы "Типы" и "Товары" по полю "КодТипа":
SELECT Категория, Марка
FROM Типы INNER JOIN Товары
ON Типы.КодТипа = Товары.КодТипа;
В предыдущем примере поле "КодТипа" используется для объединения таблиц, однако, оно не включается в результат выполнения запроса, поскольку не включено в инструкцию SELECT. Чтобы включить связующее поле (в данном случае поле Типы.КодТипа) в результат выполнения запроса, следует включить имя этого поля в инструкцию SELECT.
Чтобы связать несколько предложений ON в инструкции JOIN, используйте следующий синтаксис:
SELECT поля
FROM таблица_1 INNER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_1 AND
ON таблица_1.поле_2 оператор таблица_2.поле_2) OR
ON таблица_1.поле_3 оператор таблица_2.поле_3)];
Операции JOIN могут быть вложенными; в таком случае используйте следующий синтаксис:
SELECT поля
FROM таблица_1 INNER JOIN
(таблица_2 INNER JOIN [( ]таблица_3
[INNER JOIN [( ]таблица_X [INNER JOIN ...)]
ON таблица_3.поле_3 оператор таблица_X.поле_X)]
ON таблица_2.поле_2 оператор таблица_3.поле_3)
ON таблица_1.поле_1 оператор таблица_2.поле_2;
Операции LEFT JOIN или RIGHT JOIN могут быть вложены в операцию INNER JOIN, но операция INNER JOIN не может быть вложена в LEFT JOIN или RIGHT JOIN.