MySQL的常用基础语法一

查看表的建表语句

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’的普通索引

对索引的一些说明:

索引的好处是提高了查询的速度,但滥用索引也会带来一些问题,如下所述:

  1. 对表进行增、删、改操作时会降低更新表的速度,因为不仅要更新数据,还要更新索引文件
  2. 索引文件会占用磁盘空间
  3. 日常的查询过程中,索引的生效与否需要特别注意

查询表大小、索引大小

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;

你可能感兴趣的:(MySQL的常用基础语法一)