Изменение структуры базы данных при помощи DDL

В Jet реализованы нижеследующие команды практически только для базы MS Access.

Оператор Create Table создает новую таблицу. Для каждого столбца задается тип данных, для текстового типа задается длина. Создавать таблицы можно в базах данных только некоторых, поддерживаемых провайдером форматах. В команде указывается имя таблицы, далее поля, причем для каждого поля может задаваться первичный или внешний ключ, в конце располагаются так называемые «ограничения» или ключи для всей таблицы. В разделе ключей (ограничений) может задаваться одно из значений Primary Key, Unique, Reference.

CREATE TABLE Человек

(Код LONG CONSTRAINT Код PRIMARY KEY,

Фамилия CHAR(15), Имя CHAR (20) ,

Отчество CHAR (20), Датарождения DATETIME,

CONSTRAINT Человек

REFERENCE (Фамили, Имя,Отчество))

Оператор Create Index отсутствует в стандарте, но есть в диалекте MS Access. Оператор создает индекс для существующей таблицы. Для создаваемого индекса указывается уникальность (можно дописать Unique). Индексу дается имя, затем имя таблицы, для которой создается индекс, в скобках имена полей, по которым строится ключевое выражение, далее указывается PRIMARY или DISALLOWNULL или IGNORENULL.

CREATE INDEX ДатаР ON Человек (Код) WITH DISALLOW NULL

Оператор Alter Table изменяет существующую таблицу, добавляя или удаляя поле, добавляя или удаляя ключи. Поэтому существует несколько видов этого оператора.

ALTER TABLE Человек ADD COLUMN Телефон TEXT(6), СотТелеф TEXT(10)

ALTER TABLE Человек DROP COLUMN Телефон

ALTER TABLE Человек ADD CONSTRAINT СотТелеф UNIQUE (СотТелеф)

ALTER TABLE Человек DROP CONSTRAINT Телефон

Оператор Drop позволяет удалять таблицу, индекс из таблицы, хранимую процедуру, запрос.

DROP TABLE Человек

DROP INDEX Человек ON Человек

DROP PROCEDURE Ветеран

DROP VIEW Молодежь

Выполнение команд изменения структуры, изменения базы данных

Выражения на SQL можно давать параметром методу Open объекта RecordSet, т.к. результат такого запроса – набор записей.

Выражения на DDL – команды, не формирующие набор записей, поэтому их можно выполнить по-другому: при помощи метода Execute объекта Command.

Dim cmd As New ADODB.Command

cmd.ActiveConnection = adoconn 'ранее установленное соединение

cmd.CommandText = "CREATE TABLE Strnakl (Tovar LONG, Kvo LONG DEFAULT 1)"

cmd.Execute

Расширения Jet 4.0 ANSI-92

В состав MS Access 2000 и выше включен драйвер Jet 4.0, поддерживающий стандарт ANSI-92. Причем в пользовательском интерфейсе некоторые возможности стандарта не реализованы, поэтому вы можете ими воспользоваться, написав программный код.

В операторе CREATE TABLE можно использовать директиву «DEFAULT значение», следующую за именем поля. Тогда любое добавление строки в эту таблицу вызовет присваивание указанному полю заданного по умолчанию значения. В примере показано, что по умолчанию количество отпускаемого товара устанавливается в 1.

Dim cmd As New ADODB.Command

cmd.ActiveConnection = adoconn 'ранее установленное соединение

cmd.CommandText = _

"CREATE TABLE Strnakl (Tovar LONG, Kvo LONG DEFAULT 1)"

cmd.Execute

????

Доступ к базам данных.

База данных – это один или несколько файлов сложной структуры, форматы которых заданы разработчиками. Знания форматов файлов, вообще говоря, достаточно для того чтобы организовать доступ к данным (чтение, модификация). Программы, осуществляющие такой доступ, раньше называли драйверами, сейчас чаще можете услышать слово «провайдер». Пару «программа – база данных» часто называют источником данных.

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

Таким образом, для реализации клиентского приложения, работающего с одной или несколькими базами данных, необходимо сначала создать источники данных, т.е. связать определенный драйвер с конкретной базой данных. Последовательность выполняемых при этом действий для разных драйверов может быть различной (об этом позже). Затем необходимо включить в проект несколько объектов, реализующих доступ и показ данных, связать эти объекты с источниками данных. Связь объектов с источниками может быть реализована и в процессе разработки клиентского приложения в редакторе, и в процессе работы клиентского приложения. Набор возможностей клиентского приложения ограничен предоставляемой объектами доступа и драйверами функциональностью.

Описанная схема подходит для работы как с локальной базой данных, так и с удаленной. При таком доступе к данным наличия СУБД ни на компьютере клиента, ни на компьютере сервера данных (там, где находится файл базы) не требуется. Но разработчики той или иной СУБД прекрасно знают особенности своих форматов, разрабатывая СУБД, они придумали интересные и эффективные алгоритмы работы с данными, поэтому было бы странным не воспользоваться этим. Так Microsoft предлагает так называемое ядро Jet, которое можно рассматривать как некий набор функций СУБД без пользовательского интерфейса. Соответственно есть драйверы, которые могут работать с файлами базы через ядро Jet.