查看表的建表语句
SHOW CREATE TABLE xxx;
查看xxx表的建表语句
修改字段的类型、长度等
ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型 新类型长度 新默认值 新注释;
举例:
ALTER TABLE test modify column field1 decimal(10,1) DEFAULT NULL COMMENT '注释';
修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 新类型长度 新默认值 新注释;
alter table table1 change column1 column2 varchar(100) DEFAULT 1.2 COMMENT '注释';
在指定的一个字段后面追加新的字段
语法:
ALTER TABLE tableName ADD field(要添加的字段) type(字段类型) DEFAULT '默认值' COMMENT '注释' AFTER field(表中存在的某个字段名)
举例说明:
ALTER TABLE user ADD remark varchar(1024) DEFAULT '' COMMENT '描述' AFTER name;
在user表中的name字段后,追加一个remark字段,该字段的类型是varchar,长度1024,默认值是空,字段的中文注释是“描述”
索引的查看、创建和删除
索引的查看:
SHOW INDEX FROM tableName;
删除索引:
按索引名字删除索引
DROP INDEX indexName ON TableName
或者
ALTER TABLE tableName DROP INDEX indexName(推荐)
删除主键
ALTER TABLE table_name DROP PRIMARY KEY
索引的类型:
UNIQUE(唯一索引):不可以出现相同的值,可以有NULL值
INDEX(普通索引):允许出现相同的索引内容
PROMARY KEY(主键索引):不允许出现相同的值
fulltext index(全文索引):可以针对值中的某个单词,但效率确实不敢恭维
组合索引:实质上是将多个字段建到一个索引里,列值的组合必须唯一
创建唯一索引:
语法:
ALTER TABLE tableName ADD UNIQUE 索引名(如不指定,则同追加唯一索引的字段名一致)
(字段名)
举例:
ALTER TABLE test ADD UNIQUE uniq_idx_a
(bb) ;
给test表中的bb字段,创建一个名为‘uniq_idx_a’的唯一索引
创建联合唯一索引:
语法:
ALTER TABLE tableName ADD UNIQUE 索引名
(字段a,字段b)
举例:
ALTER TABLE test ADD UNIQUE uniq_idx_union
(aa ,bb) ;
给test表创建一个名为‘uniq_idx_union’的联合唯一索引,索引有字段aa和bb组成
增加普通索引:
ALTER TABLE tableName ADD INDEX indexName (field)
举例:
ALTER TABLE test ADD INDEX idx_aa
(cc) ;
给test表中的cc字段,创建一个名为‘idx_aa’的普通索引
对索引的一些说明:
索引的好处是提高了查询的速度,但滥用索引也会带来一些问题,如下所述:
- 对表进行增、删、改操作时会降低更新表的速度,因为不仅要更新数据,还要更新索引文件
- 索引文件会占用磁盘空间
- 日常的查询过程中,索引的生效与否需要特别注意
查询表大小、索引大小
SELECT
CONCAT(table_schema,'.',table_name) AS 'Table Name',
table_rows AS 'Number of Rows',
CONCAT(ROUND(data_length/(1024*1024*1024), 2), ' GB') AS 'Data Size',
CONCAT(ROUND(index_length/(1024*1024*1024), 2), ' GB') AS 'Index Size',
CONCAT(ROUND((data_length+index_length)/(1024*1024*1024), 2), ' GB') AS 'Total'
FROM information_schema.TABLES
WHERE table_name = 'report_access_log';
结果如下:
查看MySQL当前用户占用的连接数
show processlist;