索引
在数据库表中,对字段建立索引可以大大提高查询速度。通过善用这些索引,可以令MySQL的查询和 运行更加高效
索引分类
- 主键索引 (primary key) 主键是一种唯一性索引,每个表只能有一个主键, 用于标识数据表中的每一 条记录
- 唯一索引 (unique) 唯一索引指的是 索引列的所有值都只能出现一次, 必须唯一
- 普通索引 (index) 最常见的索引,作用就是 加快对数据的访问速度
主键索引 (PRIMARY KEY)
主键是一种唯一性索引,每个表只能有一个主键,用于标识数据表中的某一条记录
一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL
唯一索引(UNIQUE)
索引列的所有值都只能出现一次, 必须唯一
CREATE TABLE 表名(
列名 类型(长度),
-- 添加唯一索引
UNIQUE [索引名称] (列名)
)
create unique index 索引名 on 表名(列名(长度))
ALTER TABLE 表名 ADD UNIQUE ( 列名 )
普通索引 (INDEX)
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度
因此,应该只为那些最经常出现在查询条件(WHERE column=)或排序条件(ORDERBY column)中的数据列创建 索引
create index 索引名 on 表名(列名[长度])
ALTER TABLE 表名 ADD INDEX 索引名 (列名)
删除索引
ALTER TABLE table_name DROP INDEX index_name
索引的优缺点总结
添加索引首先应考虑在 where 及 order by 涉及的列上建立索引
索引的优点
- 大大的提高查询速度
- 可以显著的减少查询中分组和排序的时间
索引的缺点
- 创建索引和维护索引需要时间,而且数据量越大时间越长
- 对表中的数据进行增加,修改,删除的时候,索引要同时进行维护,降低数据的维护速度
MySQL 视图
视图主要就是为了简化多表的查询
- 视图是一种虚拟表
- 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表
- 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句
- 视图向用户提供基表数据的另一种表现形式
视图的作用
权限控制时可以使用:某几个列可以运行用户查询,其他列不允许,可以开通视图 查询特定的列, 起到权限控制的作用
简化复杂的多表查询:将一次复杂的查询 构建成一张视图
创建视图
create view 视图名 [column_list] as select语句
SELECT * FROM 视图名
视图与表的区别
- 视图是建立在表的基础上,表存储数据库中的数据,而视图只是做一个数据的展示
- 通过视图不能改变表中数据(一般情况下视图中的数据都是表中的列 经过计算得到的结果,不允许 更新)
- 删除视图,表不受影响,而删除表,视图不再起作用
DCL(数据控制语言)
MySql默认使用的都是 root 用户,超级管理员,拥有全部的权限。除了root用户以外,我们还可以通 过DCL语言来定义一些权限较小的用户, 分配不同的权限来管理和维护数据库
创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'
- 用户名 创建的新用户,登录名称
- 主机名 指定该用户在哪个主机上可以登陆,本地用户可用 localhost 如果想让该用户可以 从任意远程主机登陆,可以使用通配符 %
- 密码 登录密码
用户授权
GRANT 权限 1, 权限 2... ON 数据库名.表名 TO '用户名'@'主机名'
权限 授予用户的权限,如 CREATE、ALTER、SELECT、INSERT、UPDATE 等。 如果要授 予所有的权限则使用 ALL
ON 用来指定权限针对哪些库和表
TO 表示将权限赋予某个用户
查看权限
SHOW GRANTS FOR '用户名'@'主机名'
删除用户
DROP USER '用户名'@'主机名'
查询用户
选择名为 mysql的数据库, 直接查询 user表即可
SELECT * FROM USER