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 (Рік)

  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. На вкладці Конструктор у групі Результати натисніть кнопку Запуск.

Припустімо, що через деякий час у полі Умова є багато схожих значень, які мають бути однаковими. Наприклад, деякі автомобілі мають умову значення бідних , а інші мають цінність погано.

Примітка.: Якщо потрібно виконати решту процедур, додайте підроблені дані до таблиці Cars, створеної в попередніх кроках.

Після очищення значень, щоб вони були узгодженішими, можна створити таблицю з іменем "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:

    ВСТАВИТИ В CarCondition SELECT DISTINCT Умова ВІД автомобілів;

    Примітка.: Інструкція SQL на цьому кроці – це запит на додавання. На відміну від запиту визначення даних, запит на додавання закінчується крапкою з комою.

  7. На вкладці Конструктор у групі Результати натисніть кнопку Запуск.

Створення зв'язку за допомогою обмеження

Щоб будь-яке нове значення, вставлене в поле Умова таблиці "Автомобілі", відповідало значенню поля "Умова" в таблиці "Умова", можна створити зв'язок між "CarCondition" і "Автомобілі" в полі "Умова", виконавши такі дії:

  1. На вкладці Створити в групі Макроси та код натисніть кнопку Конструктор запитів.

  2. На вкладці Конструктор у групі Тип запиту натисніть кнопку Визначення даних.

    Сітку макета приховано, і з'явиться вкладка об'єкта в режимі SQL.

  3. Введіть таку інструкцію SQL:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Condition)

  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. Припустімо, що два записи в таблиці "Автомобілі" не мають однакового набору значень для "Ім'я", "Рік", "Умова" та "Ціна". Ви можете створити обмеження UNIQUE, яке застосовується до цих полів, виконавши таку процедуру:

  1. На вкладці Створити в групі Макроси та код натисніть кнопку Конструктор запитів.

  2. На вкладці Конструктор у групі Тип запиту натисніть кнопку Визначення даних.

    Сітку макета приховано, і з'явиться вкладка об'єкта в режимі SQL.

  3. Введіть таку інструкцію SQL:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (назва, рік, умова, ціна)

  4. На вкладці Конструктор у групі Результати натисніть кнопку Запуск.

На початок сторінки

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.