MySQL - изменение полей, структуры таблицы

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;

 

 
 
 
 

icon Комментарии 0

Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться
НОВЫЕ ПОЛЬЗОВАТЕЛИ