mysql:視圖、觸發(fā)器、事務(wù)、存儲(chǔ)過程、自定義函數(shù)

視圖:

虛擬表,根據(jù)SQL語句獲取動(dòng)態(tài)的數(shù)據(jù)集,并為其命名,可當(dāng)一般表使用。

創(chuàng)建:

create view student_veiw as select * from teacher where tname='李平老師';

改:

alter view teacher_view as select from teacher where tname='egon';

觸發(fā)器:

定制用戶需要進(jìn)行的操作,沒有查詢

創(chuàng)建觸發(fā)器:

delimiter //

create

trigger tri_after_insert_cmd_log

after insert

on cmd_log for each row

begin

if new.is_success='no' then

insert into err_log(cname,stime) values(new.cmd_name,new.sub_time);

end if;

end //

delimiter ;

測(cè)試執(zhí)行觸發(fā)器

insert into err_log(cname,stime) values('sb',1213),('sb2',1213),('s垃圾',1213);


事務(wù):

將多條sql語句打包成原子性操作,操作完成后commit或者rollback,以保護(hù)數(shù)據(jù)。

create table user1(

id int primary key auto_increment,

name char(32),

balance int

);

insert into user1(name,balance) values

('劉備',200),

('關(guān)羽',200),

('張飛',200);

start transaction;

update user1 set balance=100 where name ='劉備';

update user1 set balance=100 where name ='關(guān)羽';

update user1 set balance=100 where name ='張飛';

#此時(shí)對(duì)數(shù)據(jù)的操作是程序級(jí)別的,要在硬盤級(jí)別更改數(shù)據(jù),需要以下操作:

commit; 確認(rèn)以上的更改

rollback:撤銷以上操作

存儲(chǔ)過程:

包含一堆sql,調(diào)用存儲(chǔ)過程就可以執(zhí)行一堆sql語句,相當(dāng)于python中封裝好的函數(shù)。

存儲(chǔ)參數(shù):in,out,inout

創(chuàng)建存儲(chǔ)過程:(無參)

delimiter //

create procedure p1()

begin

select * from user1;

insert into user1(name,balance) values('趙云',100);

insert into user1(name,balance) values('黃忠',190);

update user1 set name = '馬超' where balance=190;

end //

delimiter ;

調(diào)用存儲(chǔ)過程p1():

mysql中: call p1();

python中:

cursor.callproc('p1')

cursor.commit; #確認(rèn)

創(chuàng)建存儲(chǔ)過程:(有參)

delimiter //

create procedure p2(

in i int

)

begin

select * from user1 where id > i ;

end //

delimiter;

調(diào)用存儲(chǔ)過程p2():

mysql中:call p2(3);

python中:

cursor.callproc('p2',args='3')

out參數(shù):

delimiter //

create procedure p3(

in n1 int,

out res int

)

BEGIN

select * from user1 where id > n1;

set res = 1; #為res賦值1,當(dāng)res為1時(shí),即begin段執(zhí)行,

END //

delimiter ;

調(diào)用:

set @res=0; #設(shè)置全局變量@res

call p3(3,@res);

select @res; #查看全局變量的值

自定義函數(shù):

delimiter //

create function f1(

m int,

n int)

returns int

begin

declare num int;

set num = m + n;

return(num);

end //

delimiter ;

執(zhí)行:

select f(1,2) #查看結(jié)果


刪除:

刪除視圖:drop view teacher_view;

刪除觸發(fā)器:drop trigger tri_name;

刪除流程:drop procedure p1;

刪除自定義函數(shù):drop function f1;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評(píng)論 18 399
  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,995評(píng)論 0 10
  • 轉(zhuǎn)載自這里 存儲(chǔ)過程簡(jiǎn)介 我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時(shí)候需要要先編譯,然后執(zhí)行,而存儲(chǔ)過程(Sto...
    杜七閱讀 2,468評(píng)論 4 27
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,010評(píng)論 0 11
  • 今天早上,送完兒子上學(xué),我在路上看到路中間有一只燕子,躺在那里,我騎過去后又回來,看看它還活著嗎?剛調(diào)轉(zhuǎn)回頭,就看...
    林中均霑閱讀 957評(píng)論 1 0

友情鏈接更多精彩內(nèi)容