美文网首页
MySQL视图、存储过程

MySQL视图、存储过程

作者: 程序渣渣猿 | 来源:发表于2018-12-12 21:26 被阅读46次

    1. 创建视图
    一般格式:create view 视图名称 as SQL语句

    create view v1 as
    select  *  from  userinfo  where  nid>=12;
    

    2. 删除视图
    一般格式:drop view 视图名称

    drop view v1;
    

    3. 修改视图
    一般格式:alter view 视图名称 as SQL语句

    alter view v1 as
    select * from student where sid<=10;
    

    MySQL无参存储过程

    1. 创建存储过程

    delimiter &&  // 将系统;更新为&&
    CREATE PROCEDURE p1() // 创建存储名称p1其中()必加
    BEGIN  // 开始
      SELECT * FROM score;  // 在其中添加SQL语句
    END && // 结束
    delimiter ; // 重新将系统&& 更新为;
    

    2. 直接在Navicat中执行 执行存储过程

    call p1()
    

    3. Pycharm 执行MySQL存储过程

    import pymysql  
      
    // 创建连接  
    conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='1234567890',db='Table_Test')  
      
    // 打开游标  
    cursor = conn.cursor()  
      
    // 执行存储过程  
    cursor.callproc('p1')  
      
    result = cursor.fetchall()  
      
    print(result)   // ((1, 1, 1, 60), (2, 1, 2, 59), (3, 2, 1, 100), (4, 2, 2, 89), (5, 3, 1, 49), (6, 3, 2, 70), (7, 1, 3, 89), (8, 2, 3, 67), (9, 3, 3, 47), (10, 4, 1, 90), (11, 4, 2, 40), (12, 4, 3, 80), (13, 5, 1, 31), (14, 5, 2, 70), (15, 5, 3, 100), (16, 6, 1, 89), (18, 6, 3, 88), (19, 1, 1, 89))
    cursor.close()  
      
    conn.close()
    

    MySQL有参存储过程

    1. 创建存储过程

    • in 仅用于传入参数用
    • out 仅用于返回值用
    • inout 既可以传入又可以当作返回值
    delimiter &&  // 将系统;更新为&&
    CREATE PROCEDURE p1(
          in i1 int,          // 让内部使用
          in i2 int,
          inout i3 int,
          out r1 int // 即使传递给内部,也不会取到值,这个参数只用来从内部传递值到外部
    ) // 创建存储名称p1其中()必加
    BEGIN  // 开始
        DECLARE temp1 int;  // DECLARE创建某个类型,以后赋值只能该类型的值
        DECLARE temp2 int default 0;  // 创建默认值
        
        set temp1 = 1;  // 变量的赋值
    
        set r1 = i1 + i2 + temp1 + temp2;
        
        set i3 = i3 + 100;
    
        //  也可在此处增加SQL语句
    END && // 结束
    delimiter ; // 重新将系统&& 更新为;
    

    2. Navicat中执行存储过程

    set @t1 =4;
    set @t2 = 0;
    CALL p1 (1, 2 ,@t1, @t2);
    SELECT @t1,@t2;
    

    3. Pycharm指定MySQL存储过程

    import pymysql
    
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    # 执行存储过程
    cursor.callproc('p1', args=(1, 22, 3, 4))
    # 获取执行完存储的参数
    cursor.execute("select @_p1_0,@_p1_1,@_p1_2,@_p1_3")
    result = cursor.fetchall()
    
    conn.commit()
    cursor.close()
    conn.close()
    
    
    print(result)
    

    相关文章

      网友评论

          本文标题:MySQL视图、存储过程

          本文链接:https://www.haomeiwen.com/subject/zweyhqtx.html