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

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

一、数据库条件语句:

1 case when id>9 then ture else false

二、三元运算:

1 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
----------------------------------------------------------------------------
注意:上下连接一定要保证行数相等

四、数据库临时表:

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

五、数据库视图:

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 for EACH ROW
 4         创建触犯器(插入一个数据就执行下边的代码一次)
 5     BEGIN
 6         开始
 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 int
 4   定义函数,可以传参,也具有返回值
 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 begin
3   select * from student:
4     insert into teacher(tnaem) values(‘alex‘)
5 end
6
7 调用存储过程
8 call p1()

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

 1 delimiter //
 2         create procedure p2(
 3         in n1 int,
 4         in n2 int          创建有参数的存储过程,(参数都是in 输入)
 5             )
 6     BEGIN
 7
 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     in n1 int
 4     out n2 int
 5 )
 6  begin
 7      set n2=1212
 8     select * from student where sid > n1
 9  end \10  delimiter ;

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

九、数据库事务:

 1 delimiter \ 2 create procedure p5(
 3 out tse tinyint
 4 )
 5 begin
 6  declare exit handler for sqlexception
 7 begin
 8     --error
 9  set tse=1
10  rollback
11 end;
12 strat TRANSACTION;
13         delete from tb1;
14         insert into tb2(name) values(‘seven‘)
15 commit:
16 --success
17 set tse=2;
18 end;
19 delimiter ;

 十、数据库游标:

 1 delimiter //
 2 create procedure p6()
 3 begin
 4 declare row_id int; -- 自定义变量1
 5 declare row_num int; -- 自定义变量2
 6 declare done INT DEFAULT FALSE;
 7 declare temp int;
 8
 9                 declare my_cursor CURSOR FOR select id,num from A;
10                 declare CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
11
12
13
14                 open my_cursor;
15                     xxoo: LOOP
16                         fetch my_cursor into row_id,row_num;
17                         if done then
18                             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                 in nid int
 4             )
 5             BEGIN
 6                 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 ;
时间: 2024-09-28 15:44:28

Python/MySQL(四、MySQL数据库操作)的相关文章

30.3. MySQL四种语句操作,SQL语法等简介

SQL语言的兴起与语法标准 20世纪70年代,IBM开发出SQL,用于DB21981年,IBM推出SQL/DS数据库业内标准微软和Sybase的T-SQL,Oracle的PL/SQLSQL作为关系型数据库所使用的标准语言,最初是基于IBM的实现在1986年被批准的. 1987年,"国际标准化组织(ISO)" 把ANSI(美国国家标准化组织)SQL作为国际标准.SQL:ANSI SQLSQL-1986, SQL-1989, SQL-1992, SQL-1999, SQL-2003,SQL

MySQL整理_2_数据库操作

数据库操作主要分成三部分,分别是DDL(数据库.表操作)DML(数据增删改)DQL(查) [DDL]CREATE | ALTER | DROP [数据库] [创建数据库] CREATE DATEBASE 数据库名称 DEFAULT CHARRACTER SET utf8 COLLATE utf8 general_ci; [查看数据库] SHOW DATABASES; [修改数据库] ALTER DATABASE 数据库名称 CHARACTER SET utf8: [删除数据库] DROP DAT

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

Android内置了一个名为SQLite的关系型数据库,这是一款轻量型的数据库,操作十分简便.SQLite与别的数据库不同的是,它没有数据类型.可以保存任何类型的数据到你所想要保存的任何表的任何列中.但它又支持常见的类型比如: NULL, VARCHAR, TEXT, INTEGER, BLOB, CLOB...等. 唯一的例外是:integer primary key 此字段只能存储64位整数. 在JAVA项目中,要使用JDBC操作数据库需要加载数据库驱动,连接数据库等操作.Android简化

分分钟钟学会Python - 第四章 文件操作

第四章 文件操作 4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') obj.write() # 写入 obj.read() # 读取 obj.close() #关闭 4.2 打开模式 r / w / a [只读只写字符串] * r+ / w+ / a+ [可读可写字符串] rb / wb / ab [只读只写二进制] * r+b / w+b / a+b [可读可写二进制] 4.3 操作 read() , 全部读到内存 read(1) 1表示一

python第四章文件操作

第四章 文件操作 4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') # 打开文件 obj.write() # 把内容写入文件 obj.read() # 读取文件内容 obj.close() # 关闭文件(保存文件,把内存上的数据写入到文件上-->硬盘上,01010101存储的) # 3步:1.打开文件. 2. 操作文件 3. 关闭文件 4.2打开文件 4.2.1语句 file = open('文件路径',mode = 'r',encoding

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

通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来介绍下如何通过NodeJS来操作 MySQL 数据库. 安装MySQL模块到NodeJS中 我们需要让NodeJS支持MySQL,则需要将MySQL模块添加到系统支持库 安装 node-mysql $ npm install mysql 创建测试表 //数据库名 NodeSample CREATE TABLE `NodeSample`.`MyTable` ( `id` I

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

1. 删除数据库 DROP DATABASE 数据库名; mysql> drop database test; 即删除数据库模式 2 .创建数据库 create DATABASE 数据库名; mysql> create database test; 在Windows和Linux对数据库名和表名的处理是不同的,在Windows是不区分大写和小写,而在Linux中是区分大写和小写的 3 创建操作数据库的专用用户 语法规则: 创建新用户并赋予其对数据库的操作权限 GRANT ALL PRIVILEG

Mysql和sqlite数据库操作心得

经过最近一段时间的实际工作发现,原来只是认为Mysql和sqlite是分别独立的,数据传输和共享或有障碍,其实这是一个误区.当我们想要将sqlite中的数据存放到mysql中,最好的方法就是利用中间文件.csv 两个数据库都能够导出.csv文件,我们将.csv文件修改为所需要的数据,然后导入到需要的数据库中作为表即可. 适用情况: 1.无法对数据直接操作,对表中的数据只是做部分修改 2.一个数据库有链接,一个数据库无连接 3.在.csv中进行数据修改 万能的csv文件 原文地址:https://

MySQL基础语法——数据库操作

登陆用户名为root数据库: mysql -u root -p 查看数据库: show databases; 创建数据库: create database if not exists databaseName; 选择使用的数据库: use databaseName; 查看数据库中的表: show tables; 备份数据库(必须在系统环境下使用): mysqldump -u 用户名 -p 数据库名 > f:\备份.sql 恢复数据库: source f:\备份.sql 删除数据库: drop d

(四)数据库操作

1.加载驱动程序 Class.forName("com.mysql.jdbc.driver"); 2.连接数据库 Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:端口号(默认3306)/数据库名称?参数1=参数值1&参数2=参数值2 3.创建SQL语句 String sql="select * from 表名" 4.创建语句对象Statement执行SQL语句