• MySQL基础(3):进阶用法


    一、视图

    正式环境中有时需要只提供原始表的部分信息以保护数据安全性,就可以用视图,相当于虚拟表

    #1、创建:
        CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;
    #2、使用:把视图当虚拟表用
    #3、修改:
        create or replace view 视图名 as 查询语句;
        alter view 视图名 as 查询语句;
    #4、删除:
        drop view 视图名1,视图名2...;
    #5、查看:
        show create view 视图名;

    二、变量

    1、系统变量:由系统提供,属于服务器层面

      (1)全局变量:针对所有会话有效,但不能跨重启

      (2)会话变量:针对一次会话

    查看:show global/【session】 variables like '%char%' ;
    设置:set global /【session】 系统变量名 = 值;

    2、自定义变量:

    1)用户变量:针对当前会话有效,在begin end里或外都可以使用,声明时要初始化,要加@符号,不用限定类型

    #1声明
    SET @用户变量名 = 值;
    SET @用户变量名 := 值;
    SELECT @用户变量名 := 值;
    
    #2赋值
    SELECT 字段 INTO @变量名 FROM 表;
    
    #3使用
    SELECT @用户变量名;

    2局部变量:仅在begin end中有效,要在begin end中的第一句话可不初始化,一般不加@,要指定类型

    #1声明
    DECLARE 变量名 类型;
    DECLARE 变量名 类型 DEFAULT 值;
    
    #2赋值
    方式一:SET 局部变量名 = 值;
           SET 局部变量名 := 值;
           SELECT @局部变量名 := 值;
    方式二:SELECT 字段 INTO 局部变量名 FROM 表;
    
    #3使用
    SELECT 局部变量名;

    三、存储过程

    减少了编译次数也减少了和数据库服务器连接的次数

    1、创建:

      参数模式:IN、OUT、INOUT

      DELIMITER定义结束标记

    DELIMITER $
    CREATE PROCEDURE test(IN girlName VARCHAR(20),OUT boyname VARCHAR(20))
    BEGIN
           执行SQL;
    END $

    2、调用:

    CALL test('name1',@bname)$
    SELECT @bname$

    3、删除:drop procedure 存储过程名;

    4、查看:show create procedure 存储过程名;

    四、函数

    函数和存储过程类似,但是必须有且仅有1个返回

    1、创建:一定要有return,但放的位置没有规定

    2、调用:select 函数名(参数列表)

       

    3、查看:show create function 函数名;

    4、删除:drop function 函数名;

    五、流程控制结构

    1、if函数:表达式1成立,返回表达式2的值,否则返回表达式3的值

      if(表达式1,表达式2,表达式3

    2、if结构

      

    3、case:如果用于语句,end 后面加case;,用于表达式不用加case

       

    4、循环:只能在begin end中使用

    1while:
        【标签名:】while 循环条件 do
             循环体;
         end while【标签名】;
    
    (2)loop:需要搭配leave跳出,否则相当于死循环
        【标签名:】loop
             循环体;
         end loop【标签名】;
    
    (3)repeat:类似do while
        【标签名:】repeat
             循环体;
         until 结束循环的条件
         end repeat【标签名】; 

    iterate类似continue,leave类似break,这两个需要和标签名搭配

       

  • 相关阅读:
    【SQL查询】查询列中使用条件逻辑_case when then end
    【SQL查询】查询的列起别名_AS
    【SQL查询】查询的值为空时,给出默认值_NVL函数
    工薪阶层理财建议
    软件文档编写_软件开发过程中的文档
    等价边界值测试_日期
    【登录】测试用例
    来纪中的第一天
    普及C组第二题(8.1)
    普及C组第一题(8.1)
  • 原文地址:https://www.cnblogs.com/zjxiang/p/9113600.html
Copyright © 2020-2023  润新知