Python 学习笔记-第24讲:MySQL 数据库存储过程

1. ANACONDA(一个开源的Python发行版本)

Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。

Conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换

Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等

 

清华镜像站:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

 

 

 

2. 查看字符编码的函数:

ord() 字符转编码

ord()函数是chr()函数(对于8位的ASCII字符串)或unichr()函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值,如果所给的Unicode字符超出了你的Python定义范围,则会引发一个TypeError的异常。

chr() 编码转字符

chr()函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

unichr()

unichr() 返回的是Unicode字符

 

 

 

3. 存储过程(MySQL 5.0 及更高版本)

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。

格式:

CREATE PROCEDURE 过程名 ([过程参数[,...]])

[特性 ...] 过程体

 

 

 

delimiter // 修改语句分隔符

 

示例:

DELIMITER //

CREATE PROCEDURE addMember(cardId INT, memberName CHAR(4), phoneNum CHAR(11))

BEGIN

INSERT INTO member (card_num, mname, phone) VALUES(cardId,memberName,phoneNum);

END

//

DELIMITER ;

 

call open_card(10001, 'tom', '13800138000');

 

注:

(1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。

 

(2)存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。

 

(3)过程体的开始与结束使用BEGIN与END进行标识。

 

参数:

MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:

 

CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...])

 

IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

 

OUT 输出参数:该值可在存储过程内部被改变,并可返回

 

INOUT 输入输出参数:调用时指定,并且可被改变和返回

 

调用存储过程

CALL 存储过程名(参数列表)

修改存储过程

ALTER PROCEDURE 存储过程名SQL语句代码块

删除存储过程

DROP PROCEDURE  IF  EXISTS存储过程名

显示存储过程

SHOW CREATE PROCEDURE 存储过程名

 

 

 

 

参考链接:

http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html

http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html

 

 

 

4. 获取自增ID

1) last_insert_id()

last_insert_id() 单个会话中最近一次执行的insert语句时表的自增id的值。不受其他的会话插入影响。

如果向表中插入的记录,id自增,它的值为max(id),如果指定插入的id ,它的值为上一次插入的最大值。

使用select last_insert_id()时要注意,当一次插入多条记录时,只是获得第一次插入的id值,务必注意!

2) 使用@@identity

@@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。

其特性last_insert_id 一样.

3) 使用max(id)

select max(id) from tab; 返回的是tab 的最大id值。

4) 查看表状态

show table status

5) information_schema.tables

select table_name, AUTO_INCREMENT from information_schema.tables where table_name="get_max_id";

 

参考链接:

https://yq.aliyun.com/articles/27772

https://www.cnblogs.com/w3chen/p/4441512.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值