1.建立一个userinfo表新增记录时的触发器 将新增日志加入到userinfolog
2.建立一个向userinfo表新增记录的存储过程
3.根据userinfo表的出生日期字段 我们将建立一个简单算得年龄的自定义函数
4.创建一个userinfo的视图 调用年龄函数
create table userinfo(
useridint,
username varchar(10),
userbirthday date
);
create table userinfolog(
logtime datetime,
loginfo varchar(100)
);
delimiter//
-- 创建触发器:
create trigger ToUserinfoLog
before insert
on userinfo
foreach row
insertintouserinfolog values(now(),concat(new.userid,'-',new.username));//
-- 创建存储过程
create procedure insert_userinfo(user_id int,username varchar(10),userbirthday date)
begin
insertintouserinfo values(user_id,username,userbirthday);
end//
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');//
-- 创建自定义函数
create function GetUserAge(birthday date)
returns integer
begin
returnyear(now())-year(birthday);
end//
-- 创建视图
create view ViewUserInfo
as
select*,GetUserAge(userbirthday)asagefromuserinfo;//
触发器语法
CREATE TRIGGER
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON
FOR EACH ROW
查询数据库中的存储过程和函数
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;