Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Обновление нескольких таблиц

Читайте также:
  1. A. Когда необходимо рассчитать вероятность одновременного появления нескольких зависимых событий.
  2. Access. Для нумерации записей в таблице используется поле Счетчик
  3. DELETE FROM имя_таблицы.
  4. I.5. Основная идея электронных таблиц Excel
  5. INSERT [INTO] имя_таблицы DEFAULT VALUES
  6. n Сообщение об ошибках собираются в таблице ERROR_TABLE и передаются в функциональный модуль.
  7. А) возобновление производства в увеличивающемся размере
  8. Алгоритм решенеия ЗЛП с помощью сиплекс-таблиц
  9. Анализ и обобщение данных с помощью сводных таблиц и сводных диаграмм
  10. АНАЛИЗ ИЗДЕРЖЕК И ОПТИМИЗАЦИЯ ФУНКЦИОНИРОВАНИЯ ПРЕДПРИЯТИЯ В УСЛОВИЯ ОГРАНИЧЕННЫХ РЕСУРСОВ СРЕДСТВАМИ ЭЛЕКТРОННЫХ ТАБЛИЦ

Изменить номер продукта ПР = 13 на ПР = 20.

UPDATE Продукты UPDATE СоставSET ПР = 20 SET ПР = 20WHERE ПР = 13; WHERE ПР = 13;UPDATE Поставки UPDATE НаличиеSET ПР = 20 SET ПР = 20WHERE ПР = 13; WHERE ПР = 13;

К сожалению в единственным запросе невозможно обновить более одной таблицы, а так как код продукта входит в четыре таблицы, то пришлось выдать четыре сходных запроса. Это может привести к противоречию базы данных (нарушению целостности по ссылкам), поскольку после выполнения первого предложения таблицы Состав, Поставки и Наличие ссылаются на уже несуществующий продукт. База становится непротиворечивой только после выполнения четвертого запроса.

Создание таблиц с помощью SQL

Если Вы хотите воспользоваться компонентом TQuery, сначала поместите его на форму. После этого настройте свойство DatabaseName на нужный Вам алиас (если базы данных еще не существует, удобней создать ее в WISQL командой File|Create Database..., а затем уже настроить на нее новый алиас). После этого можно ввести SQL-предложение в свойство SQL. Для выполнения запроса, изменяющего структуру, вставляющего или обновляющего данные на сервере, нужно вызвать метод ExecSQL компонента TQuery. Для выполнения запроса, получающего данные с сервера (т.е. запроса, в котором основным является оператор SELECT), нужно вызвать метод Open компонента TQuery. Это связано с тем, что BDE при посылке запроса типа SELECT открывает так называемый курсор, с помощью которого осуществляется навигация по выборке данных (подробней об этом см. в уроке, посвященном TQuery).

Как показывает опыт, проще воспользоваться утилитой WISQL. Для этого в WISQL выберите команду File|Run an ISQL Script... и выберите файл, в котором записан ваш скрипт, создающий базу данных. После нажатия кнопки "OK" ваш скрипт будет выполнен, и в нижнее окно будет выведен протокол его работы.

Приведем упрощенный синтаксис SQL-предложения для создания таблицы на SQL-сервере InterBase (более полный синтаксис можно посмотреть в online-справочнике по SQL, поставляемом с локальным InterBase):

CREATE TABLE table (<col_def> [, <col_def> | <tconstraint> ...]);

где
table - имя создаваемой таблицы,
<col_def> - описание поля,
<tconstraint> - описание ограничений и/или ключей (квадратные скобки [] означают необязательность, вертикальная черта | означает "или").

Описание поля состоит из наименования поля и типа поля (или домена - см. урок 9), а также дополнительных ограничений, накладываемых на поле:

<col_def> = col {datatype | COMPUTED BY (<expr>) | domain} [DEFAULT {literal | NULL | USER}] [NOT NULL] [<col_constraint>] [COLLATE collation]

Здесь
col - имя поля;
datatype - любой правильный тип SQL-сервера (для InterBase такими типами являются - см. урок 11 - SMALLINT, INTEGER, FLOAT, DOUBLE PRECISION, DECIMAL, NUMERIC, DATE, CHAR, VARCHAR, NCHAR, BLOB), символьные типы могут иметь CHARACTER SET - набор символов, определяющий язык страны. Для русского языка следует задать набор символов WIN1251;
COMPUTED BY (<expr>) - определение вычисляемого на уровне сервера поля, где <expr> - правильное SQL-выражение, возвращающее единственное значение;
domain - имя домена (обобщенного типа), определенного в базе данных;
DEFAULT - конструкция, определяющая значение поля по умолчанию;
NOT NULL - конструкция, указывающая на то, что поле не может быть пустым;
COLLATE - предложение, определяющее порядок сортировки для выбранного набора символов (для поля типа BLOB не применяется). Русский набор символов WIN1251 имеет 2 порядка сортировки - WIN1251 и PXW_CYRL. Для правильной сортировки, включающей большие буквы, следует выбрать порядок PXW_CYRL.

Описание ограничений и/или ключей включает в себя предложения CONSTRAINT или предложения, описывающие уникальные поля, первичные, внешние ключи, а также ограничения CHECK (такие конструкции могут определяться как на уровне поля, так и на уровне таблицы в целом, если они затрагивают несколько полей):

<tconstraint> = [CONSTRAINT constraint<tconstraint_def>]<tconstraint>

Здесь

<tconstraint_def> = {{PRIMARY KEY | UNIQUE} (col[,col...]) | FOREIGN KEY (col [, col ...]) REFERENCES other_table | CHECK (<search_condition>)} search_condition ={<val> operator {<val> | (<select_one>)} | <val> [NOT] BETWEEN <val> AND <val> | <val> [NOT] LIKE <val> [ESCAPE <val>] | <val> [NOT] IN (<val> [, <val> ...] | <val> = {col [array_dim] | <constant> | <expr> | <functiont> | NULL | USER | RDB$DB_KEY } [COLLATE collation] <constant> = num | "string" | charsetname "string" <functiont> = {COUNT (* | [ALL] <val> | DISTINCT <val>) | SUM ([ALL] <val> | DISTINCT <val>) | AVG ([ALL] <val> | DISTINCT <val>) | MAX ([ALL] <val> | DISTINCT <val>) | MIN ([ALL] <val> | DISTINCT <val>) | CAST (<val> AS <datatype>) | UPPER (<val>) | GEN_ID (generator, <val>) } <operator> = {= | < | > |<= |>= | !< | !> | <> | !=}

<select_one> = выражение SELECT по одному полю, которое возвращает в точности одно значение.

Загрузка...

Приведенного неполного синтаксиса достаточно для большинства задач, решаемых в различных предметных областях. Проще всего синтаксис SQL можно понять из примеров. Поэтому мы приведем несколько примеров создания таблиц с помощью SQL.

Пример A: Простая таблица с конструкцией PRIMARY KEY на уровне поля

CREATE TABLE REGION ( REGION REGION_NAME NOT NULL PRIMARY KEY, POPULATION INTEGER NOT NULL);

Предполагается, что в базе данных определен домен REGION_NAME, например, следующим образом:

CREATE DOMAIN REGION_NAME AS VARCHAR(40) CHARACTER SET WIN1251 COLLATEPXW_CYRL;

Пример B: Таблица с предложением UNIQUE как на уровне поля, так и на уровне таблицы

CREATE TABLE GOODS ( MODEL SMALLINT NOT NULL UNIQUE, NAME CHAR(10) NOT NULL, ITEMID INTEGER NOT NULL, CONSTRAINT MOD_UNIQUEUNIQUE (NAME, ITEMID));

 


Дата добавления: 2014-12-20; просмотров: 5 | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2018 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав