DCL(数据控制语言)
DCL主要提供授权和召回授权以及事务等相关功能
1.用户管理(root账号才有的权限)
1)创建用户
create user '用户名'@'登录地址';
- 创建数据库用户,该用户登录不需要密码
create user '用户名'@'登录地址' identified by '密码';
说明:
用户名 - 随便命名
登录地址 - ip地址/localhost(本机)/%(任意位置)
1 | CREATE USER 'user1'@'localhost'; |
2)删除用户
drop user '用户名';
1 | drop user 'user2'; |
2.授权管理
1)授权
grant 权限类型 on 数据库.表 to 用户名;
说明:
权限类型 - insert
,delete
,update
,select
,create
,drop
,all privileges
1 | grant select on school.tb_student to 'user1'@'localhost'; |
2)召回授权
revoke 权限类型 on 数据库.表 from 用户;
1 | revoke update on school.tb_student from 'user1'@'localhost'; |
3.事务
如果完成一个任务需要多个操作,但是要求多个操作中,只要有一个失败,整个任务就会取消,同时让数据库回到任务开始前的状态,只有所有的操作都成功的情况下,数据库才会更新。这个时候我们就需要用到事务。
1 | -- 开启事务环境 |
视图
视图是用来存储一个sql查询语句的结果的。就相当于给查询语句的结果创建了一张临时表,但是该临时表不占物理内存
1.创建视图
create view 视图名 as sql查询语句;
- 给sql查询语句的结果创建一张临时表
eg:获取学生学科的成绩
1 | select stuid,stuname,couid,couname,score from tb_student,tb_record,tb_course where tb_student.stuid=tb_record.sid and tb_record.cid=tb_course.couid; |
2.使用视图
视图在使用的时候和表的使用方法一样(注意:视图一般只用于查询操作,而不进行增删改的操作)
1 | -- 查询视图和查询表一样 |
注:当对用户进行授权的时候,可以只针对视图进行授权操作。
1 | create view vw_emp_info as select eno,ename,job,mgr,dno from tb_emp; |
索引
索引就像书的目录,记录了数据的位置,可以提高查询的速度(用空间换时间),一般需要给使用频率较高的字段添加索引;(主键自带索引 - 唯一索引)
1.添加索引
create index 索引名 on 表名 (字段);
- 给指定的字段添加普通的索引
create unique index 索引名 on 表名 (字段);
- 给指定字段添加唯一索引(字段是唯一的时候才能添加唯一索引)
1 | EXPLAIN SELECT * FROM tb_student where stuname='项少龙'; |
1 | create index idx_stuname on tb_student(stuname); |
注意:模糊查询的时候以%
,_
开头时,相较于无索引查询,效率几乎不会提高
2.删除索引
alter table 表名 drop index 索引名;
1 | alter table tb_student drop index idx_stuname; |
注意:
索引不能滥用
- 索引会占用额外的空间
- 索引会让增删改的操作变得更慢
如果哪个列经常被用于查询操作,就给那个列添加索引。