编写顺序和执行顺序是不一样的
编写顺序:
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数
DCL
英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。
查询mysql用户
use mysql; // 用户所具有的全部信息都是放在mysql这个数据库中的 select * from user;
创建用户-语法
create user '用户名'@'主机名' identified by '密码';
创建用户ituser, 只能够在当前主机localhost访问,密码123456
create user 'ituser'@'localhost' identified by '123456'; 当前我们创建的这个数据库用户。 它只能访问mysql数据库,其他数据库没有访问的权限。
创建用户user,可以在任意主机访问数据库,密码123456
create user 'user'@'%' identified by '123456'; ps:% 任意主机
修改用户的密码-语法
alter use '用户名'@'主机名' identified with mysql_native_password by '新密码';
修改用户user的访问密码为123
alter use 'user'@'%' identified with mysql_native_password by '123'
删除用户密码-语法
drop user '用户名'@'主机名';
注意:
·主机名可以使用%通配。 ·这类SQL开发人员操作的比较少,主要是DBA ( Database Administrator数据库管理员)使用。
权限控制
查询用户有哪些权限
查询用户有哪些权限语法: show grants for '用户名'@'主机名'; 现在我们查询之前创建的 ituser 用户有哪些权限。 show grants for 'ituser'@'localhost'; 出现:GRANT USAGE ON xxx表示只有连接权限
授予权限
grant 列表列表 on 数据库名.表名 to '用户名'@'主机名'; 现在我们需要给ituser用户设置某一个数据库的所有权限 grant all on itdemo1.* to 'ituser'@'localhost'; 出现 GRANT ALL PRIVILEGES 表示是所有的权限
撤销权限
revoke 列表列表 on 数据库名.表名 from '用户名'@'主机名'; 现在我们要撤销 ituser用户 itdemo1数据库下所有表的所有权限,如下 revoke all on itdemo1.* from 'ituser'@'localhost'; 撤销成功后,我们可以查询一下: show grants for 'ituser'@'localhost'; 出现:GRANT USAGE ON xxx 表示只有连接权限 ps:itdemo1.* 表示itdemo1数据库下的所有表
注意的是
·多个权限之间,使用逗号分隔 ·授权时,数据库名和表名可以使用*进行通配,代表所有。