zoukankan      html  css  js  c++  java
  • SQL语句之 知识补充

    SQL语句之 知识补充

     

    一.存储过程

    运用SQL语句,写出一个像函数的模块,这就是存储过程。

     

    需求: 编写存储过程,查询所有员工

    -- 创建存储过程(必须要指定结束符号)

    -- 定义结束符号

    DELIMITER $

    CREATE PROCEDURE pro_test()

    BEGIN 

    SELECT * FROM student;

    END $ 

     

    CALL pro_test     -- 调用存储过程

     

    创建存储语句:

    delimiter 结束符号

    create procedure 存储过程名称参数列表 out value varchar(20))//利用系统变量输出数据

    begin    -- 开始

         sql语句1

         sql语句2

    end 结束符号

     

    调用存储过程语法:

    call  存储过程名称(参数,@value);

    Select @value;

     

    参数类型:

    IN : 输入参数,把参数带入存储过程

    OUT: 输出参数,把结果随着参数带出到外面

    INOUT:  输入输出。 输入+输出

     

     

    二.触发器

    触发器

    在数据库服务器中执行了某些操作之后,希望触发一些事件、动作。就可以使用触发器

     

    触发器案例

    需求 : 当往employee表插入一条数据时,把该插入数据的动作记录到另一张表 logs

    解决办法:编写一个触发器,监听employee表的数据插入。

    -- *********四、 触发器***********

    -- 创建日志表

    CREATE TABLE tri_logs(

    content VARCHAR(100)

    )

     

    -- 创建添加触发器

                   触发器的名字     操作    创建在哪个表

    CREATE TRIGGER tri_addEmp AFTER INSERT ON employee FOR EACH ROW -- employee表插入一条记录时

         INSERT INTO tri_logs(content) VALUES('用户往employee表插入记录');

         触发后的操作

     

    -- 创建修改触发器     

    CREATE TRIGGER tri_updEmp AFTER UPDATE ON employee FOR EACH ROW

         INSERT INTO tri_logs(content) VALUES('用户修改了employee表记录');

     

    -- 创建删除触发器     

    CREATE TRIGGER tri_delEmp AFTER DELETE ON employee FOR EACH ROW

         INSERT INTO tri_logs(content) VALUES('用户删除了employee表记录');

         

         

    -- 往员工表插入数据

    INSERT INTO employee(ename, deptId) VALUES('eric',4);

    -- 修改

    UPDATE employee SET ename='jacky' WHERE eid=7;

    -- 删除

    DELETE FROM employee WHERE eid=7;

    -- 查询

    SELECT * FROM employee;

    SELECT * FROM tri_logs;

     

     

     

    MySQL数据库备份和还原

    备份语句: mysqldump -u root -p day17 > c:/bak.sql 执行次命令不需要登录

    还原语句: mysql -u root -p day17 < d:/back.sql

     

    MySQL数据库权限问题

    -- ********** 五、 MySQL数据库权限问题 ****

    -- 安装mysql的时候,使用默认用户rootroot是超级管理员,拥有对数据库的所有权限。(为了学习)

    -- 实际应用中,会有数据库角色配置。例如张三只能查看数据,李四只能创建表,不能删除表。

    -- 目标: 根据不同角色给不同用户分配数据库操作权限

     

    -- 修改用户的密码

    -- mysql数据库是存储mysql数据库软件用户信息

    USE mysql;

     

    SHOW TABLES;

    -- 查询mysql.user

    SELECT * FROM USER;

    -- 密码加密函数

    SELECT PASSWORD('root'); -- *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

    -- 修改root密码

    UPDATE USER SET PASSWORD=PASSWORD('123456') WHERE USER='root';

     

    -- 给用户分配权限

    GRANT SELECT ON day16.employee TO 'eric'@'localhost' IDENTIFIED BY '123456';

    GRANT SELECT ON day16.dept TO 'eric'@'localhost' IDENTIFIED BY '123456';

  • 相关阅读:
    支付宝小程序InputItem清除icon不显示
    win11 激活 wi7 win11 魔兽争霸切换 后无法 回到游戏界面 处理办法
    HJ10 字符个数统计
    iOS 15系统导航栏适配
    HJ4 字符串分隔
    HJ7 取近似值
    [iOS]隐藏导航栏3种方式
    HJ3 明明的随机数
    HJ8 合并表记录
    HJ5 进制转换
  • 原文地址:https://www.cnblogs.com/vmax-tam/p/4149952.html
Copyright © 2011-2022 走看看