Поддержка JavaScript отключена
SBP-Program | |||||
На главную — > Базы данных — > MySQL |   | ||||
  |
MergeMerge — это тип таблиц в MySQL, который позволяет использовать одновременно несколько таблиц MyISAM. Таблицы, объединенные в Merge, должны иметь одинаковую структуру и одинаковые индексы. Даже порядок следования колонок в таблицах должен быть одинаковым. В примере создадим две таблицы, заполним их и объединим в одну. Итак, первая таблица: CREATE TABLE uno
( row_ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(100)) ENGINE = MyISAM; Заполняем её: insert into uno (name) values(‘uno’), (‘dos’), (‘tres’);
Получаем первую таблицу: Делаем вторую таблицу: CREATE TABLE dos
( row_ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(100)) ENGINE = MyISAM; Заполняем её: insert into dos (name) values(‘eins’), (‘zwei’), (‘drei’)
Получаем вторую таблицу: А теперь объединим две наши таблицы в одну: create table unoDos(
row_ID int unsigned not null auto_increment, name char(100), index(row_ID)) engine=Merge union=(uno, dos) insert_method=last; В union перечислены имена объединяемых таблиц. В каталоге нашей базы данных получаем: В файле unoDos.frm хранится структура таблицы, а в файле unoDos.MRG – имена таблиц, из которых составляется Merge-таблица, причем эти таблицы могут из других баз данных, а не только из той, в которой расположена наша Merge-таблица. Посмотрим, что имеется в объединенной таблице: select * from unoDos
Получаем: Таким образом содержание двух таблиц оказалось в одной, а ключевое поле row_ID перестало содержать уникальные значения. Вот почему при создании Merge-таблицы мы не указали, что поле row_ID должно быть PRIMARY KEY, ведь первичный ключ должен содержать только уникальные значения. Если удалить Merge-таблицу, то удаляется только она, составляющие её таблицы не удаляются при этом. В Merge-таблице можно использовать select, insert, update, delete. При создании Merge-таблицы мы указали insert_method=last, это опция. В данном случае мы объявили, что метод insert будет добавлять новые строки в таблицу, которая заявлена последней в union, у нас это таблица dos. Если сделать так: insert_method=first, то новые строки пойдут в первую таблицу списка union. Если insert_method=no, то добавление новых строк в нашу Merge-таблицу не будет возможным. Программирование |
  | |||
 
|
 
|
||||