Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Таблицы, ограничения, индексы и связи можно создавать и изменять в Access, создавая запросы определения данных в представлении SQL. В этой статье описаны запросы определения данных и их использование для создания таблиц, ограничений, индексов и связей. Эта статья также поможет вам решить, когда следует использовать запрос определения данных.

В этой статье

Обзор

В отличие от других запросов Access, запрос определения данных не извлекает данные. Вместо этого запрос определения данных использует язык определения данных для создания, изменения или удаления объектов базы данных.

Примечание: Язык определения данных (DDL) является частью языка структурированных запросов (SQL).

Запросы определения данных могут быть очень удобными. Вы можете регулярно удалять и повторно создавать части схемы базы данных, просто выполняя некоторые запросы. Рассмотрите возможность использования запроса определения данных, если вы знакомы с инструкциями SQL и планируете удалить и повторно создать определенные таблицы, ограничения, индексы или связи.

Предупреждение: Использование запросов определения данных для изменения объектов базы данных может быть рискованным, так как действия не сопровождаются диалоговым окном подтверждения. Если вы допустите ошибку, вы можете потерять данные или непреднамеренно изменить структуру таблицы. Будьте осторожны при использовании запроса определения данных для изменения объектов в базе данных. Если вы не несете ответственности за обслуживание используемой базы данных, перед выполнением запроса определения данных следует проконсультироваться с администратором базы данных.

Важно: Создайте резервную копию всех связанных таблиц перед выполнением запроса определения данных.

Ключевые слова DDL

Ключевое слово

Использование

CREATE

Создайте индекс или таблицу, которые еще не существуют.

ALTER

Изменение существующей таблицы или столбца.

DROP

Удалите существующую таблицу, столбец или ограничение.

ADD

Добавьте столбец или ограничение в таблицу.

COLUMN

Использование с ADD, ALTER или DROP

CONSTRAINT

Использование с ADD, ALTER или DROP

INDEX

Использование с CREATE

TABLE

Использование с ALTER, CREATE или DROP

К началу страницы

Создание или изменение таблицы

Чтобы создать таблицу, используйте команду CREATE TABLE. Команда CREATE TABLE имеет следующий синтаксис:

CREATE TABLE table_name  (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])

Единственными обязательными элементами команды CREATE TABLE являются сама команда CREATE TABLE и имя таблицы, но обычно требуется определить некоторые поля или другие аспекты таблицы. Рассмотрим этот простой пример.

Предположим, что вы хотите создать таблицу для хранения названия, года и цены на подержанные автомобили, которые вы планируете приобрести. Вы хотите разрешить до 30 символов для имени и 4 символа за год. Чтобы использовать запрос определения данных для создания таблицы, сделайте следующее:

Примечание: Сначала может потребоваться включить содержимое базы данных, чтобы выполнить запрос определения данных:

  • Нажмите на панели сообщений кнопку Включить содержимое.

Создание таблицы

  1. На вкладке Создание в группе Макросы & код щелкните Конструктор запросов.

  2. На вкладке Конструктор в группе Тип запроса щелкните Определение данных.

    Сетка конструктора скрыта, а также отображается вкладка объекта представления SQL.

  3. Введите следующую инструкцию SQL:

    CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Изменение таблицы

Чтобы изменить таблицу, используйте команду ALTER TABLE. Команду ALTER TABLE можно использовать для добавления, изменения или удаления (удаления) столбцов или ограничений. Команда ALTER TABLE имеет следующий синтаксис:

ALTER TABLE table_name predicate

где предикатом может быть любой из следующих:

ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Предположим, что вы хотите добавить текстовое поле из 10 символов для хранения сведений о состоянии каждого автомобиля. Здесь доступны перечисленные ниже возможности

  1. На вкладке Создание в группе Макросы & код щелкните Конструктор запросов.

  2. На вкладке Конструктор в группе Тип запроса щелкните Определение данных.

    Сетка конструктора скрыта, а также отображается вкладка объекта представления SQL.

  3. Введите следующую инструкцию SQL:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

К началу страницы

Создание индекса

Чтобы создать индекс в существующей таблице, используйте команду CREATE INDEX. Команда CREATE INDEX имеет следующий синтаксис:

CREATE [UNIQUE] INDEX index_name ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]

Единственными обязательными элементами являются команда CREATE INDEX, имя индекса, аргумент ON, имя таблицы, содержащей поля, которые нужно проиндексировать, и список полей, которые будут включены в индекс.

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

  • Аргумент WITH PRIMARY устанавливает индексированные поля или поля в качестве первичный ключ таблицы.

  • Аргумент WITH DISALLOW NULL приводит к тому, что индекс требует ввода значения для индексированного поля, то есть недопустимые значения NULL.

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

  1. На вкладке Создание в группе Макросы & код щелкните Конструктор запросов.

  2. На вкладке Конструктор в группе Тип запроса щелкните Определение данных.

    Сетка конструктора скрыта, а также отображается вкладка объекта представления SQL.

  3. Введите следующую инструкцию SQL:

    CREATE INDEX YearIndex ON Cars (Year)

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

К началу страницы

Создание ограничения или связи

Ограничение устанавливает логическое условие, которому должно соответствовать поле или сочетание полей при вставке значений. Например, ограничение UNIQUE не позволяет ограниченному полю принимать значение, которое будет дублировать существующее значение для поля.

Связь — это тип ограничения, который ссылается на значения поля или комбинации полей в другой таблице, чтобы определить, можно ли вставить значение в ограниченное поле или сочетание полей. Специальное ключевое слово не используется, чтобы указать, что ограничение является связью.

Чтобы создать ограничение, используйте предложение CONSTRAINT в команде CREATE TABLE или ALTER TABLE. Существует два типа предложений CONSTRAINT: одно для создания ограничения для одного поля, а другое — для создания ограничения на несколько полей.

Ограничения одного поля

Предложение CONSTRAINT с одним полем сразу же следует за определением поля, которое оно ограничивает, и имеет следующий синтаксис:

CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}

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

  1. На вкладке Создание в группе Макросы & код щелкните Конструктор запросов.

  2. На вкладке Конструктор в группе Тип запроса щелкните Определение данных.

    Сетка конструктора скрыта, а также отображается вкладка объекта представления SQL.

  3. Введите следующую инструкцию SQL:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Теперь предположим, что через некоторое время вы заметили, что в поле Условие есть много похожих значений, которые должны быть одинаковыми. Например, некоторые из автомобилей имеют условие значение плохого , а другие — значение плохого.

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

После очистки значений, чтобы они были более согласованными, можно создать таблицу с именем CarCondition с одним полем с именем Условие, которое содержит все значения, которые необходимо использовать для состояния автомобилей:

  1. На вкладке Создание в группе Макросы & код щелкните Конструктор запросов.

  2. На вкладке Конструктор в группе Тип запроса щелкните Определение данных.

    Сетка конструктора скрыта, а также отображается вкладка объекта представления SQL.

  3. Введите следующую инструкцию SQL:

    CREATE TABLE CarCondition (Condition TEXT(10))

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

  5. Создайте первичный ключ для таблицы с помощью инструкции ALTER TABLE:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Чтобы вставить значения из поля Условие таблицы Cars в новую таблицу CarCondition, введите следующий код SQL на вкладке объект представления SQL:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Примечание: Инструкция SQL на этом шаге является запрос на добавление. В отличие от запроса определения данных, запрос на добавление заканчивается точкой с запятой.

  7. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Создание связи с помощью ограничения

Чтобы требовать, чтобы любое новое значение, вставленное в поле Условие таблицы Cars, соответствовало значению поля Условие в таблице CarCondition, можно создать связь между CarCondition и Cars в поле Условие, выполнив следующую процедуру:

  1. На вкладке Создание в группе Макросы & код щелкните Конструктор запросов.

  2. На вкладке Конструктор в группе Тип запроса щелкните Определение данных.

    Сетка конструктора скрыта, а также отображается вкладка объекта представления SQL.

  3. Введите следующую инструкцию SQL:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Условие)

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Ограничения нескольких полей

Предложение CONSTRAINT с несколькими полями можно использовать только за пределами предложения определения поля и имеет следующий синтаксис:

CONSTRAINT constraint_name {PRIMARY KEY (pk_field1[, pk_field2[, ...]]) | UNIQUE (unique1[, unique2[, ...]]) | NOT NULL (notnull1[, notnull2[, ...]]) | FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]])   REFERENCES foreign_table   [(fk_field1[, fk_field2[, ...]])] | [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}

Рассмотрим еще один пример, в котором используется таблица Cars. Предположим, что вы хотите убедиться, что ни одна из двух записей в таблице Автомобили не содержит одинаковый набор значений для name, Year, Condition и Price. Вы можете создать ограничение UNIQUE, которое применяется к этим полям, используя следующую процедуру:

  1. На вкладке Создание в группе Макросы & код щелкните Конструктор запросов.

  2. На вкладке Конструктор в группе Тип запроса щелкните Определение данных.

    Сетка конструктора скрыта, а также отображается вкладка объекта представления SQL.

  3. Введите следующую инструкцию SQL:

    ALTER TABLE Автомобили ADD CONSTRAINT NoDupes UNIQUE (имя, год, условие, цена)

  4. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

К началу страницы

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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