第一部分:連線
第一:left join 關鍵字語法(左連線)
select column_name(s)
from table_name1
left join table_name2
on table_name1.column_name=table_name2.column_name
第二:左連線(left join)例項
select persons.lastname, persons.firstname, orders.orderno
from persons
left join orders
on persons.id_p=orders.id_p
order by persons.lastname
第三:right join 關鍵字語法
select column_name(s)
from table_name1
right join table_name2
on table_name1.column_name=table_name2.column_name
第四:右連線(right join)例項
select persons.lastname, persons.firstname, orders.orderno
from persons
right join orders
on persons.id_p=orders.id_p
order by persons.lastname
第五:sql inner join 關鍵字
select column_name(s)
from table_name1
inner join table_name2
on table_name1.column_name=table_name2.column_name
第六:內連線(inner join)例項
select persons.lastname, persons.firstname, orders.orderno
from persons
inner join orders
on persons.id_p=orders.id_p
order by persons.lastname
第七:外連線
drop view if exists v_selectall;
create view v_selectall
asselect persons.lastname, persons.firstname, orders.orderno
from persons
left join orders
on persons.id_p=orders.id_p
union
select persons.lastname, persons.firstname, orders.orderno
from persons
right join orders
on persons.id_p=orders.id_p;
第二部分:觸法器
建立觸發器
在mysql中,建立觸發器語法如下:
create trigger trigger_name
trigger_time
trigger_event on tbl_name
for each row
trigger_stmt
其中:trigger_name:標識觸發器名稱,使用者自行指定;
trigger_time:標識觸發時機,取值為 before 或 after;
trigger_event:標識觸發事件,取值為 insert、update 或 delete;
tbl_name:標識建立觸發器的表名,即在哪張表上建立觸發器;
trigger_stmt:觸發器程式體,可以是一句sql語句,或者用 begin 和 end 包含的多條語句。
第一:語法
1.建立觸法器:create trigger trigger_name
2.觸發的時機:before 或 after
3.標識觸發事件 insert、update 或 delete;
4.建立觸發器的表名 on
5.觸發器程式體 for each row
第二:例項
例項一:
drop trigger if exists t_op;
create trigger t_op
after insert on p_orders
for each row
begin
update p_product set pro_num=pro_num-new.orders_num where pro_id=new.pro_id;
end;
insert into p_orders(pro_id,orders_num) values(1,5);
select * from p_product;
select * from p_orders;
例項二:
drop trigger if exists t_opold;
create trigger t_opold
before delete on p_orders
for each row
begin
update p_product set pro_num=pro_num+old.orders_num where pro_id=old.pro_id;
end;
delete from p_orders where orders_id=3;
select * from p_product;
select * from p_orders;
資料庫之觸發器
觸發器 看到這個名字總是會想到數電中學過的觸發器,有輸入端和輸出端,根據電平的高低來觸發。資料庫中的觸發器是個特殊的儲存過程,主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名稱而被直接呼叫。作用 使用t sql語句進行複雜的邏輯處理,基於乙個表建立,但是可以對多個表進行操作,因此常常用...
資料庫之觸發器
觸發器 看到這個名字總是會想到數電中學過的觸發器,有輸入端和輸出端,根據電平的高低來觸發。資料庫中的觸發器是個特殊的儲存過程,主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名稱而被直接呼叫。作用 使用t sql語句進行複雜的邏輯處理,基於乙個表建立,但是可以對多個表進行操作,因此常常用...
資料庫之觸發器
1.概述 觸發器是特殊的儲存過程。儲存過程是由使用者主動去呼叫執行,觸發器是資料庫在發生一些事件的時候主動呼叫。常見的觸發器 sql server 有instead of 和 after for 資料庫為觸發器特別的建立兩張表 inserted表 deleted表 這兩張表由資料庫維護,存在記憶體中...