mysql触发器学习

USE test;



CREATE TABLE student(
	id PRIMARY KEY AUTO_INCREMENT,
	NAME CHAR(10), 
	age INT
);

CREATE TABLE student_log(
	id INT PRIMARY KEY AUTO_INCREMENT, 
	content VARCHAR(20)
);

-- 1.创建添加触发器:
CREATE TRIGGER tri_studentAdd AFTER INSERT ON student FOR EACH ROW 
	INSERT INTO student_log(content) VALUES('学生被插入了一条数据');
-- 删除触发器:
-- drop trigger tri_studentAdd;

-- 2.创建修改触发器
CREATE TRIGGER tri_studentUpd AFTER UPDATE ON student FOR EACH ROW
	INSERT INTO student_log(content) VALUES('学生被修改了一条数据');
-- drop trigger tri_studentUpd;

-- 3.创建删除触发器
CREATE TRIGGER tri_studentDel AFTER DELETE ON student FOR EACH ROW
	INSERT INTO student_log(content) VALUES('学生被删除了一条数据');
-- drop trigger tri_studentDel;


INSERT INTO student(NAME, age) VALUES
('aaa', 18), 
('bbb', 19), 
('ccc', 20); 
-- 因为以上插入了三次所以,往student_log表中插入3条数据。

UPDATE student SET age = 22 WHERE NAME='aaa';  
-- 日志生效

DELETE FROM student WHERE student.`id` = 2;
-- 日志生效


-- 五、mysql的权限问题
-- root用户:超级管理员		增删改查(数据库、表、数据)
 
-- 给mysql数据库分配不同权限的不同用户

-- 注意:最好不要安装压缩版的mysql,其中没有mysql数据库
-- 意味着不能修改增删,用户和权限
-- mysql数据库:存放mysql的配置信息包括用户信息
USE mysql;

-- 用户表
SELECT * FROM USER;

-- 在查询出mysql表的时候,发现一个很奇怪的现象
-- user其中的password并不是一串真实密码
-- 而是一串加密的无序字符串,且长度很长
-- 得知:
-- 	存入在数据库中的密码,都是通过单向加密的
-- 	只能加密,不能解密(或解密得到的结果很多,不能唯一确定)
-- 	加密有两种方法:1.通过mysql insert的时候进行加密
-- 	2.通过在java里面get到的时候进行加密。
--	由此推论出,密码是不可能提供找回功能的,只能提供重置功能。
-- 	mysql中提供的是加密函数进行加密
--	select password('root');   加密函数(MD5算法--单向加密)
-- 	加密成32位的字符串
-- 修改用户密码:先加密了之后,再放进去
UPDATE USER SET PASSWORD=PASSWORD('123456') WHERE USER='root';


-- 分配权限给不同的用户


-- 用户不存在时,自动创建用户(即是分配权限也是创建用户,存在时增加权限,不存在时创建用户分配权限)
-- 需求:分配查询test中的student的权限的给mzy用户,密码为:'123456';
--  分配查询权限		  用户名  登录位置
GRANT SELECT ON test.`student` TO 'mzy'@'localhost' IDENTIFIED BY '123456';
-- 分配删除权限:在查询上追加权限
GRANT DELETE ON test.`student` TO 'mzy'@'localhost' IDENTIFIED BY '123456';

-- 删除的话,直接delete就行了 

SHOW TABLES;

  





 



猜你喜欢

转载自blog.csdn.net/qq_36791569/article/details/80166931