Создание и изменение таблиц или индексов с помощью запроса определения данных

Важно :  Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

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

В этой статье описаны запросы определения данных и создание таблиц, ограничений, индексов и связей с их помощью. Кроме того, в статье приведены рекомендации по использованию таких запросов.

Примечание : Эти процедуры нельзя использовать в веб-базе данных.

В этой статье

Общие сведения

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

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

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

Общие сведения

В отличие от других запросов, запросы определения данных не возвращают данные, а используются для создания, изменения и удаления объектов базы данных с помощью языка описания данных (Data Definition Language, DDL).

Примечание : Язык DDL является частью языка SQL.

Запросы определения данных бывают очень удобны. Например, с их помощью можно регулярно удалять и повторно создавать части схемы базы данных. Использовать запросы DDL имеет смысл для тех пользователей, которые знакомы с инструкциями 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 знака. Чтобы составить запрос для создания этой таблицы, выполните указанные ниже действия.

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

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

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

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

  2. Закройте диалоговое окно Добавление таблицы.

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

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

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

    СОЗДАНИЕ ТАБЛИЦЫ автомобилей (имя TEXT(30), год TEXT(4), ВАЛЮТЫ цена)

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

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

Для изменения таблицы используется команда 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. Закройте диалоговое окно Добавление таблицы.

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

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

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

    Инструкции ALTER ТАБЛИЦЫ автомобилей добавить СТОЛБЕЦ условие TEXT(10)

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

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

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

Для создания индекса существующей таблицы используется команда 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 DISALLOW NULL указывает, что проиндексированное поле должно содержать некоторое значение (т. е. запрещает использование значений NULL).

Предположим, есть таблица Cars (автомобили) с полями для хранения марки, года выпуска, цены и состояния подержанных автомобилей, которые планируется приобрести. Также предположим, что таблица стала слишком большой и что в запросах часто используется поле года. Чтобы такие запросы быстрее возвращали результаты, можно создать индекс по полю Year (год). Для этого выполните указанные ниже действия.

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

  2. Закройте диалоговое окно Добавление таблицы.

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

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

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

    СОЗДАНИЕ ИНДЕКСА д YearIndex автомобилей (год)

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

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

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

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

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

Создать ограничение можно с помощью команды CREATE TABLE или ALTER TABLE с предложением CONSTRAINT. Есть два вида предложения 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}]}

Предположим, есть таблица Cars с полями для хранения марки, года выпуска, цены и состояния подержанных автомобилей, которые планируется приобрести. Также предположим, что пользователь часто забывает ввести значение состояния автомобиля, хотя эти сведения необходимы. Чтобы запретить оставлять поле состояния пустым, можно создать ограничение для него. Для этого выполните указанные ниже действия.

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

  2. Закройте диалоговое окно Добавление таблицы.

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

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

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

    Инструкции ALTER ТАБЛИЦЫ автомобилей ALTER СТОЛБЦА условие ТЕКСТ ОГРАНИЧЕНИЕ ConditionRequired NOT NULL

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

Предположим теперь, что через некоторое время выясняется, что поле Condition (состояние) содержит много похожих значений, которые должны быть одинаковыми. Например, есть автомобили с состоянием poor (плохое) и состоянием bad (неудовлетворительное).

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

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

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

  2. Закройте диалоговое окно Добавление таблицы.

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

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

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

    СОЗДАНИЕ ТАБЛИЦЫ CarCondition (условие TEXT(10))

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

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

    Инструкции ALTER CarCondition ALTER СТОЛБЦА условие ТЕКСТ ОГРАНИЧЕНИЕ CarConditionPK ПЕРВИЧНОГО КЛЮЧА ТАБЛИЦЫ

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

    INSERT INTO SELECT ключевое слово DISTINCT CarCondition условие ИЗ автомобилей;

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

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

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

Чтобы указать, что все новые значения, вставляемые в поле Condition таблицы Cars, должны совпадать с одним из значений в поле Condition таблицы CarCondition, создайте связь между таблицами CarCondition и Cars по полю Condition, выполнив указанные ниже действия.

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

  2. Закройте диалоговое окно Добавление таблицы.

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

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

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

    Инструкции ALTER ТАБЛИЦЫ автомобилей ALTER СТОЛБЦА условие ТЕКСТ ОГРАНИЧЕНИЕ FKeyCondition ССЫЛКИ CarCondition (состояние)

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

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

Предложение 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. Предположим, что необходимо обеспечить, чтобы в двух различных записях в таблице Cars не совпадали сочетания значений марки, года, состояния и цены. С этой целью можно создать для этих полей ограничение UNIQUE, выполнив указанные ниже действия.

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

  2. Закройте диалоговое окно Добавление таблицы.

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

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

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

    ИЗМЕНИТЬ ТАБЛИЦУ автомобилей добавить ОГРАНИЧЕНИЕ NoDupes УНИКАЛЬНЫХ (название, год, условия, цена)

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

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

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

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×