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数据库操作)的更多相关文章

  1. Node.js 连接 MySQL 并进行数据库操作

    Node.js 连接 MySQL 并进行数据库操作  按照这篇操作mysql的指引,我远程操作了我另一台电脑的mysql数据库. var mysql = require('mysql'); var c ...

  2. Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  3. Hapi+MySql项目实战数据库操作(四)

    数据库访问 下面以Node的ORM框架Sequelize来操作数据库,Mysql为例. 配置数据库连接信息config/db_config.js: //db_config.js module.expo ...

  4. python 使用sqlalchemy进行数据库操作

    sqlalchemy是python下一个著名的数据库orm库,可以方便地进行数据表创建.数据增删改查等操作 最详细的教程,见官方:https://docs.sqlalchemy.org 这里列举一些常 ...

  5. (SQL SERVER) (ORACLE) (ACCESS)(POSTGRE SQL)四种数据库操作C#代码

    将对这四种数据库的操作封装到了2个类中可以拷贝过去直接使用. public sealed class OleDbClass { #region private utility methods & ...

  6. android菜鸟学习笔记20----Android数据存储(四))Android数据库操作

    Android内置了一个名为SQLite的关系型数据库,这是一款轻量型的数据库,操作十分简便.SQLite与别的数据库不同的是,它没有数据类型.可以保存任何类型的数据到你所想要保存的任何表的任何列中. ...

  7. python工具之myql数据库操作

    import pymysql import config ''' 1.0 简单封装 1.1 添加了insert_id属性,返回insert时返回的主键 1.2 添加了column属性,返回查询的col ...

  8. mysql四:数据操作

    一.介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  9. MySQL基金会-基本数据库操作

    1. 删除数据库 DROP DATABASE 数据库名; mysql> drop database test; 即删除数据库模式 2 .创建数据库 create DATABASE 数据库名; m ...

  10. mysql学习笔记--数据库操作

    一.显示数据库 show databases; 二.创建数据库 create database [if not exists] 数据库名 [字符编码] 注意: a. 如果已经存在数据库再创建会报错 b ...

随机推荐

  1. CSS( Cascading Style Sheets )简书

    (注:带*号的属性是CSS3新增属性)一.基本规则1.css通常存储在样式表(style)中,用于定义如何显示HTML元素:2.css主要由两个部分构成:选择器和一条或多条声明. 选择器通常是需要改变 ...

  2. IPFS家族(二)

    go-ipfs IPFS协议的go语言实现,ipfs的核心协议,最新版是v0.4.13 下载地址:https://dist.ipfs.io/#go-ipfs 源代码地址:https://github. ...

  3. 【Java一看就懂】浅克隆和深克隆

    一.何为克隆 在Java的体系中,数据类型分为基本数据类型和引用数据类型. 基本数据类型包括byte,short,int,long,float,double,boolean,char 8种,其克隆可通 ...

  4. ASP.NET MVC编程——视图

    1Razon语法 使用@符号后接C#或VB.NET语句的方式. 基本规则 1)变量 @后直接变量即可 2)代码块 为使用表达式或多行代码,@后跟大括号将多行代码包括在大括号中 3)"+&qu ...

  5. linux服务器添加一块新硬盘不用重新启动机器的操作

    Linux系统添加一块新硬盘不用关闭系统即可加载硬盘信息的操作 因之前换过硬盘重装系统,硬盘上的数据没有拷贝出来,开发人员问我要备份,炸了.我只好联系机房让他把之前换掉的硬盘插回服务器.但是插好之后f ...

  6. 对于一个刚入门的linux运维来说

    干 就完了~ 我觉得 人生的意义在于 不断地学习......

  7. 10分钟快速入门Redis

    Redis安装 来源:https://github.com/jaywcjlove/handbook 官方编译安装 $ wget http://download.redis.io/releases/re ...

  8. JWT 简介

    JWT是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息 ...

  9. 基于php编写的新闻类爬虫,插入WordPress数据库

    这个爬虫写的比较久远,很久没有更新博客了. 1.首先思路是:通过php的curl_setopt()函数可以方便快捷的抓取网页. 2.什么样的新闻吸引人呢,当然的热点新闻了.这里选百度的搜索风云榜,获取 ...

  10. 201621123031 《Java程序设计》第8周学习总结

    作业08-集合 1.本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2.书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码 ...