Диго С.М. Базы данных проектирование и использование (1084447), страница 52
Текст из файла (страница 52)
UPDATE таблица
SET новоеЗначение
WHERE условиеОтбора
Если «условиеОтбора » не задано, то обновляться будут все записи таблицы. При использовании условия отбора, чтобы убедиться, что будут изменены именно требуемые записи, рекомендуется сначала выполнить запрос на выборку, использующий те же самые условия отбора, а затем выполнить запрос на обновление записей.
Запрос
UPDATE сотрудник SET оклад =оклад*1,2;
увеличит оклады всех сотрудников на 20%.
Одновременно можно изменить значения нескольких полей записи. В этом случае выражения во фразе SET перечисляются через запятую:
UPDATE Заказы
SET СуммаЗаказа = СуммаЗаказа * 1.1,
СтоимостьДоставки = СтоимостьДоставки * 1.03
WHERE СтранаПолучателя = "Литва";
В рассмотренных выше примерах изменения затрагивали множество записей, а новые значения получались путем вычисления. Изменения могут касаться и одной конкретной записи, а новое значение может быть задано как константа. Например, если сотрудница (Код_ сотрудника=25) вышла замуж и сменила фамилию, то соответствующий запрос может выглядеть следующим образом:
UPDATE сотрудник
SET Фамилия = "Жукова", [семейное положение] = "замужем"
WHERE Код_сотрудника=25;
Имя поля [семейное положение] взято в квадратные скобки в связи с тем, что поле содержит пробел в имени, а для SQL это недопустимо.
В принципе запрос на корректировку может затрагивать несколько связанных таблиц. Например, если мы хотим увеличить зарплату сотрудников, имеющих детей, на 20%, то запрос будет выглядеть следующим образом:
UPDATE DISTINCTROW сотрудник INNER JOIN дети
ON сотрудник.Код_сотрудника = дети.Код_сотрудника
SET сотрудник.Оклад = [сотрудник]![Оклад]*1.2;
Запрос
UPDATE сотрудник INNER JOIN дети
ON сотрудник.Код_сотрудника = дети.Код_сотрудника
SET сотрудник.Оклад = [сотрудник]![Оклад]*1.2;
приведет к увеличению зарплаты на 20% за каждого из детей.
Записи, измененные с помощью запроса на обновление, часто бывает невозможно восстановить. Поэтому перед выполнением запросов на обновление рекомендуется создавать резервную копию.
Удаление записей
Запрос на удаление записей предназначен для удаления записей из одной (или нескольких взаимосвязанных) таблицы. Для выполнения таких действий используется инструкция DELETE, имеющая синтаксис
DELETE [таблица*]
FROM таблица
WHERE условиеОтбора
Указывать имя таблицы во фразе DELETE необязательно. Если воспользоваться QBE в качестве построителя, то во фразе DELETE перечисляются все поля, которые указываются в условии запроса. Например, запрос на удаление записи, относящейся к аспиранту Сидорову, будет выглядеть следующим образом:
DELETE аспирант.ФИО
FROM аспирант
WHERE (((аспирант.ФИО)="Сидоров"));
Но лучше не использовать такую форму записи, поскольку она, во-первых, может ввести в заблуждение относительно того, что же удаляется из таблицы, и, во-вторых, загромождает команду, никак не влияя на ее результат. Поэтому лучше эту команду записать следующим образаом:
DELETE
FROM аспирант
WHERE ФИО="Сидоров";
Запрос на удаление записей из нескольких таблиц выглял внешне как удаление из одной таблицы. Например, запрос
DELETE
FROM сотрудник
WHERE сотрудник.Должность="стажер";
удалит записи не только из таблицы «Сотрудник», но и из связанны;, с ней таблиц, например из таблицы «Дети», если при задании связи между таблицами задано ограничение связи и определено каскадное удаление записей.
7.9.4. Запрос к серверу
Запрос к серверу SQL - это запрос, который используется для прямой отправки команд на сервер базы данных SQL (например, Microsoft SQL Server). Запросы к серверу позволяют непосредственно работать с таблицами на сервере вместо того, чтобы присоединять их. Запросы к серверу используются для выполнения запросов на языке SQL и системных команд, написанных на варианте языка SQL, который поддерживается на конкретном сервере.
Если запрос к серверу возвращает записи, то они входят в статический набор записей.
Для создания запроса к серверу следует в диалоговом окне Новый запрос выбрать режим Конструктор и щелкнуть по кнопке ОК. Далее в диалоговом окне Добавление таблицы, не добавляя таблицы или запросы, щелкнуть по кнопке Закрыть. Затем в меню Запрос необходимо выбрать команду Запрос SQL и подкоманду Запрос к серверу, открыть окно свойств запроса и указать в свойстве «Строка подключения ODBC (ODBCConnectStr)» сведения, необходимые для подключения к внешней базе данных. Строку подключения можно ввести самостоятельно или, щелкнув по кнопке Построить, ввести данные о сервере, к которому необходимо подключиться.
В ответ на приглашение сохранить пароль в строке подключения щелкните по кнопке Да, если требуется сохранить в строке подключения пароль и имя.
Если запрос не принадлежит к типу запросов, в которых возвращаются записи, выберите для свойства «Возврат записей (Returns-Records)» значение Нет.
Введите инструкцию SQL в окно запроса к серверу.
За сведениями о синтаксисе запроса следует обращаться к документации сервера базы данных SQL, на который посылается запрос.
При необходимости Microsoft Access выведет приглашение ввести сведения, требуемые для подключения к базе данных на сервере SQL.
На это следует обратить внимание
-
Стандарт SQL - это эталон, к которому следует стремиться при создании СУБД.
-
Ни одна СУБД не реализует полностью все возможности стандарта.
-
Необходимо детально изучить диалект SQL той СУБД, в среде которой вы работаете.
-
Особенно внимательно к особенностям реализации SQL следует относиться при работе в гетерогенной среде.
-
SQL не является функционально полным языком. Как правило, он используется совместно с каким-либо включающим языком.
Контрольные вопросы
-
Какие объекты могут быть созданы средствами языка SQL?
-
Какой командой может быть создана таблица? Напишите формат этой команды.
-
Какие типы данных допустимы в SQL?
-
Какие ограничения и каким способом можно задать при описании таблиц в SQL?
-
Можно ли создать таблицы SQL, не пользуясь командой CREATE? Если да, то как это можно сделать?
-
Какой командой можно удалить таблицу? Напишите формат этой команды.
-
Что происходит при удалении таблицы с объектами, связанными с этой таблицей?
-
Какой оператор используется для ввода новых данных в таблицу? Напишите формат этого оператора.
-
Как будет выглядеть оператор команды INSERT при вводе в таблицу значений не всех колонок?
-
Как будет выглядеть формат оператора INSERT при вводе в таблицу значений всех колонок в том порядке, в котором они заданы при описании таблицы?
-
Как можно добавить в таблицу данные из другой таблицы? Какие условия должны быть выполнены при добавлении записей из другой таблицы?
-
Какой оператор используется для корректировки значений отдельных колонок таблицы? Напишите формат этого оператора.
-
Можно ли задать корректировку всех значений определенной колонки таблицы? Если да, то как это можно сделать?
-
Как можно удалить заданную строку в таблице? Напишите формат соответствующего оператора.
-
Что произойдет, если в операторе DELETE не будет задана фраза WHERE?
-
Напишите полный формат оператора SELECT.
-
Какие предложения являются обязательными в операторе SELECT?
-
Как можно задать состав колонок, выводимых в ответ?
-
Как можно вывести в ответ значения вычисляемых колонок?
-
Какие имена будут иметь вычисляемые колонки? Как можно изменить имя выводимой колонки?
-
Как можно коротко указать, что в ответ должны быть выведены значения всех колонок таблицы?
-
Что означает параметр ALL в предложении SELECT?
-
Что означает параметр DISTINCT в предложении SELECT?
-
Какие агрегирующие функции могут быть использованы в SQL?
-
Могут ли в предложении SELECT использоваться агрегирующие функции? константы?
-
В каких предложениях оператора SELECT могут использоваться агрегирующие функции?
-
В каком предложении оператора SELECT указывается, из каких таблиц должны извлекаться данные?
-
Назовите все известные вам способы задания совместной обработки нескольких таблиц.
-
Каково назначение фразы WHERE в операторе SELECT?
-
Назовите все известные вам способы, которыми можно задать выбор значений по заданному диапазону.
-
С какой целью используется предикат LIKE? для каких колонок?
-
Что называется вложенным запросом? Как он реализуется?
-
В каких случаях надо использовать предложение GROUP BY в команде SELECT?
-
Как связаны между собой предложения SELECT и GROUP BY команды SELECT?
-
Как связано между собой использование предложения GROUP BY и агрегирующих функций?
-
Каково назначение фразы HAVING?
-
Могут ли в команде SELECT одновременно использоваться предложения WHERE и HAVING?
-
Как можно задать упорядочение данных в ответе?
-
Как связаны между собой предложения SELECT и ORDER BY в операторе SELECT?
-
Как можно выполнить соединение нескольких таблиц в SQL?
-
Как можно выполнить объединение нескольких таблиц в SQL?
-
Какие ограничения накладываются на операторы SELECT, результаты которых объединяются?
-
Как можно запомнить результаты выполнения запросов?
-
Какие виды таблиц различают в SQL?
-
Что такое «представление»?
-
Как можно создать представление? Напишите формат соответствующего оператора.
-
С какой целью используются представления?
-
Какие представления являются обновляемыми?
-
Что представляют собой курсоры? Как они создаются? В каких случаях и для каких целей используются?
-
Какие отличия имеет MS Jet Access SQL от стандарта ANSI?
Глава 8 СОЗДАНИЕ ЭКРАННЫХ ФОРМ И СТРАНИЦ ДОСТУПА
8.1. Понятие, классификация и роль экранных форм
Ввод и просмотр данных в режиме таблицы имеет много очевидных недостатков. Поэтому, как правило, для удобства пользователей создаются экранные формы, которые позволяют рационально расположить данные на экране, использовать разнообразные элементы оформления, обеспечивать возможности специфических проверок при вводе данных. Во многих СУБД имеются возможности использования Мастеров, автоматизирующих процесс создания экранных форм. Генераторы экранных форм являются компонентом языков 4-го поколения. Использование генераторов экранных форм позволяет практически без программирования создавать довольно сложные системы обработки данных с хорошим пользовательским интерфейсом.
Экранные формы уже давно применяются в практике создания БнД. Роль форм очень сильно возросла и изменилась в последнее время. Сейчас экранные формы используются не только для ввода данных в базу данных, корректировки данных, а также позаписного вывода данных, что является их традиционными сферами применения, но и для реализации просмотров БД по определенным условиям, и даже создания «заставок» и меню (так называемые несвязанные формы, т.е. формы, не связанные с какой-либо таблицей).9
Если первоначально формы определялись только как способ отображения одной записи из БД, то сейчас в формах допускается наличие табличной (многострочной) части; более того, допускается наличие множества «динамических» частей, возможно, из разных БД.
Тем не менее в некоторых СУБД «форма» так и сохранила свое назначение для позаписной обработки БД.
Понятие «форма» и инструменты ее создания используются сейчас не только в СУБД, но и в других классах программных систем, например в табличных процессорах.
Общепринятой в настоящее время является практика, когда в экранной форме помимо информационных присутствуют и управляющие (controls) элементы.10
Несмотря на наличие возможности создавать несвязанные формы, чаще всего формы все-таки связаны с таблицами БД (одной или несколькими взаимосвязанными). Кроме того, экранные формы могут создаваться на основе предварительно сформулированных запросов; для таких форм их связь с таблицами является опосредованной.
Экранные формы можно классифицировать (рис. 8.1) по ряду признаков.
-
По характеру связи с таблицами различают связанные и не связанные экранные формы. Если форма отражает какие-либо данные из таблиц баз данных, она называется связанной (или присоединенной), в противном случае - несвязанной.
По числу используемых таблиц выделяют однотабличные и многотабличные формы.
По характеру соподчинения отдельных частей многотабличные формы классифицируются как простые, иерархические и синхронизированные. Простые многотабличные формы хотя и содержат данные из разных таблиц, но не имеют в своем составе соподчиненных частей. Такие формы могут возникнуть, например, когда они базируются на таблицах, связанных друг с другом отношением 1:1, или когда в форму выводятся данные из таблиц, связанных друг с другом отношением 1 :М, но в форму в основном выводятся данные, находящиеся со стороны «М», а из таблицы, находящейся со стороны «1», берутся какие-то, обычно справочные, данные, т.е. ведущим здесь как бы является таблица, находящаяся со стороны «М». Но наиболее естественной для многотабличных форм все-таки является ситуация, когда ведущая таблица находится на стороне «1». В этом случае создаются иерархические формы, когда в форму в ее общей части выводятся данные из одной записи ведущей таблицы, а в табличной части - множество связанных с ней записей ведомого (зависимого) файла. Иногда (по разным причинам) бывает нецелесообразно выводить в одну иерархическую форму данные и из основного, и из зависимого файла, и данные из зависимого файла выводятся в отдельной «зоне», которая открывается «при нажатии» соответствующей управляющей кнопки. Такие формы называются синхронизированными.
-
По выполняемым функциям различают формы ввода, вывода, управляющие, смешанные. Назначение каждого вида этих форм ясно из их названия. Следует обратить внимание на то, что даже в случае, если формы для ввода и вывода полностью совпадают по своему внешнему виду, иногда целесообразно их выполнить как самостоятельные формы в целях обеспечения безопасности данных.
-
По распределению данных по экранам (страницам) формы делятся на одностраничные и многостраничные; одной из разновидностей многостраничных форм можно считать формы с вкладками.
-
По способу реализации экранные формы могут быть всплывающими и невсплывающими. Всплывающая форма располагается поверх других открытых форм, даже если активной является другая форма. Всплывающая форма может быть немодальной или модальной. Если всплывающая форма - модальная, пользователь имеет возможность получить доступ к другим объектам и командам меню, пока форма открыта. Если всплывающая форма является немодальной, нельзя получить доступ к любым другим объектам или командам меню, пока форма открыта. Пользователь должен выполнить какое-либо действие, чтобы фокус был переключен на другую форму (или окно).
-
По форме представления информации экранные формы могут содержать символьную информацию, деловую графику, информацию, представленную в мультимедийной форме.
Например, в БД, хранящей информацию о животных, наряду с описанием каждого вида может выводиться изображение животного и воспроизводиться издаваемый им звук.