您现在的位置是: 网站首页> MySQL MySQL
MySQL的进阶操作与使用
Smile
2019-06-22 17:26:16
MySQL
阅读:1618
简介MySQL 是最流行的关系型数据库管理系统,在web应用开发中大量使用,与PHP和Apache堪称web开发中的黄金搭档,并且开源免费,备受开发者的喜爱,本文讲解MySQL的一些进阶操作与使用,使得在开发中使用MySQL更加轻松。
1、使用ALTER命令修改表结构
(1)添加表字段
ALTER TABLE article ADD status TINYINT;
添加时指定在某个字段之后
ALTER TABLE article ADD status TINYINT AFTER cid;
(2)删除字段
ALTER TABLE article DROP status;
(3)修改字段名称以及类型
仅修改字段类型
ALTER TABLE article MODIFY status INT;
修改字段名称及类型
ALTER TABLE article CHANGE status type INT;
修改时指定默认值
ALTER TABLE article MODIFY type TINYINT NOT NULL DEFAULT 1;
也可以这样修改默认值
ALTER TABLE article ALTER type SET DEFAULT 1;
删除默认值
ALTER TABLE article ALTER type DROP DEFAULT;
(4)修改表名称
ALTER TABLE article RENAME TO article2;
2、创建索引
(1)普通索引
创建表 + 索引:
CREATE TABLE IF NOT EXISTS `article`(
`id` INT UNSIGNED AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`author` VARCHAR(40) NOT NULL,
`content` TEXT NOT NULL,
INDEX indexName (title)
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建索引:
CREATE INDEX indexName ON article(title);
使用 ALTER 创建索引
ALTER table article ADD INDEX indexName(title);
删除索引
DROP INDEX indexName ON article;
ALTER TABLE article DROP INDEX indexName;
(2)唯一索引
创建表 + 索引:
CREATE TABLE IF NOT EXISTS `article`(
`id` INT UNSIGNED AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`author` VARCHAR(40) NOT NULL,
`content` TEXT NOT NULL,
UNIQUE indexName (title)
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建索引:
CREATE UNIQUE INDEX indexName ON article(title);
使用 ALTER 创建索引
ALTER table article ADD UNIQUE indexName (title);
删除索引:
DROP INDEX indexName ON article;
ALTER TABLE article DROP UNIQUE INDEX indexName;
(3)组合索引
创建索引
CREATE INDEX indexName on article(title,author);
注:如上创建组合索引之后,查询(最左匹配)
- name and email -- 使用索引
- name -- 使用索引
- email -- 不使用索引
(4)显示索引信息
SHOW INDEX FROM article \G;
3、explain 执行计划:
explain sql语句
不使用索引,普通查询
mysql> explain select * from article \G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: article
partitions: NULL
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 4
filtered: 100.00
Extra: NULL
1 row in set, 1 warning (0.00 sec)
使用id主键索引查询
mysql> explain select * from article where id=1 \G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: article
partitions: NULL
type: const
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: const
rows: 1
filtered: 100.00
Extra: NULL
1 row in set, 1 warning (0.00 sec)
type:
- --All:全表扫描
- --index:全索引表扫描
- --range:对索引列进行范围查找
- --INDEX_MERGE:合并索引,使用多个单列索引搜索
- --REF:根据索引查找一个或多个值
- --EQ_REF:连接时使用primary key 或 unique类型
- --CONST:表最多有一个匹配行,因为仅有一行,在这行的列值可被优化器剩余部分认为是常数,const表很快,因为它们只读取一次。
- --SYSTEM:表仅有一行(=系统表)。这是const联接类型的一个特例。
很赞哦! (0)
上一篇:MySQL的基本操作与使用(2)
下一篇:MySQL子查询简单使用