Mysql alter add/drop index (добавление и удаление индексов):
ALTER TABLE sites DROP INDEX keyname; // эквивалентно DROP INDEX ALTER TABLE sites DROP KEY keyname; ALTER TABLE categories DROP PRIMARY KEY, ADD PRIMARY KEY (`site_id`,`category_id`);
Редактирование структуры полей в mysql:
ALTER TABLE sites change `language` `language` varchar(5) DEFAULT NULL;
Удалить поля в mysql:
ALTER TABLE sites DROP `field1`, DROP `field2`;
Добавление полей в mysql:
ALTER TABLE sites ADD `added_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, ADD `updated_at` timestamp NULL DEFAULT NULL, ADD `adult` tinyint(1) NOT NULL DEFAULT '0' AFTER domain_name;
Можно комбинировать добавление и удаления полей одним alter запросом:
ALTER TABLE sites DROP `google_pr_sort`, ADD `added_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, ADD `updated_at` timestamp NULL DEFAULT NULL, ADD `adult` tinyint(1) NOT NULL DEFAULT '0' AFTER domain_name;
Добавить primary key (PK) в mysql таблицу
Первичный ключ всегда только один, поэтому добавлять ключ в таблицу можно, только если первичного ключ не создан.
Запрос удаления первично ключа:
ALTER TABLE sites DROP PRIMARY KEY;
Пример добавления PK:
ALTER TABLE sites ADD `id` int(10) unsigned PRIMARY KEY AUTO_INCREMENT FIRST;
insert+select синтаксис запроса
INSERT INTO feedreader__moderate_feeds (feed_id) (SELECT id FROM feeds);
Видно, что опускается слово VALUES и в скобках пишется sql-запрос.
Узнать структуру таблицы в mysql
SHOW CREATE TABLE sites; DESCRIBE sites;
Запрос SHOW CREATE TABLE
показывает запрос для создания таблицы, пример
mysql> show create table sites; CREATE TABLE `sites` ( `id` int(12) unsigned NOT NULL AUTO_INCREMENT COMMENT '#', `domain_name` varchar(100) DEFAULT NULL, `title` text, `keywords` text, `description` text, `is_english` tinyint(2) NOT NULL DEFAULT '0', `alexa_position` int(10) DEFAULT NULL, `lvl` int(3) unsigned NOT NULL, `added_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `enqueued_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, `google_pr_sort` smallint(2) unsigned DEFAULT NULL, `adult` tinyint(1) NOT NULL DEFAULT '0', `fixed_adult` tinyint(1) DEFAULT NULL, `ip_whois_id` int(11) unsigned DEFAULT NULL, `whois_id` int(11) DEFAULT NULL, `disable_parsing` tinyint(1) NOT NULL DEFAULT '0', `is_malicious` tinyint(1) NOT NULL DEFAULT '0', `is_dead` tinyint(1) NOT NULL DEFAULT '0', `language` varchar(2) DEFAULT NULL, `imported_adult` tinyint(1) DEFAULT NULL, `parsed_domain` varchar(200) DEFAULT NULL, `is_popular` tinyint(1) NOT NULL DEFAULT '0', `not_prioritized_parse` tinyint(1) NOT NULL DEFAULT '1', `frame_deny` tinyint(1) NOT NULL DEFAULT '0', `is_suspicious` tinyint(1) NOT NULL DEFAULT '0', `main_feed_id` int(11) DEFAULT NULL, `daily_pageviews` bigint(21) unsigned NOT NULL DEFAULT '0', `daily_visitors` bigint(21) unsigned NOT NULL DEFAULT '0', `domain_zone` varchar(30) DEFAULT NULL, `owner_id` int(10) unsigned DEFAULT NULL, `hoster_id` int(10) unsigned DEFAULT NULL, `is_show_ads` tinyint(1) DEFAULT NULL, `authority` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uniq_domain_name` (`domain_name`), KEY `ip_whois_id` (`ip_whois_id`) ) ENGINE=MyISAM AUTO_INCREMENT=59027066 DEFAULT CHARSET=utf8
Задать AI в mysql (yстановить начальное значение)
mysql изменить AI (значение auto_increment):
ALTER TABLE tbl AUTO_INCREMENT = 5;