MySQL导出、删除索引Index和约束的方法

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。MySQL导出、删除索引Index和约束的方法,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1. 导出创建自增字段语句:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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. 导出所有索引:

    2.1 包括PRIMARY KEY和INDEX:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 =
'source_database_name'
GROUP
BY
TABLE_NAME, INDEX_NAME
ORDER
BY
TABLE_NAME
ASC
, INDEX_NAME
ASC


  2.2 不包括PRIMARY KEY,只包含INDEX:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 =
'source_database_name'

AND
UPPER(INDEX_NAME) != ‘PRIMARY’
GROUP
BY
TABLE_NAME, INDEX_NAME
ORDER
BY
TABLE_NAME
ASC
, INDEX_NAME
ASC






3. 创建删除所有自增字段:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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. 删除库所有索引:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/164227.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!