python mysql 行数据库_Python/MySQL(四、MySQL数据库操作)

case when id>9 then ture else false

二、三元运算:

1 if(isnull(xx)0,1)

三、上下连表:

select id,name fromta1

union 天然去重(检测上边的表和下边的表行内完全一样就只显示一行内容)

select num,snamefromtb2==========================================select id,namefromta1

union all 不去重

select num,snamefromtb2----------------------------------------------------------------------------注意:上下连接一定要保证行数相等

四、数据库临时表:

1 (select * fromstudent)as B2 创建一个临时表(临时表就是存在内存中的拿到的内容,方便下次使用时再次写)

五、数据库视图:

1 创建视图2 create view 视图名 as sql语句3 注意:因为视图是虚拟表,创建视图就是相当于在实体表中绑定一个动态的表,所以在绑定的实体表数据发生变化时,视图表也会发生变化。(因为视图表示虚拟表所以不能进行表的修改操作。)4 修改视图5 alter view 视图名 as sql语句6 此处修改视图(修改视图绑定的实体表,不能对虚拟表进行修改操作)7 删除视图8 drop view 视图名

六、数据库触发器:

当对某种表进行修改操作时可以绑定一个触发器(在触发器中可以编写想要执行的SQL语句)

1 delimiter //

2 修改MySQL语句中结束语句的符号3 create trigger t1 BEFORE INSERT on student forEACH ROW4 创建触犯器(插入一个数据就执行下边的代码一次)5 BEGIN6 开始7 INSERT into teacher(tname) values(NEW.sname);8 老师表中插入一个老师名称9 INSERT into teacher(tname) values(NEW.sname);10 此处NEW(绑定触发器要插入的值获取到)11 INSERT into teacher(tname) values(NEW.sname);12 INSERT into teacher(tname) values(NEW.sname);13 END //

14 结束15 delimiter ;16 修改MySQL语句中结束语句的符号

NEW  ---   代指新数据            OLD   ---   代指旧数据

七、数据库函数:

1、内置函数(使用内置函数去MySQL官网中查看)

2、自定义函数

1 delimiter \2 create function f1(i1 int i2 int)3 returns int4 定义函数,可以传参,也具有返回值5 begin 函数体开始6 declare num int default 0;7 set num=i1+i2;8 return(num)9 end \\ 函数体结束10 delimiter ; 重新设置结束语句

3、调用函数方法

1 select 函数名称加括号进行调用2 select f1()

注意:在定义函数时,设定了俩个参数但是只用可一个,另一个参数必须进行传参,并且在函数体内不能进行selsect操作!

八、数据库存储过程:

存储过程就是保存在MySQL上的有别名(集合)--->SQL语句

存储过程实现了开发人员写代码的过程。

存储过程一:

MySQL存储过程,在程序或者客户端这边只需要知道存储过程的名称就可以调用执行。

存储过程二:

MySQL服务端启动,客户端自己进行写SQL语句。

创建一个无参的存储过程:

1 create procedure p1() 创建无参存储过程2 begin3 select * fromstudent:4 insert into teacher(tnaem) values(‘alex‘)5 end6

7 调用存储过程8 call p1()

创建一个有参存储过程:参数共分为(in(输入) out(输出)inout(可输入可输出))

1 delimiter //

2 create procedure p2(3 inn1 int,4 inn2 int 创建有参数的存储过程,(参数都是in 输入)5 )6 BEGIN7

8 select * from student where sid >n1;9 END //

10 delimiter ;11

12 call p2(12,2) 调用执行存储过程(传参数)13 注意:在定义存储过程时,设定了俩个参数但是只用可一个,另一个参数必须进行传参

创建一个带有输入参数和输出参数的存储过程:

1 delimiter \2 create procedrue p3(3 inn1 int4 out n2 int5 )6 begin7 set n2=1212

8 select * from student where sid >n19 end \10 delimiter ;

注意:out 对应的传值必须是变量,在存储过程当中是没有返回值(只能用out伪造一个返回值)在存储过程当中还可以进行 selsect 操作!

九、数据库事务:

1 delimiter \2 create procedure p5(3 out tse tinyint4 )5 begin6 declare exit handler forsqlexception7 begin8 --error9 set tse=1

10 rollback11 end;12 strat TRANSACTION;13 delete fromtb1;14 insert into tb2(name) values(‘seven‘)15 commit:16 --success17 set tse=2;18 end;19 delimiter ;

十、数据库游标:

1 delimiter //

2 create procedure p6()3 begin4 declare row_id int; --自定义变量15 declare row_num int; --自定义变量26 declare done INT DEFAULT FALSE;7 declare temp int;8

9 declare my_cursor CURSOR FOR select id,num fromA;10 declare CONTINUE HANDLER FOR NOT FOUND SET done =TRUE;11

12

13

14 open my_cursor;15 xxoo: LOOP16 fetch my_cursor into row_id,row_num;17 ifdone then18 leave xxoo;19 END IF;20 set temp = row_id +row_num;21 insert into B(number) values(temp);22 end loop xxoo;23 close my_cursor;24

25

26 end //

27 delimter ;28

十一、动态执行SQL(防SQL注入)

防止SQL注入的共有俩种方式,第一种是在pycharm中设置,第二种是在mysql中设置

1 delimiter \2 CREATE PROCEDURE p8 (3 innid int4 )5 BEGIN6 set @nid =nid;7 PREPARE prod FROM ‘select * from student where sid > ?‘;8 EXECUTE prod USING @nid;9 DEALLOCATE prepare prod;10 END\11 delimiter ;

Python/MySQL(四、MySQL数据库操作)

标签:logs   commit   输入   before   arm   nio   内置函数   服务   写代码

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://www.cnblogs.com/guobaoyuan/p/6974564.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值