- •Выборка данных
- •Оператор select
- •Выражения sql
- •Выражение from
- •Операции left join, right join
- •Операция inner join
- •Выражение in
- •Предикаты all, distinct, distinctrow, top
- •Объявление with owneraccess option
- •Выражение where
- •Операция Like
- •Операция In
- •Операция Between...And
- •Подзапрос
- •Выражение order by
- •Выражение group by
- •Выражение having
- •Оператор union
- •Оператор transform
- •Выражение procedure
- •Объявление parameters
- •Изменение данных
- •Оператор update
- •Оператор insert into
- •Оператор delete
- •Изменение структуры
- •Оператор select...Into
- •Оператор create table3
- •Выражение constraint4
- •Оператор alter table5
- •Оператор create index6
- •Оператор drop7
- •Агрегатные функции
- •Функция Count
- •Функция Avg
- •Функция Sum
- •Функции Var и VarP
- •Функции StDev и StDevP
- •Функции Min, Max
- •Функции First, Last
Оператор create index6
Создает новый индекс в существующей таблице. Формат
CREATE [ UNIQUE ] INDEX index ON table (field [ASC|DESC][, field [ASC|DESC], ...]) [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
Оператор CREATE INDEX имеет следующие части:
Часть |
Описание |
index |
Имя создаваемого индекса |
table |
Имя существующей таблицы, в которой создается индекс |
field |
Имя индексируемого поля/полей. Перечисляются в скобках после имени таблицы (одно для простого, несколько для составного). Если указано DESC – индексируется по убыванию, иначе по возрастанию |
Если значения поля/полей должны быть уникальны, используется служебное слово UNIQUE. В не обязательном выражении WITH указываются ограничения:
DISALLOW NULL – запретить значения Null в индексируемом поле/полях (обязательны для заполнения)
IGNORE NULL – исключить незаполненные поля из индексации
PRIMARY – использовать индекс как первичный ключ (индекс подразумевается уникальным, UNIQUE можно не указывать). При попытке создать в таблице второй первичный ключ происходит ошибка.
Можно использовать CREATE INDEX для создания псевдоиндекса в присоединенной таблице из ODBC-источника (например, SQL Server). Для этого не нужно разрешения или доступа к удаленному серверу, он не реагирует на создание псевдоиндекса. Формат оператора тот же. Это особенно полезно для таблиц, которые были бы «только для чтения» из-за отсутствия индекса.
Можно использовать ALTER TABLE для добавления индекса и ALTER TABLE или DROP для удаления индекса, созданного ALTER TABLE или CREATE INDEX.
Следующие запросы меняют таблицы в базе Northwind (если изменения нежелательны, нужно предварительно сделать копию). Запросы вводятся в SQL окне конструктора запросов, затем нужно выполнить запрос.
В таблице Employees создается индекс на основании полей Home Phone и Extension:
CREATE INDEX NewIndex ON Employees (HomePhone, Extension);
В таблице Customers создается уникальный индекс на основе поля CustomerID, поле обязательно для заполнения:
CREATE UNIQUE INDEX CustID ON Customers (CustomerID) WITH DISALLOW NULL;
Удалить созданный индекс можно оператором
DROP INDEX CustID ON Customers;
Его нельзя удалить в окне конструктора, пока не удалены связи таблицы Customers.
В следующем примере создается псевдоиндекс в присоединенной таблице OrderDetailsODBC
CREATE UNIQUE INDEX OrderID ON OrderDetailsODBC (OrderID);
Оператор drop7
Удаляет существующий индекс из таблицы или существующую таблицу из базы. Формат
DROP {TABLE table | INDEX index ON table}
Оператор DROP имеет следующие части:
Часть |
Описание |
table |
Имя удаляемой таблицы или таблицы, из которой удаляется индекс |
index |
Имя удаляемого индекса |
Прежде чем удалять индекс или саму таблицу, ее нужно запрыть. Удалить индекс можно оператором ALTER TABLE.
В следующих примерах предполагается наличие индекса NewIndex в таблице Employees базы Northwind. Запросы меняют таблицы в базе Northwind (если изменения нежелательны, нужно предварительно сделать копию).
Удалить индекс NewIndex из таблицы Employees:
DROP INDEX MyIndex ON Employees;
Удалить таблицу Employees из базы:
DROP TABLE Trainees;
