MySQL-视图、变量、存储过程、函数、流程控制结构

视图

  • 定义:一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。
存在的意义
  1. 重用sql语句
  2. 简化复杂的sql操作,不必知道它的查询细节
  3. 保护数据,提高安全性:仅提供所需字段,保护其余字段隐私。
创建
  • 语法
    create [or replace] view 视图名 as 查询语句;
    
修改(视图结构)
  • 语法
    #方式一
    create or replace view 视图名 as 查询语句;
    
    #方式二
    alter view 视图名 as 查询语句;
    
删除
  • 语法
    drop view 视图名1, 视图名2...;
    
查看
  • 语法
    #方式一
    desc 视图名;
    
    #方式二
    show create view 视图名;
    
更新(值)
  • 视图的可更新性和视图中查询的定义有关系,以下类型的视图时不能更新。
    1. 包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
    2. 常量视图
    3. select中包含子查询
    4. join
    5. from一个不能更新的视图
    6. where子句的子查询引用了from子句中的表

变量

系统变量

全局变量
show global variables [like '%x%'];
会话变量
show session variables [like '%x%'];

自定义变量

用户变量
局部变量

存储过程

  • 类似于java中的方法
  • 含义:一组预先编译好的sql语句的集合,理解成批处理语句
  • 作用:
    1. 提高代码的重用性
    2. 简化操作
    3. 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
创建
  • 语法
    create procedure 存储过程名(参数列表)
    begin
    	存储过程体(一组合法的sql语句)
    end
    
  • 注意:
    1. 参数列表包含三部分
      参数模式 参数名 参数类型
      举例:
      in stuname varchar(20)
      
    2. 参数模式
      in:该参数可以作为输入,也就是该参数需要调用方传入值
      out:该参数可以作为输出,也就是该参数可以作为返回值
      inout:该参数既可以作为输入又可以作为输出,也就是该参数既可以传入值,又可以返回值
    3. 如果存储过程体仅仅只有一句话,begin end可以省略;存储过程体中的每条sql语句的结尾要求必须加分号。
调用
  • 语法
    call 存储过程名(实参列表);
    
查看
  • 语法
    show create procedure 存储过程名;
    
删除
  • 语法
    drop procedure 存储过程名;
    

函数

  • 含义:一组预先编译好的sql语句的集合,理解成批处理语句

  • 作用:

    1. 提高代码的重用性
    2. 简化操作
    3. 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
  • 区别

    • 存储过程:可以由0或多个返回。适合用于批量插入、批量更新。
    • 函数:有且仅有1个返回。适合由于处理数据后返回一个结果。
创建
  • 语法
    create function 函数名(参数列表) returns 返回类型
    begin
    	函数体
    end
    
  • 注意:
    1. 参数列表 包含两部分:
      参数名 参数类型
    2. 函数体:肯定会有return语句,如果没有会报错;如果return语句没有放在函数体的最后也不会报错,但不建议
    3. 函数体中仅有一句话时,可以省略begin end
    4. 使用delimiter语句设置结束标语
调用
  • 语法
    select 函数名(参数列表);
    
查看
  • 语法
    show create function 函数名;
    
删除
  • 语法
    drop function 函数名;
    

流程控制结构

顺序结构

  • 程序从上往下一次执行

分支结构

  • 程序从两条或多条路径中选择一条去执行
  1. if函数
  • 功能:实现简单的双分支
  • 语法
    if(表达式1, 表达式2, 表达式3)
    #执行顺序:如果表达式1成立,则if函数返回表达式2的值,否在返回表达式3的值。类似于三元运算符
    
  1. case结构

循环结构

  • 程序在满足一定条件的基础上,重复执行一段代码
  1. while结构
  2. loop结构
  3. repeat结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值