MySQL导出所有Index和约束的方法 |
本文汇总了MySQL导出所有Index 和 约束的方法,提供给大家以方便大家查询使用 。具体如下: 1. 导出创建自增字段语句: SELECT CONCAT( ALTER TABLE `, TABLE_NAME, ` , MODIFY COLUMN `, COLUMN_NAME, ` , IF(UPPER(DATA_TYPE) = INT, REPLACE( SUBSTRING_INDEX( UPPER(COLUMN_TYPE), ), 1 ), INT, INTEGER ), UPPER(COLUMN_TYPE) ), ) UNSIGNED NOT NULL AUTO_INCREMENT; ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = source_database_name AND EXTRA = UPPER(AUTO_INCREMENT) ORDER BY TABLE_NAME ASC 2. 导出所有索引: SELECT CONCAT(ALTER TABLE `,TABLE_NAME,` , ADD , IF(NON_UNIQUE = 1, CASE UPPER(INDEX_TYPE) WHEN FULLTEXT THEN FULLTEXT INDEX WHEN SPATIAL THEN SPATIAL INDEX ELSE CONCAT(INDEX `, INDEX_NAME, ` USING , INDEX_TYPE ) END, IF(UPPER(INDEX_NAME) = PRIMARY, CONCAT(PRIMARY KEY USING , INDEX_TYPE ), CONCAT(UNIQUE INDEX `, INDEX_NAME, ` USING , INDEX_TYPE ) ) ),(, GROUP_CONCAT(DISTINCT CONCAT(`, COLUMN_NAME, `) ORDER BY SEQ_IN_INDEX ASC SEPARATOR , ), );) AS Show_Add_Indexes FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = pbq GROUP BY TABLE_NAME, INDEX_NAME ORDER BY TABLE_NAME ASC, INDEX_NAME ASC 3. 创建删除所有自增字段: SELECT CONCAT( ALTER TABLE `, TABLE_NAME, ` , MODIFY COLUMN `, COLUMN_NAME, ` , IF(UPPER(DATA_TYPE) = INT, REPLACE( SUBSTRING_INDEX( UPPER(COLUMN_TYPE), ), 1 ), INT, INTEGER ), UPPER(COLUMN_TYPE) ), ) UNSIGNED NOT NULL; ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = destination_database_name AND EXTRA = UPPER(AUTO_INCREMENT) ORDER BY TABLE_NAME ASC 4. 删除库所有索引: SELECT CONCAT( ALTER TABLE `, TABLE_NAME, ` , GROUP_CONCAT( DISTINCT CONCAT( DROP , IF(UPPER(INDEX_NAME) = PRIMARY, PRIMARY KEY, CONCAT(INDEX `, INDEX_NAME, `) ) ) SEPARATOR , ), ; ) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = destination_database_name GROUP BY TABLE_NAME ORDER BY TABLE_NAME ASC 希望本文所述示例能够对大家有所帮助 。 |