mysql 事件 触发器 过程

Posted on 2015-05-04 00:19  小蕊同学  阅读(648)  评论(0编辑  收藏  举报
sha1();           40位
sha();             40位
md5();           32位
password();   41位

case when then end 的用法
select sname 姓名,sscore 成绩,
case when sscore is null then '补考'
when sscore>=90 then '优秀'
when sscore>=80 then '良好'
when sscore>=60 then '及格'
when sscore<60 then '补考'
end 
from student;



if语句在mysql中的使用
select 
sname,
sscore,
if(sscore is null,'补考',
if(sscore>=90,'优秀',
if(sscore>=80,'良好',
if(sscore>=60,'及格','不及格'))))等级
from student;


inet_aton把ip转为数字,inet_ntoa 把数字转换为ip
select inet_aton ('192.168.1.2');
select inet_ntoa(3232235778);

uuid();36位全球唯一字符串
视图
create view vv as
显示学生学号姓名 成绩 等级 代课老师姓名(如果无老师显示无老师)
定义存储过程 编译执行速度快比较安全
定义存储过程
delimiter//
create definer=`root`@`localhost` 
 procedure my3(in a char(6),b varchar(6))
begin 
insert into t4 values(a,b);
end//
delimiter;





定义插入数据的存储过程,过程名为myi,有2个输入参数
delimiter//
create procedure myi(in a char(6),b varchar(6))
begin
insert into t4 values(a,b);
end//
delimiter;
call myi('aa','上海');

用过程只查询一个列并显示出来
delimiter//
create procedure myshow()
begin
select b 城市 from t4;
end//
delimiter;
call myshow;


定义无参的存储过程
delimiter//
create procedure del()
begin
delete from t4;
end//
delimiter;
调用存储过程
call my3('aa','666');
删除存储过程
drop procedure my3;
查询创建过程语句
show create procedure del;  
查询当前数据库里面的所有的存储过程
清除历史记录然后点击对应的库点击存储过程出来的一段话就是存储过程的名字
列出显示yy数据库中的所有的存储过程名称
 select `SPECIFIC_NAME` from `INFORMATION_SCHEMA`.`ROUTINES` where `ROUTINE_SCHEMA` = 'yy' and ROUTINE_TYPE = 'PROCEDURE'; 

函数
定义函数
delimiter//
create function pf(n int)
returns int
begin
return n*n;
end//
delimiter;
调用函数
select pf(8);
删除函数
drop function pf;
drop function if exists pf;
查看建立pf函数时的代码
show create function ff;

视图
-- 显示学生学号 姓名 成绩 等级 代课老师名称 如果没有老师显示无老师
-- 定义视图
create view vv
as
select sid,sname,sscore,
case 
when sscore is null then '补考' 
when sscore >=90 then '优秀'
when sscore>=80 then '良好'
when sscore>=60 then '及格'
when sscore<60 then '不及格'
end 等级,
ifnull(tname,'没有老师')
from student left join teacher on stid= tid;

-- 查询视图 相当查询一个数据表,视图只保存定义,不存数据
select * from vv;

-- 删除视图
drop view if exists vv;


触发器
建立触发器
delimiter //
create trigger tt_isert after insert on ttt for each row
begin
    if new.sscore<60 then
        insert into tttbak select * from ttt where ttt.sid = new.sid;
    end if;
end//
delimiter ;
建立修改数据的触发器

delimiter //
create trigger ttt_update after update on ttt for each row
begin
    if old.sscore>=60 then
if new.sscore<60 then
   insert into tttbak select * from ttt where ttt.sid = new.sid;
end if;
    else
if new.sscore<60 then
   replace into tttbak select * from ttt where ttt.sid = new.sid;
else
   delete from tttbak where sid = new.sid;
end if;
    end if;    
end//
delimiter ;

删除触发器
drop trigger tt_insert;

事件(自动的任务)
-- 查看事件功能是否开启
show variables like 'event_scheduler';
-- 开启事件机制
set global event_scheduler =1;
set global event_scheduler=on;
-- 关闭事件
set global event_scheduler=0;
set global event_scheduler=off;
建立表格
create table aaa(t timestamp);
建立事件
create event eaaa 
on schedule every 1 second 
do insert into aaa value(current_timestamp);
删除定义的事件
drop event eaaa;
-- 禁用某事件
alter event eaaa disable;
-- 开启某事件
alter event eaaa enable;








Copyright © 2024 小蕊同学
Powered by .NET 9.0 on Kubernetes