• mysql数据库基础:视图、变量


    视图

    1、含义

    简单理解为视图是一个虚拟表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。

    • 使用场景
      多个地方用到同样的查询结果,该查询结果使用的sql语句较复杂。

    2、视图特点

    1、宠用sql语句
    2、简化复杂的sql操作,不必知道它的查询细节
    3、保护数据,提高安全性(只提供客户想知道的数据)

    3、创建/修改视图

    • 语法
    # 方式一:
    create view 视图名
    as
    查询语句;
    
    # 下面两个语句也可以用来修改视图
    # 方式二
    create or replace view 视图名
    as
    查询视图;
    
    # 方式三
    alter view 视图名
    as
    查询视图;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4、查看视图

    # 方式一
    desc 视图名;
    
    # 方式二
    show create view 视图名;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5、删除视图

    drop view 视图名1,视图名2...;
    
    • 1

    6、更新视图

    更新视图中的数据

    • 语法
    # 插入
    insert into 视图名 varlues('值1','值2',...);
    
    # 修改
    update 视图名 set 列名='值',... where 条件
    ;
    
    # 删除
    delete from 视图名 where 条件;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    需要注意的是一般是不允许进行视图的更新操作的,因为视图的更新会导致原表中的数据同样进行改变
    以下类型的视图是不能更新的
    在这里插入图片描述

    7、视图与表的对比

    类型创建语法的关键字是否实际占用物理空间
    视图create只保存了sql逻辑,不占用空间
    create table保存了数据,占用空间

    变量

    1、分类

    • 系统变量
      • 全局变量
      • 会话变量
    • 自定义变量
      • 用户变量
      • 局部变量

    2、系统变量

    • 说明
      变量由系统提供,不是用户定义,属于服务器层面。

    • 作用域

      • 全局变量:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话连接有效。
      • 会话变量:仅仅针对当前会话连接有效。
    • 语法
      1、查看所有的系统变量
      show global|【session】 variables

      2、查看满足条件的部分系统变量
      show global|【session】variables like '%char%';

      3、查看指定的某个系统变量的值
      select @@global|【session】.系统变量名

      4、为某个系统变量赋值
      方式一:
      set global|【session】系统变量名 = 值;
      方式二:
      set @@global|【session】.系统变量名=值;

    补充:如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果不写则默认为session

    3、自定义变量

    • 说明:
      变量使用户自己定义的,不是由系统定义的
    • 使用步骤:
      (1)声明(2)赋值(3)使用(查看、比较、运算等)

    3.1 用户变量

    • 作用域:针对于当前会话连接有效,可以应用在任何地方,也就是begin end里面或begin end 外面
    1. 声明并初始化

    方式一:set @用户变量名=值;
    方式二:set @用户变量名:=值;
    方式三:select @用户变量名:=值;

    1. 赋值(更新用户变量的值)

    方式一:通过set或select

    方式一: set @用户变量名=值;
    方式二: set @用户变量名:=值;
    方式三: select @用户变量名:=值;

    方式二:通过select into

    select 字段 into 变量名 from;
    
    # 例如:将count(*)求得的值赋值到@count变量中去
    select count(*) into @count;
    
    • 1
    • 2
    • 3
    • 4
    1. 使用(查看用户变量的值)
    select @用户变量名;
    
    • 1

    3.2 局部变量

    作用域:仅仅在定义它的begin end中有效,应用在begin end的第一句话

    1. 声明

    方式一:declare 变量名 类型;
    方式二:declare 变量名 类型 default 值;

    1. 赋值

    方式一:

    方式一: set 局部变量名=值;
    方式二: set 局部变量名:=值;
    方式三: select 局部变量名:=值;

    方式二:通过select into

    select 字段 into 局部变量名 from;
    
    • 1
    1. 使用
    select 局部变量名;
    
    • 1
  • 相关阅读:
    【Kubernetes】基于K8S & SpringCloud OpenFeign的一种微服务构建模式
    MacBook Pro完整卸载及安装激活VMware Fusion13.0.0教程
    Win11如何添加默认打印机?
    亚马逊、eBay,速卖通,国际站买家账号支付异常问题解决方法
    CYQ.Data 操作 Redis 性能测试:对比 StackExchange.Redis
    C 基础语法3 —— 指针
    Kubernetes集群+Keepalived+Nginx+防火墙 实例
    HTML期末学生大作业:中华传统文化【苏绣手工艺】带psd设计图(15页)
    网络安全基础 之 防火墙 双机热备、防火墙类型、组网方式、逻辑区域划分、防火墙的各种NAT配置方法
    基于SpringBoot的在线学生请假管理系统的设计与实现毕业设计源码060935
  • 原文地址:https://blog.csdn.net/lalala_dxf/article/details/125525792