кодесурса
«MYSQL

MySQL ALTER TABLE

script1adsense2code
script1adsense3code

ALTER TABLE

Команда ALTER TABLE используется для изменения структуры существующей таблицы. Это помогает добавлять или удалять столбцы, создавать или уничтожать индексы, изменять тип существующих столбцов, переименовывать столбцы или саму таблицу. Его также можно использовать для изменения комментария к таблице и типу таблицы.

Синтаксис:

 ALTER [IGNORE] TABLE tbl_name
    [alter_specification [, alter_specification] ...]
    [partition_options]
alter_specification:
    table_options
  | ДОБАВИТЬ [КОЛОНКА] col_name column_definition
        [ПЕРВЫЙ | ПОСЛЕ col_name]
  | ДОБАВИТЬ [КОЛОНКА] (имя-столбца-определение-столбца, ...)
  | ADD {INDEX | KEY} [имя_индекса]
        [index_type] (index_col_name, ...) [index_option] ...
  | ДОБАВИТЬ [ОГРАНИЧЕНИЕ [символ]] ПЕРВИЧНЫЙ КЛЮЧ
        [index_type] (index_col_name, ...) [index_option] ...
  | ДОБАВИТЬ [ОГРАНИЧЕНИЕ [символ]]
        УНИКАЛЬНЫЙ [INDEX | KEY] [index_name]
        [index_type] (index_col_name, ...) [index_option] ...
  | ДОБАВИТЬ ПОЛНЫЙ ТЕКСТ [ИНДЕКС | КЛЮЧ] [имя_индекса]
        (index_col_name, ...) [index_option] ...
  | ДОБАВИТЬ ПРОСТРАНСТВО [ИНДЕКС | КЛЮЧ] [index_name]
        (index_col_name, ...) [index_option] ...
  | ДОБАВИТЬ [ОГРАНИЧЕНИЕ [символ]]
        КЛЮЧЕВОЙ КЛЮЧ [index_name] (index_col_name, ...)
        reference_definition
  | Алгоритм [=] {DEFAULT | INPLACE | COPY}
  | ALTER [COLUMN] col_name {SET DEFAULT литерал | DROP DEFAULT}
  | CHANGE [COLUMN] old_col_name new_col_name column_definition
        [FIRST | ПОСЛЕ col_name]
  | LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}
  | MODIFY [COLUMN] col_name column_definition
        [ПЕРВЫЙ | ПОСЛЕ col_name]
  | DROP [COLUMN] col_name
  | DROP ПЕРВИЧНЫЙ КЛЮЧ
  | DROP {INDEX | KEY} имя_индекса
  | ОТКЛЮЧИТЬ ИНОСТРАННЫЙ КЛЮЧ fk_symbol
  | ОТКЛЮЧИТЬ КЛЮЧИ
  | ENABLE KEYS
  | RENAME [TO | AS] new_tbl_name
  | ЗАКАЗАТЬ по col_name [, col_name] ...
  | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
  | [ПО УМОЛЧАНИЮ] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]
  | ОТКЛОНИТЬ СТОЛ
  | ИМПОРТ СТОЛ
  | FORCE
  | ADD PARTITION (partition_definition)
  | DROP PARTITION имя_раздела
  | TRUNCATE PARTITION {имя_раздела | ВСЕ}
  | Номер коалесции
  | ПЕРЕЗАГРУЗИТЬ РАЗДЕЛ РАЗДЕЛА INTO (определение_раздела)
  | EXCHANGE PARTITION имя_раздела с таблицей tbl_name
  | ANALYZE PARTITION {имя_раздела | ВСЕ}
  | ПРОВЕРИТЬ РАЗДЕЛ {имя_раздела | ВСЕ}
  | ОПТИМИЗАЦИЯ РАЗДЕЛА {имя_раздела | ВСЕ}
  | REBUILD PARTITION {имя_раздела | ВСЕ}
  | REPAIR PARTITION {имя_раздела | ВСЕ}
  | УДАЛИТЬ ПАРТИИ
index_col_name:
    col_name [(длина)] [ASC | DESC]
index_type:
    USING {BTREE | HASH}
index_option:
    KEY_BLOCK_SIZE [=] значение
  | index_type
  | С PARSER имя_парсера
  | КОММЕНТАРИЙ 'Строка'
table_options:
    table_option [[,] table_option] ... (см. параметры CREATE TABLE)

аргументы

название Описание
КОЛОНКА Список столбцов.
ПЕРВЫЙ Столбец можно добавить в определенную позицию в строке таблицы, используя предложение FIRST или AFTER. По умолчанию столбец добавляется последним. Вы также можете использовать FIRST и AFTER в операциях CHANGE или MODIFY для изменения порядка столбцов в таблице.
ИНДЕКС | KEY KEY обычно является синонимом INDEX
CONSTRAINT CONSTRAINT используется для определения правил, разрешающих или ограничивающих значения, которые можно хранить в столбцах.
ОСНОВНОЙ КЛЮЧ PRIMARY KEY - это уникальный индекс, в котором все ключевые столбцы должны быть определены как NOT NULL. Если не объявлять, MySQL объявляет их так неявно. Таблица может иметь только один ПЕРВИЧНЫЙ КЛЮЧ.
УНИКАЛЬНАЯ Индекс UNIQUE создает ограничение, в котором все значения в индексе должны быть различны. При попытке добавить новую строку со значением ключа, совпадающим с существующей строкой, возникает ошибка.
ПОЛНЫЙ ТЕКСТ Индексы FULLTEXT используются для полнотекстового поиска. Только механизм хранения MyISAM поддерживает индексы FULLTEXT. Они могут быть созданы только из столбцов CHAR, VARCHAR и TEXT. Индексирование всегда происходит по всему столбцу; Индексирование префикса столбца не поддерживается, и любая длина префикса игнорируется, если указано.
ПРОСТРАНСТВЕННО Пространственные индексы могут быть созданы для пространственных типов данных. Пространственные типы поддерживаются только для таблиц MyISAM, а индексированные столбцы должны быть объявлены как NOT NULL.
ИНОСТРАННЫЙ КЛЮЧ Таблицы InnoDB и NDB поддерживают проверку ограничений внешнего ключа. Столбцы ссылочной таблицы всегда должны иметь явное имя. Функции ON DELETE и ON UPDATE для внешних ключей.
ПРОВЕРЯТЬ Для других механизмов хранения MySQL Server анализирует и игнорирует синтаксис FOREIGN KEY и REFERENCES в инструкциях CREATE TABLE, кроме InnoDB и NDB. Предложение CHECK анализируется, но игнорируется всеми механизмами хранения.
АЛГОРИТМ = COPY Это нужно было вам, когда вы применяли ALTER TABLE в более ранних версиях MySQL (<5.6) при изменении таблицы онлайн. Этот метод использовался для использования временной таблицы при изменении таблицы.
АЛГОРИТМ = ПО УМОЛЧАНИЮ это то же самое, что не указывает предложение ALGORITHM.
АЛГОРИТМ = INPLACE ALGORITHM = INPLACE продолжают работу внутри механизмов хранения InnoDB, используя технику на месте, и завершаются ошибкой, которые не поддерживают эти функции с ошибкой.
LOCK = DEFAULT Разрешить серию совпадающих событий, т.е. читать и писать, когда поддерживается. В противном случае разрешите одновременное чтение, если оно поддерживается, иначе обеспечьте эксклюзивный доступ.
LOCK = NONE Если поддерживается, разрешите одновременное чтение и запись, иначе вернет сообщение об ошибке.
LOCK = SHARED Если поддерживается, разрешить одновременное чтение, но ограничить запись. Помните, что записи будут заблокированы, даже если параллельная запись поддерживается механизмом хранения для данного предложения ALGORITHM (если есть) и операции ALTER TABLE. Если одновременные чтения не поддерживаются, возвращается сообщение об ошибке.
LOCK = ЭКСКЛЮЗИВ Это обеспечивает эксклюзивный доступ. Это происходит, даже если параллельное чтение / запись поддерживается механизмом хранения для данного предложения ALGORITHM (если есть) и операции ALTER TABLE.

Основные примеры

Создайте тестовую таблицу, как показано ниже:

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

Чтобы переименовать таблицу из testtable в w3r1, используйте следующую инструкцию.

ALTER TABLE testtable RENAME w3r1;

Чтобы изменить столбец col1 с INTEGER на TINYINT NOT NULL (оставив имя таким же), а также изменить столбец b с VARCHAR (15) на CHAR (25), а также переименовать его с col2 на col3, можно использовать следующую инструкцию.

ALTER TABLE w3r1 MODIFY col1 TINYINT NOT NULL, CHANGE col2 col3 VARCHAR(25);

Чтобы добавить новый столбец TIMESTAMP с именем col4, можно использовать следующий оператор.

ALTER TABLE w3r1 ADD col4 TIMESTAMP;

Чтобы добавить индекс для столбца col4 и индекс UNIQUE для столбца col1, можно использовать следующий оператор.

ALTER TABLE w3r1 ADD INDEX (col4), ADD UNIQUE (col1);

Чтобы удалить столбец col3 из таблицы w3r1, можно использовать следующий оператор.

ALTER TABLE w3r1 DROP COLUMN col3;

Чтобы добавить новый целочисленный столбец AUTO_INCREMENT с именем col3, можно использовать следующий оператор.

ALTER TABLE w3r1 ADD col3 INT UNSIGNED NOT NULL AUTO_INCREMENT,   
ADD PRIMARY KEY (col3);

Здесь, в приведенном выше примере, мы проиндексировали col3 (как PRIMARY KEY), потому что столбцы AUTO_INCREMENT должны быть проиндексированы, и мы объявляем col3 как NOT NULL, потому что столбцы первичного ключа не могут иметь значение NULL.

Чтобы изменить тип данных col1 на BIGINT, можно использовать следующий оператор.

ALTER TABLE w3r1 MODIFY col1 BIGINT;

Если вы хотите включить атрибуты UNSIGNED DEFAULT 1 и COMMENT 'test column', покажите следующий оператор:

ALTER TABLE w3r1 MODIFY col1 BIGINT UNSIGNED DEFAULT 1 COMMENT 'test column';

Чтобы изменить набор символов таблицы по умолчанию и все столбцы символов (CHAR, VARCHAR, TEXT) на новый набор символов, используйте такой оператор:

ALTER TABLE w3r1 CONVERT TO CHARACTER SET latin1;

MySQL ALTER TABLE вставить столбец

Вот структура таблицы newbook_mast .

Пример вывода:

 + ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
| book_id | Варчар (15) | НЕТ | PRI | | |
| book_name | Варчар (50) | НЕТ | | | |
| isbn_no | Варчар (15) | НЕТ | | | |
| cate_id | varchar (8) | НЕТ | | | |
| aut_id | varchar (8) | НЕТ | | | |
| pub_id | varchar (8) | НЕТ | | | |
| dt_of_pub | дата | НЕТ | | 0000-00-00 | |
| pub_lang | Варчар (15) | ДА | | NULL | |
| no_page | десятичный (5,0) | НЕТ | | 0 | |
| book_price | десятичный (8,2) | НЕТ | | 0,00 | |
+ ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
10 рядов в наборе (0,00 сек)

Если вы хотите добавить столбец 'id' целочисленного типа в таблицу newbook_mast , можно использовать следующий оператор.

ALTER TABLE newbook_mast
ADD id  INT;

Вот структура newbook_mast после добавления идентификатора столбца.

«MySQL

MySQL ALTER TABLE вставьте столбец FIRST

Вот структура таблицы newbook_mast .

Пример вывода:

 + ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
| book_id | Варчар (15) | НЕТ | PRI | | |
| book_name | Варчар (50) | НЕТ | | | |
| isbn_no | Варчар (15) | НЕТ | | | |
| cate_id | varchar (8) | НЕТ | | | |
| aut_id | varchar (8) | НЕТ | | | |
| pub_id | varchar (8) | НЕТ | | | |
| dt_of_pub | дата | НЕТ | | 0000-00-00 | |
| pub_lang | Варчар (15) | ДА | | NULL | |
| no_page | десятичный (5,0) | НЕТ | | 0 | |
| book_price | десятичный (8,2) | НЕТ | | 0,00 | |
+ ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
10 рядов в наборе (0,00 сек)

Если вы хотите вставить идентификатор столбца целочисленного типа в качестве первого столбца таблицы newbook_mast , можно использовать следующий оператор.

ALTER TABLE newbook_mast
ADD id  INT  FIRST ;

Вот структура newbook_mast после добавления идентификатора столбца.

«MySQL

MySQL ALTER TABLE для вставки столбца ПОСЛЕ столбца

Вот структура таблицы newbook_mast .

 + ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
| book_id | Варчар (15) | НЕТ | PRI | | |
| book_name | Варчар (50) | НЕТ | | | |
| isbn_no | Варчар (15) | НЕТ | | | |
| cate_id | varchar (8) | НЕТ | | | |
| aut_id | varchar (8) | НЕТ | | | |
| pub_id | varchar (8) | НЕТ | | | |
| dt_of_pub | дата | НЕТ | | 0000-00-00 | |
| pub_lang | Варчар (15) | ДА | | NULL | |
| no_page | десятичный (5,0) | НЕТ | | 0 | |
| book_price | десятичное число (8,2) | НЕТ | | 0,00 | |
+ ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
10 рядов в наборе (0,00 сек)

Если вы хотите добавить два определенных столбца pub_name и pub_add после столбцов pub_id и dt_of_pub соответственно, можно использовать следующий оператор.

ALTER TABLE newbook_mast
ADD pub_name  VARCHAR(35)  AFTER pub_id,
ADD pub_add   VARCHAR(50)  AFTER dt_of_pub;

Вот структура newbook_mast после добавления двух столбцов в определенной позиции, указанной выше.

«MySQL

MySQL ALTER TABLE ADD INDEX

.Если вы хотите добавить индекс с именем «cate_id» в столбец «cate_id» для таблицы «newbook_mast», можно использовать следующий оператор.
ALTER TABLE newbook_mast
ADD INDEX cate_id(cate_id);

Вот индексы для таблицы newbook_mast после добавления индекса с именем cate_id в столбец cate_id .

 + -------------- + ------------ + ---------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- + ----- ---------- +
| Таблица | Non_unique | Key_name | Seq_in_index | Имя столбца | Сопоставление | Кардинальность | Sub_part | Упаковано | Null | Index_type | Комментарий | Index_comment |
+ -------------- + ------------ + ---------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- + ----- ---------- +
| newbook_mast | 0 | ПЕРВИЧНЫЙ | 1 | book_id | A | 0 | NULL | NULL | | BTREE | | |
| newbook_mast | 1 | cate_id | 1 | cate_id | A | NULL | NULL | NULL | | BTREE | | |
+ -------------- + ------------ + ---------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- + ----- ---------- +
2 ряда в наборе (0,00 сек)

MySQL ALTER TABLE ADD UNIQUE INDEX

Если вы хотите добавить UNIQUE INDEX с именем «cate_id» в столбец «cate_id» для таблицы «newbook_mast», можно использовать следующий оператор.

ALTER TABLE newbook_mast
ADD UNIQUE INDEX cate_id(cate_id);

Вот уникальные индексы для таблицы newbook_mast после добавления уникального индекса cate_id в столбец cate_id .

Пример вывода:

 + -------------- + ------------ + ---------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- + ----- ---------- +
| Таблица | Non_unique | Key_name | Seq_in_index | Имя столбца | Сопоставление | Кардинальность | Sub_part | Упаковано | Null | Index_type | Комментарий | Index_comment |
+ -------------- + ------------ + ---------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- + ----- ---------- +
| newbook_mast | 0 | ПЕРВИЧНЫЙ | 1 | book_id | A | 0 | NULL | NULL | | BTREE | | |
| newbook_mast | 0 | cate_id | 1 | cate_id | A | 0 | NULL | NULL | | BTREE | | |
+ -------------- + ------------ + ---------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- + ----- ---------- +
2 ряда в наборе (0,00 сек)

MySQL ALTER TABLE ADD PRIMARY KEY

Вот структура таблицы tstpurch . На рисунке ниже показано, что у него нет первичного ключа.

 + ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
| invoice_no | Варчар (12) | НЕТ | | | |
| invoice_dt | дата | НЕТ | | 0000-00-00 | |
| ord_no | Варчар (25) | НЕТ | | NULL | |
| ord_date | дата | НЕТ | | 0000-00-00 | |
| receive_dt | дата | НЕТ | | 0000-00-00 | |
| book_id | varchar (8) | НЕТ | | | |
| book_name | Варчар (50) | НЕТ | | | |
| pub_lang | varchar (8) | ДА | | NULL | |
| cate_id | varchar (8) | ДА | | NULL | |
| receive_qty | int (5) | НЕТ | | 0 | |
| купленная цена | десятичное число (12,2) | НЕТ | | 0,00 | |
| total_cost | десятичный (12,2) | НЕТ | | 0,00 | |
+ ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
12 рядов в наборе (0,01 с)

Если вы хотите создать PRIMARY KEY для столбца invoice_no для таблицы tstpurch , можно использовать следующий оператор.

ALTER TABLE tstpurch
ADD PRIMARY KEY invoice_no (invoice_no);

Вот первичный ключ после добавления первичного ключа с именем invoice_no в столбец invoice_no .

 + ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
| invoice_no | Варчар (12) | НЕТ | PRI | | |
| invoice_dt | дата | НЕТ | | 0000-00-00 | |
| ord_no | Варчар (25) | НЕТ | | NULL | |
| ord_date | дата | НЕТ | | 0000-00-00 | |
| receive_dt | дата | НЕТ | | 0000-00-00 | |
| book_id | varchar (8) | НЕТ | | | |
| book_name | Варчар (50) | НЕТ | | | |
| pub_lang | varchar (8) | ДА | | NULL | |
| cate_id | varchar (8) | ДА | | NULL | |
| receive_qty | int (5) | НЕТ | | 0 | |
| купленная цена | десятичный (12,2) | НЕТ | | 0,00 | |
| total_cost | десятичное число (12,2) | НЕТ | | 0,00 | |
+ ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
12 рядов в наборе (0,01 с)

Вот детали индекса.

Пример вывода:

 + ---------- + ------------ + ---------- + -------------- + ------------- + ----------- + ------------- + --------- - + -------- + ------ + ------------ + --------- + --------- ------ +
| Таблица | Non_unique | Key_name | Seq_in_index | Имя столбца | Сопоставление | Кардинальность | Sub_part | Упаковано | Null | Index_type | Комментарий | Index_comment |
+ ---------- + ------------ + ---------- + -------------- + ------------- + ----------- + ------------- + --------- - + -------- + ------ + ------------ + --------- + --------- ------ +
| tstpurch | 0 | ПЕРВИЧНЫЙ | 1 | invoice_no | A | 0 | NULL | NULL | | BTREE | | |
+ ---------- + ------------ + ---------- + -------------- + ------------- + ----------- + ------------- + --------- - + -------- + ------ + ------------ + --------- + --------- ------ +
1 ряд в наборе (0,00 сек)

MySQL ALTER TABLE ADD FOREIGN KEY

Вот структура torder таблицы и newbook_mast таблицы.

 Стол: тордер  
+ ----------- + ------------- + ------ + ----- + ---------- - + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ----------- + ------------- + ------ + ----- + ---------- - + ------- +
| ord_no | Варчар (15) | НЕТ | | | |
| ord_date | дата | НЕТ | | 0000-00-00 | |
| book_id | Варчар (15) | НЕТ | PRI | | |
| book_name | Варчар (50) | НЕТ | | | |
| cate_id | varchar (8) | НЕТ | PRI | | |
| pub_lang | Варчар (15) | НЕТ | | | |
| ord_qty | int (5) | НЕТ | | 0 | |
+ ----------- + ------------- + ------ + ----- + ---------- - + ------- +
Таблица: newbook_mast
+ ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
| book_id | Варчар (15) | НЕТ | PRI | | |
| book_name | Варчар (50) | НЕТ | | | |
| isbn_no | Варчар (15) | НЕТ | | | |
| cate_id | varchar (8) | НЕТ | | | |
| aut_id | varchar (8) | НЕТ | | | |
| pub_id | varchar (8) | НЕТ | | | |
| dt_of_pub | дата | НЕТ | | 0000-00-00 | |
| pub_lang | Варчар (15) | ДА | | NULL | |
| no_page | десятичный (5,0) | НЕТ | | 0 | |
| book_price | десятичное число (8,2) | НЕТ | | 0,00 | |
+ ------------ + -------------- + ------ + ----- + -------- ---- + ------- +
10 рядов в наборе (0,00 сек)

Если вы хотите , чтобы создать внешний ключ с комбинацией book_id и cate_id столбцов таблицы newbook_mast со ссылкой из torder таблицы, можно использовать следующее утверждение.

ALTER TABLE newbook_mast
ADD  FOREIGN KEY(book_id,cate_id)
REFERENCES 
torder(book_id,cateid);

Вот детали индекса таблицы newbook_mast .

 + -------------- + ------------ + ---------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- + ----- ---------- +
| Таблица | Non_unique | Key_name | Seq_in_index | Имя столбца | Сопоставление | Кардинальность | Sub_part | Упаковано | Null | Index_type | Комментарий | Index_comment |
+ -------------- + ------------ + ---------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- + ----- ---------- +
| newbook_mast | 0 | ПЕРВИЧНЫЙ | 1 | book_id | A | 0 | NULL | NULL | | BTREE | | |
| newbook_mast | 1 | book_id | 1 | book_id | A | NULL | NULL | NULL | | BTREE | | |
| newbook_mast | 1 | book_id | 2 | cate_id | A | NULL | NULL | NULL | | BTREE | | |
+ -------------- + ------------ + ---------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- + ----- ---------- +
3 ряда в наборе (0,00 сек)

MySQL ALTER TABLE ADD и DROP столбец, INDEX, PRIMARY KEY и FOREIGN KEY

Вот структура и индекс tstpurch и таблица torder .

 Таблица: tstpurch
+ ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
| id | int (5) | ДА | | NULL | |
| invoice_no | Варчар (12) | НЕТ | PRI | | |
| invoice_dt | дата | НЕТ | | 0000-00-00 | |
| ord_no | Варчар (25) | НЕТ | MUL | NULL | |
| ord_date | дата | НЕТ | | 0000-00-00 | |
| receive_dt | дата | НЕТ | | 0000-00-00 | |
| book_id | varchar (8) | НЕТ | | | |
| book_name | Варчар (50) | НЕТ | | | |
| pub_lang | varchar (8) | ДА | | NULL | |
| cate_id | varchar (8) | ДА | MUL | NULL | |
| receive_qty | int (5) | НЕТ | | 0 | |
| купленная цена | десятичный (12,2) | НЕТ | | 0,00 | |
| total_cost | десятичный (12,2) | НЕТ | | 0,00 | |
+ ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
Индексы таблицы tstpurch
+ ---------- + ------------ + ---------- + -------------- + ------------- + ----------- + ------------- + --------- - + -------- + ------ + ------------ + --------- + --------- ------ +
| Таблица | Non_unique | Key_name | Seq_in_index | Имя столбца | Сопоставление | Кардинальность | Sub_part | Упаковано | Null | Index_type | Комментарий | Index_comment |
+ ---------- + ------------ + ---------- + -------------- + ------------- + ----------- + ------------- + --------- - + -------- + ------ + ------------ + --------- + --------- ------ +
| tstpurch | 0 | ПЕРВИЧНЫЙ | 1 | invoice_no | A | 0 | NULL | NULL | | BTREE | | |
| tstpurch | 1 | cate_id | 1 | cate_id | A | NULL | NULL | NULL | ДА | BTREE | | |
| tstpurch | 1 | ord_no | 1 | ord_no | A | NULL | NULL | NULL | | BTREE | | |
+ ---------- + ------------ + ---------- + -------------- + ------------- + ----------- + ------------- + --------- - + -------- + ------ + ------------ + --------- + --------- ------ +
Стол: тордер
+ ----------- + ------------- + ------ + ----- + ---------- - + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ----------- + ------------- + ------ + ----- + ---------- - + ------- +
| ord_no | Варчар (15) | НЕТ | PRI | | |
| ord_date | дата | НЕТ | | 0000-00-00 | |
| book_id | Варчар (15) | НЕТ | MUL | | |
| book_name | Варчар (50) | НЕТ | | | |
| cate_id | varchar (8) | НЕТ | | | |
| pub_lang | Варчар (15) | НЕТ | | | |
| ord_qty | int (5) | НЕТ | | 0 | |
+ ----------- + ------------- + ------ + ----- + ---------- - + ------- +
Указатели тордера
+ -------- + ------------ + ---------- + -------------- + - ------------ + ----------- + ------------- + ---------- + -------- + ------ + ------------ + --------- + ----------- ---- +
| Таблица | Non_unique | Key_name | Seq_in_index | Имя столбца | Сопоставление | Кардинальность | Sub_part | Упаковано | Null | Index_type | Комментарий | Index_comment |
+ -------- + ------------ + ---------- + -------------- + - ------------ + ----------- + ------------- + ---------- + -------- + ------ + ------------ + --------- + ----------- ---- +
| тордер | 0 | ПЕРВИЧНЫЙ | 1 | ord_no | A | 0 | NULL | NULL | | BTREE | | |
| тордер | 1 | book_id | 1 | book_id | A | NULL | NULL | NULL | | BTREE | | |
| тордер | 1 | book_id | 2 | cate_id | A | NULL | NULL | NULL | | BTREE | | |
+ -------- + ------------ + ---------- + -------------- + - ------------ + ----------- + ------------- + ---------- + -------- + ------ + ------------ + --------- + ----------- ---- +

Если вы хотите изменить структуру таблицы tstpurch следующим образом:

1. Удалите столбец «id», существующий первичный ключ, индекс «cate_id» и внешний ключ «ord_no».
2. Добавьте столбец целочисленного типа «id» со значением по умолчанию 0.
3. Добавьте столбец «chano», тип varchar и размер 10 и не принимайте значения NULL.
4. Добавьте столбец типа даты 'chadt'.
5. Добавьте первичный ключ с именем «invoice_no» в столбец «invoice_no».
6. Добавьте индекс с именем «cate_id» в столбец «cate_id».
7. Добавьте внешний ключ в комбинации из двух столбцов 'ord_no' и 'book_id', на которые ссылается один и тот же первичный ключ таблицы 'torder'.

следующее утверждение может быть использовано.

ALTER TABLE tstpurch
DROP id,
ADD id int NOT NULL DEFAULT 0,
ADD chano VARCHAR(10) NOT NULL,
ADD  chadt date,
DROP  PRIMARY KEY,
ADD  PRIMARY KEY invoice_no (invoice_no),
DROP  INDEX cate_id,
ADD  INDEX cate_id(cate_id),
DROP  FOREIGN KEY ord_no,
ADD  FOREIGN KEY(book_id,cate_id) REFERENCES
torder(book_id,cate_id);

а теперь вот структура и индекс tstpurch и таблица torder

 Таблица: tstpurch
+ ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------- + --------------- + ------ + ----- + ------ ------ + ------- +
| invoice_no | Варчар (12) | НЕТ | PRI | | |
| invoice_dt | дата | НЕТ | | 0000-00-00 | |
| ord_no | Варчар (25) | НЕТ | MUL | NULL | |
| ord_date | дата | НЕТ | | 0000-00-00 | |
| receive_dt | дата | НЕТ | | 0000-00-00 | |
| book_id | varchar (8) | НЕТ | MUL | | |
| book_name | Варчар (50) | НЕТ | | | |
| pub_lang | varchar (8) | ДА | | NULL | |
| cate_id | varchar (8) | ДА | MUL
| NULL | | | receive_qty | int (5) | НЕТ | | 0 | | | купленная цена | десятичный (12,2) | НЕТ | | 0,00 | | | total_cost | десятичный (12,2) | НЕТ | | 0,00 | | | id | int (11) | НЕТ | | 0 | | | Chano | Варчар (10) | НЕТ | | NULL | | | чадт | дата | ДА | | NULL | | + ------------- + --------------- + ------ + ----- + ------ ------ + ------- + Индексы tstpurch + ---------- + ------------ + ------- --- + -------------- + ------------- + ----------- + ----- -------- + ---------- + -------- + ------ + ------------ + - -------- + --------------- + | Таблица | Non_unique | Key_name | Seq_in_index | Имя столбца | Сопоставление | Кардинальность | Sub_part | Упаковано | Null | Index_type | Комментарий | Index_comment | + ---------- + ------------ + ---------- + -------------- + ------------- + ----------- + ------------- + --------- - + -------- + ------ + ------------ + --------- + --------- ------ + | tstpurch | 0 | ПЕРВИЧНЫЙ | 1 | invoice_no | A | 0 | NULL | NULL | | BTREE | | | | tstpurch | 1 | ord_no | 1 | ord_no | A | NULL | NULL | NULL | | BTREE | | | | tstpurch | 1 | cate_id | 1 | cate_id | A | NULL | NULL | NULL | ДА | BTREE | | | | tstpurch | 1 | book_id | 1 | book_id | A | NULL | NULL | NULL | | BTREE | | | | tstpurch | 1 | book_id | 2 | cate_id | A | NULL | NULL | NULL | ДА | BTREE | | | + ---------- + ------------ + ---------- + -------------- + ------------- + ----------- + ------------- + --------- - + -------- + ------ + ------------ + --------- + --------- ------ + Таблица: torder + ----------- + ------------- + ------ + ----- + ------------ + ------- + | Поле | Тип | Null | Ключ | По умолчанию | Extra | + ----------- + ------------- + ------ + ----- + ---------- - + ------- + | ord_no | Варчар (15) | НЕТ | PRI | | | | ord_date | дата | НЕТ | | 0000-00-00 | | | book_id | Варчар (15) | НЕТ | MUL | | | | book_name | Варчар (50) | НЕТ | | | | | cate_id | varchar (8) | НЕТ | | | | | pub_lang | Варчар (15) | НЕТ | | | | | ord_qty | int (5) | НЕТ | | 0 | | + ----------- + ------------- + ------ + ----- + ---------- - + ------- + Указатели тордера + -------- + ------------ + ---------- + - ------------ + ------------- + ----------- + ----------- - + ---------- + -------- + ------ + ------------ + ------- - + --------------- + | Таблица | Non_unique | Key_name | Seq_in_index | Имя столбца | Сопоставление | Кардинальность | Sub_part | Упаковано | Null | Index_type | Комментарий | Index_comment | + -------- + ------------ + ---------- + -------------- + - ------------ + ----------- + ------------- + ---------- + -------- + ------ + ------------ + --------- + ----------- ---- + | тордер | 0 | ПЕРВИЧНЫЙ | 1 | ord_no | A | 0 | NULL | NULL | | BTREE | | | | тордер | 1 | book_id | 1 | book_id | A | NULL | NULL | NULL | | BTREE | | | | тордер | 1 | book_id | 2 | cate_id | A | NULL | NULL | NULL | | BTREE | | | + -------- + ------------ + ---------- + -------------- + - ------------ + ----------- + ------------- + ---------- + -------- + ------ + ------------ + --------- + ----------- ---- + 

Предыдущая: MySQL CREATE INDEX
Далее: MySQL Partitioning

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code