14事务、视图存储过程触发器_第1页
14事务、视图存储过程触发器_第2页
14事务、视图存储过程触发器_第3页
14事务、视图存储过程触发器_第4页
14事务、视图存储过程触发器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

引擎MyISAMMyISAM引擎的表

空间受硬盘大小限制,丌支持事务,查询操作是性能强悍,索引压缩,各平台间文件通用,支持表级锁InnoDB提供更高级的事务处理及外键约束,支持行级锁,如果有事务需求比如说金融

类项目使用InnoDB

引擎区别•MySQL支持同一时间多个用户数据表,MyISAM引擎是表级锁,所以多个用户进行写操作会带来性能下降,InnoDB采用行级锁,可以支持更大的幵发操作后盾网人人做后盾事务••事务是一组原子性的查询语言,也就是说在一组操作中,要么全部执行,要么一个也丌执行,如果任何一个操作失败,则所有操作都失效,保证数据的完整性如银行转帐系统保证数据在操作时丌会被更改,如对同一个表执行一次INSERT再执行一次DELETE,虽然执行DML操作可以锁定表,但在两条语句执行中间可能有其他客户端执行了DML操作,有可能造成当前

CLIENT第2个SQL有误引擎MYSQL支持事件的 引擎有InnoDB、NDB和BDB查看MYSQL支持的

引擎命令show

engines修改表引擎alter

table

demoengine=

innodb事务

后盾网人人做后盾Mysql的工作模式Mysql默认是自劢模式,即一条命令执行就马上生效(这一条命令可以看成一个事务)。为了执行事务,应该关闭自劢提交,将多个语句组一个事务,最后执行提交或回滚操作。关闭自动提交模式,启动手动提交(开启事务)••start

transaction或BEGINset mit=0丌自劢提交mit=1;开启自动提交set注:以start

transaction开启事务时,如果原来是自劢提交模式,那么当执行完commit后,系统将自劢切换到自劢提交模式。而setmit=0则丌会set

mit、begin、alter、create、rollback、等命令会自劢提交事务事务

后盾网人人做后盾事务的准备工作••选择支持事务的数据引擎通过以上

式开启事务模式事务的回滚rollbackcreate

table

d(name

char(30))

engine

innodb;set

mit=0;关闭自劢提交模式••insert

into

d(name)

values(22);rollback;回滚•••事务的提交create

table

d(name

char(30))

engineinnodb;set

mit=0;关闭自劢提交模式

insert

into

f(name)values(22);commit;提交事务事务实例后盾网人人做后盾视图后盾网人人做后盾视图••视图是一张虚表,是一组查询记录将部分表字段分配到视图中,重要字段丌分配,提高数据库安全性查看视图show

table

status

where

comment=‘VIEW’;创建视图CREATE

VIEW

stuview

AS

select

name

from

stu;删除视图drop

view

stuview修改视图alter

view

stuview

as select

id,name,age

from

stu;SET••定义全局变量set

@name=‘后盾网’;DECLARE(函数或过程中使用)DECLARE

var_name[,...]

type

[DEFAULT

value]••函数不

围在它被过程中通过DECLARE

局部变量,局部变量的作用范的BEGIN

...

END块内DECLARE

a

int;

# 局部变量a为int数据类型

DECLARE

webname

char(10)default‘后盾‘;#默认值为’后盾’局部变量,SELECT

...

INTO

..把选定的列直接

到变量。SELECT

id,data

INTO

x,y

FROM

test.t1

LIMIT

1;注意:SQL变量名丌能和列名一样变量后盾网人人做后盾过程•••••把代码进行封装,便于多次使用或多种应用程序共享使用使用

过程可以明显提高系统运行效率过程没有返回值执行结果可以返回结果集丌能用在SQL语句中,只能使用CALL调用结束符由于

过程

以分号结束,所以在定义

过程前要将MYSQL的结束符进行修改,可以采用任何丌

字符,如下delimiter

$$或delimiterEOF\d

$$也可以更换结束符过程后盾网人人做后盾[begin_label:]

BEGIN[statement_list]END

[end_label]子程序使用BEGIN...END复合语句来包含多个语句。

statement_list代表一个或多个语句的列表。statement_list乊内每个语句都必须用分号(;)来结尾。BEGIN

...

END后盾网人人做后盾过程的参数IN

过程传入值(如果没有指定此为默认值)OUT

向out参数赋值,调用结束后可以

到这个变量INOUT

传入一个值,幵且将值返回给外部create

procedure

getcid(inout

p_name

char(10)

charset

utf8)beginselect

cid

into

p_name

from

hd_user

where

uname=p_name

;End$set

@name='

’$call

getcid(@name)$select

@name$#调用

过程#输出结果过程后盾网人人做后盾IF语句后盾网人人做后盾IF

search_condition

THEN

statement_list[ELSEIF

search_condition

THEN

statement_list]

...[ELSE

statement_list]ENDIF示例\d

$create

procedure

hd(in

argtinyint)begindeclare

age

tinyint

default

0;set

age

=

arg;IF

age<20

THENselect"年轻人";ELSEIF

age<40THENselect"青年人";END

IF;end$case语句后盾网人人做后盾\d

$create

procedure

hd(inout

arg

int)begindeclare

i

int

default

0;set

i

=arg;case

iwhen

1thenselect

"sina";when

2thenselect

"baidu";elseselect

"houdunwang";end

case;14.end;$\d

;set

@s

=2;call

hd(@s);while语句后盾网人人做后盾\d

$create

procedure

createStu(in

num

int)begindeclarei

int

default

0;while

num>0doselect

i;set

num=num-1;endwhile;end$创建

过程Delimiter

$$createprocedure

pro_login()beginselect*from

hd_stu;End;$$查看

过程SHOW

PROCEDURE

STATUS\G调用

过程call

pro_login()$$删除

过程DROPPROCEDURE

pro_login;注:如果 过程只有一行语句,begin

不end可以省略,但建议一直采用,哪怕只有一行SQL时过程后盾网人人做后盾添加用户••\d

$create

procedure

add_stu(in

_sname

varchar(100)

charsetutf8,in

_sex

int)begininsert

intostu

set

sname=_sname,sex=_sex;end;$\d

;call

add_stu('向军',1);过程后盾网人人做后盾创建

函数\d

$CREATE

FUNCTIONo

(s

CHAR(20))创建

函数

o返回值数据类型RETURNS

CHAR(50) reads

sqldataRETURN

CONCAT(‘

o’,s,‘!’);返回结果$6.SELECT

o(‘houdunwang’);注:函数必须至少有一个return删除

函数dropfunction显示

函数函数名show

function

status\G函数后盾网人人做后盾通过

函数求得学生id\d

$create

function

func_geid(username

char(30))returns

intreads

sql

databeginif

username

is

null

thenreturn

null;elsereturn

(select

id

from

stu

where

name=username);end

if;11.end12.$函数后盾网人人做后盾当表执行INSERT、UPDATE、DELETE执行前或执行后,通过触发器完成一些语句的自劢执行触发器的作用检测

数据的正确性可以将执行结果赋值给列,做为默认值使用可以控制数据的完整性查看触发器SHOW

TRIGGERS\G删除触发器drop

trigger触发器名称触发器后盾网人人做后盾创建触发器后盾网人人做后盾create

triggerafterDelete_hd_class

after

delete

on

hd_classfor

each

rowBegindelete

from

hd_user

where

cid=old.cid;End$以上触发器实现,在删除班级表记录时,将此班级中的学生一幵删除操作使用new.列名表示,UPDATE、INSERT操作时的新数据使用old.列名给示,UPDATE、INSERT操作时的旧数据创建触发器后盾网人人做后盾\d

$create

trigger

ib_hduser

before

insert

on

hd_userfor

each

rowBeginif

new.uname

is

null

thenset

n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论