標籤:輸出 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中的預存程序和事務隔離