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;