目录
2.5 DCL
DCL英文全称是**Data Control Language**(数据控制语言),用来管理数据库用户、控制数据库的访问权限。
2.5.1 查询用户
查询用户信息:select * from mysql.user; 例如:
其中major是esa数据库的一个表,在此之前我通过use esa 进入esa数据库中,因此不需要再表名前加一个【数据库名.】然后查询到了major表的所有信息。【*】是查询所有信息的指令
2.5.2 创建用户
语法: CREATE USER 用户名@地址 IDENTIFIED BY ‘密码’;例如:
在user表中创建b用户。use mysql可以不用写。
在user表中可以看到Usuer列下多了一个b用户
--user2用户可以在任何电脑上登录mysql服务器
CREATE USER user2@'%' IDENTIFIED BY '123';
2.5.3 给用户授权
上述只是简单罗列了常见的几种权限描述,其他权限描述及含义,可以直接参考【官方文档】
注意:
当创建的用户没有被授予相应的权限时,是没有办法执行该权限。 例如:
当我登录b用户时,想要创建一个数据库mydb1,却提示错误,这是权限不足的原因,缺少CREATE权限,需要root用户给b用户权限,才能创建数据库!
语法:GRANT 权限1,权限2,...,权限n ON 数据库.* TO 用户名;
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;
GRANT ALL ON mydb1.* TO user2@localhost;
注意事项:
• 多个权限之间,使用逗号分隔
• 授权时, 数据库名和表名可以使用 * 进行通配,代表所有。
例如:
在root用户中,授予b用户可以创建数据库
b用户成功创建数据库,因为创建数据库是对整体操作,【*.*】意思是对任何数据库的任何表操作,【数据库.*】意思是是某个数据库的所有表操作。
2.5.4 撤销权限
语法:
REVOKE权限1, … , 权限n ON 数据库.* FORM 用户名;
REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;
2.5.5 查看用户权限
语法:
SHOW GRANTS FOR 用户名;
SHOW GRANTS FOR user1@localhost;
2.5.6 删除用户
语法:
DROP USER 用户名;
DROP USER user1@localhost;
注意事项:
• 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。
• 主机名可以使用 % 通配。
• 这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库管理员)使用。
2.5.7 修改用户密码
语法:
USE mysql;
UPDATE USER SET authentication_string=PASSWORD('密码') WHERE User='用户名' and Host='IP';
FLUSH PRIVILEGES; //执行刷新数据
例如:
UPDATE mysql.USER SET authentication_string=PASSWORD('123456') WHERE USER='zhangsan' AND HOST='localhost';
FLUSH PRIVILEGES;
将张三的密码改成123456
2.6 DML
DML(Data Manipulation Language)即数据操作语言。它是用于数据库中对数据进行操作的语言,主要包括以下几种常见的操作:插入数据、修改数据、删除数据。
2.6.1 插入数据
插入指定列语法:INSERT INTO 表名(列名1,列名2, …) VALUES(值1, 值2); 例如:
insert into major(major_id, major_name, type, college_id) //表中的列名,可以任意个,但是注意!带有主键的列,插入数据时一定要有值 values(666,'计算机','工学',10); //注意:所有字符串数据必须使用单引号 select * from major;
从这里我们可以看到,数据正常的添加到了major表中 。
2.6.2 修改数据
语法:UPDATE 表名 SET 列名1=值1, … 列名n=值n [WHERE 条件]
update major set type = '语文' where major_id = 201
从这里可以看到,type列的第一行的文学被修改成了语文
2.6.3 删除数据
语法:
DELETE FROM stu WHERE sid='s_1001';
DELETE FROM stu WHERE sname='chenQi' OR age > 30;
DELETE FROM 表名 [WHERE 条件]
DELETE FROM stu;//删除所有(慎重)
还有一种删除数据的方式:
TRUNCATE TABLE 表名
TRUNCATE TABLE stu;
注意!!!:这是将整个表删除之后,再创建了一个表,TRUNCATE是属于DDL语句,先是DROP TABLE 然后再CREATE TABLE 并且删除的数据是无法回滚的的,而DELETE删除的数据是可以回滚的