关于mysql函数、存储过程、存储引擎的简单介绍

下文我给大家简单讲讲关于MySQL函数、存储过程、存储引擎,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完mysql函数、存储过程、存储引擎对大家多少有点帮助吧。

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的古城网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

内置函数库

自定义函数

语法:

create function 函数名([参数列表]) returns 数据类型

begin

sql语句;

return 值;

end;

例1:无参数函数

-- 最简单的仅有一条sql的函数

CREATE FUNCTION f1()

RETURNS VARCHAR(30)

RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点%i分%s秒')

select f1(); -- 调用函数

例2:带参数函数

-- 带参数函数(参数需要声明类型)

CREATE FUNCTION f2(a INT,b INT)

RETURNS INT

RETURN a + b;

select f2(); -- 调用函数

例3:sql 语句体

-- sql 语句体

CREATE FUNCTION add_user(name VARCHAR(30))

RETURNS INT

BEGIN

INSERT INTO user(username) VALUES (name );

RETURN LAST_INSERT_ID();

END

select f3('atong'); -- 调用函数

-- 多个语句需要执行时使用 begin/end 形成聚合体

其它

参数可以零个或多个,return 值只能一个

可在 sql 语句中调用 select * from user where id=f2(1,2);

查看函数创建语句:show create function 函数名;

查看所有函数:show function status [like 'pattern'];

drop function 函数名;

存储过程(Stored Procedure)

通常的,我们编写好的SQL语句提交给MySQL云服务器之后,MySQL云服务器将经历以下过程:

MySQL引擎检查语法是否标准 -> sql 无错误时编译该语句 -> 执行编译后的语句 -> 返回结果

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,调用存储过程时可省去了 检测语法及编译 过程直接执行语句,从而提高效率。

例1:无参数的存储过程:

-- 最简单的仅有一条sql的存储过程

CREATE PROCEDURE a()

SELECT VERSION();

CALL a(); -- 调用存储过程

例2: 带参数的存储过程

-- 带参数的存储过程

CREATE PROCEDURE removeUserById(uid INT)

BEGIN

DELETE FROM `user` WHERE `id` = uid;

END

CALL removeUserById(1); -- 执行存储过程

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

CREATEPROCEDURE 存储过程名([[IN |OUT |INOUT ] 参数名 数据类形...])

IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)

OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)

INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

例3:IN/OUT 修饰参数

-- IN uid 参数为传入参数,OUT nums 参数为传出参数

-- OUT 可以多个,即存储过程可返回多个值

CREATE PROCEDURE test(IN uid INT,OUT nums INT)

BEGIN

DELETE FROM `user` WHERE id = uid;

SELECT COUNT(uid) FROM `user` INTO nums;

end

-- 调用郑州好的妇科医院 http://www.zzkedayy.com/

CALL test(7,@param); -- @param 相当于传入变量去接受数据

SELECT @param;

mysql 变量

-- into

SELECT 'Hello World' into @x;

SELECT @x;

-- set

SET @y='Goodbye Cruel World';

SELECT @y;

存储引擎

MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎。每一种存储引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。

在处理并发读或者并发写的时候,系统会使用锁系统解决这个问题,锁分为共享锁和排他锁:

共享锁(读锁):在同一时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化。

排他锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。

在加锁的时候,只需要对某条特定的记录加锁就可以了,全部加锁会增加系统开销。

锁颗粒又称为锁的力度,指的是锁定时的单位,就是锁主要分为表锁和行锁:

表锁:是一种开销最小的锁策略

行锁:是一种开销最大的锁策略

事务处理

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务必须满足 ACID 特性。

原子性(Atomicity)-- 要么都发生,要么都不发生。

一致性(Consistency) -- 保持数据的一致。

隔离性(Isolation) -- 事务之间相互独立。

持久性(Durability) -- 事务处理结束后,对数据的修改就是永久的。

主键、外键和索引

主键

外键

索引

定义

唯一标识一条记录,不能有重复的,不允许为空

表的外键是另一表的主键, 外键可以有重复的, 可以是空值

该字段没有重复值,但可以有一个空值

作用

用来保证数据完整性

用来和其他表建立联系用的

是提高查询排序的速度

个数

主键只能有一个

一个表可以有多个外键

一个表可以有多个惟一索引

大家觉得mysql函数、存储过程、存储引擎这篇文章怎么样,是否有所收获。如果想要了解更多相关,可以继续关注我们的行业资讯板块。


本文题目:关于mysql函数、存储过程、存储引擎的简单介绍
本文路径:http://ybzwz.com/article/pijege.html