MySQL程式設計提示與樣例
日期間隔表示式
date_add(now(),interval expr type)
on duplicate key update no_id='xxx'
sql語句中流程函式
IF(value,t,f) 如果value是真,返回t;否則返回f
IFNULL(value1,value2) 如果value1不為空,返回value1;否則返回value2
case when [value1] then [result1]...else [default] end
case [expr] when [value1] then [result1]...else [default] end
found_row():上一條sql語句返回的條目
變數賦值
set last_month_start=date_add(current_date(),interval 1 month)
delimiter $$
create procedure p_name()
begin
declare continue handler for sqlstate '23000' set @x=1
end;
$$
delimiter ;
handler_type現在還只支援continue和exit兩種,continue表示繼續執行下面的語句,exit則表示執行停止,undo現在還不支援
condition_value的值可以是透過Declare定義的condition_name,可以是sqlstate的值或者mysql-error-code的值或者sqlwarning、not found、sqlexception,這3個值是3種定義好的類別
sqlwarning是對所有以01開頭的sqlstate程式碼速記
not found是對所有以02開頭的sqlstate程式碼速記
sqlexception是對所有沒有被sqlwarning或not found捕獲的sqlstate的程式碼速記
mysql-error-code:sql報錯後error後面緊跟的數值
sqlstate:sql報錯後括號中的數值
leave:相當於shell中的break
iterate:相當於shell中的continue
上面的程式碼可以改為
first: declare continue handler for 1062 set @x=1
second: declare c_name condition for sqlstate '23000'
declare continue handler for duplicatekey set @x=1
third: declare continue handler for sqlexception set @x=1
delimiter $$
create procedure p_name()
begin
declare i_staff_id int;
declare d_amount decimal(5,2);
declare cur_payment cursor for select staff_id,amount from payment;
declare exit handler for not found close cur_payment;
set @x1=0
set @x2=0
open cur_payment;
repeat
fetch cur_payment into i_staff_id,d_amount;
if i_staff_id=2 then
set @x1=@x1+d_amount;
else
set @x2=@x2+d_amount;
end if;
until 0 end repeat;
close cur_payment;
end;
$$
delimiter ;
自動回滾
create procedure sp_auto_rollback_demo()
begin
declare exit handler for sqlexception rollback;
start transaction
insert into b select 1;
insert into b select 2;
commit;
end;
自動回滾的加強型
create procedure sp_auto_rollback_demo()
begin
declare exit handler for sqlexception begin rollback; select -1;end;
start transaction
insert into b select 1;
insert into b select 2;
commit;
select 1;
end;
注:mysql沒有列印語句,只能在迴圈中加入insert語句,將遊標遍歷的值儲存下來;
delimiter $$
create procedure actor_insert()
begin
set @x=0
ins:LOOP
set @x=@x+1;
if @x=10 then
leave ins;
elseif mod(@x,2)=0 then
iterate ins;
end if;
insert into actor(actor_id,first_name,last_name) values(@x+200,'Test',@x);
end loop ins;
end;
$$
delimiter ;
while迴圈和repeat迴圈的區別在於,while是滿足條件才執行迴圈,repeat是滿足條件退出;
delimiter $$
create procedure loop_demo()
begin
set @x=1,@x1=1;
repeat
set @x=@x+1;
until @x>0 end repeat;
while @x1<1 do
set @x1=@x1+1;
end while;
end;
$$
事件排程
create event test_event_2
on schedule at current_timestamp + interval 1 hour
do insert into test.test(id1,create_time) values('test',now());
create event test_event_1 on schedule every 5 second do insert into test.test(id1,create_time) values('test',now());
create event test_event_1 on schedule every 5 minute do insert into test.test(id1,create_time) values('test',now());
CREATE EVENT `create5dayvol` ON SCHEDULE EVERY 1 DAY STARTS '2015-01-14 09:00:00' ON COMPLETION PRESERVE ENABLE DO CALL create_5vol()
show event\G
show variables like '%sche%';
+-----------------+---------------+
| Variable_name | Value |
+-----------------+---------------+
| event_scheduler | OFF |
+-----------------+---------------+
set global event_scheduler=1;
alter event e_name disable;
觸發器
create trigger t_name
after(before) insert on t1
for each row
begin
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29620572/viewspace-1804013/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 工廠設計模式與代理設計模式【帶樣例】設計模式
- The MySQL C API程式設計例項MySqlAPI程式設計
- MySQL與MongoDB設計例項對比QYMySqlMongoDB
- MySQL和MongoDB設計例項對比MySqlMongoDB
- makefile--偽目標語法與程式設計例項程式設計
- MySQL設計與優化MySql優化
- 程式設計師的樣子程式設計師
- Jmeter beanshell程式設計例項JMeterBean程式設計
- 設計模式例項程式碼設計模式
- KafKa Java程式設計例項KafkaJava程式設計
- 怎樣用c/c++程式設計連線mysql資料庫?C++程式設計MySql資料庫
- 程式設計師這樣寫程式碼程式設計師
- 程式設計能力與程式設計年齡程式設計
- 程式設計師來做設計,世界會怎樣?程式設計師
- MySQL 表與索引設計攻略MySql索引
- 程式設計的真實樣子程式設計
- java程式設計師怎樣面試?Java程式設計師面試
- Shell程式設計入門例項程式設計
- Qt 中Socket程式設計例項QT程式設計
- android socket程式設計例項Android程式設計
- c# winform程式設計轉例C#ORM程式設計
- XML程式設計例項(二) (轉)XML程式設計
- Java&CORBA程式設計例項JavaORB程式設計
- corba程式設計簡單例項ORB程式設計單例
- Java XML程式設計例項解析JavaXML程式設計
- css設定背景圖片樣式程式碼例項CSS
- CSS設定元素邊框樣式例項程式碼CSS
- 《JAVA與設計模式》之單例模式Java設計模式單例
- MYSQL SQL程式設計實現MySql程式設計
- 程式、程式設計與三論程式設計
- 【Tensorflow_DL_Note11】TensorFlow神經網路程式設計框架樣例MNIST的訓練與測試神經網路程式設計框架
- 《程式設計師的春天:EOM與程式設計師》程式設計師
- 怎樣用 Bash 程式設計:迴圈程式設計
- 怎樣才是理想的程式設計師程式設計師
- 像程式設計師那樣去求婚程式設計師
- 怎樣尊重一個程式設計師程式設計師
- 怎樣才是全能的程式設計師?程式設計師
- 想學程式設計?這樣開始程式設計