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)