MySQL觸發器、存儲過程、自定義函數、視圖 經常使用SQL

1.創建一個userinfo表新增記錄時的觸發器 將新增日誌加入到userinfolog
2.創建一個向userinfo表新增記錄的存儲過程
3.根據userinfo表的出生日期字段 咱們將創建一個簡單算得年齡的自定義函數
4.建立一個userinfo的視圖 調用年齡函數

create table userinfo(
userid int,
username varchar(10),
userbirthday date
);
create table userinfolog(
logtime datetime,
loginfo varchar(100)
);mysql

delimiter //sql

-- 建立觸發器:數據庫

create trigger ToUserinfoLog before insert on userinfo for each row insert into userinfolog values(now(),concat(new.userid,'-',new.username));//app

-- 建立存儲過程函數

create procedure insert_userinfo(user_id int,username varchar(10),userbirthday date) begin insert into userinfo values(user_id,username,userbirthday); end//spa

call insert_userinfo(1,'weizi',current_date);// call insert_userinfo(2,'mini','1998-03-12'); // call insert_userinfo(3,'echo','1981-01-25'); // call insert_userinfo(4,'apple','1990-11-25'); // call insert_userinfo(4,'vivi','1962-01-27'); // 日誌

-- 建立自定義函數code

create function GetUserAge(birthday date) returns integer begin return year(now()) - year(birthday); end//orm

-- 建立視圖事件

create view ViewUserInfo as select *,GetUserAge(userbirthday) as age from userinfo;//


觸發器語法
CREATE TRIGGER <觸發器名稱>   <--觸發器命名
   { BEFORE | AFTER }   <--觸發器有執行的時間設置:能夠設置爲事件發生前或後
   { INSERT | UPDATE | DELETE }   <--設定觸發的事件:它們能夠在執行insert、update或delete的過程當中觸發
   ON <表名稱>    <-- 觸發器是屬於某一個表的
   FOR EACH ROW   <--觸發間隔,每隔一行執行一次動做
  <觸發器SQL語句>   <--這裏的語句能夠是任何合法的語句,包括複合語句,可是這裏的語句受的限制和函數的同樣

查詢數據庫中的存儲過程和函數
select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE';
show procedure status; 

select `name` from mysql.proc where db = 'your_db_name' and `type` = 'FUNCTION';
show function status;

查看存儲過程或函數的建立代碼
show create procedure pro_name;
show create function fun_name;
相似的,能夠用show create database db_name;、show create table tab_name;、show create view view_name;查看數據庫,表,視圖等建立代碼。

查看視圖和表
SELECT * from information_schema.VIEWS;
SELECT * from information_schema.TABLES;
select * from information_schema.tables where table_schema='yourDatabaseName' and table_type='view';
show table status where comment='view'; 
在mysql中,view和table是同樣的,使用show tables就能夠看到新建的視圖了。

查看觸發器
語法:SHOW TRIGGERS [FROM db_name] [LIKE expr]
實例:SHOW TRIGGERS\G
建立代碼 show create trigger trigger_name;

調用存儲過程和函數
call pro_name();
select fun_name();

刪除存儲過程、函數、觸發器
drop procedure pro_name;
drop function fun_name;
drop trigger t_trigger;
相關文章
相關標籤/搜索