Python/MySQL(四、MySQL数据库操作)
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/MySQL(四、MySQL数据库操作)的更多相关文章
- Node.js 连接 MySQL 并进行数据库操作
Node.js 连接 MySQL 并进行数据库操作 按照这篇操作mysql的指引,我远程操作了我另一台电脑的mysql数据库. var mysql = require('mysql'); var c ...
- Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Hapi+MySql项目实战数据库操作(四)
数据库访问 下面以Node的ORM框架Sequelize来操作数据库,Mysql为例. 配置数据库连接信息config/db_config.js: //db_config.js module.expo ...
- python 使用sqlalchemy进行数据库操作
sqlalchemy是python下一个著名的数据库orm库,可以方便地进行数据表创建.数据增删改查等操作 最详细的教程,见官方:https://docs.sqlalchemy.org 这里列举一些常 ...
- (SQL SERVER) (ORACLE) (ACCESS)(POSTGRE SQL)四种数据库操作C#代码
将对这四种数据库的操作封装到了2个类中可以拷贝过去直接使用. public sealed class OleDbClass { #region private utility methods & ...
- android菜鸟学习笔记20----Android数据存储(四))Android数据库操作
Android内置了一个名为SQLite的关系型数据库,这是一款轻量型的数据库,操作十分简便.SQLite与别的数据库不同的是,它没有数据类型.可以保存任何类型的数据到你所想要保存的任何表的任何列中. ...
- python工具之myql数据库操作
import pymysql import config ''' 1.0 简单封装 1.1 添加了insert_id属性,返回insert时返回的主键 1.2 添加了column属性,返回查询的col ...
- mysql四:数据操作
一.介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...
- MySQL基金会-基本数据库操作
1. 删除数据库 DROP DATABASE 数据库名; mysql> drop database test; 即删除数据库模式 2 .创建数据库 create DATABASE 数据库名; m ...
- mysql学习笔记--数据库操作
一.显示数据库 show databases; 二.创建数据库 create database [if not exists] 数据库名 [字符编码] 注意: a. 如果已经存在数据库再创建会报错 b ...
随机推荐
- java--计时器
计时器 一.窗口化 public class Pro extends JFrame{ private JTextField textField = new JTextField(45);//系统时间文 ...
- 使用Bootatrap的心得
使用Bootatrap的心得: 更新中... 在使用过一端时间的Bootstrap之后, 发现自己进入了使用误区,本来人家就为你提供好了样式丰富的各种样式,容器.但是我却在一边使用人家的样式,一边自己 ...
- 控制input只能输入数字和两位小数
<input type="text" name="je" onkeyup="clearNoNum(this)" /> funct ...
- JAVA-基础语法篇
JAVA-基础语法篇 一. 基础语法: 对大小写敏感 类名的首字母大写 方法名首字母小写,后面用驼峰发命名 源文件名和类名要相同 主方法入口: public static void main( ...
- IO流回顾与总结第一篇之字节流与字符流的操作。。。。。
一.引言 趁着年后的这点时间,抓紧点时间回顾下javase中的IO流,以往都是用到那些常用的IO类,这次来个全点的,有不对的地方还请大神指正一下,做到坚持写博的习惯来...... 回归正题,IO流顾名 ...
- springboot elasticsearch 集成注意事项
文章来源: http://www.cnblogs.com/guozp/p/8686904.html 一 elasticsearch基础 这里假设各位已经简单了解过elasticsearch,并不对es ...
- 『练手』通过注册表 获取 VS 和 SQLServer 文件路径
获取任意 VS 和 SQLServer 的 磁盘安装目录. 背景需求:如果磁盘电脑安装了 VS 或者 SQLServer 则 认定这台计算机 的使用者 是一名 软件研发人员,则让程序 以最高权限运行. ...
- 2018上C语言程序设计(高级)作业- 第1次作业
未来两周学习内容 复习指针的定义和引用 指针的应用场景: 指针作为函数参数(角色互换) 指针作为函数的参数返回多个值 指针.数组和地址间的关系 使用指针进行数组操作 数组名(指针)作为函数参数(冒泡排 ...
- C语言博客-指针
一.PTA实验作业(5分) 题目1:6-1 两个4位正整数的后两位互换 1. 本题PTA提交列表 2. 设计思路 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 无 题目2:6-3 ...
- 201621123050 《Java程序设计》第7周学习总结
1. 本周学习总结 1.1 思维导图:Java图形界面总结 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 1.事件:用户的操作,例如点击或输入之类的操作 2. ...