zoukankan      html  css  js  c++  java
  • 数据库实践作业二资料整合

    数据库实践作业二资料整合

    根据实验课的题目要求,共需要掌握以下部分:

    • 用户及用户权限管理
    • 存储及触发器使用
    • 数据库的备份与恢复

    以下部分将是很基础的数据库操作,存在许多不足需要改正。


    用户及用户权限管理

    前提:熟悉课本第四章内容

    我们在ROOT用户下创建普通用户

    	CREATE USER HUZR@localhost IDENTIFIED by '123';
    	CREATE USER pig@localhost IDENTIFIED by '123';
    

    然后我们可以在Nvaicat for MySQL客户端用户界面看到我们所创建的用户:

    接着可以对用户授权

    	GRANT SELECT
    	ON TABLE student
    	TO HUZR@localhost;
    
    	GRANT SELECT
    	ON TABLE course
    	TO pig@localhost;
    

    则我们刚才得到的用户分别有了对student、course表查询的权限

    那么我们如何登陆我们新建的用户呢?

    在Nvaicat for MySQL客户端新建一个连接:

    其中用户名和密码为我们刚才设定的内容。


    由于Nvaicat for MySQL客户端密码编码版本与MySQL服务器不同的原因。我们还需要更新该用户在MySQL服务器下的密码及解锁该用户 详情见链接


    此后我们用新增用户登陆,可以发现里面存在被我们赋予查询权限的表

    回收权限

    	REVOKE SELECT
    	ON TABLE student
    	FROM HUZR@localhost;
    

    经过此操作后在新建用户的数据库中已经没有相应的表格存在

    至此第一部分的基础内容已经完成。


    存储及触发器的使用

    存储相当于对一个函数的封装,创建存储如下:

    	delimiter $  
    	CREATE PROCEDURE select_row ()
    	BEGIN
    		SELECT * FROM student WHERE sname = '   ';
    		SELECT * FROM course ;
    	END $
    	delimiter ;
    

    对以上代码进行解析:

    • MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER $”声明当前段分隔符,让编译器把两个"$"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。
    • CREATE PROCEDURE 后面接的是存储的name(可以理解为函数的名称,可带参数,此处不展开),例子中即为selcet_row()
    • BEGIN 到 EDN 中间为存储的sql语句,可以花样百出

    存储调用

    	CALL select_row();
    

    注意尽管没有参数,也需要带上括号

    查看存储

    	show PROCEDURE STATUS WHERE Db = '031602215';
    

    删除存储

    	DROP PROCEDURE select_row;
    

    详尽资料链接见下:

    https://www.cnblogs.com/mark-chan/p/5384139.html

    https://www.cnblogs.com/geaozhang/p/6797357.html


    触发器顾名思义,创建触发器如下:

    	delimiter $
    
    	CREATE TRIGGER inset_student
    	AFTER UPDATE ON xuandao FOR EACH ROW
    	BEGIN
    		INSERT INTO student VALUES('这里是触发器',NULL,NULL,NULL,NULL);
    	END $
    
    	delimiter ;
    

    对以上面代码解析:

    • CREATE TRIGGER 后面接的的触发器名称
    • AFTER UPDATE 表明在更新操作后触发,其中AFTER的另一个参数为BEFORE; UPDATE亦可改成 INSERT,DELETE
    • ON 后面接表的名称,说明在哪张表建立触发器
    • FOR EACH ROW 说明是行级触发器,似乎没啥作用
    • BEGIN END 里面为触发执行的语句

    注意,不能对同一张表同时触发又执行 ,否则会报错

    查看触发器

    	SHOW TRIGGERS;
    

    查看触发器效果

    	UPDATE xuandao
    	SET tc = '   '
    	WHERE sname = '   ';
    	
    	SELECT * FROM student;
    

    通过对xuandao表格的更新,然后通过select查看效果

    删除触发器

    	DROP TRIGGER inset_student;
    

    详尽资料链接见下:

    https://www.cnblogs.com/CraryPrimitiveMan/p/4206942.html


    数据库的备份与恢复

    完整备份:

    mysqldump -u root -p database_name > 路径及备份文件名.sql

    差异备份:

    在windows下我还不会。。。。

    日志备份:

    同上。。。

    备份恢复:

    source yourbf.sql


    前面所讲的内容都只是一个框架,可以精致的展开。

    在windows下的MySQL真是难受,找了两天的教程还是没解决,各种教程都是Linux情况的。

  • 相关阅读:
    精益产品探索
    vue 之 pdf预览
    arcgis js 之 渔网工具(调用地图服务)
    arcgis js之卷帘工具
    arcgis js之调用wms服务
    vue-cli3 本地数据模拟后台接口
    cmd设置电脑自动关机
    Arcgis js之web墨卡托(3857)转经纬度坐标(4326)
    arcgis js之地图分屏同步
    arcgis之gp服务发布
  • 原文地址:https://www.cnblogs.com/Huzr/p/9090446.html
Copyright © 2011-2022 走看看