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 ...
随机推荐
- curl/libcurl获取打开网页平均网速
CURL: curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{content_type}:%{time_namelookup}:%{time ...
- Spark单机版集群
一.创建用户 # useradd spark # passwd spark 二.下载软件 JDK,Scala,SBT,Maven 版本信息如下: JDK jdk-7u79-linux-x64.gz S ...
- KVM之七:KVM克隆
1.在克隆虚拟机之前,必须先暂停或者停掉kvm 虚拟机.以虚拟机 snale 为例,先暂停虚拟机,如下 [root@kvm ~ ::]#virsh list Id 名称 状态 ------------ ...
- web 表单提交按钮的测试点
web表单中的提交按钮的测试点: 在提交前需要理解清楚的点: 1.表单中哪些字段是必填项 2.表单中字段内容的限制:非空.重复.长度.特殊字符,空格.以及一些和业务相关的约束条件 测试点: 1.是否支 ...
- C#编程语言之委托与事件(二)—— C#事件
前面已经大致讲述了C#委托的一些基础知识点,本文接下来的内容是C#中的事件(Event),在此我提个建议,如果是刚接触C#的委托类型的朋友可以先看到这里,等熟悉了委托的使用之后(大约1-2天)再来了解 ...
- 第1次作业:我与我的IT梦
第一部分:结缘计算机 1.1最美的风景,一直在路上 说实话以前没有想过自己将学习计算机这个专业,在大二之前,我还是教师教育学院的一名师范生,机缘巧合,赶上了学校允许师范专业的同学转到非师范专业,于是, ...
- 201621123062《java程序设计》第十周作业总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 思维导图: 2. 书面作业 本次PTA作业题集异常 2.1. 常用异常 结合题集题目7-1回答 2.1.1 自己以前 ...
- 事后诸葛亮——城市安全风险管理项目Postmortem结果
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 本系统希望实现快速识别危害因素,使工作人员对风险作出准确的评估.即让使用者熟悉潜在的危险因素,知道 ...
- 2017-2018-1 我爱学Java 第三周 作业
Team Presentation 团队展示 队员学号 队名 团队项目描述 队员风采 团队首次合照 团队的特色描述 团队初步合作 前两周合作过程中的优缺点 如何改进 团队选题 确立,建立和初步熟悉团队 ...
- listview 与 button 焦点 在item添加下列属性
android:descendantFocusability="blocksDescendants" http://zhaojianping.blog.51cto.com/7251 ...