MySQL Server

В MySQL Server индексы можно создавать в процессе создания таблицы, описав их в разделе ограничений оператора CREATE TABLE

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] <tbl_name>

<column_defenition> :: =
(<col_name> <col_type> [NOT NULL | NULL] [DEFAULT <default_value>]
[ , <col_name> <col_type> [NOT NULL | NULL] [DEFAULT <default_value>]])

column_constraint> ::=
{[PRIMARY KEY (<index_col_name>,...)
| INDEX [<index_name>] (<index_col_name>,...)
| UNIQUE [INDEX] [<index_name>] (<index_col_name>,...)}]

Атрибут PRIMARY KEY предназначен для определения столбцов, использующихся в качестве первичного ключа. Столбцы, входящие в состав первичного ключа должны быть определены как NOT NULL.

Атрибут INDEX создает формирует обычный индекс на основе одного или нескольких столбцов. Имена столбцов, входящих в индекс перечисляются в скобках. Имя индекса index_name можно не указывать. В этом случае индексу будет присвоено имя первого индексируемого столбца. Для создания уникального индекса необходимо указать атрибут UNIQUE. Столбцы, входящие в состав уникального индекса должны быть определены как NOT NULL.

В следующем примере создается таблица cust_sample с указанием поля cust_id в качестве первичного ключа

CREATE TABLE cust_sample (
cust_id int PRIMARY KEY,
cust_name char(50),
cust_address char(50))

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

CREATE TABLE factory_process
(event_type int,
event_time datetime,
event_site char(50),
event_desc char(1024))
PRIMARY KEY (event_type, event_time)