暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL中的视图与变量

brevity分享 2021-09-12
1730
在实际开发中,除了创建表之外,还有一种方式,就是创建视图,视图是一种虚拟存在的表,数据来源于定义视图的查询中使用的表,而且使用视图时数据是动态生成的,只保存SQL逻辑,不保存查询结果。创建视图语法如下:CREATE VIEW 视图名 AS 查询语句;示例代码:
    CREATE VIEW v1 AS SELECT stu_name,gender FROM stuinfo s INNER JOIN major m ON s.major_id = m.id;
    CREATE VIEW my_view AS SELECT last_name,department_name,job_title FROM employees e JOIN departments d ON e.department_id = d.department_id JOIN jobs j ON j.job_id = e.job_id;
    SELECT * FROM my_view WHERE last_name LIKE '%K%';
    视图的修改:①CREATE OR REPLACE VIEW 视图名 AS 查询语句;②ALTER VIEW 视图名 AS 查询语句; 。删除视图:DROP VIEW 视图名,视图名……;。查看视图:SHOW CREATE VIEW 视图名;。
    视图的好处:重用SQL语句;简化复杂的SQL操作,不必知道它的查询细节;保护数据,提高安全性。视图与表的对比:①创建关键字不同:view与table;②视图只保存了SQL逻辑,表保存了实际数据;③视图一般不能增删改。
    在SQL中也有变量的概念,类似于编程语言中的变量,变量是后面存储过程和函数的基础。变量分为系统变量和自定义变量,系统变量又分为全局变量和会话变量,自定义变量又分为用户变量和局部变量。系统变量由系统提供,不是用户自定义,属于服务器层面。全局变量作用域是服务器每次启动将为所有的全局变量赋初始值,对于所有的会话(连接)有效,但不能跨重启。会话变量的作用域仅对于当前会话(连接)有效。
    查看所有的系统变量:
      SHOW GLOBAL|SESSION VARIABLES;
      查看满足条件的部分系统变量:
        SHOW GLOBAL VARIABLES LIKE 'char%';
         查看指定的某个系统变量的值:
          SELECT @@global|[SESSION].系统变量名;
          SELECT @@global.autocommit;
          SELECT @@tx_isolation;
          为某个系统变量赋值:
            SET GLOBAL|[SESSION] 系统变量名 = 值;
            SET @@global|[SESSION].系统变量名 = 值;
            SET @@global.autocommit = 0;

            从上面可以看出,如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果不写,则默认为session。

            自定义变量是用户自定义的,不是由系统提供的,其中用户变量的作用域对于当前会话(连接)有效,自定义变量需要声明并且初始化,语法为:①SET @用户变量名 = 值;②SET @用户变量名 := 值;③SELECT @用户变量名 := 值;。声明后需要赋值:语法为:①SET @用户变量名 = 值;②SET @用户变量名 := 值;③SELECT @用户变量名 := 值;  还可以通过SELECT 字段 INTO @变量名 FROM表;的方式赋值。示例如下:
              SELECT COUNT(*) INTO @count FROM employees;
              赋值后查看变量的值:SELECT @用户变量名;
                SELECT @count;
                局部变量仅仅在定义它的BEGIN END中有效,它的使用有三步:①声明:DECLARE 变量名 类型; DECLARE 变量名 类型 DEFAULT 值; ②赋值:SET 局部变量名 = 值; SET 局部变量名 := 值; SELECT @局部变量名 := 值; SELECT 字段 INTO 局部变量名 FROM 表;。③使用:SELECT 局部变量名;。
                  # 用户变量
                  SET @m=1;
                  SET @n=2;
                  SET @sum = @m + @n;
                  SELECT @sum;
                  文章转载自brevity分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论