MySQL导出所有Index和约束的方法
本文汇总了MySQL导出所有Index和约束的方法,提供给大家以方便大家查询使用。具体如下:
1.导出创建自增字段语句:
SELECT
CONCAT(
'ALTERTABLE`',
TABLE_NAME,
'`',
'MODIFYCOLUMN`',
COLUMN_NAME,
'`',
IF(UPPER(DATA_TYPE)='INT',
REPLACE(
SUBSTRING_INDEX(
UPPER(COLUMN_TYPE),
')',
1
),
'INT',
'INTEGER'
),
UPPER(COLUMN_TYPE)
),
')UNSIGNEDNOTNULLAUTO_INCREMENT;'
)
FROMinformation_schema.COLUMNS
WHERETABLE_SCHEMA='source_database_name'AND
EXTRA=UPPER('AUTO_INCREMENT')
ORDERBYTABLE_NAMEASC
2.导出所有索引:
SELECT
CONCAT('ALTERTABLE`',TABLE_NAME,'`','ADD',
IF(NON_UNIQUE=1,
CASEUPPER(INDEX_TYPE)
WHEN'FULLTEXT'THEN'FULLTEXTINDEX'
WHEN'SPATIAL'THEN'SPATIALINDEX'
ELSECONCAT('INDEX`',
INDEX_NAME,
'`USING',
INDEX_TYPE
)
END,
IF(UPPER(INDEX_NAME)='PRIMARY',
CONCAT('PRIMARYKEYUSING',
INDEX_TYPE
),
CONCAT('UNIQUEINDEX`',
INDEX_NAME,
'`USING',
INDEX_TYPE
)
)
),'(',GROUP_CONCAT(DISTINCTCONCAT('`',COLUMN_NAME,'`')ORDERBYSEQ_IN_INDEXASCSEPARATOR','),');')AS'Show_Add_Indexes'
FROMinformation_schema.STATISTICS
WHERETABLE_SCHEMA='pbq'
GROUPBYTABLE_NAME,INDEX_NAME
ORDERBYTABLE_NAMEASC,INDEX_NAMEASC
3.创建删除所有自增字段:
SELECT
CONCAT(
'ALTERTABLE`',
TABLE_NAME,
'`',
'MODIFYCOLUMN`',
COLUMN_NAME,
'`',
IF(UPPER(DATA_TYPE)='INT',
REPLACE(
SUBSTRING_INDEX(
UPPER(COLUMN_TYPE),
')',
1
),
'INT',
'INTEGER'
),
UPPER(COLUMN_TYPE)
),
')UNSIGNEDNOTNULL;'
)
FROMinformation_schema.COLUMNS
WHERETABLE_SCHEMA='destination_database_name'AND
EXTRA=UPPER('AUTO_INCREMENT')
ORDERBYTABLE_NAMEASC
4.删除库所有索引:
SELECT
CONCAT(
'ALTERTABLE`',
TABLE_NAME,
'`',
GROUP_CONCAT(
DISTINCT
CONCAT(
'DROP',
IF(UPPER(INDEX_NAME)='PRIMARY',
'PRIMARYKEY',
CONCAT('INDEX`',INDEX_NAME,'`')
)
)
SEPARATOR','
),
';'
)
FROMinformation_schema.STATISTICS
WHERETABLE_SCHEMA='destination_database_name'
GROUPBYTABLE_NAME
ORDERBYTABLE_NAMEASC
希望本文所述示例能够对大家有所帮助。
热门推荐
10 写生日祝福语简短唯美
11 新年简单祝福语简短好看
12 结婚祝福语亲姐姐简短
13 送女友表白祝福语简短
14 结婚婚庆祝福语简短
15 小寒健康祝福语大全简短
16 前程祝福语简短暖心
17 要过年了祝福语简短
18 年后祝福语简短走心