- •Краткое введение в субд - базы данных как аппарат моделирования.
- •Язык sql FoxPro 5.0
- •Создание бд
- •Модификация структуры бд
- •Модификация содержимого таблиц
- •Запросы к бд - команда select. Представления
- •Примерные типы заданий.
- •Тема 3. Задачи-многоходовки. Представления и транзакции.
- •Тема 4. Проектирование "реальной" бд.
Модификация структуры бд
УДАЛЕНИЕ ТАБЛИЦЫ
DROP TABLE Имя_таблицы | Имя_файла | ? [RECYCLE]
удаляет таблицу из текущей БД; опция ? выдает диалоговое окно выбора таблицы; подопция RECYCLE указывает на то, что удаленную таблицу нужно поместить в "корзину" ОС Windows c возможностью последующего восстановления, в противном случае восстановление невозможно.
УДАЛЕНИЕ ПРЕДСТАВЛЕНИЯ
DROP VIEW имя_представления
МОДИФИКАЦИЯ СТРУКТУРЫ ТАБЛИЦЫ
ALTER TABLE Имя_таблицы
ADD | ALTER [COLUMN] Имя_поля
Тип_поля [(Ширина_поля [, Точность])]
[NULL | NOT NULL]
[CHECK Правило_корректности_поля
[ERROR Текст_сообщения_о_нарушении_правила]]
[DEFAULT Значение_по_умолчанию]
[PRIMARY KEY | UNIQUE]
[REFERENCES Имя_родительской_таблицы
[TAG Тег(имя)_индекса]]
или
ALTER TABLE Имя_таблицы
ALTER [COLUMN] Имя_поля
[NULL | NOT NULL]
[SET DEFAULT Значение_по_умолчанию]
[SET CHECK Правило_корректности_поля
[ERROR Текст_сообщения_о_нарушении_правила]]
[DROP DEFAULT]
[DROP CHECK]
или
ALTER TABLE Имя_таблицы
[DROP [COLUMN] Имя_поля]
[SET CHECK Правило_корректности_поля
[ERROR Текст_сообщения_о_нарушении_правила]]
[DROP CHECK]
[ADD PRIMARY KEY Выражение_первичного_ключа
TAG Тег(имя)_индекса_первичного_ключа]
[DROP PRIMARY KEY]
[ADD UNIQUE Выражение [TAG Тег_индекса]]
[DROP UNIQUE TAG Тег_индекса]
[ADD FOREIGN KEY [Выражение_внешнего_ключа]
TAG Тег_индекса
REFERENCES Имя_родительской_таблицы
[TAG Тег_родительского_индекса]]
[DROP FOREIGN KEY TAG Тег_индекса]
[RENAME COLUMN Старое_имя_поля TO Новое_имя_поля]
Несмотря на устрашающий синтаксис, семантика команды ALTER TABLE легко выводится из пояснений к команде CREATE TABLE и значений английских слов ALTER - изменить, ADD - добавить, DROP - удалить, SET - положить равным, RENAME - переименовать.
Замечание. Пожалуй, единственным существенным упущением текущей версии FoxPro по сравнению с другими реализациями SQL является отсутствие команды создания пользовательского индекса Create Index (и, соответственно команды удаления индекса Drop Index). Правда, это упущение – чисто синтаксическое, поскольку имеется достаточно мощная команда-аналог самого FoxPro – а именно, команда Index (см.документацию).
Модификация содержимого таблиц
Добавление записи.
INSERT INTO имя_таблицы [(список_имен_полей])]
VALUES (список_выражений)
где
имя_таблицы - имя dbf-файла (возможно - с указанием пути) или алиас рабочей области; может быть задано строковым выражением;
если список имен полей задан, то он, очевидно, должен быть согласован по типу со списком выражений, задающим значения соответствующих полей в добавляемой записи; если список имен полей отсутствует, то, по умолчанию, подразумевается список имен всех полей таблицы. В любом случае, необъявленные значения полей либо берутся равным значению по умолчанию (см. опцию DEFAULT в команде CREATE TABLE), либо - равными NULL (если системная SET-переменная NULL имеет значение ON)
Замечания.
Текущая версия FoxPro не содержит второй стандартной формы команды - INSERT INTO имя_таблицы (команда SELECT), которая, впрочем легко реализуется - например с помощью цикла SCAN прохода по соответствующему команде выборки представлению или курсору (см. далее)
С другой стороны, FoxPro содержит свои собственные, достаточно многочисленные и часто - изощренные способы генерации записей - см., например APPEND, INSERT в справочной системе FoxPro.
Редактирование записей
UPDATE [Имя_базы_данных!]Имя_таблицы
SET Список выражений вида Имя_поля=Выражение
[WHERE Условие_обновления]
обновляет все указанные поля в заданной таблице значениями указанных выражений; при наличии опции WHERE, изменяются только записи, удовлетворяющие заданному условию фильтрации.
Логическое удаление записей
DELETE FROM [Имя_базы_данных!]Имя_таблицы
[WHERE Условие_удаления]
помечает записи [,удовлетворяющие заданному условию,] как удаленные.
Замечание. Как обычно в СУБД, логическое удаление записей не означает их фактического, т.е. физического удаления - производимого в FoxPro командой упаковки таблицы PACK; до выполнения последней помеченные как удаленные записи могут быть восстановлены командой RECALL. Помеченные, но фактически не удаленные записи могут включаться или не включаться в последующую обработку в зависимости от значения системной SET-переменной DELETED.
