mysql导出全部索引_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

希望本文所述示例能够对大家有所帮助。

原文:http://www.jb51.net/article/53595.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值