mysql索引
1.PRIMARY KEY(主键索引)
mysql> ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.UNIQUE(唯一索引)
mysql> ALTER TABLE `table_name` ADD UNIQUE ( `column` )
3.INDEX(普通索引)
mysql> ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.FULLTEXT(全文索引)
mysql> ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
5.多列索引
mysql> ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
6.删除索引
mysql> ALTER TABLE `table_name` DROP INDEX index_name
如果从表中删除了某列,则索引会受到影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。
mysql导出全部索引
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
mysql 删除全部索引
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
mysql修改表结构
增加列[add 列名]
①alter table 表名 add 列名 列类型 列参数【加的列在表的最后面】
②alter table 表名 add 列名 列类型 列参数 after 某列【把新列加在某列后面】
③alter table 表名 add 列名 列类型 列参数 first【把新列加在最前面】
删除列[drop 列名]
①alter table 表名 drop 列名
修改列[modife 列名]
①alter table 表名 modify 列名 新类型 新参数【修改列类型】
②alter table 表名 change 旧列名 新列名 新类型 新参数【修改列名和列类型】
查询列
①desc 表名【查询所有列】
②show columns from 表名【效果和desc一样】
③show create table 表名【查看表的创建代码】