СУБД/лекция 6 семестр 2 — различия между версиями
Материал из Wiki
				
								
				< СУБД
				
																
				
				
								
				| Vidokq  (обсуждение | вклад)  (Новая страница: «*[http://www.mysql.ru/docs/man/CREATE_INDEX.html Литература]   <source lang="sql">CREATE [UNIQUE|FULLTEXT] INDEX index_name         ON tbl_name (col_nam…») | Vidokq  (обсуждение | вклад)  | ||
| Строка 2: | Строка 2: | ||
| − | <source lang="sql">CREATE [UNIQUE|FULLTEXT] INDEX index_name | + | <source lang="sql"> | 
| + | CREATE [UNIQUE|FULLTEXT] INDEX index_name | ||
|          ON tbl_name (col_name[(length)],... )</source> |          ON tbl_name (col_name[(length)],... )</source> | ||
| − | * {{X|24px}}Команда CREATE INDEX в версиях MySQL до 3.22 не выполняет никаких действий.   | + | * {{X|24px}} Команда CREATE INDEX в версиях MySQL до 3.22 не выполняет никаких действий.   | 
| − | * {{V|24px}}В версии 3.22 и более поздних CREATE INDEX соответствует команде ALTER TABLE в части создания индексов.   | + | * {{V|24px}} В версии 3.22 и более поздних '''CREATE INDEX''' соответствует команде '''ALTER TABLE''' в части создания индексов.   | 
| + |  '''ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]''' | ||
| + |  alter_specification: | ||
| + |         ADD [COLUMN] create_definition [FIRST | AFTER column_name ] | ||
| + |   или   ADD [COLUMN] (create_definition, create_definition,...) | ||
| + |   или   ADD INDEX [index_name] (index_col_name,...) | ||
| + |   или   '''ADD PRIMARY KEY (index_col_name,...)''' | ||
| + |   или   ADD UNIQUE [index_name] (index_col_name,...) | ||
| + |   или   ADD FULLTEXT [index_name] (index_col_name,...) | ||
| + |   или   ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...) | ||
| + |             [reference_definition] | ||
| + |   или   ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | ||
| + |   или   CHANGE [COLUMN] old_col_name create_definition | ||
| + |                [FIRST | AFTER column_name] | ||
| + |   или   MODIFY [COLUMN] create_definition [FIRST | AFTER column_name] | ||
| + |   или   DROP [COLUMN] col_name | ||
| + |   или   DROP PRIMARY KEY | ||
| + |   или   DROP INDEX index_name | ||
| + |   или   DISABLE KEYS | ||
| + |   или   ENABLE KEYS | ||
| + |   или   RENAME [TO] new_tbl_name | ||
| + |   или   ORDER BY col | ||
| + |   или   table_options | ||
| * Обычно  все индексы создаются в таблице во время создания самой таблицы командой '''CREATE TABLE.'''    | * Обычно  все индексы создаются в таблице во время создания самой таблицы командой '''CREATE TABLE.'''    | ||
| * '''CREATE INDEX''' дает возможность добавить индексы к существующим таблицам.   | * '''CREATE INDEX''' дает возможность добавить индексы к существующим таблицам.   | ||
Версия 19:14, 31 марта 2014
CREATE [UNIQUE|FULLTEXT] INDEX index_name ON tbl_name (col_name[(LENGTH)],... )
-   Команда CREATE INDEX в версиях MySQL до 3.22 не выполняет никаких действий. Команда CREATE INDEX в версиях MySQL до 3.22 не выполняет никаких действий.
-   В версии 3.22 и более поздних CREATE INDEX соответствует команде ALTER TABLE в части создания индексов. В версии 3.22 и более поздних CREATE INDEX соответствует команде ALTER TABLE в части создания индексов.
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_specification:
       ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
 или   ADD [COLUMN] (create_definition, create_definition,...)
 или   ADD INDEX [index_name] (index_col_name,...)
 или   ADD PRIMARY KEY (index_col_name,...)
 или   ADD UNIQUE [index_name] (index_col_name,...)
 или   ADD FULLTEXT [index_name] (index_col_name,...)
 или   ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
           [reference_definition]
 или   ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
 или   CHANGE [COLUMN] old_col_name create_definition
              [FIRST | AFTER column_name]
 или   MODIFY [COLUMN] create_definition [FIRST | AFTER column_name]
 или   DROP [COLUMN] col_name
 или   DROP PRIMARY KEY
 или   DROP INDEX index_name
 или   DISABLE KEYS
 или   ENABLE KEYS
 или   RENAME [TO] new_tbl_name
 или   ORDER BY col
 или   table_options
- Обычно все индексы создаются в таблице во время создания самой таблицы командой CREATE TABLE.
- CREATE INDEX дает возможность добавить индексы к существующим таблицам.
- Список столбцов в форме (col1,col2,...) создает индекс для нескольких столбцов. Величины индексов формируются путем конкатенации величин указанных столбцов.
Для столбцов типов CHAR и VARCHAR с помощью параметра col_name(length) могут создаваться индексы, для которых используется только часть столбца (для столбцов BLOB и TEXT нужно указывать длину). Команда, приведенная ниже, создает индекс, используя первые 10 символов столбца name: 
CREATE INDEX part_of_name ON customer (name(10));
Поскольку большинство имен обычно имеют отличия друг от друга в первых 10 символах, данный индекс не должен быть намного медленнее, чем созданный из столбца name целиком. Кроме того, используя неполные столбцы для индексов, можно сделать файл индексов намного меньше, а это позволяет сэкономить место на диске и к тому же повысить скорость операций INSERT!
 Следует учитывать, что в версии MySQL 3.23.2 и более поздних для таблиц типа MyISAM можно добавлять индекс только для столбцов, которые могут принимать величины NULL или для столбцов BLOB/TEXT.
Следует учитывать, что в версии MySQL 3.23.2 и более поздних для таблиц типа MyISAM можно добавлять индекс только для столбцов, которые могут принимать величины NULL или для столбцов BLOB/TEXT.

