USE test;
CREATE TABLE student(
id int 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;