MySQL学习笔记(四)

114 阅读4分钟

索引

在数据库表中,对字段建立索引可以大大提高查询速度。通过善用这些索引,可以令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