• MySQL 视图&变量


    视图

    含义:虚拟表,和普通表一样使用,视图中的数据来自查询中使用的表,并且试图是动态生成的,并没有保存查询结果可以理解为封装:多次使用

     创建视图

    语法结构:
       creat view 视图名
       as
       查询语句;


     案例 :创建视图查询每个部门的平均工资

    1. CREATE VIEW myv2
    2. AS
    3. SELECT AVG(salary) ag,`department_id`
    4. FROM employees
    5. GROUP BY department_id;

    案例: #查询各部门工资级别

    1. SELECT myv2.ag,g.`grade_level`
    2. FROM myv2
    3. JOIN `job_grades` g
    4. ON myv2.ag BETWEEN g.`lowest_sal` AND `highest_sal`;

    案例 #查询姓张的学生名和专业名

    #之前写法

    1. SELECT `stuNume`,`majorName`
    2. FROM `stuinfo` s
    3. INNER JOIN maijor m
    4. ON s.`maijorId`=m.`id`
    5. WHERE s.`stuNume` LIKE '张%';

    #做虚拟表,封装起来

    1. CREATE VIEW v1
    2. AS
    3. SELECT `stuNume`,`majorName`
    4. FROM `stuinfo` s
    5. INNER JOIN maijor m
    6. ON s.`maijorId`=m.`id`;
    7. SELECT *FROM v1 WHERE stuNume LIKE '张%';

    二 视图的修改 

    语法结构

    方式1:
      create or replace view 视图名
      as
      查询语句;
      
      方式二:
      alter view 视图名
      as
      查询语句;


    三 删除视图

    drop view 视图名,视图名

    四查看视图

    1. DESC myv2;
    2. SHOW CREATE VIEW myv2;

    五 视图的更新(更新其中的数据)

     这个其实很好理解:更新视图的时候同时修改了原始表,所以当视图中有多于原始表中内容的操作的时候都不能执行

    #1.插入 (修改视图的时候,原始表也修改了,可以插入的条件是,没有额外多余原始表的东西

    1. INSERT INTO myv1 VALUES('张',NULL,NULL);
    2. SELECT *FROM myv1;

    #2.修改

    UPDATE myv1 SET last_name='zt' WHERE last_name=''
    

     #3.删除

    DELETE FROM myv1 WHERE 条件

    变量

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

    一 系统变量

     全局变量

    作用域:服务器每次启动将为所有全局变量赋值,针对所有连接有效,但是不能跨重启

    1.查看所有系统变量

     SHOW GLOBAL /【session】 VARIABLES

    2.查看满足条件的部分系统变量

    SHOW GLOBAL /【session】 VARIABLES LIKE ‘ ’;

    3.查看某某个指定系统变量的值

    SELECT @@global/【session】系统变量名 

    4.为某个系统变量赋值

    1. SET GLOBAL/【】 系统变量名=
    2. SET @@ global/【】 . 系统变量名=值;

    会话变量

    1. SHOW VARIABLES;
    2. SHOW VARIABLES LIKE '%ssl%';
    3. SELECT @@autocommit;
    4. SET autocommit=0;
    5. SET @@autocommit=1;

    二 自定义变量

    用户自己定义的  
    声明 赋值 使用

    1.用户变量

    可以应用到任何地方

    1.1声明并且初始化

    1. SET @用户变量名=值;
    2. SET @用户变量名:=值;
    3. SELECT @用户变量名:=值;

    1.2 赋值

    1. 和上面一样 或
    2. SELECT 字段 INTO @变量名
    3. FROM
    4. SET @coun=0;
    5. SELECT COUNT(*) INTO @coun
    6. FROM `employees`;

    1.3 使用

    1. SELECT @用户变量名;
    2. SELECT @coun;

    2.局部变量

    声明 

    1. DECLARE 变量名 类型;
    2. DECLARE 变量名 类型 DEFAULT 值;

    赋值 

    1. SET 变量名=
    2. SET 变量名:=

    使用

    SELECT 局部变量名

    对比

    用户变量            局部变量

    当前连接            只能在begin END 中第一句

    SET @用户变量名=值    DECLARE 用户变量名 类型

    案例 :声明两个变量并且赋值 求和 打印

    1. 1.用户变量
    2. SET @m=2;
    3. SET @n=3;
    4. SET@sum=@m+@n;
    5. SELECT @sum;
    6. 2.局部变量
    7. #下面这样写不行,需要在begin end
    8. DECLARE m1 INT DEFAULT 5;
    9. DECLARE n1 INT DEFAULT 6;
    10. DECLARE summ INT ;
    11. SET summ=m1+n1;
    12. SELECT summ;

  • 相关阅读:
    Pytorch 浅显入门
    一文读懂面试官都在问的Fastjson漏洞
    C++结合OpenCV进行图像处理与分类
    OpenAI变天:也许会有另一个OpenAI要崛起?
    PyTorch 单机多GPU 训练方法与原理整理
    跨域问题解决方案(三种)
    语音增强用到的方法总结
    docker 查看日志的三种方式
    好奇喵 | Tor浏览器——如何拥有一颗洋葱并使用
    01PCB设计概述
  • 原文地址:https://blog.csdn.net/m0_66057675/article/details/125596028