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情况的。

  • 相关阅读:
    SqlServer 查看数据库中所有存储过程
    SqlServer 查看数据库中所有视图
    SqlServer 查询表的详细信息
    SqlServer 遍历修改字段长度
    net core 操作Redis
    Tuning SharePoint Workflow Engine
    Open With Explorer
    Download language packs for SharePoint 2013
    Change Maximum Size For SharePoint List Template when Saving
    Six ways to store settings in SharePoint
  • 原文地址:https://www.cnblogs.com/Huzr/p/9090446.html
Copyright © 2011-2022 走看看