zoukankan      html  css  js  c++  java
  • python全栈开发day57- pymysql、视图、触发器、函数

    一、昨日内容回顾

      1.单表查询

       优先级

        from

        where

        group by

        having

        select

        distinct

        order by

        limit

       2 . 多表查询

        inner join。。。on

        left  join 。。。on

        rigth join 。。。on

      

    二、今日内容总结

      1.pymysql

       (1) 建立连接

        conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='practice',charset='utf8')

               (2)实例化游标

        cursor = conn.cursor() # 里边可以传参cursor=pymsql.cursors.DictCursor

        (3) 定义sql语句

        (4) cursor.excute(sql)

         cursor.excutemany(sql,[(1,'a'),(2,'b')])  # 返回值为操作成功影响行数

       (5) 取值

        cursor.fetone()

        cursor.fetall()

        cursor.fetmany()

        (6) 调游标位置

        cursor.scroll(1,mode='relative')

        cursor.scroll(1,mode='absolute')   

       (7) cursor.close()

         conn.close()

      2.视图

       create view 视图名 as select XXX from xxx。。。

       alter view 视图名 as select 。。。。

         drop view 视图名 。。。。。

      3.触发器 insert(new),delete(old),update(new,old)

       create trigger 触发器名 before insert on 表名 

        for each row

       begin

        。。。。

        end

         

    create trigger t1 after insert on user for each row set new.name = Upper(new.name);
    将插入用户的名字大写
    create table del_info(del_name varchar(32),del_time datetime);
    
    create trigger t_del before delete on user for each row 
    begin
        insert into del_info values(old.name,now());
    end
    删除数据前记录删除用户名和删除事件

      4.函数

        1) 一堆内置函数

          重点:

          date_formart(日期,‘%Y-%m’) 。。。。。。

             2) 自定义函数

    create function myfunc(a int,b int) returns int
    begin
    declare c int;
    set c=a+b;
    return c;
    end;

     删除函数

    drop function myfunc

    执行函数

    select myfunc(1,2)

      

         

    5. 存储过程 

    create table product(
    id int primary key,
    name varchar(32) not null,
    price int
    );
    insert into product values(1,'apple',18),(2,'banana',6);
    
    create procedure productprice(
        out pmax decimal(8,2),
        out pmin decimal(8,2),
        out pavg decimal(8,2)
    )
    begin
    select Max(price) into pmax from product;
    select Min(price) into pmin from product;
    select Avg(price) into pavg from product;
    end;
    
    call productprice(@pmax,@pmin,@pavg);
    存储过程

     6.游标

    create procedure riseinprice( in percent decimal(4,2))
    begin
    declare o int;
    declare name varchar(32);
    declare done boolean default 0;
    declare riseprice CURSOR for
    select id from product;
    declare continue handler for sqlstate '02000' set done=1;
    open riseprice;
    repeat 
        fetch riseprice into o;
        update product set price=50 where id = o;
        until done END repeat;
    close riseprice;
    end;

     7 事务

    start transaction:
    .....
    .....
    savepoint delete1
    .....

    commit/rollback/rollback to delete1



      

    三、预习和扩展

  • 相关阅读:
    eclispe安装tomcate没有srver解决
    反射常见方法
    让用户输入一个日期字符串,将其转换成日期格式, 格式是(yyyy/MM/dd,yyyyMMdd,yyyy-MM-dd)中的一种, 任何一种转换成功都可以; 如果所有的都无法转换,输出日期格式非法。
    List 接口中ArrayList Vector LinkedList 比较
    抽象类
    js核心知识
    JQgrid学习网站
    小练习---递归求5!
    map()
    小练习---阶乘
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/9338162.html
Copyright © 2011-2022 走看看