mysql中的預存程序和事務隔離

來源:互聯網
上載者:User

標籤:輸出   sql語句   事務隔離   資料庫   儲存   back   執行   括弧   動作   

※預存程序
預存程序是儲存在資料庫上的一段可執行代碼。
1、定義預存程序的文法是:
Create procedure sp_name (參數..)
Begin
SQL語句
End;
2、調用它的方法:
Call sp_name(參數…); //空參時則括弧中不填內容

3、示範
1)不帶參數
定義(delimiter用於定義結束符):
DELIMITER $$
CREATE PROCEDURE p1()
BEGIN
INSERT INTO person2 VALUES(‘P05‘,‘李四‘,0);
SELECT * FROM person2;
END$$
DELIMITER ;
調用:
call p1();

2)帶輸入參數
DELIMITER $$
CREATE PROCEDURE p2(in id varchar(32), in nm varchar(30) )
BEGIN
INSERT INTO person2 VALUES(id,nm,0);
SELECT * FROM person2;
END$$
DELIMITER ;

call p2(‘P06‘,‘張飛‘);
CALL p2(‘P07‘,‘劉備‘);

3) 帶輸入、輸出參數
定義:
DELIMITER $$
CREATE PROCEDURE p3(in id varchar(32), in nm varchar(30), out num int )
BEGIN
INSERT INTO person2 VALUES(id,nm,0);
SELECT count(*) into num FROM person2;
END$$
DELIMITER ;

調用:
CALL p3(‘P08‘,‘關羽‘,@aa); //一個@為使用者變數,兩個@為系統變數
輸出傳回值(輸出參數)
SELECT @aa;

//輸出系統變數“@@version”的值
SELECT @@VERSION--------我的是輸出5.6.22-log

※查詢內容區分大小寫
mysql查詢預設是不區分大小寫 如:
select * from table_name where a like ‘a%‘   
select * from table_name where a like ‘A%‘   
select * from table_name where a like ‘a%‘
select * from table_name where a like ‘A%‘
效果是一樣的。
要讓mysql查詢區分大小寫,可以:
select * from table_name where binary a like ‘a%‘  
select * from table_name where binary a like ‘A%‘   
select * from table_name where binary a like ‘a%‘
select * from table_name where binary a like ‘A%‘
也可以在建表時,加以標識 
create table table_name(
a varchar(20) binary
);

※事務: 一個事務只會有一個結果,要麼成功,要麼失敗。
舉例:
P09,‘趙子龍‘ 一次買了兩輛車,需要把趙子龍的資訊儲存到person2表,同時還要把兩輛車的資訊儲存到car表-----兩個表的儲存動作就是一個事務,要麼成功(兩個表的資訊都成
功儲存), 要麼失敗(只要其中一個表的一條資料存放區失敗,其它表的資訊都不能儲存進去,如果存進去則要還原)。
類似的例子,還有:銀行轉賬! 銷售單和銷售明細!

SQL示範:
START TRANSACTION; //開啟事務
DELETE FROM person2 WHERE id=‘P04‘;
DELETE FROM person2 WHERE id=‘P05‘;
ROLLBACK/COMMIT; //復原/提交-------------事物一旦進行了提交,資料就無法再復原了;


START TRANSACTION; //開啟事務
INSERT INTO person2 VALUES(‘P09‘,‘趙子龍‘,‘1‘);
INSERT INTO car VALUES(‘C007‘,‘BMW‘,50,‘P09‘);
INSERT INTO car VALUES(‘C008‘,‘QQ‘,7,‘P09‘);
ROLLBACK/COMMIT; //復原/提交

DELETE FROM car WHERE id=‘C007‘;
DELETE FROM car WHERE id=‘C008‘;
DELETE FROM person2 WHERE id=‘P09‘;

※事務的隔離

 

mysql中的預存程序和事務隔離

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.