首页 技术 正文
技术 2022年11月21日
0 收藏 850 点赞 3,157 浏览 2848 个字

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

一、数据库条件语句:

 case when id>9 then ture else false

二、三元运算:

 if(isnull(xx)0,1)

三、上下连表:

select id,name from ta1
union 天然去重(检测上边的表和下边的表行内完全一样就只显示一行内容)
select num,sname from tb2
==========================================
select id,name from ta1
union all 不去重
select num,sname from tb2
----------------------------------------------------------------------------
注意:上下连接一定要保证行数相等

四、数据库临时表:

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

五、数据库视图:

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

六、数据库触发器:

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

 delimiter //
修改MySQL语句中结束语句的符号
create trigger t1 BEFORE INSERT on student for EACH ROW
创建触犯器(插入一个数据就执行下边的代码一次)
BEGIN
开始
INSERT into teacher(tname) values(NEW.sname);
老师表中插入一个老师名称
INSERT into teacher(tname) values(NEW.sname);
此处NEW(绑定触发器要插入的值获取到)
INSERT into teacher(tname) values(NEW.sname);
INSERT into teacher(tname) values(NEW.sname);
END //
结束
delimiter ;
修改MySQL语句中结束语句的符号

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

七、数据库函数:

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

2、自定义函数

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

3、调用函数方法

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

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

八、数据库存储过程:

存储过程就是保存在MySQL上的有别名(集合)--->SQL语句存储过程实现了开发人员写代码的过程。存储过程一:MySQL存储过程,在程序或者客户端这边只需要知道存储过程的名称就可以调用执行。存储过程二:MySQL服务端启动,客户端自己进行写SQL语句。

  

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

 create procedure p1()   创建无参存储过程
begin
select * from student:
insert into teacher(tnaem) values('alex')
end 调用存储过程
call p1()

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

 delimiter //
create procedure p2(
in n1 int,
in n2 int 创建有参数的存储过程,(参数都是in 输入)
)
BEGIN select * from student where sid > n1;
END //
delimiter ; call p2(12,2) 调用执行存储过程(传参数)
注意:在定义存储过程时,设定了俩个参数但是只用可一个,另一个参数必须进行传参

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

 delimiter \\
create procedrue p3(
in n1 int
out n2 int
)
begin
set n2=1212
select * from student where sid > n1
end \\
delimiter ;

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

九、数据库事务:

delimiter \\ create procedure p5( out tse tinyint ) begin declare exit handler for sqlexception begin –error set tse=1 rollback end; strat TRANSACTION; delete from tb1; insert into tb2(name) values(‘seven’) commit: –success set tse=2; end; delimiter ;

 十、数据库游标:

 delimiter //
create procedure p6()
begin
declare row_id int; -- 自定义变量1
declare row_num int; -- 自定义变量2
declare done INT DEFAULT FALSE;
declare temp int; declare my_cursor CURSOR FOR select id,num from A;
declare CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; open my_cursor;
xxoo: LOOP
fetch my_cursor into row_id,row_num;
if done then
leave xxoo;
END IF;
set temp = row_id + row_num;
insert into B(number) values(temp);
end loop xxoo;
close my_cursor; end //
delimter ;

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

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

         delimiter \\
CREATE PROCEDURE p8 (
in nid int
)
BEGIN
set @nid = nid;
PREPARE prod FROM 'select * from student where sid > ?';
EXECUTE prod USING @nid;
DEALLOCATE prepare prod;
END\\
delimiter ;
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,989
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,504
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,348
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,131
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,765
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,842