MySql视图和存储程序
1、视图
1、创建视图
create view(字段别名...) as 选择语句 例: create view(ln,fn) as select last_name,first_name from student;
2、可以通过视图对底层表进行增删改查操作。
2、存储程序
1、复合语句和语句分隔符
delimiter 分隔符名 create procedure 函数名() begin 函数体 end;delimiter #结束分隔符call 函数名例:delemiter $create procedure show_times()begin select CURRENT_TIMESTAMP as ‘Local Time‘; select UTC_TIMESTAMP as ‘UTC Time‘;end$delemitercall show_times(); #调用
2、存储函数和存储过程
create function 函数名(参数列表)returns type stmt create procedure 存储过程名(参数列表)stmt
函数例子:
delemiter $ create function test(emp_salary INT) returns INT READS SQL DATA BEGIN RETURN(select count(*) from emp where salary > 5000 and salary=emp_salary); END$ delemiter;
函数只能返回一个值,而要返回多个值可以编写多个函数多次调用,或者使用存储过程out。
存储过程例子:
delemiter $ CREATE PROCEDURE show_born_in_year(p_year INT) BEGIN SELECT first_name,last_name,birth,death from president where YEAR(birth)=p_year END$ delemiter;
过程不能用在表达式里,只能使用call语句调用.
存储过程的三种参数类型:in、out、inout,默认为in:
3、触发器
触发器是与特定表相关联的存储过程,其定义会在执行表的delete、insert、update语句时被自动激活。触发器属于表
语法:
create trigger trigger_name #触发器名 [before|after] #触发时机 [insert|delete|update] #激活触发器的语句 ON table_name #关联表 FOR EACH ROW trigger_stmt #内容
例子:
create table t(percent INT, dt DATETIME); delimiter $ create trigger bi_t BEFORE INSERT ON t FOR EACH ROW BEGIN IF NEW.percent < 0 then SET NEW.percent=0; ELSEIF NEW.percent > 100 then SET NEW.percent=100; END IF; end$ NEW.dt=CURRENT_TIMESTAMP; end$ delimiter;
相关推荐
minggehenhao 2020-07-28
hungzz 2020-06-16
gsmfan 2020-06-14
ncomoon 2020-06-14
xiaobaif 2020-06-13
hanshangzhi 2020-06-12
84251449 2020-05-17
cyyking 2020-05-17
jiony 2020-05-11
herohope 2020-05-03
dayi 2020-04-11
Accpcjg 2020-03-05
要啥自行车一把梭 2020-01-19
debugjoker 2020-06-17
小树不倒我不倒 2019-07-05
翡翠谷 2020-05-17
林大鹏 2020-05-04
mycosmos 2020-01-26
末点 2019-12-31